Я проверяю, правильно ли работает ANTLR-4.7.1, используя образец, предоставленный моим профессором, чтобы сопоставить эти результаты для того же печатного набора токенов:
% java -jar ./antlr-4.7.1-complete.jar HelloExample.g4
% javac -cp antlr-4.7.1-complete.jar HelloExample*.java
% java -cp .:antlr-4.7.1-complete.jar org.antlr.v4.gui.TestRig HelloExample greeting helloworld.greeting -tokens
[@0,0:4='Hello',<1>,1:0]
[@1,6:10='World',<3>,1:6]
[@2,12:12='!',<2>,1:12]
[@3,14:13='<EOF>',<-1>,2:0]
(greeting Hello World !)
Однако, после перехода к третьей команде вместо этого мой вывод был:
[@0,0:4='Hello',<'Hello'>,1:0]
[@1,6:10='World',<Name>,1:6]
[@2,12:12='!',<'!'>,1:12]
[@3,13:12='<EOF>',<EOF>,1:13]
В моем выводе нет чисел внутри <>, которые, как я считаю, должны быть определены из файла HelloExample.tokens, содержащего:
Hello=1
Bang=2
Name=3
WS=4
'Hello'=1
'!'=2
Я не получаю информации об ошибке, и кажется, что antlr сгенерировал все нужные мне файлы, поэтому я не знаю, где мне искать, чтобы решить эту проблему, пожалуйста, помогите. И я не уверен, что это будет полезно, но мой рабочий каталог начинался с helloworld.greeting
и HelloExample.g4
, а последний каталог теперь содержит
helloworld.greeting
HelloExample.g4
HelloExample.interp
HelloExample.tokens
HelloExampleBaseListener.class
HelloExampleBaseListener.java
HelloExampleLexer.class
HelloExampleLexer.inerp
HelloExampleLexer.java
HelloExampleLexer.tokens
HelloExampleListener.class
HelloExampleListener.java
HelloExampleParser$GreetingContext.class
HelloExampleParser.class
HelloExampleParser.java