bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/3] yacc.c: support "%define api.pure full"


From: Akim Demaille
Subject: Re: [PATCH 2/3] yacc.c: support "%define api.pure full"
Date: Wed, 28 Nov 2012 15:04:54 +0100

Le 28 nov. 2012 à 10:30, Theophile Ranquet <address@hidden> a écrit :

> diff --git a/data/yacc.c b/data/yacc.c
> index bbc9d91..52386c5 100644
> --- a/data/yacc.c
> +++ b/data/yacc.c
> @@ -65,24 +65,36 @@ m4_define_default([b4_stack_depth_init],  [200])
> ## ------------------------ ##
> 
> b4_percent_define_default([[api.pure]], [[false]])
> -b4_define_flag_if([pure])
> -m4_define([b4_pure_flag],
> -          [b4_percent_define_flag_if([[api.pure]], [[1]], [[0]])])
> -
> -# b4_yacc_pure_if(IF-TRUE, IF-FALSE)
> -# ----------------------------------
> -# Expand IF-TRUE, if %pure-parser and %parse-param, IF-FALSE otherwise.
> -m4_define([b4_yacc_pure_if],
> -[b4_pure_if([m4_ifset([b4_parse_param],
> -                   [$1], [$2])],
> -         [$2])])
> -
> +b4_percent_define_check_values([[[[api.pure]],
> +                                 [[false]], [[true]], [[]], [[full]]]])
> +
> +m4_define([b4_pure_flag], [[0]])
> +m4_case(b4_percent_define_get([[api.pure]]),
> +        [false], [m4_define([b4_pure_flag], [[0]])],
> +        [true],  [m4_define([b4_pure_flag], [[1]])],
> +        [],      [m4_define([b4_pure_flag], [[1]])],
> +        [full],  [m4_define([b4_pure_flag], [[2]])])
> +
> +m4_define([b4_pure_if],
> +[m4_case(b4_pure_flag,
> +         [0], [$2],
> +         [1], [$1],
> +         [2], [$1])])
> +         [m4_fatal([invalid api.pure value: ]$1)])])
> +
> +# b4_error_pureloc_if(ARG)
> +# ------------------------
> +# Expand ARG iff yyerror is to be given a location as argument.
> +m4_define([b4_error_pureloc_if],
> +[b4_locations_if([m4_case(b4_pure_flag,
> +                          [1], [m4_ifset([b4_parse_param], [$1])],
> +                          [2], [$1])])])

Please, use the same name here and in the test suite (choose either).
And then install.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]