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