我有一个描述表达式的语法(原文,对吗?)。我想在其他语言中使用此表达式语言。
例如,OtherLanguage.g4:
grammar OtherLanguage.g4
import Expressions;
keyPair: IDENTIFIER ':' expression;
IDENTIFIER: [a-zA-Z0-9]+
如果我使用import Expressions;
,它将生成一个有效的解析器,但它不会生成或使用ExpressionsParser.ExpressionContext
,而是会生成并使用OtherLanguageParser.ExpressionContext
。这意味着我无法创建采用“ ExpressionContext”的方法并将其在其他项目中重复使用。
是否有ANTLR4的功能可以使这项工作正常工作?
换句话说,我不想“导入”表达式语法,而是解析器和词法分析器。
是的,导入实际上意味着包括---它不会将导入的语法视为可以使用所有这些部分树对象的单独实体。