mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
Compute at M4 time some of the subtractions.
* data/lalr1.cc (b4_substract): New. (b4_rhs_data): Use it.
This commit is contained in:
@@ -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>
|
2008-11-13 Akim Demaille <demaille@gostai.com>
|
||||||
|
|
||||||
symbol::token.
|
symbol::token.
|
||||||
|
|||||||
@@ -18,6 +18,15 @@
|
|||||||
|
|
||||||
m4_include(b4_pkgdatadir/[c++.m4])
|
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, ...)
|
||||||
# _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
|
# Return the data corresponding to the symbol #NUM, where the current
|
||||||
# rule has RULE-LENGTH symbols on RHS.
|
# rule has RULE-LENGTH symbols on RHS.
|
||||||
m4_define([b4_rhs_data],
|
m4_define([b4_rhs_data],
|
||||||
[yystack_@{($1) - ($2)@}])
|
[yystack_@{b4_subtract($@)@}])
|
||||||
|
|
||||||
|
|
||||||
# b4_rhs_state(RULE-LENGTH, NUM)
|
# b4_rhs_state(RULE-LENGTH, NUM)
|
||||||
|
|||||||
Reference in New Issue
Block a user