%incremental lexer 'Try a valid expression like "a = b*2": ' %whites /([ \t]+)/ %token NUM =/([0-9]+(?:\.[0-9]+)?)/ %token VAR =/([A-Za-z][A-Za-z0-9_]*)/ %right '=' %left '-' '+' %left '*' '/' %left NEG %% 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 ')' ; %%