如何修改语法以删除ANTLR4中的左递归错误?

时间:2014-09-09 08:51:32

标签: parsing antlr4 left-recursion

我正在尝试解析一种语言。以下ANTLR4解析器规则直接从语言规范中复制:

physical_value 
 : raw_value DIV factor MUL factor PLUS offset 
 ;

raw_value
 : (physical_value MINUS offset) DIV factor  
 ;

但是antlr报告错误:以下几组规则是相互左递归的 我不知道如何修改语法,希望有人可以帮助我。 感谢。

1 个答案:

答案 0 :(得分:1)

你不能从你发布的规则中消除左递归,因为它匹配的唯一字符串是无限序列。

  • physical_value 始终raw_value
  • 开头
  • raw_value 始终physical_value
  • 开头

...并重复