ошибка 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;}
    ;

Ответы (0 шт):