使用Python目标的ANTLR4中缺少Lexer方法?

使用Python目标的ANTLR4中缺少Lexer方法?,python,antlr4,Python,Antlr4,我正在尝试将ANTLR4与Python2目标一起使用。据我所知,以下形式的语义谓词是嵌入在语法中的目标语言的代码。例如,我有一条这样的规则: 'S' {getCharPositionInLine() == 1}? 'OMETHING' 这基本上是为了确保令牌某物从行的开头开始(否则它就是其他东西)。我使用了Java目标(默认),因为它的测试工具比Python中的要好。到现在为止,一直都还不错。然而,当我的语法工作时,在尝试将此代码翻译成Python时,我遇到了一个问题。首先,我假设Java中的

我正在尝试将ANTLR4与Python2目标一起使用。据我所知,以下形式的语义谓词是嵌入在语法中的目标语言的代码。例如,我有一条这样的规则:

'S' {getCharPositionInLine() == 1}? 'OMETHING'
这基本上是为了确保令牌某物从行的开头开始(否则它就是其他东西)。我使用了Java目标(默认),因为它的测试工具比Python中的要好。到现在为止,一直都还不错。然而,当我的语法工作时,在尝试将此代码翻译成Python时,我遇到了一个问题。首先,我假设Java中的上述代码(我对Java知之甚少)是类方法
getCharPositionInLine
的调用,因此将上述代码转换为:

'S' {self.getCharPositionInLine() == 1}? 'OMETHING'
然而,我最终得到了一个错误:

'MyLexer' object has no attribute 'getCharPositionInLine'

我去检查
antlr4/runtime/Python2/
antlr4/runtime/Python3/
中的
Lexer.py
文件(MyLexer继承自该文件),瞧,没有这样的方法。我没有意识到某些目标缺少功能。在此之前,我对语法分析器和词法分析器一无所知,因此我对自己的语法感到非常自豪,但在这之后,我甚至可能无法使用它!我有办法解决这个问题吗

据我所知,python运行时使用
column
属性而不是
getCharPositionInLine
。另请参见:

据我所知,python运行时使用
column
属性而不是
getCharPositionInLine
。另请参见:

谢谢,这与我预期的getCharPositionInLine完全一样。不同目标运行时之间的这些差异是否在任何地方都有文档记录,还是我必须阅读代码并找出答案?不幸的是,这样的详细文档并不存在。因此,请阅读代码进行解释。谢谢,这与我预期的getCharPositionInLine完全一样。不同目标运行时之间的这些差异是否在任何地方都有文档记录,还是我必须阅读代码并找出答案?不幸的是,这样的详细文档并不存在。因此,请阅读代码进行解释。