是否可以在 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"表达式语法,而是解析器和词法分析器。
是的,导入确实意味着包含---它不会将导入的语法视为一个单独的实体,您可以为其使用所有这些部分树对象。
我有一个描述表达式的语法(原始的,对吧?)。我想在其他语言中使用这种表达式语言。
例如,OtherLanguage.g4:
grammar OtherLanguage.g4
import Expressions;
keyPair: IDENTIFIER ':' expression;
IDENTIFIER: [a-zA-Z0-9]+
如果我使用 import Expressions;
,那么它会生成一个有效的解析器,但它不会生成或使用 ExpressionsParser.ExpressionContext
,而是生成并使用 OtherLanguageParser.ExpressionContext
。这意味着我无法创建接受 "ExpressionContext" 的方法并在其他项目中重用它们。
是否有 ANTLR4 的功能可以实现此功能?
换句话说,我不想"import"表达式语法,而是解析器和词法分析器。
是的,导入确实意味着包含---它不会将导入的语法视为一个单独的实体,您可以为其使用所有这些部分树对象。