extern char piece_temp[];
extern char *piece[];
extern int piece0, piece1;
-void insert_piece(int n, const void *str);
+void piece_insert(int n, const void *str);
int piece2, piece3;
static void peek(int *yychar_p, YYSTYPE *yylval_p, YYLTYPE *yylloc_p) {
if (*yychar_p == YYEMPTY)
piece1 += 2;
}
#define insert_before(n, str) \
- do { insert_piece(piece2 + (n) * 2, (str)); ++piece3; } while (0)
+ do { piece_insert(piece2 + (n) * 2, (str)); ++piece0; ++piece3; } while (0)
#define insert_after(n, str) \
- do { insert_piece(piece2 + (n) * 2 + 1, (str)); ++piece3; } while (0)
+ do { piece_insert(piece2 + (n) * 2 + 1, (str)); ++piece0; ++piece3; } while (0)
int
yyparse (void)
{
---- parse-gram.c.orig 2018-06-14 17:52:45.371946333 +1000
-+++ parse-gram.c 2018-06-15 08:48:43.493541783 +1000
+--- parse-gram.c.orig 2018-06-23 14:56:48.644152186 +1000
++++ parse-gram.c 2018-06-23 14:57:33.624150282 +1000
@@ -1742,6 +1742,25 @@
| yyparse. |
`----------*/
+extern char piece_temp[];
+extern char *piece[];
+extern int piece0, piece1;
-+void insert_piece(int n, const void *str);
++void piece_insert(int n, const void *str);
+int piece2, piece3;
+static void peek(int *yychar_p, YYSTYPE *yylval_p, YYLTYPE *yylloc_p) {
+ if (*yychar_p == YYEMPTY)
+ piece1 += 2;
+}
+#define insert_before(n, str) \
-+ do { insert_piece(piece2 + (n) * 2, (str)); ++piece3; } while (0)
++ do { piece_insert(piece2 + (n) * 2, (str)); ++piece0; ++piece3; } while (0)
+#define insert_after(n, str) \
-+ do { insert_piece(piece2 + (n) * 2 + 1, (str)); ++piece3; } while (0)
++ do { piece_insert(piece2 + (n) * 2 + 1, (str)); ++piece0; ++piece3; } while (0)
int
yyparse (void)
{
/* If YYLEN is nonzero, implement the default value of the action:
'$$ = $1'.
-@@ -2768,6 +2798,23 @@
+@@ -2792,6 +2822,23 @@
if (yychar_backup != yychar)
YY_LAC_DISCARD ("yychar change");
}
char *piece[10000];
int piece0;
int piece1;
-void insert_piece(int n, const char *str) {
+void piece_append(const char *str) {
+ piece[piece1++] = strdup(str);
+}
+void piece_insert(int n, const char *str) {
memmove(piece + n + 1, piece + n, (piece1 - n) * sizeof(char *));
piece[n] = strdup(str);
- ++piece0;
++piece1;
}
size_t n = strlen(yytext);
if (n) {
sprintf(piece_temp, "<token value=\"%d\">", result);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
piece_esc(yytext, n);
- piece[piece1++] = strdup("</token>");
+ piece_append("</token>");
}
else {
sprintf(piece_temp, "<token value=\"%d\" />", result);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
}
#endif
piece_pack();
bracketed_id_str = NULL;
BEGIN SC_AFTER_IDENTIFIER;
piece_pack();
- piece[piece1++] = strdup("<Id>");
+ piece_append("<Id>");
flush();
- piece[piece1++] = strdup("</Id>");
+ piece_append("</Id>");
piece_pack();
}
YY_BREAK
#if 1
piece_pack();
sprintf(piece_temp, "<Int value=\"%d\">", val->integer);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
piece_esc(gram_text, yy_c_buf_p - gram_text);
- piece[piece1++] = strdup("</Int>");
+ piece_append("</Int>");
piece_pack();
return ~INT;
#else
#if 1
piece_pack();
sprintf(piece_temp, "<Int value=\"%d\">", val->integer);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
piece_esc(gram_text, yy_c_buf_p - gram_text);
- piece[piece1++] = strdup("</Integer>");
+ piece_append("</Integer>");
piece_pack();
return ~INT;
#else
case 70:
YY_RULE_SETUP
#line 331 "src/scan-gram.l"
-token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; flush(); piece[piece1++] = strdup("<EscapedCharacter>");
+token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; flush(); piece_append("<EscapedCharacter>");
YY_BREAK
/* Strings. */
case 71:
YY_RULE_SETUP
#line 334 "src/scan-gram.l"
-token_start = loc->start; BEGIN SC_ESCAPED_STRING; flush(); piece[piece1++] = strdup("<EscapedString>");
+token_start = loc->start; BEGIN SC_ESCAPED_STRING; flush(); piece_append("<EscapedString>");
YY_BREAK
/* Prologue. */
case 72:
YY_RULE_SETUP
#line 337 "src/scan-gram.l"
-code_start = loc->start; BEGIN SC_PROLOGUE; flush(); piece[piece1++] = strdup("<Prologue>");
+code_start = loc->start; BEGIN SC_PROLOGUE; flush(); piece_append("<Prologue>");
YY_BREAK
/* Code in between braces. */
case 73:
code_start = loc->start;
BEGIN SC_BRACED_CODE;
flush();
- piece[piece1++] = strdup("<BracedCode>");
+ piece_append("<BracedCode>");
}
YY_BREAK
/* Semantic predicate. */
nesting = 0;
code_start = loc->start;
flush();
- piece[piece1++] = strdup("<Predicate>");
+ piece_append("<Predicate>");
BEGIN SC_PREDICATE;
}
YY_BREAK
case 75:
YY_RULE_SETUP
#line 359 "src/scan-gram.l"
-piece_pack(); piece[piece1++] = strdup("<<TagAny>*</TagAny>>"); ++piece0; return ~TAG_ANY; /*return TAG_ANY;*/
+piece_pack(); piece_append("<<TagAny>*</TagAny>>"); ++piece0; return ~TAG_ANY; /*return TAG_ANY;*/
YY_BREAK
case 76:
YY_RULE_SETUP
#line 360 "src/scan-gram.l"
-piece_pack(); piece[piece1++] = strdup("<<TagNone />>"); ++piece0; return ~TAG_NONE; /*return TAG_NONE;*/
+piece_pack(); piece_append("<<TagNone />>"); ++piece0; return ~TAG_NONE; /*return TAG_NONE;*/
YY_BREAK
case 77:
YY_RULE_SETUP
token_start = loc->start;
BEGIN SC_TAG;
flush();
- piece[piece1++] = strdup("<Tag>");
+ piece_append("<Tag>");
}
YY_BREAK
case 78:
loc->start = token_start;
val->code = last_string;
BEGIN INITIAL;
- piece[piece1++] = strdup("</EscapedString>");
+ piece_append("</EscapedString>");
return STRING;
}
YY_BREAK
_("extra characters in character literal"));
STRING_FREE;
BEGIN INITIAL;
- piece[piece1++] = strdup("</EscapedCharacter>");
+ piece_append("</EscapedCharacter>");
return CHAR;
}
YY_BREAK
val->uniqstr = uniqstr_new (last_string);
STRING_FREE;
BEGIN INITIAL;
- piece[piece1++] = strdup("</Tag>");
+ piece_append("</Tag>");
return TAG;
}
STRING_GROW;
{
obstack_1grow (&obstack_for_string, c);
sprintf(piece_temp, "<Escape char=\"%d\">", (int)c);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
flush();
- piece[piece1++] = strdup("</Escape>");
+ piece_append("</Escape>");
}
}
YY_BREAK
{
obstack_1grow (&obstack_for_string, c);
sprintf(piece_temp, "<Escape char=\"%d\">", (int)c);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
flush();
- piece[piece1++] = strdup("</Escape>");
+ piece_append("</Escape>");
}
}
YY_BREAK
case 103:
YY_RULE_SETUP
#line 671 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\a'); piece[piece1++] = strdup("<Escape char=\"7\">"); flush(); piece[piece1++] = strdup("</Escape>");
+obstack_1grow (&obstack_for_string, '\a'); piece_append("<Escape char=\"7\">"); flush(); piece_append("</Escape>");
YY_BREAK
case 104:
YY_RULE_SETUP
#line 672 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\b'); piece[piece1++] = strdup("<Escape char=\"8\">"); flush(); piece[piece1++] = strdup("</Escape>");
+obstack_1grow (&obstack_for_string, '\b'); piece_append("<Escape char=\"8\">"); flush(); piece_append("</Escape>");
YY_BREAK
case 105:
YY_RULE_SETUP
#line 673 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\f'); piece[piece1++] = strdup("<Escape char=\"12\">"); flush(); piece[piece1++] = strdup("</Escape>");
+obstack_1grow (&obstack_for_string, '\f'); piece_append("<Escape char=\"12\">"); flush(); piece_append("</Escape>");
YY_BREAK
case 106:
YY_RULE_SETUP
#line 674 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\n'); piece[piece1++] = strdup("<Escape char=\"10\">"); flush(); piece[piece1++] = strdup("</Escape>");
+obstack_1grow (&obstack_for_string, '\n'); piece_append("<Escape char=\"10\">"); flush(); piece_append("</Escape>");
YY_BREAK
case 107:
YY_RULE_SETUP
#line 675 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\r'); piece[piece1++] = strdup("<Escape char=\"13\">"); flush(); piece[piece1++] = strdup("</Escape>");
+obstack_1grow (&obstack_for_string, '\r'); piece_append("<Escape char=\"13\">"); flush(); piece_append("</Escape>");
YY_BREAK
case 108:
YY_RULE_SETUP
#line 676 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\t'); piece[piece1++] = strdup("<Escape char=\"9\">"); flush(); piece[piece1++] = strdup("</Escape>");
+obstack_1grow (&obstack_for_string, '\t'); piece_append("<Escape char=\"9\">"); flush(); piece_append("</Escape>");
YY_BREAK
case 109:
YY_RULE_SETUP
#line 677 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\v'); piece[piece1++] = strdup("<Escape char=\"11\">"); flush(); piece[piece1++] = strdup("</Escape>");
+obstack_1grow (&obstack_for_string, '\v'); piece_append("<Escape char=\"11\">"); flush(); piece_append("</Escape>");
YY_BREAK
/* \\[\"\'?\\] would be shorter, but it confuses xgettext. */
case 110:
YY_RULE_SETUP
#line 680 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, gram_text[1]); sprintf(piece_temp, "<Escape char=\"%d\">", gram_text[1]); piece[piece1++] = strdup(piece_temp); flush(); piece[piece1++] = strdup("</Escape>");
+obstack_1grow (&obstack_for_string, gram_text[1]); sprintf(piece_temp, "<Escape char=\"%d\">", gram_text[1]); piece_append(piece_temp); flush(); piece_append("</Escape>");
YY_BREAK
case 111:
YY_RULE_SETUP
{
obstack_1grow (&obstack_for_string, c);
sprintf(piece_temp, "<Escape char=\"%d\">", c);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
flush();
- piece[piece1++] = strdup("</Escape>");
+ piece_append("</Escape>");
}
}
YY_BREAK
case 114:
YY_RULE_SETUP
#line 719 "src/scan-gram.l"
-STRING_GROW; BEGIN context_state; /*piece[piece1++] = strdup("</Character>");*/
+STRING_GROW; BEGIN context_state; /*piece_append("</Character>");*/
YY_BREAK
case 115:
/* rule 115 can match eol */
case 116:
YY_RULE_SETUP
#line 726 "src/scan-gram.l"
-STRING_GROW; BEGIN context_state; /*piece[piece1++] = strdup("</String>");*/
+STRING_GROW; BEGIN context_state; /*piece_append("</String>");*/
YY_BREAK
case 117:
/* rule 117 can match eol */
context_state = YY_START;
token_start = loc->start;
/*flush();
- piece[piece1++] = strdup("<Character>");*/
+ piece_append("<Character>");*/
BEGIN SC_CHARACTER;
}
YY_BREAK
context_state = YY_START;
token_start = loc->start;
/*flush();
- piece[piece1++] = strdup("<String>");*/
+ piece_append("<String>");*/
BEGIN SC_STRING;
}
YY_BREAK
loc->start = code_start;
val->code = last_string;
BEGIN INITIAL;
- piece[piece1++] = strdup("</BracedCode>");
+ piece_append("</BracedCode>");
return BRACED_CODE;
}
}
loc->start = code_start;
val->code = last_string;
BEGIN INITIAL;
- piece[piece1++] = strdup("</Predicate>");
+ piece_append("</Predicate>");
return BRACED_PREDICATE;
}
else
loc->start = code_start;
val->code = last_string;
BEGIN INITIAL;
- piece[piece1++] = strdup("</Prologue>");
+ piece_append("</Prologue>");
return PROLOGUE;
}
YY_BREAK
---- scan-gram.c.orig 2018-06-15 15:35:57.635168211 +1000
-+++ scan-gram.c 2018-06-23 10:48:16.772600940 +1000
-@@ -66,6 +66,17 @@
+--- scan-gram.c.orig 2018-06-23 14:56:48.656152185 +1000
++++ scan-gram.c 2018-06-23 14:57:16.820150994 +1000
+@@ -66,6 +66,19 @@
/* %endif */
/* end standard C headers. */
+char *piece[10000];
+int piece0;
+int piece1;
-+void insert_piece(int n, const char *str) {
++void piece_append(const char *str) {
++ piece[piece1++] = strdup(str);
++}
++void piece_insert(int n, const char *str) {
+ memmove(piece + n + 1, piece + n, (piece1 - n) * sizeof(char *));
+ piece[n] = strdup(str);
-+ ++piece0;
+ ++piece1;
+}
+
/* %if-c-or-c++ */
/* flex integer type definitions */
-@@ -253,7 +264,21 @@
+@@ -253,7 +266,21 @@
} \
while ( 0 )
#ifndef YY_TYPEDEF_YY_SIZE_T
#define YY_TYPEDEF_YY_SIZE_T
-@@ -1395,8 +1420,88 @@
+@@ -1395,8 +1422,88 @@
/** The main scanner function which does all the work.
*/
+ size_t n = strlen(yytext);
+ if (n) {
+ sprintf(piece_temp, "<token value=\"%d\">", result);
-+ piece[piece1++] = strdup(piece_temp);
++ piece_append(piece_temp);
+ piece_esc(yytext, n);
-+ piece[piece1++] = strdup("</token>");
++ piece_append("</token>");
+ }
+ else {
+ sprintf(piece_temp, "<token value=\"%d\" />", result);
-+ piece[piece1++] = strdup(piece_temp);
++ piece_append(piece_temp);
+ }
+#endif
+ piece_pack();
register yy_state_type yy_current_state;
register char *yy_cp, *yy_bp;
register int yy_act;
-@@ -1475,7 +1580,12 @@
+@@ -1475,7 +1582,12 @@
gram__load_buffer_state( );
}
bracketed_id_str = NULL;
BEGIN SC_AFTER_IDENTIFIER;
piece_pack();
- piece[piece1++] = strdup("<Id>");
+ piece_append("<Id>");
flush();
- piece[piece1++] = strdup("</Id>");
+ piece_append("</Id>");
piece_pack();
}
#if 1
piece_pack();
sprintf(piece_temp, "<Int value=\"%d\">", val->integer);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
piece_esc(yytext, yy_c_buf_p - yytext);
- piece[piece1++] = strdup("</Int>");
+ piece_append("</Int>");
piece_pack();
return ~INT;
#else
#if 1
piece_pack();
sprintf(piece_temp, "<Int value=\"%d\">", val->integer);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
piece_esc(yytext, yy_c_buf_p - yytext);
- piece[piece1++] = strdup("</Integer>");
+ piece_append("</Integer>");
piece_pack();
return ~INT;
#else
}
/* Characters. */
- "'" token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; flush(); piece[piece1++] = strdup("<EscapedCharacter>");
+ "'" token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; flush(); piece_append("<EscapedCharacter>");
/* Strings. */
- "\"" token_start = loc->start; BEGIN SC_ESCAPED_STRING; flush(); piece[piece1++] = strdup("<EscapedString>");
+ "\"" token_start = loc->start; BEGIN SC_ESCAPED_STRING; flush(); piece_append("<EscapedString>");
/* Prologue. */
- "%{" code_start = loc->start; BEGIN SC_PROLOGUE; flush(); piece[piece1++] = strdup("<Prologue>");
+ "%{" code_start = loc->start; BEGIN SC_PROLOGUE; flush(); piece_append("<Prologue>");
/* Code in between braces. */
"{" {
code_start = loc->start;
BEGIN SC_BRACED_CODE;
flush();
- piece[piece1++] = strdup("<BracedCode>");
+ piece_append("<BracedCode>");
}
/* Semantic predicate. */
nesting = 0;
code_start = loc->start;
flush();
- piece[piece1++] = strdup("<Predicate>");
+ piece_append("<Predicate>");
BEGIN SC_PREDICATE;
}
/* A type. */
- "<*>" piece_pack(); piece[piece1++] = strdup("<<TagAny>*</TagAny>>"); ++piece0; return ~TAG_ANY; /*return TAG_ANY;*/
- "<>" piece_pack(); piece[piece1++] = strdup("<<TagNone />>"); ++piece0; return ~TAG_NONE; /*return TAG_NONE;*/
+ "<*>" piece_pack(); piece_append("<<TagAny>*</TagAny>>"); ++piece0; return ~TAG_ANY; /*return TAG_ANY;*/
+ "<>" piece_pack(); piece_append("<<TagNone />>"); ++piece0; return ~TAG_NONE; /*return TAG_NONE;*/
"<" {
nesting = 0;
token_start = loc->start;
BEGIN SC_TAG;
flush();
- piece[piece1++] = strdup("<Tag>");
+ piece_append("<Tag>");
}
"%%" {
loc->start = token_start;
val->code = last_string;
BEGIN INITIAL;
- piece[piece1++] = strdup("</EscapedString>");
+ piece_append("</EscapedString>");
return STRING;
}
<<EOF>> unexpected_eof (token_start, "\"");
_("extra characters in character literal"));
STRING_FREE;
BEGIN INITIAL;
- piece[piece1++] = strdup("</EscapedCharacter>");
+ piece_append("</EscapedCharacter>");
return CHAR;
}
"\n" unexpected_newline (token_start, "'");
val->uniqstr = uniqstr_new (last_string);
STRING_FREE;
BEGIN INITIAL;
- piece[piece1++] = strdup("</Tag>");
+ piece_append("</Tag>");
return TAG;
}
STRING_GROW;
{
obstack_1grow (&obstack_for_string, c);
sprintf(piece_temp, "<Escape char=\"%d\">", (int)c);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
flush();
- piece[piece1++] = strdup("</Escape>");
+ piece_append("</Escape>");
}
}
{
obstack_1grow (&obstack_for_string, c);
sprintf(piece_temp, "<Escape char=\"%d\">", (int)c);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
flush();
- piece[piece1++] = strdup("</Escape>");
+ piece_append("</Escape>");
}
}
- \\a obstack_1grow (&obstack_for_string, '\a'); piece[piece1++] = strdup("<Escape char=\"7\">"); flush(); piece[piece1++] = strdup("</Escape>");
- \\b obstack_1grow (&obstack_for_string, '\b'); piece[piece1++] = strdup("<Escape char=\"8\">"); flush(); piece[piece1++] = strdup("</Escape>");
- \\f obstack_1grow (&obstack_for_string, '\f'); piece[piece1++] = strdup("<Escape char=\"12\">"); flush(); piece[piece1++] = strdup("</Escape>");
- \\n obstack_1grow (&obstack_for_string, '\n'); piece[piece1++] = strdup("<Escape char=\"10\">"); flush(); piece[piece1++] = strdup("</Escape>");
- \\r obstack_1grow (&obstack_for_string, '\r'); piece[piece1++] = strdup("<Escape char=\"13\">"); flush(); piece[piece1++] = strdup("</Escape>");
- \\t obstack_1grow (&obstack_for_string, '\t'); piece[piece1++] = strdup("<Escape char=\"9\">"); flush(); piece[piece1++] = strdup("</Escape>");
- \\v obstack_1grow (&obstack_for_string, '\v'); piece[piece1++] = strdup("<Escape char=\"11\">"); flush(); piece[piece1++] = strdup("</Escape>");
+ \\a obstack_1grow (&obstack_for_string, '\a'); piece_append("<Escape char=\"7\">"); flush(); piece_append("</Escape>");
+ \\b obstack_1grow (&obstack_for_string, '\b'); piece_append("<Escape char=\"8\">"); flush(); piece_append("</Escape>");
+ \\f obstack_1grow (&obstack_for_string, '\f'); piece_append("<Escape char=\"12\">"); flush(); piece_append("</Escape>");
+ \\n obstack_1grow (&obstack_for_string, '\n'); piece_append("<Escape char=\"10\">"); flush(); piece_append("</Escape>");
+ \\r obstack_1grow (&obstack_for_string, '\r'); piece_append("<Escape char=\"13\">"); flush(); piece_append("</Escape>");
+ \\t obstack_1grow (&obstack_for_string, '\t'); piece_append("<Escape char=\"9\">"); flush(); piece_append("</Escape>");
+ \\v obstack_1grow (&obstack_for_string, '\v'); piece_append("<Escape char=\"11\">"); flush(); piece_append("</Escape>");
/* \\[\"\'?\\] would be shorter, but it confuses xgettext. */
- \\("\""|"'"|"?"|"\\") obstack_1grow (&obstack_for_string, yytext[1]); sprintf(piece_temp, "<Escape char=\"%d\">", yytext[1]); piece[piece1++] = strdup(piece_temp); flush(); piece[piece1++] = strdup("</Escape>");
+ \\("\""|"'"|"?"|"\\") obstack_1grow (&obstack_for_string, yytext[1]); sprintf(piece_temp, "<Escape char=\"%d\">", yytext[1]); piece_append(piece_temp); flush(); piece_append("</Escape>");
\\(u|U[0-9abcdefABCDEF]{4})[0-9abcdefABCDEF]{4} {
int c = convert_ucn_to_byte (yytext);
{
obstack_1grow (&obstack_for_string, c);
sprintf(piece_temp, "<Escape char=\"%d\">", c);
- piece[piece1++] = strdup(piece_temp);
+ piece_append(piece_temp);
flush();
- piece[piece1++] = strdup("</Escape>");
+ piece_append("</Escape>");
}
}
\\(.|\n) {
<SC_CHARACTER>
{
- "'" STRING_GROW; BEGIN context_state; /*piece[piece1++] = strdup("</Character>");*/
+ "'" STRING_GROW; BEGIN context_state; /*piece_append("</Character>");*/
\n unexpected_newline (token_start, "'");
<<EOF>> unexpected_eof (token_start, "'");
}
<SC_STRING>
{
- "\"" STRING_GROW; BEGIN context_state; /*piece[piece1++] = strdup("</String>");*/
+ "\"" STRING_GROW; BEGIN context_state; /*piece_append("</String>");*/
\n unexpected_newline (token_start, "\"");
<<EOF>> unexpected_eof (token_start, "\"");
}
context_state = YY_START;
token_start = loc->start;
/*flush();
- piece[piece1++] = strdup("<Character>");*/
+ piece_append("<Character>");*/
BEGIN SC_CHARACTER;
}
"\"" {
context_state = YY_START;
token_start = loc->start;
/*flush();
- piece[piece1++] = strdup("<String>");*/
+ piece_append("<String>");*/
BEGIN SC_STRING;
}
"/"{splice}"*" {
loc->start = code_start;
val->code = last_string;
BEGIN INITIAL;
- piece[piece1++] = strdup("</BracedCode>");
+ piece_append("</BracedCode>");
return BRACED_CODE;
}
}
loc->start = code_start;
val->code = last_string;
BEGIN INITIAL;
- piece[piece1++] = strdup("</Predicate>");
+ piece_append("</Predicate>");
return BRACED_PREDICATE;
}
else
loc->start = code_start;
val->code = last_string;
BEGIN INITIAL;
- piece[piece1++] = strdup("</Prologue>");
+ piece_append("</Prologue>");
return PROLOGUE;
}