Hi Alexander,

You should use the * in text and ** in main on Element.

Also, you'll get a warning about applying kleene star to a machine that accepts the zero length word. Normally you don't want to do that because it creates an ambiguity. You'll actually see evidence of the ambiguity ... start_test will get executed more than once.

-Adrian

On 10-07-20 11:56 AM, Alexander Laslavic wrote:
This is a problem I come up against over and over again:

     action start_text { printf("start_text") }
     action end_text {printf("end_text")}

     text = any**;
     Text = text>start_text %end_text;

     Element = Text;

     main := Element*;


Essentially, the start_text and end_text actions get called for every
character.  If I take the star operator off of Element, it works fine, but
if Element has a star operator, ragel is preferring to repeat the Element
over repeating the any** in 'text'.

Is there some way I am not aware of to get it to prefer the inner
repitition?



_______________________________________________
ragel-users mailing list
[email protected]
http://www.complang.org/mailman/listinfo/ragel-users

Reply via email to