Java ANTLR找不到计数器符号

Java ANTLR找不到计数器符号,java,compiler-errors,antlr,antlr3,symbols,Java,Compiler Errors,Antlr,Antlr3,Symbols,我一直在到处寻找这个问题的答案,但到目前为止我一个也没找到。我正在从事一个ANTLR项目,该项目基本上应该实现一个类似Haskell的语法 listDecl: LIST {int count=0; ArrayList<Integer> list = new ArrayList<Integer>();} (WS)+ ID '=' '[' a1=atom {count++; list.add($a1.value);} (',' a2=atom {count++; list.a

我一直在到处寻找这个问题的答案,但到目前为止我一个也没找到。我正在从事一个ANTLR项目,该项目基本上应该实现一个类似Haskell的语法

listDecl:
LIST {int count=0; ArrayList<Integer> list = new ArrayList<Integer>();} (WS)+ ID '=' '[' a1=atom {count++; list.add($a1.value);} (',' a2=atom {count++; list.add($a2.value);} )* ']' {listMemory.put($ID.text, list);}
;
如果以前有人问过这个问题,我很抱歉,但经过广泛的研究,我真的放弃了希望
感谢您的帮助

如果您希望
计数
列表
局部变量在整个规则中可见,则需要在
@init
块中声明它们

listDecl
@init {
  int count = 0;
  ArrayList<Integer> list = new ArrayList<Integer>();
}
  : LIST WS+ ID '=' '[' a1=atom {count++; list.add($a1.value);}
    ( ',' a2=atom {count++; list.add($a2.value);}
    )*
    ']' {listMemory.put($ID.text, list);}
  ;
listDecl
@初始化{
整数计数=0;
ArrayList=新建ArrayList();
}
:LIST WS+ID'=''['a1=atom{count++;LIST.add($a1.value);}
(','a2=atom{count++;list.add($a2.value);}
)*
']{listMemory.put($ID.text,list);}
;

很抱歉,我忘了提及此规则用于声明和存储整数列表。。。我不知道这会不会有什么不同,但我想我应该再提一次。。。
listDecl
@init {
  int count = 0;
  ArrayList<Integer> list = new ArrayList<Integer>();
}
  : LIST WS+ ID '=' '[' a1=atom {count++; list.add($a1.value);}
    ( ',' a2=atom {count++; list.add($a2.value);}
    )*
    ']' {listMemory.put($ID.text, list);}
  ;