Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何区分具有相同规则但在不同范围内声明的变量(ANTLR 4)?_Java_Antlr4 - Fatal编程技术网

Java 如何区分具有相同规则但在不同范围内声明的变量(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 =

我正在用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 = 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'调用`
}
}