2
동작 방법이 호출 된 "활성"ANTLR 규칙을 가져올 수 있습니까? 모든 로그와 $ 시작 -와 $ 최종 토큰()를 통해 손없이 몇 가지 규칙 의 시작과 끝 위치를 표시해야합니다 ANTLR - 의사 코드에서이 로그 함수와 같은활성 Antlr 규칙 가져 오기
뭔가 - 전화 :
@members{
private void log() {
System.out.println("Start: " + $activeRule.start.pos +
"End: " + $activeRule.stop.pos);
}
}
expr: multExpr (('+'|'-') multExpr)* {log(); }
;
multExpr
: atom('*' atom)* {log(); }
;
atom: INT
| ID {log(); }
| '(' expr ')'
;
도움 주셔서 감사합니다. 나는 시작과 끝 토큰을 log() 함수에 전달할 것이다. @ after-action 안에 함수가있다. – Sonson
@ 폰슨, 환영합니다. 예, 규칙의'@after {...}'블록에있는 로그 메소드에서 getStart()와 getEnd()를 전달하는 것이 더 나은 선택입니다 : 지역 변수' retval'. –
나는 똑같이했다. http://stackoverflow.com/questions/12892122/how-to-merge-two-asts를 보아라. 그러나'stop'과'getTree()'는 항상 null을 돌려 준다 .--( – j3d