fnext followed by fbreak

Andrei Polushin polus... at gmail.com
Fri Mar 28 21:41:21 UTC 2008


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