From 2cc7c253f13c3621c6062767ffecb6093768d29f Mon Sep 17 00:00:00 2001 From: Alexandre Duret-Lutz Date: Sun, 31 May 2009 21:26:25 +0200 Subject: [PATCH] [lbtt] Adjust parser to Bison 2.4.1. --- lbtt/ChangeLog | 36 ++++++++----- lbtt/src/Config-parse.yy | 106 +++++++++++++++++++-------------------- 2 files changed, 76 insertions(+), 66 deletions(-) diff --git a/lbtt/ChangeLog b/lbtt/ChangeLog index a039eb6de..acb40cd74 100644 --- a/lbtt/ChangeLog +++ b/lbtt/ChangeLog @@ -1,3 +1,13 @@ +2009-05-31 Alexandre Duret-Lutz + + Adjust parser to Bison 2.4.1. + + * src/Config-parse.yy (yyerror): Move to the end of the file, to + please newer versions of Bison. With Bison 2.4.1 the various + token used by yyerror() are now defined only after the first + %{...%} block has been emitted (in which yyerror() was previously + defined). + 2008-03-13 Alexandre Duret-Lutz * src/main.cc: Include for LONG_MAX. lbtt won't @@ -25,13 +35,13 @@ Update description of the --formulafile command line option. (Configuration::print): Do not display a file name when reading formulas from standard input. - + * src/SpotWrapper.h, src/SpotWrapper.cc: Merge files from Spot 0.2 (contributed by Alexandre Duret-Lutz); remove #pragma definitions. * src/ExternalTranslator.h, src/Makefile.in, src/translate.cc: Merge changes from Spot 0.2 (contributed by Alexandre Duret-Lutz). - + * doc/lbtt.texi: Fix typo in URL of the FormulaOptions block generator. Update version, add documentation and references about support for Spot. Describe the new semantics of the --formulafile @@ -133,7 +143,7 @@ log file. * configure.ac: Add test for the setsid library function. - + 2004-07-31 Heikki Tauriainen * src/Product.h (ProductEdge::edge_1, ProductEdge::edge_2): @@ -187,7 +197,7 @@ * doc/texinfo.tex: New upstream version. * doc/lbtt.texi: Update to edition 1.1.0. * NEWS: Update. - + 2004-07-02 Heikki Tauriainen * src/UserCommandReader.cc (parseCommand): Recognize @@ -266,13 +276,13 @@ New files for providing specializations of the general product computation operation applicable to Büchi automata and state spaces. - + * src/Makefile.am: Add BuchiProduct.h, BuchiProduct.cc, Product.h, SccCollection.h and StateSpaceProduct.h to lbtt_SOURCES. Remove ProductAutomaton.h, ProductAutomaton.cc and SccIterator.h from lbtt_SOURCES. - + * src/Graph.h.in (Graph::EdgeContainerType, Graph::Path): New type definitions. (Graph::PathElement): New class. @@ -346,7 +356,7 @@ (printAcceptingCycle): Update parameter list and documentation. Display all relevant information about an accepting execution of a Büchi automaton. - + 2004-05-18 Heikki Tauriainen * configure.ac (YACC): Do not add `-d' here. @@ -374,7 +384,7 @@ * src/NeverClaim-lex.ll: Add %option nounput to avoid a compiler warning. - + * src/ExternalTranslator.h: Include the TempFsysName.h header. (ExternalTranslator::TempFileObject): Remove. (ExternalTranslator::registerTempFileObject): Change @@ -484,7 +494,7 @@ command line option. (printCommandHelp): Update the description of the `formula' command. - + * src/UserCommandReader.cc (executeUserCommands): Accept one optional parameter for the `formula' command. Pass the input tokens as an additional parameter in the printFormula call. @@ -514,7 +524,7 @@ * src/TempFsysName.h, src/TempFsysName.cc New files. * src/Makefile.am: Add TempFsysName.h and TempFsysName.cc to lbtt_SOURCES. - + * src/TestRoundInfo.h: Include the TempFsysName.h header. (TestRoundInfo::formula_file_name[]) (TestRoundInfo::automaton_file_name) @@ -522,7 +532,7 @@ TempFsysName*. (TestRoundInfo::TestRoundInfo): Initialize temporary file name pointers to 0. - + * src/main.cc: Include the TempFsysName.h header. (allocateTempFilenames, deallocateTempFilenames): New functions. (abortHandler): New signal handler. @@ -867,7 +877,7 @@ after colon in output. Return 3 if an unexpected exception occurred. In this case print an additional newline before the error message. - + 2004-02-19 Heikki Tauriainen * src/StringUtil.h: Include the IntervalList.h header. @@ -935,7 +945,7 @@ Reformat the automata file format section to avoid overfull lines in dvi generation. Fix description of the Algorithm block used with lbtt-translate. - + * doc/testprocedure.txt, doc/intersectioncheck.txt: Add initial newlines. diff --git a/lbtt/src/Config-parse.yy b/lbtt/src/Config-parse.yy index b5539afbe..24646a9fe 100644 --- a/lbtt/src/Config-parse.yy +++ b/lbtt/src/Config-parse.yy @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 + * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2009 * Heikki Tauriainen * * This program is free software; you can redistribute it and/or @@ -94,58 +94,7 @@ extern int yylex(); /* Reads the next token * the lexer). */ - - -/****************************************************************************** - * - * Function for reporting parse errors. - * - *****************************************************************************/ - -/* ========================================================================= */ -void yyerror(const char* error_message) -/* ---------------------------------------------------------------------------- - * - * Description: Function for reporting parse errors. - * - * Arguments: error_message -- An error message. - * - * Returns: Nothing. Instead, throws a - * Configuration::ConfigurationException initialized with the - * given error message. - * - * ------------------------------------------------------------------------- */ -{ - const string unknown_token(yytext); - string msg; - - switch (expected_token) - { - case CFG_BLOCK_ID : - msg = "`" + unknown_token + "' is not a valid block identifier"; - break; - case CFG_OPTION_ID : - if (!unknown_token.empty()) - msg = "`" + unknown_token + "' is not a valid option identifier"; - else - msg = "'}' expected at the end of block"; - break; - case CFG_LBRACE : - msg = "`{' expected after block identifier"; - break; - case CFG_EQUALS : - msg = "`=' expected after option identifier"; - break; - case CFG_VALUE : - msg = "value for option expected"; - break; - default : - msg = error_message; - break; - } - - throw Configuration::ConfigurationException(config_file_line_number, msg); -} +void yyerror(const char* error_message); /* Fwd. definition. See below. */ %} @@ -632,6 +581,57 @@ formula_option: CFG_ABBREVIATEDOPERATORS equals_value +/****************************************************************************** + * + * Function for reporting parse errors. + * + *****************************************************************************/ + +/* ========================================================================= */ +void yyerror(const char* error_message) +/* ---------------------------------------------------------------------------- + * + * Description: Function for reporting parse errors. + * + * Arguments: error_message -- An error message. + * + * Returns: Nothing. Instead, throws a + * Configuration::ConfigurationException initialized with the + * given error message. + * + * ------------------------------------------------------------------------- */ +{ + const string unknown_token(yytext); + string msg; + + switch (expected_token) + { + case CFG_BLOCK_ID : + msg = "`" + unknown_token + "' is not a valid block identifier"; + break; + case CFG_OPTION_ID : + if (!unknown_token.empty()) + msg = "`" + unknown_token + "' is not a valid option identifier"; + else + msg = "'}' expected at the end of block"; + break; + case CFG_LBRACE : + msg = "`{' expected after block identifier"; + break; + case CFG_EQUALS : + msg = "`=' expected after option identifier"; + break; + case CFG_VALUE : + msg = "value for option expected"; + break; + default : + msg = error_message; + break; + } + + throw Configuration::ConfigurationException(config_file_line_number, msg); +} + /****************************************************************************** * * Main interface to the parser.