ANTLR@members和lexer

ANTLR@members和lexer,antlr,Antlr,我对ANTLR中的@members规则有问题。我希望覆盖默认错误处理,因此我阅读并编写了以下语法的简单代码: @members { def displayRecognitionError(self, tokenNames, e): print 'Test' } 我的语法中没有@lexer::members或@parser::members。此规则中的代码(python运行时)仅包含在解析器文件中,而不包含在lexer中。是虫子吗?我认为,@members应该根据文档向-lex

我对ANTLR中的@members规则有问题。我希望覆盖默认错误处理,因此我阅读并编写了以下语法的简单代码:

@members {
   def displayRecognitionError(self, tokenNames, e):
      print 'Test'
}
我的语法中没有@lexer::members或@parser::members。此规则中的代码(python运行时)仅包含在解析器文件中,而不包含在lexer中。是虫子吗?我认为,@members应该根据文档向-lexer和parser添加内容。我使用Python运行时,3.1.3


顺便说一句,stackoverflow内联代码是否适用于Opera?

在组合语法文件中,
@members
@parser::members
的缩写

// combined grammar
grammar Foo;

@members {
  // only parser members here, equivalent to: @parser::members { ... }
}

@lexer::members {
  // lexer members
}
当您使用单独的lexer和/或parser语法时,
@members
就足够了:

parser grammar Foo;

@members {
  // parser members
}

加尔米写道:

顺便问一下,stackoverflow内联代码是否适用于Opera

我想是的,但是关于so本身的问题可以继续问下去

lexer grammar Foo;

@members {
  // lexer members
}