в грамматике парсера я хотел бы определить несколько переменных в предложении 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
следующим образом
locals [
long counter = 0;
Map<String, String> bodyContent = new HashMap<String, String>();
]
это дает ошибку:
unknown attribute 'bodyContent' for rule 'body' in '$body::bodyContent'
Судя по всему, ANTLR распознает только первое определение локальной переменной в предложении locals
.
Есть ли способ определить несколько локальных переменных в locals
?