Я пишу простой парсер Verilog HDL, используя JAVACC для плагина Eclipse.Есть ли способ вызвать функцию, когда сканер соответствует SPECIAL_TOKEN в JAVACC?
В этом подключаемом модуле все параметры и провода зарегистрированы в виде схемы. Эта функция затрудняет поиск желаемого сигнала в представлении Outline, если в включенных файлах много объявлений. Чтобы сократить список контуров, я хочу собрать параметры (и другие сигналы) из включенного файла в подпапку.
Parser фактически работает в два прохода, это означает, что все производные компилятора сначала разрешаются, а результирующая строка передается в парсер Verilog (JAVACC).
По этой причине анализатор JAVACC не может знать начальное и конечное местоположение включенного файла.
Чтобы решить эту проблему, я добавил SPECIAL_TOKEN, в котором есть информация о включении.
Lexer обнаруживает SPECIAL_TOKEN правильно, однако я не мог найти способ вызвать функцию парсера из тела Prepecedure SPECIAL_TOKEN. (На самом деле, это разумно, потому что они расположены в разностных классах)
Я думаю, что я мог бы использовать решение, описанное в последнем разделе страницы (https://javacc.java.net/doc/tokenmanager.html). Однако, я должен добавить такой код ко всем появлениям обычных токенов, не так ли? Как вы знаете, грамматик Verilog настолько сложный, что я не мог принять решение выше.
Есть ли хорошее решение для решения этой проблемы?