首页 > 解决方案 > 函数调用的 ANTLR 规则

问题描述

我是 ANTLR4 的新手,我试图解析这个输入

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

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

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

提前致谢

标签: parsingantlr

解决方案


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

FUNCTION_START: ID OPEN_PAR;


function: FUNCTION_START parameters CLOSE_PAR;

这里的关键点是,在词法分析器中,当您在另一个词法分析器规则中时,空格规则不会启动,因此该FUNCTION_START规则将只接受identifer(中间没有空格的表单输入。它不会匹配B (


推荐阅读