[ragel-users] union operator and thread-local variables

Devin Bayer web at t-0.be
Wed Oct 28 14:55:23 UTC 2009

Hello. I would like to parse a date which can be in one of 
several forms and I want to get the number of a month in a variable.

My problem is that for some input, the month is parsed by both 
alternatives, but I need to get the correct value. If I could 
detect which "thread" I am in, I could throw away the other 
values in an @lerr handler.

This machine demonstrates what I want:

     machine test;

     action in { puts("mon begins", fpc); }
     action out { puts("mon ends", fpc); }
     action fail { puts("thread failed", fpc); }

     i = digit+;
     day = i " ";
     mon = i >in %out " ";
     time = (i ":" i) @lerr(fail);
         = day mon time
         | mon time

     main := stamp "\n" >{ puts("done"); };

Is there another way to do this?

Devin Bayer

More information about the ragel-users mailing list