1

例如,如果我正在编写一个类似 parser.mly 的文件,并且我为表达式编写了这个

expr:
    expr PLUS   expr { Binop($1, Add,   $3)   }
  | expr DIVIDE expr { Binop($1, Divide,   $3)   }

这是否与

expr:
    expr DIVIDE   expr { Binop($1, Divide,   $3)   }
  | expr PLUS expr { Binop($1, Add,   $3)   }

就像我想我问的是垂直列出的顺序在确定解析优先级时是否重要?

4

1 回答 1

3

ocamlyacc 和 menhir 都要求您使用和%left声明明确声明优先级。产生的顺序不相关。%right%nonassoc

于 2021-12-26T00:29:16.057 回答