[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/9] glr.cc: simplifying the handling of parse/lex params
From: |
Akim Demaille |
Subject: |
[PATCH 4/9] glr.cc: simplifying the handling of parse/lex params |
Date: |
Wed, 19 Dec 2012 11:36:05 +0100 |
The fact that glr.cc uses glr.c makes the handling of parse params
more complex, as the parser object of glr.cc must be passed to the
parse function of glr.c. Yet not all the functions need access to
the parser object.
* data/glr.cc (b4_parse_param_wrap): New.
Use them.
---
data/glr.cc | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/data/glr.cc b/data/glr.cc
index 9879c30..741ea71 100644
--- a/data/glr.cc
+++ b/data/glr.cc
@@ -55,6 +55,17 @@ m4_define([b4_parser_class_name],
# Save the parse parameters.
m4_define([b4_parse_param_orig], m4_defn([b4_parse_param]))
+# b4_parse_param_wrap
+# -------------------
+# New ones.
+m4_ifset([b4_parse_param],
+[m4_define([b4_parse_param_wrap],
+ [[b4_namespace_ref::b4_parser_class_name[& yyparser],
[[yyparser]]],]
+m4_defn([b4_parse_param]))],
+[m4_define([b4_parse_param_wrap],
+ [[b4_namespace_ref::b4_parser_class_name[& yyparser],
[[yyparser]]]])
+])
+
# b4_yy_symbol_print_define
# -------------------------
@@ -215,8 +226,7 @@ b4_namespace_close
# Declaration that might either go into the header (if --defines)
# or open coded in the parser body.
m4_define([b4_shared_declarations],
-[dnl In this section, the parse params are the original parse_params.
-m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
+[m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
b4_percent_code_get([[requires]])[
#include <stdexcept>
@@ -319,12 +329,6 @@ b4_copyright([Skeleton interface for Bison GLR parsers in
C++],
# Let glr.c (and b4_shared_declarations) believe that the user
# arguments include the parser itself.
-m4_ifset([b4_parse_param],
-[m4_pushdef([b4_parse_param],
- [[b4_namespace_ref::b4_parser_class_name[& yyparser],
[[yyparser]]],]
-m4_defn([b4_parse_param]))],
-[m4_pushdef([b4_parse_param],
- [[b4_namespace_ref::b4_parser_class_name[& yyparser],
[[yyparser]]]])
-])
+m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_wrap]))
m4_include(b4_pkgdatadir/[glr.c])
m4_popdef([b4_parse_param])
--
1.8.0.2
- [PATCH 0/9] {master} import improvements from {make-glr-symbol}, Akim Demaille, 2012/12/19
- [PATCH 7/9] gnulib: update, Akim Demaille, 2012/12/19
- [PATCH 4/9] glr.cc: simplifying the handling of parse/lex params,
Akim Demaille <=
- [PATCH 6/9] skeletons: fix output directives, Akim Demaille, 2012/12/19
- [PATCH 5/9] yacc.c: style changes, Akim Demaille, 2012/12/19
- [PATCH 1/9] %define variables: backward compatibility, Akim Demaille, 2012/12/19
- [PATCH 2/9] glr.c: move function declaration earlier, Akim Demaille, 2012/12/19
- [PATCH 3/9] glr: rename lex params, Akim Demaille, 2012/12/19
- [PATCH 9/9] variants: prohibit simple copies, Akim Demaille, 2012/12/19
- [PATCH 8/9] variant: more assertions, Akim Demaille, 2012/12/19