0
스캔 컨텍스트 내에서 텍스트를 스캔 할 때 유익한 결과물을 출력 할 수 있도록하려면 무엇을 재정의, 연장, 청취, 방문해야합니까?Antlr 4 :이 출력 형식을 사용할 수 있습니까?
-- Example output only ---------
DEBUG ... current mode: DEFAULT_MODE
DEBUG ... matching text '#' on rule SHARP ; pushing and switching to DIRECTIVE_MODE
DEBUG ... matching text 'IF" on rule IF ; pushing and switching to IF_MODE
DEBUG ... matching text ' ' on rule WS; skipping
DEBUG ... no match for text %
DEBUG ... no match for text &
DEBUG ... mathcing text '\r\n' on rule EOL; popping mode; current mode: DIRECTIVE_MODE
...
감사
지금까지 내가 당신이 렉서의 디버그 메시지를보고 싶어 이해 상태. 나는 렉서 문법이 DFA로 변하기 때문에 이것이 불가능하다고 생각한다. DFA는 상태 전이를 최적화하여 효율적이지만 더 이상 문법 규칙에 해당하지 않습니다. – CoronA
아마도 문법을 게시해야합니다. 예제 출력은 파서에서 렉서 (lexer)와 파서 (parser)에서 너무 많이 수행하려고 시도한다는 사실을 지적합니다. 파서에서는 디버그 출력이나 디버그 출력을 배치하는 것이 더 쉽습니다. – CoronA
맞습니다. 렉싱이 진행되는 동안 설명적인 디버그 메시지를 출력하는 방법을 찾고 있습니다. 내 문법은 중요하지 않습니다. 무엇이 스캔되었는지, 결과가 무엇인지, 어떤 모드가 밀렸는지, 현재 모드가 무엇인지 등을 알고 싶습니다. –