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 <[email protected]> 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])
