+line_item : anychar { size_t i;
+ CLEAR_BUFFER(line_item_buf);
+ line_item_buf_ptr = line_item_buf;
+ /* The following also takes care of '@@' */
+ if (!strncmp($1, "@@", 3))
+ *line_item_buf_ptr++ = '@';
+ else
+ for (i=0; i < strlen($1); i++)
+ *line_item_buf_ptr++ = $1[i];
+ $$ = line_item_buf;
+ }
+ | ESCAPE { CLEAR_BUFFER(line_item_buf);
+ line_item_buf_ptr = line_item_buf;
+ /* For now, ignore escapes */
+ $$ = line_item_buf;
+ }
+ | line_item anychar
+ { size_t i;
+ /* The following also takes care of '@@' */
+ if (!strncmp($2, "@@", 3))
+ *line_item_buf_ptr++ = '@';
+ else
+ for (i=0; i < strlen($2); i++)
+ *line_item_buf_ptr++ = $2[i];
+ $$ = line_item_buf;
+ }
+ | line_item ESCAPE
+ { /* For now, ignore escapes */
+ $$ = line_item_buf;
+ }