Я пытаюсь импортировать грамматику лексера в другую грамматику лексера. Импортированная грамматика использует разные режимы (в режимах примера XMLLexer INSIDE и PROC_INSTR).Импорт ANTLR4 лексической грамматики, которая использует разные режимы
lexer grammar HTMLLexer;
import XMLLexer;
При компиляции я получаю сообщение об ошибке, что переменная, соответствующая имени режима, не определена.
В качестве конкретного примера я образующий HTMLLexer на вершине XMLLexer (от antlr4 книги) и получить следующую ошибку:
C:\Users\<user>\AppData\Local\Temp\TestRigTask-1360839400637\HTMLLexer.java:143:
error: cannot find symbol
case 6: more(); pushMode(PROC_INSTR); break;
^
symbol: variable PROC_INSTR
location: class HTMLLexer
1 error
я могу преодолеть эту ошибку redifining режимов в верхнем level lexer с дополнительными токенами, но затем импортированные токены внутри других режимов, как и по умолчанию, не распознаются.
Парсер работает, если я встроил импортированную часть в определение основного лексера, но я хотел бы использовать функцию импорта, чтобы иметь чистое разделение. (Не для примера xml/html, но в другом случае.)
Можно ли заставить его работать с использованием импорта или это ограничение antlr4?