grammar ListExp;

//@header{package ...;}

start : listExp EOF;

listExp : <assoc=right> listExp '::' listExp # cons
        | listExp '+' listExp # concat
        | '[' ( listExp ( ',' listExp )* )? ']' # list
        | '(' listExp ')' # paren
        | DIGIT # digit
        ;

DIGIT : '0'..'9';
WS : [ \t\r\n]+ -> skip;
