Можно ли включить (но не импортировать) автономную грамматику в ANTLR4? - PullRequest
1 голос
/ 17 февраля 2020

У меня есть грамматика, которая описывает выражения (оригинал, верно?). Я хочу использовать этот язык выражений внутри других языков.

Например, OtherLanguage.g4:

grammar OtherLanguage.g4

import Expressions;

keyPair: IDENTIFIER ':' expression;
IDENTIFIER: [a-zA-Z0-9]+ 

Если я использую import Expressions;, то он генерирует действительный синтаксический анализатор, но он не генерирует и не использует ExpressionsParser.ExpressionContext, но генерирует и использует OtherLanguageParser.ExpressionContext. Это означает, что я не могу создавать методы, которые принимают «ExpressionContext» и повторно используют их в других проектах.

Есть ли функция ANTLR4, которая сделает эту работу?

Другими словами, я не хочу "импортировать" грамматику выражений, но парсер и лексер.

1 Ответ

1 голос
/ 17 февраля 2020

Да, импорт на самом деле означает включить --- он не рассматривает импортированную грамматику как отдельную сущность, для которой вы можете использовать все эти объекты дерева частей.

...