[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
m4: have b4_percent_define_if_define apply default values lazily
From: |
Akim Demaille |
Subject: |
m4: have b4_percent_define_if_define apply default values lazily |
Date: |
Sat, 3 Oct 2020 09:28:49 +0200 |
Hi Adela,
With this change, you should be able to have api.token.raw work
the way you wanted in D.
Cheers!
commit e66673aa64aae0e5422e780abea9cbcb99b7731e
Author: Akim Demaille <akim.demaille@gmail.com>
Date: Sat Oct 3 08:57:54 2020 +0200
m4: have b4_percent_define_if_define apply default values lazily
Currently `b4_percent_define_ifdef([foo])` assigns a default value to
`foo` when invoked. As a consequence, skeletons such as lalr1.d
cannot specify their specific default values: `foo` was defined in
bison.m4.
Instead, provide `foo` with a default value when `b4_foo_if` is
invoked.
I could not measure a runtime difference between both cases.
* data/skeletons/bison.m4 (_b4_percent_define_define): New.
Helps getting rid of spurious indentation that resulted in spurious
white space in the output.
(b4_percent_define_if_define): Move the definition to...
(_b4_percent_define_if_define): when the defined macros is called.
diff --git a/data/skeletons/bison.m4 b/data/skeletons/bison.m4
index 851524fe..bd16190d 100644
--- a/data/skeletons/bison.m4
+++ b/data/skeletons/bison.m4
@@ -969,15 +969,18 @@ m4_define([b4_percent_define_flag_if],
# For example:
#
# b4_percent_define_default([[foo]], [[default value]])
+m4_define([_b4_percent_define_define],
+[m4_define([b4_percent_define(]$1[)], [$2])dnl
+m4_define([b4_percent_define_kind(]$1[)],
+ [m4_default([$3], [keyword])])dnl
+m4_define([b4_percent_define_loc(]$1[)],
+ [[[[<skeleton default value>:-1.-1]],
+ [[<skeleton default value>:-1.-1]]]])dnl
+m4_define([b4_percent_define_syncline(]$1[)], [[]])])
+
m4_define([b4_percent_define_default],
[_b4_percent_define_ifdef([$1], [],
- [m4_define([b4_percent_define(]$1[)], [$2])dnl
- m4_define([b4_percent_define_kind(]$1[)],
- [m4_default([$3], [keyword])])dnl
- m4_define([b4_percent_define_loc(]$1[)],
- [[[[<skeleton default value>:-1.-1]],
- [[<skeleton default value>:-1.-1]]]])dnl
- m4_define([b4_percent_define_syncline(]$1[)], [[]])])])
+ [_b4_percent_define_define($@)])])
# b4_percent_define_if_define(NAME, [VARIABLE = NAME])
@@ -987,11 +990,12 @@ m4_define([b4_percent_define_default],
# to '_'.
m4_define([_b4_percent_define_if_define],
[m4_define(m4_bpatsubst([b4_$1_if], [[-.]], [_]),
- [b4_percent_define_flag_if(m4_default([$2], [$1]),
- [$3], [$4])])])
+ [b4_percent_define_default([m4_default([$2], [$1])], [[false]])dnl
+b4_percent_define_flag_if(m4_default([$2], [$1]),
+ [$3], [$4])])])
+
m4_define([b4_percent_define_if_define],
-[b4_percent_define_default([m4_default([$2], [$1])], [[false]])
-_b4_percent_define_if_define([$1], [$2], $[1], $[2])])
+[_b4_percent_define_if_define([$1], [$2], $[1], $[2])])
# b4_percent_define_check_kind(VARIABLE, KIND, [DIAGNOSTIC = complain])
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- m4: have b4_percent_define_if_define apply default values lazily,
Akim Demaille <=