+2008-11-13 Akim Demaille <demaille@gostai.com>
+
+ Compute at M4 time some of the subtractions.
+ * data/lalr1.cc (b4_substract): New.
+ (b4_rhs_data): Use it.
+
2008-11-13 Akim Demaille <demaille@gostai.com>
symbol::token.
m4_include(b4_pkgdatadir/[c++.m4])
+# b4_subtract(LHS, RHS)
+# ---------------------
+# Evaluate LHS - RHS if they are integer literals, otherwise expand
+# to (LHS) - (RHS).
+m4_define([b4_subtract],
+[m4_bmatch([$1$2], [^[0123456789]*$],
+ [m4_eval([$1 - $2])],
+ [($1) - ($2)])])
+
# b4_args(ARG1, ...)
# _b4_args(ARG1, ...)
# Return the data corresponding to the symbol #NUM, where the current
# rule has RULE-LENGTH symbols on RHS.
m4_define([b4_rhs_data],
- [yystack_@{($1) - ($2)@}])
+ [yystack_@{b4_subtract($@)@}])
# b4_rhs_state(RULE-LENGTH, NUM)