У меня есть грамматика, которая описывает выражения (оригинал, верно?). Я хочу использовать этот язык выражений внутри других языков.
Например, OtherLanguage.g4:
grammar OtherLanguage.g4
import Expressions;
keyPair: IDENTIFIER ':' expression;
IDENTIFIER: [a-zA-Z0-9]+
Если я использую import Expressions;
, то он генерирует действительный синтаксический анализатор, но он не генерирует и не использует ExpressionsParser.ExpressionContext
, но генерирует и использует OtherLanguageParser.ExpressionContext
. Это означает, что я не могу создавать методы, которые принимают «ExpressionContext» и повторно используют их в других проектах.
Есть ли функция ANTLR4, которая сделает эту работу?
Другими словами, я не хочу "импортировать" грамматику выражений, но парсер и лексер.