Eclipse 플러그인 용 JAVACC를 사용하여 간단한 Verilog HDL 파서를 작성하고 있습니다.스캐너가 JAVACC에서 SPECIAL_TOKEN을 만날 때 함수를 호출하는 방법이 있습니까?
이 플러그인에서는 모든 매개 변수와 와이어가 아웃 라인보기에 등록됩니다. 이 기능은 포함 된 파일에 많은 선언이있는 경우 개요보기에서 원하는 신호를 찾기가 어렵습니다. 개요 목록이 짧아 지도록 포함 된 파일의 매개 변수 (및 기타 신호)를 하위 폴더로 수집하려고합니다.
파서는 실제로 두 패스에서 작동합니다. 즉, 모든 컴파일러 유도체가 먼저 해결되고 결과 문자열이 Verilog 파서 (JAVACC)로 전달된다는 의미입니다.
이 때문에 JAVACC 파서는 포함 된 파일의 시작 및 끝 위치를 알 수 없습니다.
이 문제를 해결하기 위해 일부 포함 관련 정보가있는 SPECIAL_TOKEN을 추가했습니다.
Lexer는 SPECIAL_TOKEN을 올바르게 감지하지만 SPECIAL_TOKEN의 전처리 본문에서 파서의 기능을 호출하는 방법을 찾지 못했습니다. (실제로 차이 클래스에 있기 때문에 합리적입니다.)
페이지의 마지막 섹션에서 설명한 해결책을 사용할 수 있다고 생각합니다 (https://javacc.java.net/doc/tokenmanager.html). 그러나 모든 토큰에 이러한 코드를 추가해야합니다. 그렇습니까? 알다시피, Verilog의 문법은 너무 복잡해서 위의 해결책을 받아 들일 수 없습니다.
이 문제를 해결하는 좋은 해결책이 있습니까?