22
22
# # Identification. ##
23
23
# # ---------------- ##
24
24
25
+ # b4_generated_by
26
+ # ---------------
27
+ m4_define ( [ b4_generated_by] ,
28
+ [ b4_comment([ A Bison parser, made by GNU Bison b4_version.] )
29
+ ] )
30
+
25
31
# b4_copyright(TITLE, [YEARS])
26
32
# ----------------------------
27
33
# If YEARS are not defined, use b4_copyright_years.
28
34
m4_define ( [ b4_copyright] ,
29
- [ b4_comment([ A Bison parser, made by GNU Bison b4_version.] )
30
-
35
+ [ b4_generated_by
31
36
b4_comment([ $1
32
37
33
38
] m4_dquote ( m4_text_wrap ( [ Copyright (C)
@@ -58,26 +63,49 @@ Bison output files to be licensed under the GNU General Public
58
63
License without this special exception.
59
64
60
65
This special exception was added by the Free Software Foundation in
61
- version 2.2 of Bison.] )] )
66
+ version 2.2 of Bison.] )
67
+ ] )
68
+
69
+
70
+ # b4_disclaimer
71
+ # -------------
72
+ # Issue a warning about private implementation details.
73
+ m4_define ( [ b4_disclaimer] ,
74
+ [ b4_comment([ Undocumented macros, especially those whose name start with YY_,
75
+ are private implementation details. Do not rely on them.] )
76
+ ] )
77
+
78
+
79
+
80
+ # b4_required_version_if(VERSION, IF_NEWER, IF_OLDER)
81
+ # ---------------------------------------------------
82
+ # If the version %require'd by the user is VERSION (or newer) expand
83
+ # IF_NEWER, otherwise IF_OLDER. VERSION should be an integer, e.g.,
84
+ # 302 for 3.2.
85
+ m4_define ( [ b4_required_version_if] ,
86
+ [ m4_if ( m4_eval ( $1 <= b4_required_version ) ,
87
+ [ 1] , [ $2 ] , [ $3 ] ) ] )
62
88
63
89
64
90
# # -------- ##
65
91
# # Output. ##
66
92
# # -------- ##
67
93
68
- # b4_output_begin(FILE )
69
- # ---------------------
94
+ # b4_output_begin(FILE1, FILE2 )
95
+ # -----------------------------
70
96
# Enable output, i.e., send to diversion 0, expand after "#", and
71
97
# generate the tag to output into FILE. Must be followed by EOL.
98
+ # FILE is FILE1 concatenated to FILE2. FILE2 can be empty, or be
99
+ # absolute: do the right thing.
72
100
m4_define ( [ b4_output_begin] ,
73
101
[ m4_changecom ( )
74
102
m4_divert_push ( 0 ) dnl
75
- @output(m4_unquote ( [ $1 ] ) @)@dnl
103
+ @output(m4_unquote ( [ $1 ] ) @, m4_unquote ( [ $2 ] ) @ )@dnl
76
104
] )
77
105
78
106
79
- # b4_output_end()
80
- # ---------------
107
+ # b4_output_end
108
+ # -------------
81
109
# Output nothing, restore # as comment character (no expansions after #).
82
110
m4_define ( [ b4_output_end] ,
83
111
[ m4_divert_pop ( 0 )
@@ -389,11 +417,11 @@ b4_define_flag_if([yacc]) # Whether POSIX Yacc is emulated.
389
417
#
390
418
# The following macros provide access to these values.
391
419
392
- # b4_symbol_ (NUM, FIELD)
420
+ # _b4_symbol (NUM, FIELD)
393
421
# ----------------------
394
422
# Recover a FIELD about symbol #NUM. Thanks to m4_indir, fails if
395
423
# undefined.
396
- m4_define ( [ b4_symbol_ ] ,
424
+ m4_define ( [ _b4_symbol ] ,
397
425
[ m4_indir ( [ b4_symbol($1 , $2 )] ) ] )
398
426
399
427
@@ -404,8 +432,8 @@ m4_define([b4_symbol_],
404
432
m4_define ( [ b4_symbol] ,
405
433
[ m4_case ( [ $2 ] ,
406
434
[ id] , [ m4_do ( [ b4_percent_define_get([ api.token.prefix] )] ,
407
- [ b4_symbol_ ([ $1 ] , [ id] )] ) ] ,
408
- [ b4_symbol_ ($@ )] ) ] )
435
+ [ _b4_symbol ([ $1 ] , [ id] )] ) ] ,
436
+ [ _b4_symbol ($@ )] ) ] )
409
437
410
438
411
439
# b4_symbol_if(NUM, FIELD, IF-TRUE, IF-FALSE)
@@ -443,8 +471,8 @@ m4_define([b4_symbol_action],
443
471
b4_symbol_if([ $1 ] , [ has_type] ,
444
472
[ m4_dquote ( b4_symbol ( [ $1 ] , [ type] )) ] ),
445
473
[ (*yylocationp)] )dnl
446
- b4_symbol_case_ ([ $1 ] )[ ] dnl
447
- b4_syncline([ b4_symbol([ $1 ] , [ $2 _line] )] , [ " b4_symbol([ $1 ] , [ $2 _file] )" ] )
474
+ _b4_symbol_case ([ $1 ] )[ ] dnl
475
+ b4_syncline([ b4_symbol([ $1 ] , [ $2 _line] )] , [ b4_symbol([ $1 ] , [ $2 _file] )] )
448
476
b4_symbol([ $1 ] , [ $2 ] )
449
477
b4_syncline([ @oline@] , [ @ofile@] )
450
478
break;
@@ -478,10 +506,10 @@ m4_ifval(m4_defn([b4_actions_]),
478
506
m4_popdef ( [ b4_actions_] ) dnl
479
507
] )
480
508
481
- # b4_symbol_case_ (SYMBOL-NUM)
509
+ # _b4_symbol_case (SYMBOL-NUM)
482
510
# ---------------------------
483
511
# Issue a "case NUM" for SYMBOL-NUM.
484
- m4_define ( [ b4_symbol_case_ ] ,
512
+ m4_define ( [ _b4_symbol_case ] ,
485
513
[ case b4_symbol([ $1 ] , [ number] ): b4_symbol_tag_comment([ $1 ] )] )
486
514
])
487
515
@@ -536,16 +564,16 @@ m4_define([b4_token_format],
536
564
# # Types. ##
537
565
# # ------- ##
538
566
539
- # b4_type_action_ (NUMS)
567
+ # _b4_type_action (NUMS)
540
568
# ---------------------
541
569
# Run actions for the symbol NUMS that all have the same type-name.
542
570
# Skip NUMS that have no type-name.
543
571
#
544
572
# To specify the action to run, define b4_dollar_dollar(NUMBER,
545
573
# TAG, TYPE).
546
- m4_define ( [ b4_type_action_ ] ,
574
+ m4_define ( [ _b4_type_action ] ,
547
575
[ b4_symbol_if([ $1 ] , [ has_type] ,
548
- [ m4_map ( [ b4_symbol_case_ ] , [ $@ ] ) [ ] dnl
576
+ [ m4_map ( [ _b4_symbol_case ] , [ $@ ] ) [ ] dnl
549
577
b4_dollar_dollar([ b4_symbol([ $1 ] , [ number] )] ,
550
578
[ b4_symbol([ $1 ] , [ tag] )] ,
551
579
[ b4_symbol([ $1 ] , [ type] )] );
@@ -601,13 +629,15 @@ m4_define([b4_user_code],
601
629
b4_syncline([ @oline@] , [ @ofile@] )] )
602
630
603
631
604
- # b4_define_user_code(MACRO)
605
- # --------------------------
606
- # From b4_MACRO, build b4_user_MACRO that includes the synclines.
632
+ # b4_define_user_code(MACRO, COMMENT )
633
+ # -----------------------------------
634
+ # From b4_MACRO, if defined, build b4_user_MACRO that includes the synclines.
607
635
m4_define ( [ b4_define_user_code] ,
608
636
[ m4_define ( [ b4_user_$1 ] ,
609
- [ b4_user_code([ b4_$1 ] )] ) ] )
610
-
637
+ [ m4_ifdef ( [ b4_$1 ] ,
638
+ [ m4_ifval ( [ $2 ] ,
639
+ [ b4_comment([ $2 ] )
640
+ ] ) b4_user_code([ b4_$1 ] )] ) ] ) ] )
611
641
612
642
# b4_user_actions
613
643
# b4_user_initial_action
@@ -617,9 +647,9 @@ m4_define([b4_define_user_code],
617
647
# ----------------------
618
648
# Macros that issue user code, ending with synclines.
619
649
b4_define_user_code([ actions] )
620
- b4_define_user_code([ initial_action] )
621
- b4_define_user_code([ post_prologue] )
622
- b4_define_user_code([ pre_prologue] )
650
+ b4_define_user_code([ initial_action] , [ User initialization code. ] )
651
+ b4_define_user_code([ post_prologue] , [ Second part of user prologue. ] )
652
+ b4_define_user_code([ pre_prologue] , [ First part of user prologue. ] )
623
653
b4_define_user_code([ union_members] )
624
654
625
655
@@ -701,7 +731,7 @@ m4_define([b4_percent_define_use],
701
731
# b4_percent_define_get([[foo]])
702
732
m4_define ( [ b4_percent_define_get] ,
703
733
[ b4_percent_define_use([ $1 ] )dnl
704
- b4_percent_define_ifdef_ ([ $1 ] ,
734
+ _b4_percent_define_ifdef ([ $1 ] ,
705
735
[ m4_indir ( [ b4_percent_define(] $1 [ )] ) ] ,
706
736
[ $2 ] )] )
707
737
@@ -710,7 +740,7 @@ b4_percent_define_ifdef_([$1],
710
740
# Mimic muscle_percent_define_get_loc in ../src/muscle-tab.h exactly. That is,
711
741
# if the %define variable VARIABLE is undefined, complain fatally since that's
712
742
# a Bison or skeleton error. Otherwise, return its definition location in a
713
- # form approriate for the first two arguments of b4_warn_at, b4_complain_at, or
743
+ # form appropriate for the first two arguments of b4_warn_at, b4_complain_at, or
714
744
# b4_fatal_at. Don't record this as a Bison usage of VARIABLE as there's no
715
745
# reason to suspect that the user-supplied value has yet influenced the output.
716
746
#
@@ -755,15 +785,15 @@ m4_define([b4_percent_define_get_syncline],
755
785
[ m4_indir ( [ b4_percent_define_syncline(] $1 [ )] ) ] ,
756
786
[ b4_fatal([ [ $0 : undefined %%define variable '%s'] ] , [ $1 ] )] ) ] )
757
787
758
- # b4_percent_define_ifdef_ (VARIABLE, IF-TRUE, [IF-FALSE])
788
+ # _b4_percent_define_ifdef (VARIABLE, IF-TRUE, [IF-FALSE])
759
789
# ------------------------------------------------------
760
790
# If the %define variable VARIABLE is defined, expand IF-TRUE, else expand
761
791
# IF-FALSE. Don't record usage of VARIABLE.
762
792
#
763
793
# For example:
764
794
#
765
- # b4_percent_define_ifdef_ ([[foo]], [[it's defined]], [[it's undefined]])
766
- m4_define ( [ b4_percent_define_ifdef_ ] ,
795
+ # _b4_percent_define_ifdef ([[foo]], [[it's defined]], [[it's undefined]])
796
+ m4_define ( [ _b4_percent_define_ifdef ] ,
767
797
[ m4_ifdef ( [ b4_percent_define(] $1 [ )] ,
768
798
[ $2 ] ,
769
799
[ $3 ] ) ] )
@@ -779,11 +809,44 @@ m4_define([b4_percent_define_ifdef_],
779
809
#
780
810
# b4_percent_define_ifdef([[foo]], [[it's defined]], [[it's undefined]])
781
811
m4_define ( [ b4_percent_define_ifdef] ,
782
- [ b4_percent_define_ifdef_ ([ $1 ] ,
812
+ [ _b4_percent_define_ifdef ([ $1 ] ,
783
813
[ b4_percent_define_use([ $1 ] )$2 ] ,
784
814
[ $3 ] )] )
785
815
786
816
817
+ # b4_percent_define_check_file_complain(VARIABLE)
818
+ # -----------------------------------------------
819
+ # Warn about %define variable VARIABLE having an incorrect
820
+ # value.
821
+ m4_define ( [ b4_percent_define_check_file_complain] ,
822
+ [ b4_complain_at(b4_percent_define_get_loc([ $1 ] ),
823
+ [ [ %%define variable '%s' requires 'none' or '"..."' values] ] ,
824
+ [ $1 ] )] )
825
+
826
+
827
+ # b4_percent_define_check_file(MACRO, VARIABLE, DEFAULT)
828
+ # ------------------------------------------------------
829
+ # If the %define variable VARIABLE:
830
+ # - is undefined, then if DEFAULT is non-empty, define MACRO to DEFAULT
831
+ # - is a string, define MACRO to its value
832
+ # - is the keyword 'none', do nothing
833
+ # - otherwise, warn about the incorrect value.
834
+ m4_define ( [ b4_percent_define_check_file] ,
835
+ [ b4_percent_define_ifdef([ $2 ] ,
836
+ [ m4_case ( b4_percent_define_get_kind ( [ $2 ] ) ,
837
+ [ string] ,
838
+ [ m4_define ( [ $1 ] , b4_percent_define_get ( [ $2 ] )) ] ,
839
+ [ keyword] ,
840
+ [ m4_if ( b4_percent_define_get ( [ $2 ] ) , [ none] , [ ] ,
841
+ [ b4_percent_define_check_file_complain([ $2 ] )] ) ] ,
842
+ [ b4_percent_define_check_file_complain([ $2 ] )] )
843
+ ] ,
844
+ [ m4_ifval ( [ $3 ] ,
845
+ [ m4_define ( [ $1 ] , [ $3 ] ) ] ) ] )
846
+ ] )
847
+
848
+
849
+
787
850
# # --------- ##
788
851
# # Options. ##
789
852
# # --------- ##
@@ -824,7 +887,7 @@ m4_define([b4_percent_define_flag_if],
824
887
#
825
888
# b4_percent_define_default([[foo]], [[default value]])
826
889
m4_define ( [ b4_percent_define_default] ,
827
- [ b4_percent_define_ifdef_ ([ $1 ] , [ ] ,
890
+ [ _b4_percent_define_ifdef ([ $1 ] , [ ] ,
828
891
[ m4_define ( [ b4_percent_define(] $1 [ )] , [ $2 ] ) dnl
829
892
m4_define ( [ b4_percent_define_kind(] $1 [ )] ,
830
893
[ m4_default ( [ $3 ] , [ keyword] ) ] ) dnl
@@ -839,26 +902,26 @@ m4_define([b4_percent_define_default],
839
902
# Define b4_NAME_if that executes its $1 or $2 depending whether
840
903
# VARIABLE was %defined. The characters '.' and `-' in VARIABLE are mapped
841
904
# to '_'.
842
- m4_define ( [ b4_percent_define_if_define_ ] ,
905
+ m4_define ( [ _b4_percent_define_if_define ] ,
843
906
[ m4_define ( m4_bpatsubst ( [ b4_$1 _if] , [ [ -.] ] , [ _] ) ,
844
907
[ b4_percent_define_flag_if(m4_default ( [ $2 ] , [ $1 ] ) ,
845
908
[ $3 ] , [ $4 ] )] ) ] )
846
909
m4_define ( [ b4_percent_define_if_define] ,
847
910
[ b4_percent_define_default([ m4_default ( [ $2 ] , [ $1 ] ) ] , [ [ false] ] )
848
- b4_percent_define_if_define_ ([ $1 ] , [ $2 ] , $[ 1] , $[ 2] )] )
911
+ _b4_percent_define_if_define ([ $1 ] , [ $2 ] , $[ 1] , $[ 2] )] )
849
912
850
913
851
914
# b4_percent_define_check_kind(VARIABLE, KIND, [DIAGNOSTIC = complain])
852
915
# ---------------------------------------------------------------------
853
916
m4_define ( [ b4_percent_define_check_kind] ,
854
- [ b4_percent_define_ifdef_ ([ $1 ] ,
917
+ [ _b4_percent_define_ifdef ([ $1 ] ,
855
918
[ m4_if ( b4_percent_define_get_kind ( [ $1 ] ) , [ $2 ] , [ ] ,
856
919
[ b4_error([ m4_default ( [ $3 ] , [ complain] ) ] ,
857
920
b4_percent_define_get_loc([ $1 ] ),
858
921
[ m4_case ( [ $2 ] ,
859
- [ code] , [ [ %%define variable '%s' requires '{...}' values] ] ,
922
+ [ code] , [ [ %%define variable '%s' requires '{...}' values] ] ,
860
923
[ keyword] , [ [ %%define variable '%s' requires keyword values] ] ,
861
- [ string] , [ [ %%define variable '%s' requires '"..."' values] ] ) ] ,
924
+ [ string] , [ [ %%define variable '%s' requires '"..."' values] ] ) ] ,
862
925
[ $1 ] )] ) ] )dnl
863
926
] )
864
927
@@ -884,7 +947,7 @@ m4_define([b4_percent_define_check_values],
884
947
[ _b4_percent_define_check_values(b4_sublist)] ) ] )
885
948
886
949
m4_define ( [ _b4_percent_define_check_values] ,
887
- [ b4_percent_define_ifdef_ ([ $1 ] ,
950
+ [ _b4_percent_define_ifdef ([ $1 ] ,
888
951
[ b4_percent_define_check_kind(] $1 [ , [ keyword] , [ deprecated] )dnl
889
952
m4_pushdef ( [ b4_good_value] , [ 0] ) dnl
890
953
m4_if ( $# , 1 , [ ] ,
@@ -946,7 +1009,7 @@ m4_define([b4_percent_code_ifdef],
946
1009
# b4_parse_assert_if([IF-ASSERTIONS-ARE-USED], [IF-NOT])
947
1010
# b4_parse_trace_if([IF-DEBUG-TRACES-ARE-ENABLED], [IF-NOT])
948
1011
# b4_token_ctor_if([IF-YYLEX-RETURNS-A-TOKEN], [IF-NOT])
949
- # ----------------------------------------------
1012
+ # ----------------------------------------------------------
950
1013
b4_percent_define_if_define([ token_ctor] , [ api.token.constructor] )
951
1014
b4_percent_define_if_define([ locations] ) # Whether locations are tracked.
952
1015
b4_percent_define_if_define([ parse.assert] )
@@ -1011,8 +1074,6 @@ b4_check_user_names_wrap([[code]], [[qualifier]])
1011
1074
# # ---------------- ##
1012
1075
1013
1076
# m4_define_default([b4_lex_param], []) dnl breaks other skeletons
1014
- m4_define_default([ b4_pre_prologue] , [ ] )
1015
- m4_define_default([ b4_post_prologue] , [ ] )
1016
1077
m4_define_default([ b4_epilogue] , [ ] )
1017
1078
m4_define_default([ b4_parse_param] , [ ] )
1018
1079
0 commit comments