summaryrefslogtreecommitdiff
path: root/src/gen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gen.c')
-rw-r--r--src/gen.c140
1 files changed, 67 insertions, 73 deletions
diff --git a/src/gen.c b/src/gen.c
index 9b68af9..c959f75 100644
--- a/src/gen.c
+++ b/src/gen.c
@@ -53,44 +53,30 @@ static int indent_level = 0; /* each level is 8 spaces */
static const char *get_int16_decl (void)
{
return (gentables)
- ? "static yyconst flex_int16_t %s[%d] =\n { 0,\n"
- : "static yyconst flex_int16_t * %s = 0;\n";
+ ? "static const flex_int16_t %s[%d] =\n { 0,\n"
+ : "static const flex_int16_t * %s = 0;\n";
}
static const char *get_int32_decl (void)
{
return (gentables)
- ? "static yyconst flex_int32_t %s[%d] =\n { 0,\n"
- : "static yyconst flex_int32_t * %s = 0;\n";
+ ? "static const flex_int32_t %s[%d] =\n { 0,\n"
+ : "static const flex_int32_t * %s = 0;\n";
}
static const char *get_state_decl (void)
{
return (gentables)
- ? "static yyconst yy_state_type %s[%d] =\n { 0,\n"
- : "static yyconst yy_state_type * %s = 0;\n";
-}
-
-static const char *get_uint16_decl (void)
-{
- return (gentables)
- ? "static yyconst flex_uint16_t %s[%d] =\n { 0,\n"
- : "static yyconst flex_uint16_t * %s = 0;\n";
-}
-
-static const char *get_uint32_decl (void)
-{
- return (gentables)
- ? "static yyconst flex_uint32_t %s[%d] =\n { 0,\n"
- : "static yyconst flex_uint32_t * %s = 0;\n";
+ ? "static const yy_state_type %s[%d] =\n { 0,\n"
+ : "static const yy_state_type * %s = 0;\n";
}
static const char *get_yy_char_decl (void)
{
return (gentables)
- ? "static yyconst YY_CHAR %s[%d] =\n { 0,\n"
- : "static yyconst YY_CHAR * %s = 0;\n";
+ ? "static const YY_CHAR %s[%d] =\n { 0,\n"
+ : "static const YY_CHAR * %s = 0;\n";
}
/* Indent to the current level. */
@@ -123,7 +109,7 @@ static struct yytbl_data *mkeoltbl (void)
tbl = calloc(1, sizeof (struct yytbl_data));
yytbl_data_init (tbl, YYTD_ID_RULE_CAN_MATCH_EOL);
tbl->td_flags = YYTD_DATA8;
- tbl->td_lolen = num_rules + 1;
+ tbl->td_lolen = (flex_uint32_t) (num_rules + 1);
tbl->td_data = tdata =
calloc(tbl->td_lolen, sizeof (flex_int8_t));
@@ -231,7 +217,7 @@ static struct yytbl_data *mkctbl (void)
yytbl_data_init (tbl, YYTD_ID_TRANSITION);
tbl->td_flags = YYTD_DATA32 | YYTD_STRUCT;
tbl->td_hilen = 0;
- tbl->td_lolen = tblend + numecs + 1; /* number of structs */
+ tbl->td_lolen = (flex_uint32_t) (tblend + numecs + 1); /* number of structs */
tbl->td_data = tdata =
calloc(tbl->td_lolen * 2, sizeof (flex_int32_t));
@@ -327,7 +313,7 @@ static struct yytbl_data *mkssltbl (void)
yytbl_data_init (tbl, YYTD_ID_START_STATE_LIST);
tbl->td_flags = YYTD_DATA32 | YYTD_PTRANS;
tbl->td_hilen = 0;
- tbl->td_lolen = lastsc * 2 + 1;
+ tbl->td_lolen = (flex_uint32_t) (lastsc * 2 + 1);
tbl->td_data = tdata =
calloc(tbl->td_lolen, sizeof (flex_int32_t));
@@ -353,9 +339,9 @@ void genctbl (void)
/* Table of verify for transition and offset to next state. */
if (gentables)
- out_dec ("static yyconst struct yy_trans_info yy_transition[%d] =\n {\n", tblend + numecs + 1);
+ out_dec ("static const struct yy_trans_info yy_transition[%d] =\n {\n", tblend + numecs + 1);
else
- outn ("static yyconst struct yy_trans_info *yy_transition = 0;");
+ outn ("static const struct yy_trans_info *yy_transition = 0;");
/* We want the transition to be represented as the offset to the
* next state, not the actual state number, which is what it currently
@@ -427,9 +413,9 @@ void genctbl (void)
/* Table of pointers to start states. */
if (gentables)
- out_dec ("static yyconst struct yy_trans_info *yy_start_state_list[%d] =\n", lastsc * 2 + 1);
+ out_dec ("static const struct yy_trans_info *yy_start_state_list[%d] =\n", lastsc * 2 + 1);
else
- outn ("static yyconst struct yy_trans_info **yy_start_state_list =0;");
+ outn ("static const struct yy_trans_info **yy_start_state_list =0;");
if (gentables) {
outn (" {");
@@ -457,7 +443,7 @@ static struct yytbl_data *mkecstbl (void)
yytbl_data_init (tbl, YYTD_ID_EC);
tbl->td_flags |= YYTD_DATA32;
tbl->td_hilen = 0;
- tbl->td_lolen = csize;
+ tbl->td_lolen = (flex_uint32_t) csize;
tbl->td_data = tdata =
calloc(tbl->td_lolen, sizeof (flex_int32_t));
@@ -478,14 +464,14 @@ static struct yytbl_data *mkecstbl (void)
void genecs (void)
{
- int i, j;
+ int ch, row;
int numrows;
out_str_dec (get_yy_char_decl (), "yy_ec", csize);
- for (i = 1; i < csize; ++i) {
- ecgroup[i] = ABS (ecgroup[i]);
- mkdata (ecgroup[i]);
+ for (ch = 1; ch < csize; ++ch) {
+ ecgroup[ch] = ABS (ecgroup[ch]);
+ mkdata (ecgroup[ch]);
}
dataend ();
@@ -493,12 +479,13 @@ void genecs (void)
if (trace) {
fputs (_("\n\nEquivalence Classes:\n\n"), stderr);
+ /* Print in 8 columns */
numrows = csize / 8;
- for (j = 0; j < numrows; ++j) {
- for (i = j; i < csize; i = i + numrows) {
+ for (row = 0; row < numrows; ++row) {
+ for (ch = row; ch < csize; ch += numrows) {
fprintf (stderr, "%4s = %-2d",
- readable_form (i), ecgroup[i]);
+ readable_form (ch), ecgroup[ch]);
putc (' ', stderr);
}
@@ -523,8 +510,12 @@ void gen_find_action (void)
indent_puts ("yy_current_state = *--YY_G(yy_state_ptr);");
indent_puts ("YY_G(yy_lp) = yy_accept[yy_current_state];");
+ if (!variable_trailing_context_rules)
+ outn ("m4_ifdef( [[M4_YY_USES_REJECT]],\n[[");
if(reject_really_used)
outn ("find_rule: /* we branch to this label when backing up */");
+ if (!variable_trailing_context_rules)
+ outn ("]])\n");
indent_puts
("for ( ; ; ) /* until we find what rule we matched */");
@@ -663,7 +654,7 @@ struct yytbl_data *mkftbl (void)
yytbl_data_init (tbl, YYTD_ID_ACCEPT);
tbl->td_flags |= YYTD_DATA32;
tbl->td_hilen = 0; /* it's a one-dimensional array */
- tbl->td_lolen = lastdfa + 1;
+ tbl->td_lolen = (flex_uint32_t) (lastdfa + 1);
tbl->td_data = tdata =
calloc(tbl->td_lolen, sizeof (flex_int32_t));
@@ -752,7 +743,7 @@ void gen_next_compressed_state (char *char_map)
out_dec ("if ( yy_current_state >= %d )\n", lastdfa + 2);
++indent_level;
- indent_puts ("yy_c = yy_meta[(unsigned int) yy_c];");
+ indent_puts ("yy_c = yy_meta[yy_c];");
--indent_level;
}
@@ -760,7 +751,7 @@ void gen_next_compressed_state (char *char_map)
--indent_level;
indent_puts
- ("yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];");
+ ("yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];");
}
@@ -810,11 +801,11 @@ void gen_next_match (void)
else if (fullspd) {
indent_puts ("{");
indent_puts
- ("yyconst struct yy_trans_info *yy_trans_info;\n");
+ ("const struct yy_trans_info *yy_trans_info;\n");
indent_puts ("YY_CHAR yy_c;\n");
indent_put2s ("for ( yy_c = %s;", char_map);
indent_puts
- (" (yy_trans_info = &yy_current_state[(unsigned int) yy_c])->");
+ (" (yy_trans_info = &yy_current_state[yy_c])->");
indent_puts ("yy_verify == yy_c;");
indent_put2s (" yy_c = %s )", char_map_2);
@@ -977,7 +968,7 @@ void gen_NUL_trans (void)
out_dec ("int yy_c = %d;\n", NUL_ec);
indent_puts
- ("yyconst struct yy_trans_info *yy_trans_info;\n");
+ ("const struct yy_trans_info *yy_trans_info;\n");
indent_puts
("yy_trans_info = &yy_current_state[(unsigned int) yy_c];");
indent_puts ("yy_current_state += yy_trans_info->yy_nxt;");
@@ -1106,7 +1097,7 @@ void gentabs (void)
yyacclist_tbl = calloc(1,sizeof(struct yytbl_data));
yytbl_data_init (yyacclist_tbl, YYTD_ID_ACCLIST);
- yyacclist_tbl->td_lolen = MAX(numas,1) + 1;
+ yyacclist_tbl->td_lolen = (flex_uint32_t) (MAX(numas,1) + 1);
yyacclist_tbl->td_data = yyacclist_data =
calloc(yyacclist_tbl->td_lolen, sizeof (flex_int32_t));
yyacclist_curr = 1;
@@ -1215,7 +1206,7 @@ void gentabs (void)
yyacc_tbl = calloc(1, sizeof (struct yytbl_data));
yytbl_data_init (yyacc_tbl, YYTD_ID_ACCEPT);
- yyacc_tbl->td_lolen = k;
+ yyacc_tbl->td_lolen = (flex_uint32_t) k;
yyacc_tbl->td_data = yyacc_data =
calloc(yyacc_tbl->td_lolen, sizeof (flex_int32_t));
yyacc_curr=1;
@@ -1244,9 +1235,9 @@ void gentabs (void)
yytbl_data_compress (yyacc_tbl);
if (yytbl_data_fwrite (&tableswr, yyacc_tbl) < 0)
flexerror (_("Could not write yyacc_tbl"));
- yytbl_data_destroy (yyacc_tbl);
- yyacc_tbl = NULL;
}
+ yytbl_data_destroy (yyacc_tbl);
+ yyacc_tbl = NULL;
/* End generating yy_accept */
if (useecs) {
@@ -1272,7 +1263,7 @@ void gentabs (void)
flex_int32_t *yymecs_data = 0;
yymeta_tbl = calloc(1, sizeof (struct yytbl_data));
yytbl_data_init (yymeta_tbl, YYTD_ID_META);
- yymeta_tbl->td_lolen = numecs + 1;
+ yymeta_tbl->td_lolen = (flex_uint32_t) (numecs + 1);
yymeta_tbl->td_data = yymecs_data =
calloc(yymeta_tbl->td_lolen,
sizeof (flex_int32_t));
@@ -1299,11 +1290,10 @@ void gentabs (void)
if (tablesext) {
yytbl_data_compress (yymeta_tbl);
if (yytbl_data_fwrite (&tableswr, yymeta_tbl) < 0)
- flexerror (_
- ("Could not write yymeta_tbl"));
- yytbl_data_destroy (yymeta_tbl);
- yymeta_tbl = NULL;
+ flexerror (_("Could not write yymeta_tbl"));
}
+ yytbl_data_destroy (yymeta_tbl);
+ yymeta_tbl = NULL;
/* End generating yy_meta */
}
@@ -1311,16 +1301,16 @@ void gentabs (void)
/* Begin generating yy_base */
out_str_dec ((tblend >= INT16_MAX || long_align) ?
- get_uint32_decl () : get_uint16_decl (),
+ get_int32_decl () : get_int16_decl (),
"yy_base", total_states + 1);
buf_prints (&yydmap_buf,
"\t{YYTD_ID_BASE, (void**)&yy_base, sizeof(%s)},\n",
(tblend >= INT16_MAX
- || long_align) ? "flex_uint32_t" : "flex_uint16_t");
+ || long_align) ? "flex_int32_t" : "flex_int16_t");
yybase_tbl = calloc (1, sizeof (struct yytbl_data));
yytbl_data_init (yybase_tbl, YYTD_ID_BASE);
- yybase_tbl->td_lolen = total_states + 1;
+ yybase_tbl->td_lolen = (flex_uint32_t) (total_states + 1);
yybase_tbl->td_data = yybase_data =
calloc(yybase_tbl->td_lolen,
sizeof (flex_int32_t));
@@ -1360,9 +1350,9 @@ void gentabs (void)
yytbl_data_compress (yybase_tbl);
if (yytbl_data_fwrite (&tableswr, yybase_tbl) < 0)
flexerror (_("Could not write yybase_tbl"));
- yytbl_data_destroy (yybase_tbl);
- yybase_tbl = NULL;
}
+ yytbl_data_destroy (yybase_tbl);
+ yybase_tbl = NULL;
/* End generating yy_base */
@@ -1378,7 +1368,7 @@ void gentabs (void)
yydef_tbl = calloc(1, sizeof (struct yytbl_data));
yytbl_data_init (yydef_tbl, YYTD_ID_DEF);
- yydef_tbl->td_lolen = total_states + 1;
+ yydef_tbl->td_lolen = (flex_uint32_t) (total_states + 1);
yydef_tbl->td_data = yydef_data =
calloc(yydef_tbl->td_lolen, sizeof (flex_int32_t));
@@ -1392,25 +1382,25 @@ void gentabs (void)
yytbl_data_compress (yydef_tbl);
if (yytbl_data_fwrite (&tableswr, yydef_tbl) < 0)
flexerror (_("Could not write yydef_tbl"));
- yytbl_data_destroy (yydef_tbl);
- yydef_tbl = NULL;
}
+ yytbl_data_destroy (yydef_tbl);
+ yydef_tbl = NULL;
/* End generating yy_def */
/* Begin generating yy_nxt */
out_str_dec ((total_states >= INT16_MAX || long_align) ?
- get_uint32_decl () : get_uint16_decl (), "yy_nxt",
+ get_int32_decl () : get_int16_decl (), "yy_nxt",
tblend + 1);
buf_prints (&yydmap_buf,
"\t{YYTD_ID_NXT, (void**)&yy_nxt, sizeof(%s)},\n",
(total_states >= INT16_MAX
- || long_align) ? "flex_uint32_t" : "flex_uint16_t");
+ || long_align) ? "flex_int32_t" : "flex_int16_t");
yynxt_tbl = calloc (1, sizeof (struct yytbl_data));
yytbl_data_init (yynxt_tbl, YYTD_ID_NXT);
- yynxt_tbl->td_lolen = tblend + 1;
+ yynxt_tbl->td_lolen = (flex_uint32_t) (tblend + 1);
yynxt_tbl->td_data = yynxt_data =
calloc (yynxt_tbl->td_lolen, sizeof (flex_int32_t));
@@ -1430,9 +1420,9 @@ void gentabs (void)
yytbl_data_compress (yynxt_tbl);
if (yytbl_data_fwrite (&tableswr, yynxt_tbl) < 0)
flexerror (_("Could not write yynxt_tbl"));
- yytbl_data_destroy (yynxt_tbl);
- yynxt_tbl = NULL;
}
+ yytbl_data_destroy (yynxt_tbl);
+ yynxt_tbl = NULL;
/* End generating yy_nxt */
/* Begin generating yy_chk */
@@ -1447,7 +1437,7 @@ void gentabs (void)
yychk_tbl = calloc (1, sizeof (struct yytbl_data));
yytbl_data_init (yychk_tbl, YYTD_ID_CHK);
- yychk_tbl->td_lolen = tblend + 1;
+ yychk_tbl->td_lolen = (flex_uint32_t) (tblend + 1);
yychk_tbl->td_data = yychk_data =
calloc(yychk_tbl->td_lolen, sizeof (flex_int32_t));
@@ -1464,9 +1454,9 @@ void gentabs (void)
yytbl_data_compress (yychk_tbl);
if (yytbl_data_fwrite (&tableswr, yychk_tbl) < 0)
flexerror (_("Could not write yychk_tbl"));
- yytbl_data_destroy (yychk_tbl);
- yychk_tbl = NULL;
}
+ yytbl_data_destroy (yychk_tbl);
+ yychk_tbl = NULL;
/* End generating yy_chk */
free(acc_array);
@@ -1706,7 +1696,7 @@ void make_tables (void)
yytbl_data_init (yynultrans_tbl, YYTD_ID_NUL_TRANS);
if (fullspd)
yynultrans_tbl->td_flags |= YYTD_PTRANS;
- yynultrans_tbl->td_lolen = lastdfa + 1;
+ yynultrans_tbl->td_lolen = (flex_uint32_t) (lastdfa + 1);
yynultrans_tbl->td_data = yynultrans_data =
calloc(yynultrans_tbl->td_lolen,
sizeof (flex_int32_t));
@@ -1875,7 +1865,7 @@ void make_tables (void)
if (!C_plus_plus) {
if (use_read) {
outn ("\terrno=0; \\");
- outn ("\twhile ( (result = (int) read( fileno(yyin), buf, max_size )) < 0 ) \\");
+ outn ("\twhile ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \\");
outn ("\t{ \\");
outn ("\t\tif( errno != EINTR) \\");
outn ("\t\t{ \\");
@@ -1891,7 +1881,7 @@ void make_tables (void)
outn ("\tif ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \\");
outn ("\t\t{ \\");
outn ("\t\tint c = '*'; \\");
- outn ("\t\tsize_t n; \\");
+ outn ("\t\tint n; \\");
outn ("\t\tfor ( n = 0; n < max_size && \\");
outn ("\t\t\t (c = getc( yyin )) != EOF && c != '\\n'; ++n ) \\");
outn ("\t\t\tbuf[n] = (char) c; \\");
@@ -1904,7 +1894,7 @@ void make_tables (void)
outn ("\telse \\");
outn ("\t\t{ \\");
outn ("\t\terrno=0; \\");
- outn ("\t\twhile ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \\");
+ outn ("\t\twhile ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \\");
outn ("\t\t\t{ \\");
outn ("\t\t\tif( errno != EINTR) \\");
outn ("\t\t\t\t{ \\");
@@ -1949,7 +1939,7 @@ void make_tables (void)
++indent_level;
indent_puts ("{");
indent_puts
- ("YY_G(yy_more_len) = YY_G(yy_c_buf_p) - YY_G(yytext_ptr);");
+ ("YY_G(yy_more_len) = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr));");
indent_puts ("YY_G(yy_more_flag) = 0;");
indent_puts ("}");
--indent_level;
@@ -2164,7 +2154,11 @@ void make_tables (void)
if (sectnum == 3) {
OUT_BEGIN_CODE ();
+ if (!no_section3_escape)
+ fputs("[[", stdout);
(void) flexscan (); /* copy remainder of input to output */
+ if (!no_section3_escape)
+ fputs("]]", stdout);
OUT_END_CODE ();
}
}