<div>Hello</div><div> </div><div>// buff is a char[MAX_EXPR_SIZE], space_left is an int.<br />> number {<br />>    strncpy(buff + (MAX_EXPR_SIZE - space_left), ts, te-ts);<br />>    space_left -= te-ts+1;<br />>    buff[te-ts] = '\0';<br />>    parse(NUMBER, buff);<br />>};<br /><br />> I use almost that same exact set of code except for the last line<br />> (which might be "parse(STRING, buff);" or whatever). </div><div> </div><div>Just use functions.</div><div> </div><div>instead of</div><div> </div><div>> action number {</div><div>> ...</div><div>>    parse(NUMBER, buff);</div><div>> }</div><div> </div><div>and [0-9]+ %number</div><div> </div><div>write this</div><div> </div><div>void CallParser(int type) {</div><div>...</div><div><div>    parse(type, buff);</div>}</div><div> </div><div>and invoke it like</div><div> </div><div><div>[0-9]+ %{ CallParser(NUMBER); }</div><div>" (any :>> '"') %{ CallParser(STRING); }</div><div> </div></div><div> </div><div>-- <br />Peter A. Kerzum</div>