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