[Top][All Lists]
[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.
- Re: [PATCH 0/3] Improve api.pure for yyerror, Théophile Ranquet, 2012/11/28
- [PATCH 0/3] Improve api.pure for yyerror, Theophile Ranquet, 2012/11/28
- [PATCH 2/3] yacc.c: support "%define api.pure full", Theophile Ranquet, 2012/11/28
- Re: [PATCH 2/3] yacc.c: support "%define api.pure full",
Akim Demaille <=
- [PATCH 1/3] local.at: improvements, Theophile Ranquet, 2012/11/28
- [PATCH 3/3] doc: introduce api.pure full, rearrange some examples, Theophile Ranquet, 2012/11/28
- Re: [PATCH 0/3] Improve api.pure for yyerror, Akim Demaille, 2012/11/28