SmaCC: Shift/Reduce Conflict
sig
siguctua at gmail.com
Mon Apr 23 16:40:13 UTC 2007
> > Assignment :
> > Id "=" Expression;
>
> If I add
> Expression :
> FunctionCall
> | Assignment
> | ...
>
> Assignment :
> Id "=" Expression;
>
Try this one instead:
AssignPart :
Id "="
| AssignPart Id "="
;
Expression:
AssignPart ExpressionTail
| ExpressionTail
ExpressionTail:
| Function
| BinaryOp
| ...
| ExpressionTail Function
| ExpressionTail BinaryOp
..
This will remove shitf/reduce conflicts.
The main reason why its occurs is when you write something like this:
Expression:
FixedPattern
| FixedPattern Expression
this will force parser to shift and to grow its stack.
but if you write :
Expression:
FixedPattern
| Expression FixedPattern
parser will reduce faster.
More information about the Squeak-dev
mailing list
|