ошибка AC0050 Antlr C#
Пытаюсь сделать этот пример https://habr.com/ru/post/110710/ Первая часть выходит, до того как "добавляем код C# в грамматику", после выдает ошибку AC0050 mismatched input '[int value]' expecting ARG_ACTION while matching a rule. Может кто сталкивался и знает почему так ? Грамматика
grammar Calc;
options
{
language = CSharp;
}
@header{
using System;
using System.Collections;
}
@members{
Hashtable memory = new Hashtable();
}
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;
INT : '0'..'9'+
;
calc
: statement+
;
statement
: expr NEWLINE { Console.WriteLine($expr.value); }
| ID '=' expr NEWLINE { memory.Add($ID.text, $expr.value); }
| NEWLINE
;
NEWLINE : '\r'? '\n'
;
expr returns[int value]
: me1=multExpression {$value = me1;}
('+' me2=multExpression {$value += $me2.value;}
|'-' me2=multExpression {$value -= $me2.value;})*
;
multExpression returns[int value]
: a1=atom {$value = $a1.value;}
('*' a2=atom {$value *= $a2.value;}
|'/' a2=atom {$value /= $a2.value;})*
;
atom returns[int value]
: ID {$value = (int)memory[$ID.text];}
| INT {$value = int.Parse($INT.text);}
| '(' expr ')' {$value = $expr.value;}
;