[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FYI: glr: eliminate last bits of unwanted locations
From: |
Akim Demaille |
Subject: |
FYI: glr: eliminate last bits of unwanted locations |
Date: |
Tue, 10 Apr 2012 13:43:11 +0200 |
Installed in maint.
From d834eca014bd545fb359d20687b4ce2c6875219d Mon Sep 17 00:00:00 2001
From: Akim Demaille <address@hidden>
Date: Tue, 10 Apr 2012 08:07:32 +0200
Subject: [PATCH] glr: eliminate last bits of unwanted locations.
* data/glr.c (YYLTYPE): Do not define when locations are
not demanded.
Adjust all dependencies.
---
NEWS | 9 ++++++++-
data/glr.c | 29 ++++++++++++-----------------
2 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/NEWS b/NEWS
index 52b2045..b49f2c8 100644
--- a/NEWS
+++ b/NEWS
@@ -9,7 +9,14 @@ Bison News
** yacc.c: YYBACKUP works as expected.
-** glr.c: __attribute__ is preserved:
+** glr.c improvements:
+
+*** Location support is eliminated when not requested:
+
+ GLR parsers used to include location-related code even when
+ locations were not requested, and therefore not even usable.
+
+*** __attribute__ is preserved:
__attribute__ is no longer disabled when __STRICT_ANSI__ is defined
(i.e., when -std is passed to GCC).
diff --git a/data/glr.c b/data/glr.c
index d0b2692..0e62c6a 100644
--- a/data/glr.c
+++ b/data/glr.c
@@ -207,23 +207,19 @@ b4_token_enums(b4_tokens)
[[typedef int YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1]])])[
#endif
-
+]b4_locations_if([[
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
typedef struct YYLTYPE
{
-]b4_locations_if([
int first_line;
int first_column;
int last_line;
int last_column;
-],[
- char yydummy;
-])[
} YYLTYPE;
# define YYLTYPE_IS_DECLARED 1
# define YYLTYPE_IS_TRIVIAL 1
#endif
-
+]])[
]b4_percent_code_get([[provides]])[]dnl
])
@@ -566,9 +562,8 @@ m4_if(b4_prefix[], [yy], [],
#define b4_prefix[]char yychar
#define b4_prefix[]lval yylval
#define b4_prefix[]lloc yylloc])],
-[YYSTYPE yylval;
-
-YYLTYPE yylloc;
+[YYSTYPE yylval;]b4_locations_if([[
+YYLTYPE yylloc;]])[
int yynerrs;
int yychar;])[
@@ -774,9 +769,9 @@ struct yyGLRState {
yySemanticOption* yyfirstVal;
/** Semantic value for this state. */
YYSTYPE yysval;
- } yysemantics;
+ } yysemantics;]b4_locations_if([[
/** Source location for this state. */
- YYLTYPE yyloc;
+ YYLTYPE yyloc;]])[
};
struct yyGLRStateSet {
@@ -798,8 +793,8 @@ struct yySemanticOption {
yyGLRState* yystate;
/** The lookahead for this reduction. */
int yyrawchar;
- YYSTYPE yyval;
- YYLTYPE yyloc;
+ YYSTYPE yyval;]b4_locations_if([[
+ YYLTYPE yyloc;]])[
/** Next sibling in chain of options. To facilitate merging,
* options are chained in decreasing order by address. */
yySemanticOption* yynext;
@@ -820,8 +815,8 @@ struct yyGLRStack {
[
int yyerrcnt;
int yyrawchar;
- YYSTYPE yyval;
- YYLTYPE yyloc;
+ YYSTYPE yyval;]b4_locations_if([[
+ YYLTYPE yyloc;]])[
])[
YYJMP_BUF yyexception_buffer;
yyGLRStackItem* yyitems;
@@ -880,8 +875,8 @@ yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
{
YYASSERT (s->yyresolved);
yyvsp[i].yystate.yyresolved = yytrue;
- yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval;
- yyvsp[i].yystate.yyloc = s->yyloc;
+ yyvsp[i].yystate.yysemantics.yysval =
s->yysemantics.yysval;]b4_locations_if([[
+ yyvsp[i].yystate.yyloc = s->yyloc;]])[
s = yyvsp[i].yystate.yypred = s->yypred;
}
}
--
1.7.9.6
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- FYI: glr: eliminate last bits of unwanted locations,
Akim Demaille <=