Java 具有规则或令牌的多个实例的操作
我有以下语法规则:Java 具有规则或令牌的多个实例的操作,java,antlr,antlr3,Java,Antlr,Antlr3,我有以下语法规则: pacman : section section map section ; 我想为此规则编写一个Java操作,以不同方式处理三个不同的部分。三个不同实例的句柄是什么 这是显示我所需内容的伪代码: pacman : section section map section { processFirstSection($section[0]); if(checkSecondSection($section[1])) { //
pacman
: section section map section
;
我想为此规则编写一个Java操作,以不同方式处理三个不同的部分。三个不同实例的句柄是什么
这是显示我所需内容的伪代码:
pacman
: section section map section
{
processFirstSection($section[0]);
if(checkSecondSection($section[1]))
{
//The if statement isn't important itself;
//the point is that I do completely different
//things with each section
handleThirdSection($section[2]);
}
}
;
一般来说,规则
rule : name=Token otherName=rule
允许您使用$name
访问令牌令牌
,使用$otherName
访问规则规则
,这取决于“以不同方式处理它们”的含义。如果您的意思是必须应用不同的解析器规则,那么ANTLR可以通过尝试来为您找到答案。如果通过解析器规则无法处理的话,请考虑使用侦听器,然后在解析树上验证/操作。这在ANTLR3中起作用。如果您使用的是Antlr4,那么您将对规则使用类似的语法(section1=section2=section…),但您不会有操作。然后,传递给侦听器的上下文将包含名为section1、section2和section3的字段。
rule : name=Token otherName=rule