ragel 5.23 released

Steve Horne stephenhorne... at aol.com
Sat Aug 4 04:09:37 UTC 2007

On Aug 3, 6:15 pm, Adrian Thurston <thurs... at cs.queensu.ca> wrote:
> You can make such a machine like this:
> later = start: "", "" -> final;
> Though using this machine will be difficult. It will create unreachable
> states that Ragel removes during compilation.

That actually works almost perfectly - certainly it solves the
immediate problem.

I tested it with the following...

%%{  machine  test_null;

     h = 1;
     j = 2;
     k = 3;

     X = start: "", "" -> final;

     A = h j k;
     B = h h X k;
     C = k k X h;
     D = k j h;

     main := A | B | C | D;

I get an FSM that clearly accepts the A and D alternatives as it
should, and does not accept the B and C variants or any unwanted
sequences. The only extremely minor issue (non-issue, really) is that
one state is kept that perhaps should be eliminated - a state that is
reachable, but which is not an end state and which has no outward
transitions. OTOH, keeping this dead-end state might be a good thing -
I can test cases B and C as far as they are defined if I need to.


More information about the ragel-users mailing list