Compute at M4 time some of the subtractions.

* data/lalr1.cc (b4_substract): New.
	(b4_rhs_data): Use it.
This commit is contained in:
Akim Demaille
2008-09-01 11:39:41 +02:00
parent 202598d3ab
commit 3204049e31
2 changed files with 16 additions and 1 deletions

View File

@@ -1,3 +1,9 @@
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.

View File

@@ -18,6 +18,15 @@
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, ...)
@@ -107,7 +116,7 @@ m4_define([b4_lhs_location],
# 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)