^및! 연산자를 사용하여 루트 노드를 설정하고 AST에 포함시키지 않도록합니다. 그러나, 그것은 ANTLRWorks에 의해 생성 된 트리에서 차이를 만들지 않습니다. 따라서 문법이 잘못되었거나 ANTLRWorks가 올바른 트리를 작성하지 않은 것인지 확실하지 않습니다. 여기 ANTLR AST 연산자를 무시합니다.
는expr
: '('! logExpr ')'!;
이 괄호는 AST에 포함되어서는 안 내 문법의 조각입니다.
addExpr
: multExpr ((PLUS|MINUS)^ multExpr)*;
+ 또는 -는 AST의 루트 노드해야합니다.
그러나 내가 예상 한대로 이러한 일이 일어나지 않습니다. 내가 그들을 제거하거나 다시 넣을 때 아무런 효과가 없습니다. ANTLRWorks 1.4.3 ANTLR 3.4
귀하는 귀하의 결론에 도달하기 위해 Antlrworks를 보았습니까? 나는 또한 ast를 출력하도록 antlr에게 말했 을까? – stryba
@stryba 트리의 다이어그램을 보여주는 인터프리터 탭입니다. 아니면 AST가 아닌 파스 트리입니까? –