2013-05-20 3 views
4

파서 문법 locals 절에 여러 변수를 정의하고 싶습니다.ANTLR은 locals 절에서 여러 변수 정의를 허용합니까?

단순화 된 예는 다음과 같습니다

body 
locals [ 
    Map<String, String> bodyContent = new HashMap<String, String>(); 
    long counter = 0; 
] 
      : BODY_CAPTION NEWLINE line ; 
line  : key='MyKey' TAB value='MyValue' NEWLINE 
       { 
        $body::bodyContent.put($key.text, $value.text); 
        $body::counter++; 
       } ; 

이 오류를 제공합니다

unknown attribute 'counter' for rule 'body' in '$body::counter'

나는이

locals [ 
    long counter = 0; 
    Map<String, String> bodyContent = new HashMap<String, String>(); 
] 

같은 locals 절에 라인을 교체하는 경우 오류 :

unknown attribute 'bodyContent' for rule 'body' in '$body::bodyContent'

분명히, ANTLR은 locals 절의 첫 번째 지역 변수 정의를 인식합니다.

locals 아래에 여러 로컬 변수를 정의하는 방법이 있습니까?

답변

7

예. 그러나 매개 변수 목록 및 returns 절처럼 쉼표로 구분됩니다.

locals [ 
    Map<String, String> bodyContent = new HashMap<String, String>(), 
    long counter = 0 
] 
+1

그 해결책입니다, 감사합니다! – DCX

관련 문제