是否可以在 ANTLR4 中包含(但不导入)独立语法?

Is it possible to include (but not importing) a stand-alone grammar in ANTLR4?

我有一个描述表达式的语法(原始的,对吧?)。我想在其他语言中使用这种表达式语言。

例如,OtherLanguage.g4:

grammar OtherLanguage.g4

import Expressions;

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

如果我使用 import Expressions;,那么它会生成一个有效的解析器,但它不会生成或使用 ExpressionsParser.ExpressionContext,而是生成并使用 OtherLanguageParser.ExpressionContext。这意味着我无法创建接受 "ExpressionContext" 的方法并在其他项目中重用它们。

是否有 ANTLR4 的功能可以实现此功能?

换句话说,我不想"import"表达式语法,而是解析器和词法分析器。

是的,导入确实意味着包含---它不会将导入的语法视为一个单独的实体,您可以为其使用所有这些部分树对象。