这段文法与Linux Bison手册非常类似,不同之处在于它使用了名字作为终端符号和标识符的简写形式。标识符是在赋值语句中进行定义和初始化的,并且可以在任何允许使用的地方使用。下面给出了一个示例声明和文法。
Linux Bison声明
- /*terminalsymbols*/
- %token<string>IDENTIFIER
- %token<value>VALUE
- %type<value>expression
- /*operator-precedence
- *top-0:-
- *1:*/
- *2:+-
- */
- %leftADDSUB
- %leftMULTDIV
- %leftNEG
- %startprogram
示例Linux Bison文法
- program
- :statementSEMICOLONprogram
- |statementSEMICOLON
- |statementerrorSEMICOLONprogram
- ;
- statement
- :IDENTIFIERASSIGNexpression
- |expression
- ;
- expression
- :LBRACEexpressionRBRACE
- |SUBexpression%precNEG
- |expressionADDexpression
- |expressionSUBexpression
- |expressionMULTexpression
- |expressionDIVexpression
- |VALUE
- |IDENTIFIER
- ;
【编辑推荐】