diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2006-09-12 17:26:02 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2006-09-12 17:26:02 +0000 |
commit | 8e1687aef68e5955ecd3140149d5f97337c222f1 (patch) | |
tree | 1f2baa1d07da24a27d7d7dddd04ddb27878a0294 | |
parent | aef3da86899c5f2cd4eed728b63bd82413106a43 (diff) | |
download | bison-8e1687aef68e5955ecd3140149d5f97337c222f1.tar.gz |
* data/c.m4 (b4_null, b4_case): Define.
* src/output.c (prepare_symbols): Use b4_null.
(user_actions_output): Use b4_case.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | data/c.m4 | 22 | ||||
-rw-r--r-- | src/output.c | 16 |
3 files changed, 30 insertions, 14 deletions
@@ -1,3 +1,9 @@ +2006-09-12 Paolo Bonzini <bonzini@gnu.org> (tiny change) + + * data/c.m4 (b4_null, b4_case): Define. + * src/output.c (prepare_symbols): Use b4_null. + (user_actions_output): Use b4_case. + 2006-09-11 Paul Eggert <eggert@cs.ucla.edu> * data/glr.c (b4_shared_declarations): Put start-header first, @@ -81,7 +81,6 @@ m4_define([b4_identification], ]) - ## ---------------- ## ## Default values. ## ## ---------------- ## @@ -100,7 +99,6 @@ m4_define_default([b4_location_initial_line], [1]) ## Pure/impure interfaces. ## ## ------------------------ ## - # b4_user_args # ------------ m4_define([b4_user_args], @@ -137,11 +135,11 @@ m4_define([b4_parse_param_use], ])dnl ]) + ## ------------ ## ## Data Types. ## ## ------------ ## - # b4_ints_in(INT1, INT2, LOW, HIGH) # --------------------------------- # Return 1 iff both INT1 and INT2 are in [LOW, HIGH], 0 otherwise. @@ -173,6 +171,17 @@ m4_define([b4_int_type_for], [b4_int_type($1_min, $1_max)]) +## ---------## +## Values. ## +## ---------## + +# b4_null +--------- +# Return a null pointer constant. NULL infringes on the user name +# space in C, so use 0 rather than NULL. +m4_define([b4_null], [0]) + + ## ------------------ ## ## Decoding options. ## ## ------------------ ## @@ -458,6 +467,13 @@ b4_define_user_code([stype]) ## User actions. ## ## -------------- ## +# b4_case(LABEL, STATEMENTS) +# -------------------------- +m4_define([b4_case], +[ case $1: +$2 + break;]) + # b4_symbol_actions(FILENAME, LINENO, # SYMBOL-TAG, SYMBOL-NUM, # SYMBOL-ACTION, SYMBOL-TYPENAME) diff --git a/src/output.c b/src/output.c index 5aa029ec..1a7769df 100644 --- a/src/output.c +++ b/src/output.c @@ -176,9 +176,7 @@ prepare_symbols (void) obstack_1grow (&format_obstack, ','); j += width; } - /* Add a NULL entry to list of tokens (well, 0, as NULL might not be - defined). */ - obstack_sgrow (&format_obstack, " 0"); + obstack_sgrow (&format_obstack, " ]b4_null["); /* Finish table and store. */ obstack_1grow (&format_obstack, 0); @@ -290,20 +288,16 @@ user_actions_output (FILE *out) { rule_number r; - fputs ("m4_define([b4_actions], \n[[", out); + fputs ("m4_define([b4_actions], \n[", out); for (r = 0; r < nrules; ++r) if (rules[r].action) { - fprintf (out, " case %d:\n", r + 1); - - fprintf (out, "]b4_syncline(%d, ", + fprintf (out, "b4_case(%d, [b4_syncline(%d, ", r + 1, rules[r].action_location.start.line); escaped_output (out, rules[r].action_location.start.file); - fprintf (out, ")[\n"); - fprintf (out, " %s\n break;\n\n", - rules[r].action); + fprintf (out, ")\n[ %s]])\n\n", rules[r].action); } - fputs ("]])\n\n", out); + fputs ("])\n\n", out); } /*--------------------------------------. |