我正在尝试使一种语法在解析规则中具有循环引用的语言,如下所示:
statement : 'return' expression ';' ;
expression : ID | lambda ;
lambda : 'func' '{' statement '}' ;
当所有内容都在一个文件中时它可以工作,但是我想将有关表达式的所有内容都放在文件Expressions.g4中,将语句放在Statements.g4中,依此类推。当我分割此语法并在需要时添加import
指令时,ANTLR会抱怨引用未定义的规则。
当然,在分离词法分析器和语法分析器语法之后,诸如';'
之类的隐式标记将被显式替换,它们在这里是为了使本示例更清楚。