From cbf25ce74fab2a7ff245bf0a2b160c06ac5b7b1e Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 31 Dec 2008 17:21:56 +0100 Subject: [PATCH] Share b4_yytranslate_define. * data/lalr1.cc (b4_yytranslate_define): Move to... * data/c++.m4: here. --- ChangeLog | 6 ++++++ data/c++.m4 | 28 ++++++++++++++++++++++++++++ data/lalr1.cc | 29 ----------------------------- 3 files changed, 34 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6f8df1a9..f858adae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-03-02 Akim Demaille + + Share b4_yytranslate_define. + * data/lalr1.cc (b4_yytranslate_define): Move to... + * data/c++.m4: here. + 2009-03-02 Akim Demaille Use locations in the variant example. diff --git a/data/c++.m4 b/data/c++.m4 index 9ec967ad..c43a4df2 100644 --- a/data/c++.m4 +++ b/data/c++.m4 @@ -294,6 +294,34 @@ m4_define([b4_symbol_constructor_declare], []) m4_define([b4_symbol_constructor_define], []) +# b4_yytranslate_define +# --------------------- +# Define yytranslate_. Sometimes used in the header file, +# sometimes in the cc file. +m4_define([b4_yytranslate_define], +[[ // Symbol number corresponding to token number t. + ]b4_parser_class_name[::token_number_type + ]b4_parser_class_name[::yytranslate_ (]b4_lex_symbol_if([token_type], + [int])[ t) + { + static + const token_number_type + translate_table[] = + { +]b4_translate[ + }; + const unsigned int user_token_number_max_ = ]b4_user_token_number_max[; + const token_number_type undef_token_ = ]b4_undef_token_number[; + + if (static_cast(t) <= yyeof_) + return yyeof_; + else if (static_cast (t) <= user_token_number_max_) + return translate_table[t]; + else + return undef_token_; + } +]]) + # b4_lhs_value([TYPE]) # -------------------- diff --git a/data/lalr1.cc b/data/lalr1.cc index 642fd4e0..81c2d207 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -115,35 +115,6 @@ m4_popdef([b4_dollar_dollar])dnl ])]) -# b4_yytranslate_define -# --------------------- -# Define yytranslate_. Sometimes we want it in the header file, -# sometimes the cc file suffices. -m4_define([b4_yytranslate_define], -[[ // Symbol number corresponding to token number t. - ]b4_parser_class_name[::token_number_type - ]b4_parser_class_name[::yytranslate_ (]b4_lex_symbol_if([token_type], - [int])[ t) - { - static - const token_number_type - translate_table[] = - { -]b4_translate[ - }; - const unsigned int user_token_number_max_ = ]b4_user_token_number_max[; - const token_number_type undef_token_ = ]b4_undef_token_number[; - - if (static_cast(t) <= yyeof_) - return yyeof_; - else if (static_cast (t) <= user_token_number_max_) - return translate_table[t]; - else - return undef_token_; - } -]]) - - m4_pushdef([b4_copyright_years], [2002, 2003, 2004, 2005, 2006, 2007, 2008]) -- 2.47.2