X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/3f4c0f801705f770ecf59ac60c812295159ce56d..3e6656f9ab66ae7e629f8e5d5b41810bf070f09d:/src/reader.c?ds=sidebyside diff --git a/src/reader.c b/src/reader.c index 5b286829..64601e34 100644 --- a/src/reader.c +++ b/src/reader.c @@ -22,7 +22,6 @@ #include "system.h" #include "quotearg.h" -#include "quote.h" #include "getargs.h" #include "files.h" #include "symtab.h" @@ -70,13 +69,10 @@ prologue_augment (const char *prologue, location_t location) struct obstack *oout = !typed ? &pre_prologue_obstack : &post_prologue_obstack; - if (!no_lines_flag) - { - obstack_fgrow2 (oout, muscle_find ("linef"), - location.first_line, - quotearg_style (c_quoting_style, - muscle_find ("filename"))); - } + obstack_fgrow1 (oout, "]b4_syncline([[%d]], [[", + location.first_line); + MUSCLE_OBSTACK_SGROW (oout, quotearg_style (c_quoting_style, location.file)); + obstack_sgrow (oout, "]])[\n"); obstack_sgrow (oout, prologue); } @@ -90,13 +86,11 @@ prologue_augment (const char *prologue, location_t location) void epilogue_set (const char *epilogue, location_t location) { - if (!no_lines_flag) - { - obstack_fgrow2 (&muscle_obstack, muscle_find ("linef"), - location.first_line, - quotearg_style (c_quoting_style, - muscle_find ("filename"))); - } + obstack_fgrow1 (&muscle_obstack, "]b4_syncline([[%d]], [[", + location.first_line); + MUSCLE_OBSTACK_SGROW (&muscle_obstack, + quotearg_style (c_quoting_style, location.file)); + obstack_sgrow (&muscle_obstack, "]])[\n"); obstack_sgrow (&muscle_obstack, epilogue); obstack_1grow (&muscle_obstack, 0); muscle_insert ("epilogue", obstack_finish (&muscle_obstack)); @@ -105,7 +99,7 @@ epilogue_set (const char *epilogue, location_t location) - /*-------------------------------------------------------------------. +/*-------------------------------------------------------------------. | Return the merger index for a merging function named NAME, whose | | arguments have type TYPE. Records the function, if new, in | | merger_list. | @@ -138,7 +132,7 @@ get_merge_function (const char* name, const char* type, merge_functions = head.next; } else if (strcmp (type, syms->next->type) != 0) - warn_at (loc, _("result type clash on merge function %s: `%s' vs. `%s'"), + warn_at (loc, _("result type clash on merge function %s: <%s> != <%s>"), name, type, syms->next->type); return n; } @@ -265,7 +259,7 @@ grammar_current_rule_check (void) const char *rhs_type = first_rhs->type_name ? first_rhs->type_name : ""; if (strcmp (lhs_type, rhs_type)) complain_at (current_rule->location, - _("type clash (`%s' `%s') on default action"), + _("type clash on default action: <%s> != <%s>"), lhs_type, rhs_type); } /* Warn if there is no default for $$ but we need one. */ @@ -341,7 +335,7 @@ void grammar_current_rule_prec_set (symbol_t *precsym, location_t location) { if (current_rule->ruleprec) - complain_at (location, _("two @prec's in a row")); + complain_at (location, _("only one %s allowed per rule"), "%prec"); current_rule->ruleprec = precsym; } @@ -351,11 +345,12 @@ void grammar_current_rule_dprec_set (int dprec, location_t location) { if (! glr_parser) - warn_at (location, _("%%dprec affects only GLR parsers")); + warn_at (location, _("%s affects only GLR parsers"), "%dprec"); if (dprec <= 0) - complain_at (location, _("%%dprec must be followed by positive number")); + complain_at (location, + _("%s must be followed by positive number"), "%dprec"); else if (current_rule->dprec != 0) - complain_at (location, _("only one %%dprec allowed per rule")); + complain_at (location, _("only one %s allowed per rule"), "%dprec"); current_rule->dprec = dprec; } @@ -366,9 +361,9 @@ void grammar_current_rule_merge_set (const char* name, location_t location) { if (! glr_parser) - warn_at (location, _("%%merge affects only GLR parsers")); + warn_at (location, _("%s affects only GLR parsers"), "%merge"); if (current_rule->merger != 0) - complain_at (location, _("only one %%merge allowed per rule")); + complain_at (location, _("only one %s allowed per rule"), "%merge"); current_rule->merger = get_merge_function (name, current_rule->sym->type_name, location); } @@ -421,7 +416,7 @@ packgram (void) rules[ruleno].lhs = p->sym; rules[ruleno].rhs = ritem + itemno; rules[ruleno].location = p->location; - rules[ruleno].useful = TRUE; + rules[ruleno].useful = true; rules[ruleno].action = p->action; rules[ruleno].action_location = p->action_location; rules[ruleno].dprec = p->dprec; @@ -499,15 +494,15 @@ reader (void) finput = xfopen (infile, "r"); gram_in = finput; - gram_debug = !!getenv ("parse"); - gram__flex_debug = !!getenv ("scan"); + gram__flex_debug = trace_flag & trace_scan; + gram_debug = trace_flag & trace_parse; scanner_initialize (); gram_parse (&gram_control); /* If something went wrong during the parsing, don't try to continue. */ - if (complain_message_count) - exit (1); + if (complaint_issued) + return; /* Grammar has been read. Do some checking */ if (nrules == 0)