program: ^ program +(IDENT) *\(input,output\); *$ ident: ([a-zA-Z_][a-zA-Z_1-9]*) vars: ^ *var +(IDENTS *: *TIPO *;)* *$ idents: (IDENT)(, *IDENT)* tipo: integer bloco: ^ *begin *$ (EXPR)* ^ *end *$ expr: *IDENT *\(param\); * param: num || ident op:[+-*/&|^(&&)(||)(^^)]