复合语法:访问导入的语法范围

时间:2012-05-26 17:45:18

标签: antlr antlr3

假设我有两个语法(并且某个地方有Lexer定义),ParserA和ParserB。

在ParserA中,我有以下代码:

parser grammar ParserA;

classDeclaration
scope {
    ST mList;
}
...

ParserB就像:

parser grammar ParserB;

import ParserA;

methodDeclaration : something something { $classDeclaration::mList.add(...) };

由于classDeclaration位于不同的类(和文件)中,因此操作中的代码将无法编译(通过javac)。关于如何修复它的任何提示?

1 个答案:

答案 0 :(得分:2)

  

有关如何修复它的任何提示?

不,这里没有(AFAIK)ANTLR快捷方式:导入的语法之间无法进行通信(通过使用范围或通过为导入的语法规则提供参数)。