小编tee*_*row的帖子

重写 Bison 语法以修复转移/减少冲突

以下是我的 Bison 语法规则的相关部分:

statement:
  expression ';' |
  IF expression THEN statement ELSE statement END_IF ';' 
  ;

expression:
  IDENTIFIER |
  IDENTIFIER '('expressions')' |
  LIT_INT |
  LIT_REAL |
  BOOL_OP |
  LOG_NOT expression |
  expression operator expression |
  '('expression')'
  ;

expressions:
  expression |
  expressions ',' expression  
  ;

operator: 
  REL_OP |
  ADD_OP |
  MULT_OP |
  LOG_OR  |
  LOG_AND
  ;
Run Code Online (Sandbox Code Playgroud)

编译时,我得到 10 个 shift/reduce 冲突:

LOG_NOT表达式规则引起的5个冲突:

State 45

   25 expression: LOG_NOT expression .
   26           | expression . operator expression

    REL_OP   shift, and go to …
Run Code Online (Sandbox Code Playgroud)

grammar parsing bison

3
推荐指数
1
解决办法
2420
查看次数

标签 统计

bison ×1

grammar ×1

parsing ×1