%whites =/([ \t]*(?:#.*)?)/ %token NUM =/([0-9]+(?:\.[0-9]+)?)/ %token VAR =/([A-Za-z][A-Za-z0-9_]*)/ %right '=' %left '-' '+' %left '*' '/' %left NEG %right '^' %% start: input ; input: line * ; line: '\n' | exp '\n' | error '\n' ; exp: NUM | VAR | VAR '=' exp | exp '+' exp | exp '-' exp | exp '*' exp | exp '/' exp | '-' exp %prec NEG | exp '^' exp | '(' exp ')' ; %%