Flex 和 Bison:用简单的语法面对错误

问题描述 投票:0回答:0

我总是面临如下语法错误。

Error : syntax error line: 1 at word *

Bison/Flex 代码如下。

%keyword ENTITY      "Entity"
%keyword IS      "Is"

%%

Program                    : Begin
                                   {Reduce(Program); }

Begin                      :  ENTITY identifier_0 IS
                                   {Reduce(Begin); }

sstring                 : SIMPLESTRING {PutSymbol(sstring,$1);}
                        | STRINGSEGMENT DOT sstring
                        {

                        }

identifier              : sstring   {PutSymbol(identifier,$1);}
                        | SIMPLEID {PutSymbol(identifier,$1);}
                        /*| error {$1=NewErrorNode;ReduceError(identifier);}*/

identifier_0      : {Empty();}
         | sstring   {PutSymbol(identifier_0,$1);}
                        | SIMPLEID {PutSymbol(identifier_0,$1);}

%%

样本输入。

 Entity top Is
c++ bison flex-lexer bisonc++
© www.soinside.com 2019 - 2024. All rights reserved.