Java 如何区分具有相同规则但在不同范围内声明的变量(ANTLR 4)?
我正在用ANTLR 4开发自己的语言,这是我语法的一部分Java 如何区分具有相同规则但在不同范围内声明的变量(ANTLR 4)?,java,antlr4,Java,Antlr4,我正在用ANTLR 4开发自己的语言,这是我语法的一部分 program: main EOF; // the program rule. main: NEWLINE* study NEWLINE* ; // the main rule; study : studyBlock (NEWLINE* assignVariableBlock)? ; // the study rule. /* simple assign name = "name" */ simpleAssign: name =
program: main EOF; // the program rule.
main: NEWLINE* study NEWLINE* ; // the main rule;
study : studyBlock (NEWLINE* assignVariableBlock)? ; // the study rule.
/* simple assign name = "name" */
simpleAssign: name = ID '=' value = (STRING | BOOLEAN | INTEGER | DOUBLE);
/* study parameters */
studyParameters: (| ( simpleAssign (',' simpleAssign)*) );
/* study block */
studyBlock: 'study' '(' studyParameters ')' NEWLINE ;
/* assign variables block */
assignVariableBlock: simpleAssign*;
simpleAssign规则用于rule studyParameters和rule assignVariableBlock,因此如何获取每个特定块中声明的变量
study(string = "string", string2 = "string2")
x = "string3"
y = "string4"
我的听众中怎么会有这样的声音
// study parameters
[string:"string",string2:"string2"] // map
// tmp variabels
[x:"string3",y:"string4"] // map
您可以检查上下文的
parent
变量:
@覆盖
public void enterSimpleAsign(YourParser.SimpleAsignContext ctx){
if(解析器的ctx.parent实例StudyParametersContext){
//从“studyParameters”调用`
}
否则{
//从'assignVariableBlock'调用`
}
}