[squeak-dev] Re: Precedence in SmaCC

Andrew Tween amtween at hotmail.com
Sun Mar 9 11:30:30 UTC 2008


Hi,
I get the same problem.
But if I change the parser def slightly (simply insert a cr after %left "*" 
"/"; ) to give...

%left "+" "-";
%left "*" "/";
Expression :
          Expression 'exp1' "+" Expression 'exp2' {exp1 + exp2} | Expression 
'exp1' "-" Expression 'exp2' {exp1 - exp2} | Expression 'exp1' "*" 
Expression 'exp2' {exp1 * exp2} | Expression 'exp1' "/" Expression 'exp2' 
{exp1 / exp2} | Number 'number' {number};
Number : <number> 'numberToken' {numberToken value asNumber};

and recompile, then it works as expected, giving 2+3*4 = 14.
Comparing the generated classes for the two parser defs  shows that the only 
difference  in the generated code is in TestParser>>#transitionTable

Cheers,
Andy






More information about the Squeak-dev mailing list