[ANTLR函数调用规则

问题描述 投票:0回答:1

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

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

在此输入中,A应该是函数调用,而B应该是名称B的变量。但是我在词法分析器中有一条跳过空白的规则。

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

提前感谢

parsing antlr
1个回答
1
投票

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

FUNCTION_START: ID OPEN_PAR;


function: FUNCTION_START parameters CLOSE_PAR;

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

© www.soinside.com 2019 - 2024. All rights reserved.