[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] Simplify code for variants bench marks.
From: |
Akim Demaille |
Subject: |
[PATCH] Simplify code for variants bench marks. |
Date: |
Sat, 15 Nov 2008 13:20:37 -0000 |
* etc/bench.pl.in (&generate_grammar_list): Define and use
location_type.
Factor the common code in yylex.
---
ChangeLog | 7 +++++++
etc/bench.pl.in | 31 ++++++++++++++-----------------
2 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 6364361..3b8e4c4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-11-15 Akim Demaille <address@hidden>
+
+ Simplify code for variants bench marks.
+ * etc/bench.pl.in (&generate_grammar_list): Define and use
+ location_type.
+ Factor the common code in yylex.
+
2008-11-15 Akim Demaille <address@hidden>
Better error message.
diff --git a/etc/bench.pl.in b/etc/bench.pl.in
index 7cab2eb..a95e646 100755
--- a/etc/bench.pl.in
+++ b/etc/bench.pl.in
@@ -686,6 +686,7 @@ yy::parser::token_type yylex(yy::parser::semantic_type*
yylval,
yy::parser::location_type* yylloc)
#endif
{
+ typedef yy::parser::location_type location_type;
typedef yy::parser::token token;
static int stage = -1;
++stage;
@@ -694,7 +695,7 @@ yy::parser::token_type yylex(yy::parser::semantic_type*
yylval,
#if USE_LEX_SYMBOL
return yy::parser::make_END_OF_FILE (yy::location());
#else
- *yylloc = yy::location ();
+ *yylloc = location_type ();
return token::END_OF_FILE;
#endif
}
@@ -702,17 +703,15 @@ yy::parser::token_type yylex(yy::parser::semantic_type*
yylval,
{
#if USE_LEX_SYMBOL
return yy::parser::make_NUMBER (stage, yy::location());
-#elif defined ONE_STAGE_BUILD
+#else
+# if defined ONE_STAGE_BUILD
yylval->build(stage);
- *yylloc = yy::location ();
- return token::NUMBER;
-#elif USE_VARIANTS
+# elif USE_VARIANTS
yylval->build<int>() = stage;
- *yylloc = yy::location ();
- return token::NUMBER;
-#else
+# else
yylval->ival = stage;
- *yylloc = yy::location ();
+# endif
+ *yylloc = location_type ();
return token::NUMBER;
#endif
}
@@ -720,17 +719,15 @@ yy::parser::token_type yylex(yy::parser::semantic_type*
yylval,
{
#if USE_LEX_SYMBOL
return yy::parser::make_TEXT ("A string.", yy::location());
-#elif defined ONE_STAGE_BUILD
+#else
+# if defined ONE_STAGE_BUILD
yylval->build(std::string("A string."));
- *yylloc = yy::location ();
- return token::TEXT;
-#elif USE_VARIANTS
+# elif USE_VARIANTS
yylval->build<std::string>() = std::string("A string.");
- *yylloc = yy::location ();
- return token::TEXT;
-#else
+# else
yylval->sval = new std::string("A string.");
- *yylloc = yy::location ();
+# endif
+ *yylloc = location_type ();
return token::TEXT;
#endif
}
--
1.6.0.2.588.g3102
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] Simplify code for variants bench marks.,
Akim Demaille <=