On Mon, Jan 23, 2012 at 8:07 PM, M Conrad <span dir="ltr"><<a href="mailto:silverdirk-rgl@silverdirk.com">silverdirk-rgl@silverdirk.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>Next, if your problem is that you want certain characters to indicate the<br>end of a previous loop (like ':' in your case), check out the priority<br>system.  If staying in a machine has equal priority with leaving it to go<br>
to the next, Ragel will do both.  But, if one is prioritized, Ragel will<br>pick the transition with higher priority.<br><br></blockquote><div>Here it'll not work. Priorities prune some branches - this is Ok in some limited circumstances, but is case like this one you'll get parser which will start rejecting correct input.</div>
<div><br></div><div class="gmail_quote">On Mon, Jan 23, 2012 at 8:12 PM, Gerald Gutierrez <span dir="ltr"><<a href="mailto:gerald.gutierrez@gmail.com">gerald.gutierrez@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
<br>
On 2012-01-23, at 0:26, Victor Khimenko <<a href="mailto:khim@chromium.org">khim@chromium.org</a>> wrote:<br>
<br>
> The answer is simple: you can't. Ragel generates DFA with actions attached. This means: symbol in => action out.<br>
><br>
> Your definition is ambigous: when you see a space you have no idea if it belongs to the identifier or not. You must scan ahead and look for the next non-space char: if it's colon then the previous space was not part of the identifier, if it's alnum then it is. This is not something DFA can/should do...<br>

<br>
</div>Hi Victor,<br>
<br>
There is a chapter in the documentation about nondeterminism. Anything something there that can help in this situation?<br>
<span class="HOEnZb"><font color="#888888"><br></font></span></blockquote><div>No. The task (as you've formulated it) principally can not be solved using your definition: to know if identifier is finished or not you need unlimited lookahead or backtracking.</div>
<div><br></div><div>How would I solve this dilemma? I'll accept the fact that leaving action can be called many times - this not a problem for me: I'll store beginning of the identifier in the enter action and the end in the leaving action. EVERYTHING ELSE I'll move to the action triggered by other elements (colon, etc). At this point I'll know both beginning and the end of the identifier and can do whatever I want with it.</div>
<div><br></div></div>