diff --git a/ChangeLog b/ChangeLog index cb690ead2..7850771e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2009-03-25 Alexandre Duret-Lutz + + Update parsers to work with Bison 2.4.1. + + * HACKING: Mention that we require Bison >= 2.4 for developers. + * src/evtgbaparse/evtgbaparse.yy, src/tgbaparse/tgbaparse.yy, + src/ltlparse/ltlparse.yy: The sections "%{ ... %}" should now be + renamed "%code requires { ... }" or "%code { ... }" depending on + whether they should end up in the parser's header file or its cc + file. Also use %language, %locations, %defines, instead of + command-line arguments. + * src/evtgbaparse/Makefile.am, src/tgbaparse/Makefile.am, + src/ltlparse/Makefile.am: Remove the --locations, --defines + and --languages in the call to bison. Add -Wall -Werror to + catch more errors. + Thanks to Akim Demaille for the help. + 2009-03-25 Alexandre Duret-Lutz * src/tgbaalgos/scc.hh: Add missing misc/hash.hh inclusion. diff --git a/HACKING b/HACKING index b74656eb3..17d510df2 100644 --- a/HACKING +++ b/HACKING @@ -12,7 +12,7 @@ generally if you plan to regenerate some of the generated files. GNU Autoconf >= 2.61 GNU Automake >= 1.10 GNU Flex (the version seems to matters, we used 2.5.31) - GNU Bison >= 2.3 + GNU Bison >= 2.4 SWIG >= 1.3.31 Doxygen >= 1.4.0 diff --git a/src/evtgbaparse/Makefile.am b/src/evtgbaparse/Makefile.am index d92b2fb9d..e583453cb 100644 --- a/src/evtgbaparse/Makefile.am +++ b/src/evtgbaparse/Makefile.am @@ -1,4 +1,4 @@ -## Copyright (C) 2004, 2006, 2008 Laboratoire d'Informatique de Paris 6 +## Copyright (C) 2004, 2006, 2008, 2009 Laboratoire d'Informatique de Paris 6 ## (LIP6), département Systèmes Répartis Coopératifs (SRC), Université ## Pierre et Marie Curie. ## @@ -50,7 +50,7 @@ $(FROM_EVTGBAPARSE_YY_MAIN): $(srcdir)/$(EVTGBAPARSE_YY) ## $(srcdir)/$(EVTGBAPARSE_YY), it will also use the value of $(srcdir)/ ## in the generated include statements. cd $(srcdir) && \ - bison --defines --locations --skeleton=lalr1.cc --report=all \ + bison -Wall -Werror --report=all \ $(EVTGBAPARSE_YY) -o $(FROM_EVTGBAPARSE_YY_MAIN) $(FROM_EVTGBAPARSE_YY_OTHERS): $(EVTGBAPARSE_YY) @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) $(FROM_EVTGBAPARSE_YY_MAIN) diff --git a/src/evtgbaparse/evtgbaparse.yy b/src/evtgbaparse/evtgbaparse.yy index 8abdf1d13..75fad89c6 100644 --- a/src/evtgbaparse/evtgbaparse.yy +++ b/src/evtgbaparse/evtgbaparse.yy @@ -1,4 +1,4 @@ -/* Copyright (C) 2004, 2005, 2006 Laboratoire d'Informatique de Paris 6 (LIP6), +/* Copyright (C) 2004, 2005, 2006, 2009 Laboratoire d'Informatique de Paris 6 (LIP6), ** département Systèmes Répartis Coopératifs (SRC), Université Pierre ** et Marie Curie. ** @@ -19,17 +19,22 @@ ** Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ** 02111-1307, USA. */ -%{ +%language "C++" +%locations +%defines +%name-prefix "evtgbayy" +%debug +%error-verbose + +%code requires +{ #include #include "public.hh" #include "evtgba/symbol.hh" -%} +} -%name-prefix="evtgbayy" %parse-param {spot::evtgba_parse_error_list &error_list} %parse-param {spot::evtgba_explicit* &result} -%debug -%error-verbose %union { int token; @@ -37,7 +42,8 @@ spot::rsymbol_set* symset; } -%{ +%code +{ /* evtgbaparse.hh and parsedecl.hh include each other recursively. We mut ensure that YYSTYPE is declared (by the above %union) before parsedecl.hh uses it. */ @@ -47,7 +53,7 @@ (%name-prefix doesn't work for the lalr1.cc skeleton at the time of writing.) */ #define yylex evtgbayylex -%} +} %token STRING UNTERMINATED_STRING %token IDENT diff --git a/src/ltlparse/Makefile.am b/src/ltlparse/Makefile.am index 7692f1ede..cdb749a68 100644 --- a/src/ltlparse/Makefile.am +++ b/src/ltlparse/Makefile.am @@ -1,4 +1,4 @@ -## Copyright (C) 2003, 2004, 2008 Laboratoire d'Informatique de Paris +## Copyright (C) 2003, 2004, 2008, 2009 Laboratoire d'Informatique de Paris ## 6 (LIP6), département Systèmes Répartis Coopératifs (SRC), ## Université Pierre et Marie Curie. ## @@ -44,7 +44,7 @@ $(FROM_LTLPARSE_YY_MAIN): $(srcdir)/$(LTLPARSE_YY) ## $(srcdir)/$(LTLPARSE_YY), it will also use the value of $(srcdir)/ ## in the generated include statements. cd $(srcdir) && \ - bison --defines --locations --skeleton=lalr1.cc --report=all \ + bison -Wall -Werror --report=all \ $(LTLPARSE_YY) -o $(FROM_LTLPARSE_YY_MAIN) $(FROM_LTLPARSE_YY_OTHERS): $(LTLPARSE_YY) @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) $(FROM_LTLPARSE_YY_MAIN) diff --git a/src/ltlparse/ltlparse.yy b/src/ltlparse/ltlparse.yy index ce74666d0..08fcd3824 100644 --- a/src/ltlparse/ltlparse.yy +++ b/src/ltlparse/ltlparse.yy @@ -1,4 +1,4 @@ -/* Copyright (C) 2003, 2004, 2005, 2006 Laboratoire d'Informatique de +/* Copyright (C) 2003, 2004, 2005, 2006, 2009 Laboratoire d'Informatique de ** Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC), ** Université Pierre et Marie Curie. ** @@ -19,20 +19,24 @@ ** Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ** 02111-1307, USA. */ -%{ +%language "C++" +%locations +%defines +%name-prefix "ltlyy" +%debug +%error-verbose + +%code requires +{ #include #include "public.hh" #include "ltlast/allnodes.hh" #include "ltlvisit/destroy.hh" +} -%} - -%name-prefix="ltlyy" %parse-param {spot::ltl::parse_error_list &error_list} %parse-param {spot::ltl::environment &parse_environment} %parse-param {spot::ltl::formula* &result} -%debug -%error-verbose %union { int token; @@ -40,7 +44,7 @@ spot::ltl::formula* ltl; } -%{ +%code { /* ltlparse.hh and parsedecl.hh include each other recursively. We mut ensure that YYSTYPE is declared (by the above %union) before parsedecl.hh uses it. */ @@ -69,7 +73,7 @@ using namespace spot::ltl; } \ while (0); -%} +} /* All tokens. */ diff --git a/src/tgbaparse/Makefile.am b/src/tgbaparse/Makefile.am index 495c2a253..9a4118bde 100644 --- a/src/tgbaparse/Makefile.am +++ b/src/tgbaparse/Makefile.am @@ -1,4 +1,4 @@ -## Copyright (C) 2003, 2004, 2006, 2008 Laboratoire d'Informatique de +## Copyright (C) 2003, 2004, 2006, 2008, 2009 Laboratoire d'Informatique de ## Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC), ## Université Pierre et Marie Curie. ## @@ -50,7 +50,7 @@ $(FROM_TGBAPARSE_YY_MAIN): $(srcdir)/$(TGBAPARSE_YY) ## $(srcdir)/$(TGBAPARSE_YY), it will also use the value of $(srcdir)/ ## in the generated include statements. cd $(srcdir) && \ - bison --defines --locations --skeleton=lalr1.cc --report=all \ + bison -Wall -Werror --report=all \ $(TGBAPARSE_YY) -o $(FROM_TGBAPARSE_YY_MAIN) $(FROM_TGBAPARSE_YY_OTHERS): $(TGBAPARSE_YY) @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) $(FROM_TGBAPARSE_YY_MAIN) diff --git a/src/tgbaparse/tgbaparse.yy b/src/tgbaparse/tgbaparse.yy index 7fe3b4252..ad56e9d80 100644 --- a/src/tgbaparse/tgbaparse.yy +++ b/src/tgbaparse/tgbaparse.yy @@ -1,4 +1,4 @@ -/* Copyright (C) 2003, 2004, 2005, 2006 Laboratoire d'Informatique de +/* Copyright (C) 2003, 2004, 2005, 2006, 2009 Laboratoire d'Informatique de ** Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC), ** Université Pierre et Marie Curie. ** @@ -19,7 +19,15 @@ ** Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ** 02111-1307, USA. */ -%{ +%language "C++" +%locations +%defines +%name-prefix "tgbayy" +%debug +%error-verbose + +%code requires +{ #include #include "public.hh" @@ -28,16 +36,13 @@ over, and to register all their atomic_propositions in the bdd_dict. Keep the bdd result around so we can reuse it. */ typedef std::map formula_cache; -%} +} -%name-prefix="tgbayy" %parse-param {spot::tgba_parse_error_list& error_list} %parse-param {spot::ltl::environment& parse_environment} %parse-param {spot::ltl::environment& parse_envacc} %parse-param {spot::tgba_explicit*& result} %parse-param {formula_cache& fcache} -%debug -%error-verbose %union { int token; @@ -46,7 +51,8 @@ typedef std::map formula_cache; std::list* list; } -%{ +%code +{ #include "ltlast/constant.hh" #include "ltlvisit/destroy.hh" /* Unfortunately Bison 2.3 uses the same guards in all parsers :( */ @@ -67,7 +73,7 @@ using namespace spot::ltl; #define yylex tgbayylex typedef std::pair pair; -%} +} %token STRING UNTERMINATED_STRING %token IDENT @@ -161,7 +167,7 @@ strident: string | IDENT condition: { - $$ = 0 + $$ = 0; } | string {