函数调用的 ANTLR 规则

ANTLR rule for function call

我是 ANTLR4 的新手,我正在尝试解析此输入

X = 1 2 A(2) B (2)

在这个输入中,A 应该是一个函数调用,而 B 应该是一个名称变量 B.But 我在词法分析器中有一个跳过空格的规则。

我如何为这个输入编写解析器规则但保留跳过空格的规则

提前致谢

解决方案是在词法分析器中定义一个函数引入器,您可以在其中控制空格,然后在解析器中继续函数调用以实现灵活的参数处理:

FUNCTION_START: ID OPEN_PAR;


function: FUNCTION_START parameters CLOSE_PAR;

这里的关键点是,在词法分析器中,当您处于另一个词法分析器规则中时,空白规则不会生效,因此 FUNCTION_START 规则将只接受 identifer( 形式的输入中间没有空格。它不会匹配 B (.