0

我正在 Bison 中创建解析器,并尝试转换规则:

E := E op E
op := + | - | > | & 

E还有其他规则,例如否定,当然,E可以是一个数字。我想知道制作这些作品的最佳方式是什么。我见过人们为每个操作数写出 $$ = $1 '+' $3 等的计算器示例。

我的 lex 文件返回操作数,{return yytext[0];}但我发现很难找到资源来创建其他产品(比较、&& 和否定)。我有 Levine 等人的 yacc & lex 书,但我仍然对如何去做这件事感到很困惑。

我相信我可以做exp '>' exp {$$ = $1 > $3}and exp '&' exp {$$ = $1 & $3},并返回一个 bool 值,我可以将其定义为一种类型,但我该怎么做呢?

如果有一种优雅的方式可以做到这一点,并且有任何资源可以帮助我编写生产规则,我会很高兴。我知道我可以编写 C 代码,但我对此很陌生,我很不确定

4

0 回答 0