antlr4 python目标无法识别unicode

时间:2016-09-13 12:37:11

标签: python antlr4

我有一个ID终止符

ID      : ([A-Z_]|'\u0100'..'\uFFFE') ([A-Z_0-9]|'\u0100'..'\uFFFE')*;

和要解析的.txt示例文件

均60:=MA(C,60);

我生成了Java和Python2目标,并分别针对示例文件测试每个目标。 Java目标可以解析此文件。但Python2目标不能。它抛出token recognition error at: '均'。我测试了Python2目标与其他有效输入,所有工作除了包含unicode字符。我错过了什么或python目标不支持unicode解析。

的java

mkdir -p java
java -jar /usr/local/lib/antlr-4.5.3-complete.jar TDX.g4 -o ./java
cd ./java
javac TDX*.java
java org.antlr.v4.gui.TestRig TDX prog -gui ../samples/1.txt

python目标生成命令

java -jar /usr/local/lib/antlr-4.5.3-complete.jar -Dlanguage=Python2 TDX.g4 -o ./tdx_py/antlrgen -visitor

python代码

import sys
from antlr4 import *
from tdx_py.antlrgen import TDXLexer, TDXParser

def executefile(file):
    input = FileStream(file, encoding='utf-8')
    lexer = TDXLexer(input)
    stream = CommonTokenStream(lexer)
    parser = TDXParser(stream)
    tree = parser.prog()


if __name__ == '__main__':
    executefile(sys.argv[1])

1 个答案:

答案 0 :(得分:0)

这是ANTLR4的错误。参考https://github.com/antlr/antlr4/issues/1925