2013-10-03 3 views
0

문법 작업에서 규칙 참조를 사용하려고했습니다.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 

나는 누군가가 이것에 대해 저를 도울 수있는, 내가 바로 규칙 참조 할 수 있도록하고있는 중이 야 것 같아요? 난 당신이 파서 규칙 "STR"에 대한 반환 값이 없기 때문에이

답변

0

오류를

Exception in thread "main" java.lang.NoSuchFieldError: str 

를 얻을 해결하는 방법을 모르겠어요. 이 같은

시도 뭔가 :

str returns [String str] : STRINGLITERAL { $str = new String($STRINGLITERAL.text); } ; 
+0

당신은 그 문법 파일에 넣고 건가요? 늦은 답변 죄송합니다. –