[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