使用 Yacc 和 Lex 生成解析树
Using Yacc and Lex to generate parse tree
我已经花了 6 个小时用 Lex 和 Yacc 为下面的产品编写编译器。终端报告 warning: empty rule for typed nonterminal, and no action
但我仍然无法找出我的代码有什么问题。
P -> L | LP
L -> S
S -> ID = E | if C the S | if C then S else S
C -> E>E | E<E | E=E
E -> E+T | E-T | T
T -> F | T*F | T/F
F -> (E)| ID
您收到的警告似乎完全准确:
F: | …
F
是一个non-terminal;它有一个类型,第一个选择是空的,没有任何动作。如果 non-terminal 的产生式没有动作,bison 会自动添加动作 $$ =
,但它不能为空产生式添加动作,所以它会抱怨。
我认为该行中的 |
是错字。
我已经花了 6 个小时用 Lex 和 Yacc 为下面的产品编写编译器。终端报告 warning: empty rule for typed nonterminal, and no action
但我仍然无法找出我的代码有什么问题。
P -> L | LP
L -> S
S -> ID = E | if C the S | if C then S else S
C -> E>E | E<E | E=E
E -> E+T | E-T | T
T -> F | T*F | T/F
F -> (E)| ID
您收到的警告似乎完全准确:
F: | …
F
是一个non-terminal;它有一个类型,第一个选择是空的,没有任何动作。如果 non-terminal 的产生式没有动作,bison 会自动添加动作 $$ =
,但它不能为空产生式添加动作,所以它会抱怨。
我认为该行中的 |
是错字。