X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/5372019fabc593faad353349d41dea7e79dae509..efea623135d500d3d264f9710983d75435defde7:/src/output.c diff --git a/src/output.c b/src/output.c index e424143d..02dfdb68 100644 --- a/src/output.c +++ b/src/output.c @@ -184,7 +184,7 @@ Name (const char *name, \ int begin, \ int end) \ { \ - long int max = first; \ + Type max = first; \ int i; \ int j = 1; \ \ @@ -209,13 +209,13 @@ Name (const char *name, \ /* Build `NAME_max' in the obstack. */ \ obstack_fgrow1 (&format_obstack, "%s_max", name); \ obstack_1grow (&format_obstack, 0); \ - MUSCLE_INSERT_LONG_INT (obstack_finish (&format_obstack), max); \ + MUSCLE_INSERT_LONG_INT (obstack_finish (&format_obstack), \ + (long int) max); \ } -GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_int_table, int) GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_unsigned_int_table, unsigned int) GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_short_table, short) -GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_token_number_table, token_number_t) +GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_symbol_number_table, symbol_number_t) GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_item_number_table, item_number_t) @@ -227,7 +227,7 @@ GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_item_number_table, item_number_t) static void prepare_tokens (void) { - muscle_insert_token_number_table ("translate", + muscle_insert_symbol_number_table ("translate", token_translations, 0, 1, max_user_token_number + 1); @@ -285,13 +285,12 @@ prepare_tokens (void) static void prepare_rules (void) { - long int max; int r; unsigned int i = 0; item_number_t *rhs = XMALLOC (item_number_t, nritems); unsigned int *prhs = XMALLOC (unsigned int, nrules + 1); unsigned int *rline = XMALLOC (unsigned int, nrules + 1); - token_number_t *r1 = XMALLOC (token_number_t, nrules + 1); + symbol_number_t *r1 = XMALLOC (symbol_number_t, nrules + 1); unsigned int *r2 = XMALLOC (unsigned int, nrules + 1); for (r = 1; r < nrules + 1; ++r) @@ -316,7 +315,7 @@ prepare_rules (void) muscle_insert_item_number_table ("rhs", rhs, ritem[0], 1, nritems); muscle_insert_unsigned_int_table ("prhs", prhs, 0, 1, nrules + 1); muscle_insert_unsigned_int_table ("rline", rline, 0, 1, nrules + 1); - muscle_insert_token_number_table ("r1", r1, 0, 1, nrules + 1); + muscle_insert_symbol_number_table ("r1", r1, 0, 1, nrules + 1); muscle_insert_unsigned_int_table ("r2", r2, 0, 1, nrules + 1); free (rhs); @@ -334,11 +333,11 @@ static void prepare_states (void) { size_t i; - token_number_t *values = - (token_number_t *) alloca (sizeof (token_number_t) * nstates); + symbol_number_t *values = + (symbol_number_t *) alloca (sizeof (symbol_number_t) * nstates); for (i = 0; i < nstates; ++i) values[i] = states[i]->accessing_symbol; - muscle_insert_token_number_table ("stos", values, + muscle_insert_symbol_number_table ("stos", values, 0, 1, nstates); } @@ -391,7 +390,7 @@ action_row (state_t *state) to reduce. */ for (i = 0; i < shiftp->nshifts; i++) { - token_number_t symbol; + symbol_number_t symbol; int shift_state = shiftp->shifts[i]; if (!shift_state) continue; @@ -995,20 +994,30 @@ output_skeleton (void) { const char *bison_pkgdatadir = getenv ("BISON_PKGDATADIR"); const char *m4 = getenv ("M4"); + int pkg_data_len; + char *full_skeleton; + if (!m4) m4 = M4; if (!bison_pkgdatadir) bison_pkgdatadir = PKGDATADIR; + pkg_data_len = strlen (bison_pkgdatadir); + full_skeleton = XMALLOC (char, pkg_data_len + strlen (skeleton) + 2); + if (bison_pkgdatadir[pkg_data_len-1] == '/') + sprintf (full_skeleton, "%s%s", bison_pkgdatadir, skeleton); + else + sprintf (full_skeleton, "%s/%s", bison_pkgdatadir, skeleton); if (trace_flag) fprintf (stderr, "running: %s -I %s m4sugar/m4sugar.m4 %s %s\n", - m4, bison_pkgdatadir, tempfile, skeleton); + m4, bison_pkgdatadir, tempfile, full_skeleton); skel_in = readpipe (m4, "-I", bison_pkgdatadir, "m4sugar/m4sugar.m4", tempfile, - skeleton, + full_skeleton, NULL); + XFREE (full_skeleton); if (!skel_in) error (EXIT_FAILURE, errno, "cannot run m4"); skel_lex ();