Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有规则或令牌的多个实例的操作_Java_Antlr_Antlr3 - Fatal编程技术网

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