2016-09-13 29 views
5

Mam ID terminatorantlr4 cel python nie może rozpoznać unicode

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

i .txt przykładowy plik do analizowania

均60:=MA(C,60); 

I wygenerowany cel Java i python2 i przetestować każdy przeciwko pliku próbki odpowiednio. Obiekt Java może przeanalizować ten plik. Ale cel Python2 nie może. Rzuca token recognition error at: '均'. I przetestowałem cel Python2 na innych ważnych danych wejściowych, wszystkie prace poza tym, które zawierają znaki Unicode. Czy coś pominąłem lub cel Pythona nie obsługuje parsowania 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 

pyton cel polecenia generowania

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

kod 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]) 

Odpowiedz