From 39be90223b73a42d249f99cdf283c4ab46a10a21 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Mon, 18 Aug 2008 22:31:13 +0200 Subject: [PATCH] Replace yychar with a Boolean. * data/lalr1.cc (parse::yychar): Replace by... (parse::yyempty): this. --- ChangeLog | 6 ++++++ data/lalr1.cc | 38 +++++++++++++++----------------------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 293cb7c1..41c24908 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-11-11 Akim Demaille + + Replace yychar with a Boolean. + * data/lalr1.cc (parse::yychar): Replace by... + (parse::yyempty): this. + 2008-11-11 Akim Demaille Factor the tables. diff --git a/data/lalr1.cc b/data/lalr1.cc index 2a0a5f23..c286ee08 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -815,12 +815,12 @@ b4_percent_code_get[]dnl #endif /* !YYDEBUG */ -#define yyerrok (yyerrstatus_ = 0) -#define yyclearin (yychar = yyempty_) +#define yyerrok (yyerrstatus_ = 0) +#define yyclearin (yyempty = true) -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) ]b4_namespace_open[ @@ -1080,8 +1080,8 @@ b4_percent_code_get[]dnl int ]b4_parser_class_name[::parse () { - /// Coded type of the lookahead. - int yychar = yyempty_; + /// Whether yyla contains a lookahead. + bool yyempty = true; /* State. */ int yyn; @@ -1142,18 +1142,14 @@ m4_popdef([b4_at_dollar])])dnl goto yydefault; /* Read a lookahead token. */ - if (yychar == yyempty_) + if (yyempty) { YYCDEBUG << "Reading a token: "; - yychar = ]b4_c_function_call([yylex], [int], + yyla.type = yytranslate_ (]b4_c_function_call([yylex], [int], [[YYSTYPE*], [&yyla.value]][]dnl b4_locations_if([, [[location*], [&yyla.location]]])dnl -m4_ifdef([b4_lex_param], [, ]b4_lex_param))[; - // Convert token to internal form. - yyla.type = yytranslate_ (yychar); - // Beware that yylex may return -2 to mean EOF, but which - // turns out to the be value of YYEMPTY. - yychar = !yyempty_; +m4_ifdef([b4_lex_param], [, ]b4_lex_param))[); + yyempty = false; } YY_SYMBOL_PRINT ("Next token is", yyla); @@ -1175,7 +1171,7 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param))[; } /* Discard the token being shifted. */ - yychar = yyempty_; + yyempty = true; /* Count tokens shifted since error; after three, turn off error status. */ @@ -1282,13 +1278,9 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param))[; if (yyla.type == yyeof_) YYABORT; else - {]b4_assert_if([ - // Previous version of this code was ready to handle - // yychar == yyempty_ (actually yychar <= yyeof_). Can it - // really be triggered? - assert (yychar != yyempty_);])[ + { yy_destroy_ ("Error: discarding", yyla); - yychar = yyempty_; + yyempty = true; } } @@ -1368,7 +1360,7 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param))[; goto yyreturn; yyreturn: - if (yychar != yyempty_) + if (!yyempty) yy_destroy_ ("Cleanup: discarding lookahead", yyla); /* Do not reclaim the symbols of the rule which action triggered -- 2.47.2