* data/c.m4 (b4_null, b4_case): Define.

* src/output.c (prepare_symbols): Use b4_null.
(user_actions_output): Use b4_case.
This commit is contained in:
Paul Eggert
2006-09-12 17:26:02 +00:00
parent aef3da8689
commit 8e1687aef6
3 changed files with 30 additions and 14 deletions

View File

@@ -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> 2006-09-11 Paul Eggert <eggert@cs.ucla.edu>
* data/glr.c (b4_shared_declarations): Put start-header first, * data/glr.c (b4_shared_declarations): Put start-header first,

View File

@@ -81,7 +81,6 @@ m4_define([b4_identification],
]) ])
## ---------------- ## ## ---------------- ##
## Default values. ## ## Default values. ##
## ---------------- ## ## ---------------- ##
@@ -100,7 +99,6 @@ m4_define_default([b4_location_initial_line], [1])
## Pure/impure interfaces. ## ## Pure/impure interfaces. ##
## ------------------------ ## ## ------------------------ ##
# b4_user_args # b4_user_args
# ------------ # ------------
m4_define([b4_user_args], m4_define([b4_user_args],
@@ -137,11 +135,11 @@ m4_define([b4_parse_param_use],
])dnl ])dnl
]) ])
## ------------ ## ## ------------ ##
## Data Types. ## ## Data Types. ##
## ------------ ## ## ------------ ##
# b4_ints_in(INT1, INT2, LOW, HIGH) # b4_ints_in(INT1, INT2, LOW, HIGH)
# --------------------------------- # ---------------------------------
# Return 1 iff both INT1 and INT2 are in [LOW, HIGH], 0 otherwise. # 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)]) [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. ## ## Decoding options. ##
## ------------------ ## ## ------------------ ##
@@ -458,6 +467,13 @@ b4_define_user_code([stype])
## User actions. ## ## User actions. ##
## -------------- ## ## -------------- ##
# b4_case(LABEL, STATEMENTS)
# --------------------------
m4_define([b4_case],
[ case $1:
$2
break;])
# b4_symbol_actions(FILENAME, LINENO, # b4_symbol_actions(FILENAME, LINENO,
# SYMBOL-TAG, SYMBOL-NUM, # SYMBOL-TAG, SYMBOL-NUM,
# SYMBOL-ACTION, SYMBOL-TYPENAME) # SYMBOL-ACTION, SYMBOL-TYPENAME)

View File

@@ -176,9 +176,7 @@ prepare_symbols (void)
obstack_1grow (&format_obstack, ','); obstack_1grow (&format_obstack, ',');
j += width; j += width;
} }
/* Add a NULL entry to list of tokens (well, 0, as NULL might not be obstack_sgrow (&format_obstack, " ]b4_null[");
defined). */
obstack_sgrow (&format_obstack, " 0");
/* Finish table and store. */ /* Finish table and store. */
obstack_1grow (&format_obstack, 0); obstack_1grow (&format_obstack, 0);
@@ -290,20 +288,16 @@ user_actions_output (FILE *out)
{ {
rule_number r; rule_number r;
fputs ("m4_define([b4_actions], \n[[", out); fputs ("m4_define([b4_actions], \n[", out);
for (r = 0; r < nrules; ++r) for (r = 0; r < nrules; ++r)
if (rules[r].action) if (rules[r].action)
{ {
fprintf (out, " case %d:\n", r + 1); fprintf (out, "b4_case(%d, [b4_syncline(%d, ", r + 1,
fprintf (out, "]b4_syncline(%d, ",
rules[r].action_location.start.line); rules[r].action_location.start.line);
escaped_output (out, rules[r].action_location.start.file); escaped_output (out, rules[r].action_location.start.file);
fprintf (out, ")[\n"); fprintf (out, ")\n[ %s]])\n\n", rules[r].action);
fprintf (out, " %s\n break;\n\n",
rules[r].action);
} }
fputs ("]])\n\n", out); fputs ("])\n\n", out);
} }
/*--------------------------------------. /*--------------------------------------.