[ragel-users] fnext followed by fbreak
Adrian Thurston
thurs... at cs.queensu.ca
Sat Apr 12 17:10:40 UTC 2008
Hi Andrei,
This has been fixed in trunk.
-Adrian
Andrei Polushin wrote:
> The action like this:
>
> action x {
> fnext somewhere_else;
> fbreak;
> };
>
> become generated as follows:
>
> action x {
> cs = 123; // fnext somewhere_else;
> {p++; cs = 456; goto _out;} // fbreak;
> };
>
> where '123' is the desired next state (aka somewhere_else),
> and '456' is the default target state for the transition.
>
> That is, the effect of fnext is neglected, when followed by fbreak.
>
> For now, the workaround is to redeclare 'cs' in local block:
>
> action x {
> fnext somewhere_else;
> {int cs = -1; fbreak;}
> };
>
> but I hope there should be a better solution for this.
>
> For actions that involve both fnext and fbreak, I would suggest
> generating {cs = ...} in the beginning of the action, and omit
> that assignnment in the code generated by fbreak.
>
> --
> Andrei Polushin
>
>
> >
>
More information about the ragel-users
mailing list