Я пытался использовать ссылку на правило в грамматическом действии.antlr "java.lang.NoSuchFieldError" о действии грамматики
string_decl_list : (string_decl)+;
string_decl : ('STRING' id ':=' str ';')
{//table.currentScope().define(new BaseDescriptor(), id.text, ValueType.STRING);
System.out.println($str.text);
};
str : STRINGLITERAL;
Моя грамматика выглядит так. Компиляция в порядке. Но когда я пытаюсь разобрать мой файл.
Существует исключение.
Exception in thread "main" java.lang.NoSuchFieldError: str
at MicroParser.string_decl(MicroParser.java:368)
at MicroParser.string_decl_list(MicroParser.java:312)
at MicroParser.decl(MicroParser.java:246)
at MicroParser.pgm_body(MicroParser.java:187)
at MicroParser.program(MicroParser.java:107)
at Compiler.main(Compiler.java:32)
Java Result: 1
Я думаю, что я делаю это правильно для ссылки на правило, может ли кто-нибудь мне помочь в этом? Я не знаю, как решить это
Вы говорите, что сделать это в файле грамматики? Извините за задержку с ответом. –