<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 lang="en"><span>You've helped me a lot, thank you.</span></span></div>
<div> </div>
<div><span lang="en"><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" target="_blank">ragel@colm.net</a>
<a href="http://www.colm.net/cgi-bin/mailman/listinfo/ragel" target="_blank">http://www.colm.net/cgi-bin/mailman/listinfo/ragel</a>
</pre>
</blockquote>
</blockquote>
<div> </div>