2013-03-06 1 views
1

Antlr 버전 4.0을 사용하여 논리 표현식을 구문 분석하고 트리를 생성하여 표현식을 평가하려고합니다.Antlr 생성자 LogicLexer (ANTLRStringStream)이 eclispe에서 정의되지 않았습니다.

antlr 도구를 실행하여 파서와 렉서를 생성했지만 프로젝트에 생성 된 파일을 배치 할 때 "생성자 LogicLexer (ANTLRStringStream)이 정의되지 않았습니다."및 "생성자 CommonTokenStream (LogicLexer) 정의되지 않았습니다 ".

코드

은 다음과 같습니다 : 당신이 렉서와 파서 클래스를 생성하기 위해 V4 도구와 v3의 문법을 사용하고 같은

LogicLexer lexer = new LogicLexer(new ANTLRStringStream(expression)); 
LogicParser parser = new LogicParser(new CommonTokenStream(lexer)); 
CommonTree tree = (CommonTree)parser.parse().getTree(); 
+0

나는 것 앤틀 항아리가 당신의 classpath에없는 것 같아요. –

+0

필자는이 Antlr 버전을 사용하지 않았지만 새 API 참조에 따라 해당 클래스는 antlr 4의 일부가 아닙니다. http://antlr4.org/api/Java/index.html 참조 할 부분은 작동해야하는 코드입니다. Antlr 3을 위해. –

+0

아마도 도구가 Antlr의 다른 버전 용으로 설계되었습니다. 문서가 말해야합니다. –

답변

1

것 같습니다. v3와 같이 ANTLR 4는 트리 다시 쓰기 연산자를 지원하지 않습니다.

은 다음과 같아야합니다, 그래서 또한 변경된 API (ANTLRStringStream는 더 이상 존재) :

LogicLexer lexer = new LogicLexer(new ANTLRInputStream(expression)); 
LogicParser parser = new LogicParser(new CommonTokenStream(lexer)); 
ParseTree tree = parser.parse(); 

을 생성 구문 분석 트리를 걷는 방법 완전한 데모 내용은 다음을 참조하십시오 ANTLR 4 tree inject/rewrite operator

관련 문제