grammar SkipTest;


expression
    : functionCall                      #call
    | expression SYMBOL_MUL expression  #mul
    | expression SYMBOL_ADD expression  #add
    | expression SYMBOL_POW expression  #pow
    | number                            #num
    ;

functionCall
    : NAME SYMBOL_LB args=functionArguments SYMBOL_RB
    ;

functionArguments
    : functionArgument (SYMBOL_COM functionArgument)*
    ;

functionArgument
    : expression
    ;

number : NUMBER_INT;

NUMBER_INT : [0-9]+ ;

NAME : [a-z]+ ;

SYMBOL_LB : '(' ;
SYMBOL_RB : ')' ;
SYMBOL_COM : ',' ;

SYMBOL_MUL : '*' ;
SYMBOL_ADD : '+' ;
SYMBOL_POW : '^' ;

WS :  [ \t\r\n]+ -> skip ;