我尝试用python阅读antlr语法。
就像这个问题一样:
JSON文件中的变音会导致ANTLR4创建的Python代码错误
错误:
File "/usr/local/lib/python2.7/dist-packages/antlr4/Lexer.py", line 109,
in nextToken
tokenStartMarker = self._input.mark()
AttributeError: 'str' object has no attribute 'mark'
发生。
我的语法在java上工作正常,没有德语变音符号。
代码生成如下:
antlr4 -Dlanguage=Python2 -visitor MyGrammar.g4
错误可能还有其他原因吗?也许版本问题 还是别的什么?
出现此问题的原因是,您没有使用antlr4。输入流 标记函数是输入流类的一部分
https://github.com/antlr/antlr4/blob/master/runtime/Python2/src/antlr4/InputStream.py
以下代码有效
语法文件
语法一些语法; 操作:数字"+"数字; 编号 : [0-9]+ ; 空格 : ' ' -> 跳过 ;
蟒蛇代码
进口安特尔4 从 ANTLR4 进口 * from psqlListener import psqlListener 从 psqlLexer import psqlLexer 从 psqlParser import psqlParser 导入系统 inputStream = antlr4.输入流('4+5'(; 词法分析器 = psqlLexer(inputStream( stream = CommonTokenStream(词法分析器( 解析器 = psqlParser(stream(