From 03878edf7716ed16211a431d6ab108563833ebb4 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 3 Feb 2019 09:32:12 +0100 Subject: [PATCH] NEWS: named constructors are preferable to symbol_type ctors Reported by Frank Heckenbach. http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00043.html --- NEWS | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/NEWS b/NEWS index f5475861..9880d609 100644 --- a/NEWS +++ b/NEWS @@ -223,17 +223,18 @@ GNU Bison NEWS symbol_type (int token, const int&); symbol_type (int token); - which should be used in a Flex-scanner as follows. - - %% - [a-z]+ return yy::parser::symbol_type (ID, yytext); - [0-9]+ return yy::parser::symbol_type (INT, text_to_int (yytext); - ":" return yy::parser::symbol_type (’:’); - <> return yy::parser::symbol_type (0); - Correct matching between token types and value types is checked via - 'assert'. For instance, 'symbol_type (ID, 42)' would abort (while - 'make_ID (42)' would not even compile). + 'assert'; for instance, 'symbol_type (ID, 42)' would abort. Named + constructors are preferable, as they offer better type safety (for + instance 'make_ID (42)' would not even compile), but symbol_type + constructors may help when token types are discovered at run-time, e.g., + + [a-z]+ { + if (auto i = lookup_keyword (yytext)) + return yy::parser::symbol_type (i); + else + return yy::parser::make_ID (yytext); + } *** C++: Variadic emplace @@ -3486,7 +3487,7 @@ along with this program. If not, see . LocalWords: Heimbigner AST src ast Makefile srcdir MinGW xxlex XXSTYPE LocalWords: XXLTYPE strictfp IDEs ffixit fdiagnostics parseable fixits LocalWords: Wdeprecated yytext Variadic variadic yyrhs yyphrs RCS README - LocalWords: noexcept constexpr ispell american + LocalWords: noexcept constexpr ispell american deprecations Local Variables: ispell-dictionary: "american"