<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html><body style='font-size: 14pt; font-family: Verdana,Geneva,sans-serif'>
<p>Hi, that's right, ragel doesn't automatically print anything.</p>
<p>The code you have will print an error if the machine is not in a final state. If it is run at the end of the input then yes it is correct.</p>
<p>The noerror and nofinal modifiers just prevent the static integers representing those things from getting created. In your code you don't need them because you've used the write versions of those things instead.</p>
<p>On 2018-02-12 03:58, xoru wrote:</p>
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px"><!-- html ignored --><!-- head ignored --><!-- meta ignored -->
<div>Hi,</div>
<div> </div>
<div>Many thanks. This work fine. I would like to thank you very much for your help. I have been struggling with this problem for a long time. I will go from bison, because unfortunately when bison have mistakes it publish messages to stdout and I want to emmbeding them in the program. Do not they write anything in the ragel?</div>
<div> </div>
<div>I add a information if there is a problem or not.</div>
<div> </div>
<div>  if ( cs < %%{ write first_final; }%% )<br />   {<br />   printf("\x1B[31mProblem\x1B[0m [%d]\n", %%{ write error; }%%);<br />   }<br />this is correct?</div>
<div> </div>
<div> </div>
<div>There is a phrase in the code:</div>
<div>"write data noerror nofinal;"</div>
<div>Is it correct?</div>
<div>"noerror is neccesary? "nofinal" ?</div>
<div> </div>
<div>I working on comments but this is not important.</div>
<div><span><span>You've helped me a lot, thank you.</span></span></div>
<div> </div>
<div><span><span>Marek Łukasz</span></span></div>
<div> </div>
<div> </div>
<div> </div>
<div>W dniu 2018-02-07 17:08:54 użytkownik Adrian Thurston <thurston@colm.net> napisał:</div>
<blockquote style="margin-left: 7px; border-left: 2px solid orange; padding-left: 8px;">
<p>Hi,</p>
<p>It's because space* accepts the zero-length string. So "abc" is actually three words with zero-length whitespace in between. Well, technically it's both that and what you want, so you need to remove the ambiguity. What you need is more like this:</p>
<p>space* wyraz ( space+ wyraz )*</p>
<p> </p>
<p>-Adrian</p>
<p>On 2018-02-05 07:06, xoru wrote:</p>
<blockquote style="padding-left: 5px; border-left: #1010ff 2px solid; margin-left: 5px;">
<div>
<pre>How put "a ab abc \t abcd\n  abcde"<br />and get<br />'a'<br />'ab'<br />'abc'<br />'abcd'<br />'abcde'<br /><br />When i use main :=  (space* wyraz )* i get only chars not words<br /><br />/* @LANG: c  */
#include <stdio.h>
#include <string.h>

%%{
machine foo;

 action beginning { pocz = p; }
 action ending   { printf("'%.*s'\n",(int)(p - pocz), pocz); }

 wyraz = [a-z]+ >beginning %ending;
 main := ( space* wyraz ) ;

write data noerror nofinal;
}%%


int main(int argc, char **argv)
{
int cs = 0;
char *pocz;

 if (argc > 1)
  {
  char *p = argv[1];
  char *pe = p + strlen(p);
  char *eof = pe;
  %%write init;
  %%write exec;
  }

return 0;
}</pre>
</div>
<br />
<pre>_______________________________________________
ragel mailing list
<a href="mailto:ragel@colm.net">ragel@colm.net</a>
<a href="http://www.colm.net/cgi-bin/mailman/listinfo/ragel">http://www.colm.net/cgi-bin/mailman/listinfo/ragel</a>
</pre>
</blockquote>
</blockquote>
<div> </div>
<br />
<pre>_______________________________________________
ragel mailing list
<a href="mailto:ragel@colm.net">ragel@colm.net</a>
<a href="http://www.colm.net/cgi-bin/mailman/listinfo/ragel">http://www.colm.net/cgi-bin/mailman/listinfo/ragel</a>
</pre>
</blockquote>
</body></html>