Bison的文档十分详细,也可以说是冗长,故而此处对其中的一些核心机制做一个简单的总结。

Actions

可以像flex中一样为rules添加Action,在规则之后的一个block中定义语法。

bison中提供了机制实现semantic value的计算。使用$$$$可以访问起始符的值(规则左边的non terminal),$n可以访问第n个non terminal的值,此处n从1开始。如果n小于等于0,则使用当前parse stack上的非终结符值(risky)。

Bison Decalrations

Token Kind Names

对于terminal的声明。

Operator Precedence

对于优先级的声明。

使用%left 表示优先左结合,%right同理。

Nonterminal Symbols