#$ eyapp -TC DynamicallyChangingTheParser.eyp #$ ./DynamicallyChangingTheParser.pm -t -i -c 'D; S' #p_is_ds_ss(ds_is_D(TERMINAL[D]),ss_is_S(TERMINAL[S])) %conflict L { /(?=\G\s*;\s*S)/ ? $self->YYSetReduce(';', ':L') : $self->YYSetShift(';') } %expect 1 %% p: ds ';' ss | ss ; ds: D %PREC L ';' ds | %name :L D %PREC L ; ss: S ';' ss | S ; %%