EzMesh : parser/scanner regen (with older bison cause windows).undefined
| @@ -1,8 +1,8 @@ | |||||
| /* A Bison parser, made by GNU Bison 2.7.12-4996. */ | |||||
| /* A Bison parser, made by GNU Bison 2.4.2. */ | |||||
| /* Skeleton interface for Bison LALR(1) parsers in C++ | /* Skeleton interface for Bison LALR(1) parsers in C++ | ||||
| Copyright (C) 2002-2013 Free Software Foundation, Inc. | |||||
| Copyright (C) 2002-2010 Free Software Foundation, Inc. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -30,21 +30,30 @@ | |||||
| This special exception was added by the Free Software Foundation in | This special exception was added by the Free Software Foundation in | ||||
| version 2.2 of Bison. */ | version 2.2 of Bison. */ | ||||
| /** | |||||
| ** \file generated/easymesh-parser.h | |||||
| ** Define the lol::parser class. | |||||
| */ | |||||
| /* C++ LALR(1) parser skeleton written by Akim Demaille. */ | /* C++ LALR(1) parser skeleton written by Akim Demaille. */ | ||||
| #ifndef YY_LOL_GENERATED_EASYMESH_PARSER_H_INCLUDED | |||||
| # define YY_LOL_GENERATED_EASYMESH_PARSER_H_INCLUDED | |||||
| #ifndef PARSER_HEADER_H | |||||
| # define PARSER_HEADER_H | |||||
| #include <string> | #include <string> | ||||
| #include <iostream> | #include <iostream> | ||||
| #include "stack.hh" | #include "stack.hh" | ||||
| namespace lol { | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 49 "generated/easymesh-parser.h" | |||||
| class position; | |||||
| class location; | |||||
| } // lol | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 56 "generated/easymesh-parser.h" | |||||
| #include "location.hh" | #include "location.hh" | ||||
| /* Enabling traces. */ | /* Enabling traces. */ | ||||
| @@ -52,10 +61,43 @@ | |||||
| # define YYDEBUG 1 | # define YYDEBUG 1 | ||||
| #endif | #endif | ||||
| /* Enabling verbose error messages. */ | |||||
| #ifdef YYERROR_VERBOSE | |||||
| # undef YYERROR_VERBOSE | |||||
| # define YYERROR_VERBOSE 1 | |||||
| #else | |||||
| # define YYERROR_VERBOSE 1 | |||||
| #endif | |||||
| /* Enabling the token table. */ | |||||
| #ifndef YYTOKEN_TABLE | |||||
| # define YYTOKEN_TABLE 0 | |||||
| #endif | |||||
| /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. | |||||
| If N is 0, then set CURRENT to the empty location which ends | |||||
| the previous symbol: RHS[0] (always defined). */ | |||||
| #ifndef YYLLOC_DEFAULT | |||||
| # define YYLLOC_DEFAULT(Current, Rhs, N) \ | |||||
| do { \ | |||||
| if (N) \ | |||||
| { \ | |||||
| (Current).begin = (Rhs)[1].begin; \ | |||||
| (Current).end = (Rhs)[N].end; \ | |||||
| } \ | |||||
| else \ | |||||
| { \ | |||||
| (Current).begin = (Current).end = (Rhs)[0].end; \ | |||||
| } \ | |||||
| } while (false) | |||||
| #endif | |||||
| namespace lol { | namespace lol { | ||||
| /* Line 33 of lalr1.cc */ | |||||
| #line 59 "generated/easymesh-parser.h" | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 101 "generated/easymesh-parser.h" | |||||
| /// A Bison parser. | /// A Bison parser. | ||||
| class EasyMeshParser | class EasyMeshParser | ||||
| @@ -65,7 +107,8 @@ namespace lol { | |||||
| #ifndef YYSTYPE | #ifndef YYSTYPE | ||||
| union semantic_type | union semantic_type | ||||
| { | { | ||||
| /* Line 33 of lalr1.cc */ | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 35 "easymesh/easymesh-parser.y" | #line 35 "easymesh/easymesh-parser.y" | ||||
| float fval; | float fval; | ||||
| @@ -74,8 +117,9 @@ namespace lol { | |||||
| struct { float f0, f1, f2, f3, f4, f5, f6, f7, f8, f9; } args; | struct { float f0, f1, f2, f3, f4, f5, f6, f7, f8, f9; } args; | ||||
| /* Line 33 of lalr1.cc */ | |||||
| #line 79 "generated/easymesh-parser.h" | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 123 "generated/easymesh-parser.h" | |||||
| }; | }; | ||||
| #else | #else | ||||
| typedef YYSTYPE semantic_type; | typedef YYSTYPE semantic_type; | ||||
| @@ -177,10 +221,6 @@ namespace lol { | |||||
| #endif | #endif | ||||
| private: | private: | ||||
| /// This class is not copyable. | |||||
| EasyMeshParser (const EasyMeshParser&); | |||||
| EasyMeshParser& operator= (const EasyMeshParser&); | |||||
| /// Report a syntax error. | /// Report a syntax error. | ||||
| /// \param loc where the syntax error is found. | /// \param loc where the syntax error is found. | ||||
| /// \param msg a description of the syntax error. | /// \param msg a description of the syntax error. | ||||
| @@ -225,14 +265,6 @@ namespace lol { | |||||
| /// The location stack. | /// The location stack. | ||||
| location_stack_type yylocation_stack_; | location_stack_type yylocation_stack_; | ||||
| /// Whether the given \c yypact_ value indicates a defaulted state. | |||||
| /// \param yyvalue the value to check | |||||
| static bool yy_pact_value_is_default_ (int yyvalue); | |||||
| /// Whether the given \c yytable_ value indicates a syntax error. | |||||
| /// \param yyvalue the value to check | |||||
| static bool yy_table_value_is_error_ (int yyvalue); | |||||
| /// Internal symbol numbers. | /// Internal symbol numbers. | ||||
| typedef unsigned char token_number_type; | typedef unsigned char token_number_type; | ||||
| /* Tables. */ | /* Tables. */ | ||||
| @@ -240,7 +272,7 @@ namespace lol { | |||||
| static const signed char yypact_[]; | static const signed char yypact_[]; | ||||
| static const signed char yypact_ninf_; | static const signed char yypact_ninf_; | ||||
| /// For a state, default reduction number. | |||||
| /// For a state, default rule to reduce. | |||||
| /// Unless\a yytable_ specifies something else to do. | /// Unless\a yytable_ specifies something else to do. | ||||
| /// Zero means the default is an error. | /// Zero means the default is an error. | ||||
| static const unsigned char yydefact_[]; | static const unsigned char yydefact_[]; | ||||
| @@ -264,14 +296,18 @@ namespace lol { | |||||
| /// For a rule, its LHS. | /// For a rule, its LHS. | ||||
| static const unsigned char yyr1_[]; | static const unsigned char yyr1_[]; | ||||
| /// For a rule, its RHS length. | /// For a rule, its RHS length. | ||||
| static const unsigned char yyr2_[]; | |||||
| /// Convert the symbol name \a n to a form suitable for a diagnostic. | |||||
| static std::string yytnamerr_ (const char *n); | |||||
| static const unsigned char yyr2_[]; | |||||
| #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE | |||||
| /// For a symbol, its name in clear. | /// For a symbol, its name in clear. | ||||
| static const char* const yytname_[]; | static const char* const yytname_[]; | ||||
| #endif | |||||
| #if YYERROR_VERBOSE | |||||
| /// Convert the symbol name \a n to a form suitable for a diagnostic. | |||||
| virtual std::string yytnamerr_ (const char *n); | |||||
| #endif | |||||
| #if YYDEBUG | #if YYDEBUG | ||||
| /// A type to store symbol numbers and -1. | /// A type to store symbol numbers and -1. | ||||
| typedef signed char rhs_number_type; | typedef signed char rhs_number_type; | ||||
| @@ -298,7 +334,6 @@ namespace lol { | |||||
| /// \brief Reclaim the memory associated to a symbol. | /// \brief Reclaim the memory associated to a symbol. | ||||
| /// \param yymsg Why this token is reclaimed. | /// \param yymsg Why this token is reclaimed. | ||||
| /// If null, do not display the symbol, just free it. | |||||
| /// \param yytype The symbol type. | /// \param yytype The symbol type. | ||||
| /// \param yyvaluep Its semantic value. | /// \param yyvaluep Its semantic value. | ||||
| /// \param yylocationp Its location. | /// \param yylocationp Its location. | ||||
| @@ -328,9 +363,10 @@ namespace lol { | |||||
| }; | }; | ||||
| } // lol | } // lol | ||||
| /* Line 33 of lalr1.cc */ | |||||
| #line 333 "generated/easymesh-parser.h" | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 369 "generated/easymesh-parser.h" | |||||
| #endif /* !YY_LOL_GENERATED_EASYMESH_PARSER_H_INCLUDED */ | |||||
| #endif /* ! defined PARSER_HEADER_H */ | |||||
| @@ -1,8 +1,8 @@ | |||||
| /* A Bison parser, made by GNU Bison 2.7.12-4996. */ | |||||
| /* A Bison parser, made by GNU Bison 2.4.2. */ | |||||
| /* Locations for Bison parsers in C++ | /* Locations for Bison parsers in C++ | ||||
| Copyright (C) 2002-2007, 2009-2013 Free Software Foundation, Inc. | |||||
| Copyright (C) 2002-2007, 2009-2010 Free Software Foundation, Inc. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -31,55 +31,39 @@ | |||||
| version 2.2 of Bison. */ | version 2.2 of Bison. */ | ||||
| /** | /** | ||||
| ** \file generated/location.hh | |||||
| ** \file location.hh | |||||
| ** Define the lol::location class. | ** Define the lol::location class. | ||||
| */ | */ | ||||
| #ifndef YY_LOL_GENERATED_LOCATION_HH_INCLUDED | |||||
| # define YY_LOL_GENERATED_LOCATION_HH_INCLUDED | |||||
| #ifndef BISON_LOCATION_HH | |||||
| # define BISON_LOCATION_HH | |||||
| # include <iostream> | |||||
| # include <string> | |||||
| # include "position.hh" | # include "position.hh" | ||||
| namespace lol { | namespace lol { | ||||
| /* Line 166 of location.cc */ | |||||
| #line 47 "generated/location.hh" | |||||
| /* Line 162 of location.cc */ | |||||
| #line 50 "generated/location.hh" | |||||
| /// Abstract a location. | /// Abstract a location. | ||||
| class location | class location | ||||
| { | { | ||||
| public: | public: | ||||
| /// Construct a location from \a b to \a e. | |||||
| location (const position& b, const position& e) | |||||
| : begin (b) | |||||
| , end (e) | |||||
| { | |||||
| } | |||||
| /// Construct a 0-width location in \a p. | |||||
| explicit location (const position& p = position ()) | |||||
| : begin (p) | |||||
| , end (p) | |||||
| { | |||||
| } | |||||
| /// Construct a 0-width location in \a f, \a l, \a c. | |||||
| explicit location (std::string* f, | |||||
| unsigned int l = 1u, | |||||
| unsigned int c = 1u) | |||||
| : begin (f, l, c) | |||||
| , end (f, l, c) | |||||
| /// Construct a location. | |||||
| location () | |||||
| : begin (), end () | |||||
| { | { | ||||
| } | } | ||||
| /// Initialization. | /// Initialization. | ||||
| void initialize (std::string* f = YY_NULL, | |||||
| unsigned int l = 1u, | |||||
| unsigned int c = 1u) | |||||
| inline void initialize (std::string* fn) | |||||
| { | { | ||||
| begin.initialize (f, l, c); | |||||
| begin.initialize (fn); | |||||
| end = begin; | end = begin; | ||||
| } | } | ||||
| @@ -87,19 +71,19 @@ namespace lol { | |||||
| ** \{ */ | ** \{ */ | ||||
| public: | public: | ||||
| /// Reset initial location to final location. | /// Reset initial location to final location. | ||||
| void step () | |||||
| inline void step () | |||||
| { | { | ||||
| begin = end; | begin = end; | ||||
| } | } | ||||
| /// Extend the current location to the COUNT next columns. | /// Extend the current location to the COUNT next columns. | ||||
| void columns (unsigned int count = 1) | |||||
| inline void columns (unsigned int count = 1) | |||||
| { | { | ||||
| end += count; | end += count; | ||||
| } | } | ||||
| /// Extend the current location to the COUNT next lines. | /// Extend the current location to the COUNT next lines. | ||||
| void lines (unsigned int count = 1) | |||||
| inline void lines (unsigned int count = 1) | |||||
| { | { | ||||
| end.lines (count); | end.lines (count); | ||||
| } | } | ||||
| @@ -156,9 +140,7 @@ namespace lol { | |||||
| ** | ** | ||||
| ** Avoid duplicate information. | ** Avoid duplicate information. | ||||
| */ | */ | ||||
| template <typename YYChar> | |||||
| inline std::basic_ostream<YYChar>& | |||||
| operator<< (std::basic_ostream<YYChar>& ostr, const location& loc) | |||||
| inline std::ostream& operator<< (std::ostream& ostr, const location& loc) | |||||
| { | { | ||||
| position last = loc.end - 1; | position last = loc.end - 1; | ||||
| ostr << loc.begin; | ostr << loc.begin; | ||||
| @@ -175,7 +157,8 @@ namespace lol { | |||||
| } // lol | } // lol | ||||
| /* Line 296 of location.cc */ | |||||
| #line 180 "generated/location.hh" | |||||
| #endif /* !YY_LOL_GENERATED_LOCATION_HH_INCLUDED */ | |||||
| /* Line 271 of location.cc */ | |||||
| #line 163 "generated/location.hh" | |||||
| #endif // not BISON_LOCATION_HH | |||||
| @@ -1,8 +1,8 @@ | |||||
| /* A Bison parser, made by GNU Bison 2.7.12-4996. */ | |||||
| /* A Bison parser, made by GNU Bison 2.4.2. */ | |||||
| /* Skeleton implementation for Bison LALR(1) parsers in C++ | /* Skeleton implementation for Bison LALR(1) parsers in C++ | ||||
| Copyright (C) 2002-2013 Free Software Foundation, Inc. | |||||
| Copyright (C) 2002-2010 Free Software Foundation, Inc. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -34,7 +34,8 @@ | |||||
| #define yylex lollex | #define yylex lollex | ||||
| /* First part of user declarations. */ | /* First part of user declarations. */ | ||||
| /* Line 283 of lalr1.cc */ | |||||
| /* Line 310 of lalr1.cc */ | |||||
| #line 1 "gpu/lolfx-parser.y" | #line 1 "gpu/lolfx-parser.y" | ||||
| // | // | ||||
| @@ -56,14 +57,16 @@ | |||||
| #include <string> | #include <string> | ||||
| /* Line 283 of lalr1.cc */ | |||||
| #line 61 "generated/lolfx-parser.cpp" | |||||
| /* Line 310 of lalr1.cc */ | |||||
| #line 63 "generated/lolfx-parser.cpp" | |||||
| #include "lolfx-parser.h" | #include "lolfx-parser.h" | ||||
| /* User implementation prologue. */ | /* User implementation prologue. */ | ||||
| /* Line 289 of lalr1.cc */ | |||||
| /* Line 316 of lalr1.cc */ | |||||
| #line 241 "gpu/lolfx-parser.y" | #line 241 "gpu/lolfx-parser.y" | ||||
| #include "gpu/lolfx-compiler.h" | #include "gpu/lolfx-compiler.h" | ||||
| @@ -76,17 +79,9 @@ | |||||
| #define catch(...) if (false) | #define catch(...) if (false) | ||||
| #define throw (void)0 | #define throw (void)0 | ||||
| /* Line 289 of lalr1.cc */ | |||||
| #line 81 "generated/lolfx-parser.cpp" | |||||
| # ifndef YY_NULL | |||||
| # if defined __cplusplus && 201103L <= __cplusplus | |||||
| # define YY_NULL nullptr | |||||
| # else | |||||
| # define YY_NULL 0 | |||||
| # endif | |||||
| # endif | |||||
| /* Line 316 of lalr1.cc */ | |||||
| #line 85 "generated/lolfx-parser.cpp" | |||||
| #ifndef YY_ | #ifndef YY_ | ||||
| # if defined YYENABLE_NLS && YYENABLE_NLS | # if defined YYENABLE_NLS && YYENABLE_NLS | ||||
| @@ -100,27 +95,6 @@ | |||||
| # endif | # endif | ||||
| #endif | #endif | ||||
| #define YYRHSLOC(Rhs, K) ((Rhs)[K]) | |||||
| /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. | |||||
| If N is 0, then set CURRENT to the empty location which ends | |||||
| the previous symbol: RHS[0] (always defined). */ | |||||
| # ifndef YYLLOC_DEFAULT | |||||
| # define YYLLOC_DEFAULT(Current, Rhs, N) \ | |||||
| do \ | |||||
| if (N) \ | |||||
| { \ | |||||
| (Current).begin = YYRHSLOC (Rhs, 1).begin; \ | |||||
| (Current).end = YYRHSLOC (Rhs, N).end; \ | |||||
| } \ | |||||
| else \ | |||||
| { \ | |||||
| (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \ | |||||
| } \ | |||||
| while (/*CONSTCOND*/ false) | |||||
| # endif | |||||
| /* Suppress unused-variable warnings by "using" E. */ | /* Suppress unused-variable warnings by "using" E. */ | ||||
| #define YYUSE(e) ((void) (e)) | #define YYUSE(e) ((void) (e)) | ||||
| @@ -155,9 +129,9 @@ do { \ | |||||
| #else /* !YYDEBUG */ | #else /* !YYDEBUG */ | ||||
| # define YYCDEBUG if (false) std::cerr | # define YYCDEBUG if (false) std::cerr | ||||
| # define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type) | |||||
| # define YY_REDUCE_PRINT(Rule) static_cast<void>(0) | |||||
| # define YY_STACK_PRINT() static_cast<void>(0) | |||||
| # define YY_SYMBOL_PRINT(Title, Type, Value, Location) | |||||
| # define YY_REDUCE_PRINT(Rule) | |||||
| # define YY_STACK_PRINT() | |||||
| #endif /* !YYDEBUG */ | #endif /* !YYDEBUG */ | ||||
| @@ -171,8 +145,10 @@ do { \ | |||||
| namespace lol { | namespace lol { | ||||
| /* Line 357 of lalr1.cc */ | |||||
| #line 176 "generated/lolfx-parser.cpp" | |||||
| /* Line 379 of lalr1.cc */ | |||||
| #line 151 "generated/lolfx-parser.cpp" | |||||
| #if YYERROR_VERBOSE | |||||
| /* Return YYSTR after stripping away unnecessary quotes and | /* Return YYSTR after stripping away unnecessary quotes and | ||||
| backslashes, so that it's suitable for yyerror. The heuristic is | backslashes, so that it's suitable for yyerror. The heuristic is | ||||
| @@ -211,6 +187,7 @@ namespace lol { | |||||
| return yystr; | return yystr; | ||||
| } | } | ||||
| #endif | |||||
| /// Build a parser object. | /// Build a parser object. | ||||
| LolFxParser::LolFxParser (class LolFxCompiler& mc_yyarg) | LolFxParser::LolFxParser (class LolFxCompiler& mc_yyarg) | ||||
| @@ -238,10 +215,11 @@ namespace lol { | |||||
| { | { | ||||
| YYUSE (yylocationp); | YYUSE (yylocationp); | ||||
| YYUSE (yyvaluep); | YYUSE (yyvaluep); | ||||
| std::ostream& yyo = debug_stream (); | |||||
| std::ostream& yyoutput = yyo; | |||||
| YYUSE (yyoutput); | |||||
| YYUSE (yytype); | |||||
| switch (yytype) | |||||
| { | |||||
| default: | |||||
| break; | |||||
| } | |||||
| } | } | ||||
| @@ -265,10 +243,14 @@ namespace lol { | |||||
| YYUSE (yymsg); | YYUSE (yymsg); | ||||
| YYUSE (yyvaluep); | YYUSE (yyvaluep); | ||||
| if (yymsg) | |||||
| YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); | |||||
| YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); | |||||
| YYUSE (yytype); | |||||
| switch (yytype) | |||||
| { | |||||
| default: | |||||
| break; | |||||
| } | |||||
| } | } | ||||
| void | void | ||||
| @@ -306,18 +288,6 @@ namespace lol { | |||||
| } | } | ||||
| #endif | #endif | ||||
| inline bool | |||||
| LolFxParser::yy_pact_value_is_default_ (int yyvalue) | |||||
| { | |||||
| return yyvalue == yypact_ninf_; | |||||
| } | |||||
| inline bool | |||||
| LolFxParser::yy_table_value_is_error_ (int yyvalue) | |||||
| { | |||||
| return yyvalue == yytable_ninf_; | |||||
| } | |||||
| int | int | ||||
| LolFxParser::parse () | LolFxParser::parse () | ||||
| { | { | ||||
| @@ -325,22 +295,21 @@ namespace lol { | |||||
| int yychar = yyempty_; | int yychar = yyempty_; | ||||
| int yytoken = 0; | int yytoken = 0; | ||||
| // State. | |||||
| /* State. */ | |||||
| int yyn; | int yyn; | ||||
| int yylen = 0; | int yylen = 0; | ||||
| int yystate = 0; | int yystate = 0; | ||||
| // Error handling. | |||||
| /* Error handling. */ | |||||
| int yynerrs_ = 0; | int yynerrs_ = 0; | ||||
| int yyerrstatus_ = 0; | int yyerrstatus_ = 0; | ||||
| /// Semantic value of the lookahead. | /// Semantic value of the lookahead. | ||||
| static semantic_type yyval_default; | |||||
| semantic_type yylval = yyval_default; | |||||
| semantic_type yylval; | |||||
| /// Location of the lookahead. | /// Location of the lookahead. | ||||
| location_type yylloc; | location_type yylloc; | ||||
| /// The locations where the error started and ended. | /// The locations where the error started and ended. | ||||
| location_type yyerror_range[3]; | |||||
| location_type yyerror_range[2]; | |||||
| /// $$. | /// $$. | ||||
| semantic_type yyval; | semantic_type yyval; | ||||
| @@ -349,10 +318,6 @@ namespace lol { | |||||
| int yyresult; | int yyresult; | ||||
| // FIXME: This shoud be completely indented. It is not yet to | |||||
| // avoid gratuitous conflicts when merging into the master branch. | |||||
| try | |||||
| { | |||||
| YYCDEBUG << "Starting parse" << std::endl; | YYCDEBUG << "Starting parse" << std::endl; | ||||
| @@ -360,9 +325,9 @@ namespace lol { | |||||
| yynewstate, since the latter expects the semantical and the | yynewstate, since the latter expects the semantical and the | ||||
| location values to have been already stored, initialize these | location values to have been already stored, initialize these | ||||
| stacks with a primary value. */ | stacks with a primary value. */ | ||||
| yystate_stack_.clear (); | |||||
| yysemantic_stack_.clear (); | |||||
| yylocation_stack_.clear (); | |||||
| yystate_stack_ = state_stack_type (0); | |||||
| yysemantic_stack_ = semantic_stack_type (0); | |||||
| yylocation_stack_ = location_stack_type (0); | |||||
| yysemantic_stack_.push (yylval); | yysemantic_stack_.push (yylval); | ||||
| yylocation_stack_.push (yylloc); | yylocation_stack_.push (yylloc); | ||||
| @@ -382,16 +347,17 @@ namespace lol { | |||||
| /* Try to take a decision without lookahead. */ | /* Try to take a decision without lookahead. */ | ||||
| yyn = yypact_[yystate]; | yyn = yypact_[yystate]; | ||||
| if (yy_pact_value_is_default_ (yyn)) | |||||
| if (yyn == yypact_ninf_) | |||||
| goto yydefault; | goto yydefault; | ||||
| /* Read a lookahead token. */ | /* Read a lookahead token. */ | ||||
| if (yychar == yyempty_) | if (yychar == yyempty_) | ||||
| { | { | ||||
| YYCDEBUG << "Reading a token: "; | |||||
| yychar = yylex (&yylval, &yylloc); | |||||
| YYCDEBUG << "Reading a token: "; | |||||
| yychar = yylex (&yylval, &yylloc); | |||||
| } | } | ||||
| /* Convert token to internal form. */ | /* Convert token to internal form. */ | ||||
| if (yychar <= yyeof_) | if (yychar <= yyeof_) | ||||
| { | { | ||||
| @@ -414,8 +380,8 @@ namespace lol { | |||||
| yyn = yytable_[yyn]; | yyn = yytable_[yyn]; | ||||
| if (yyn <= 0) | if (yyn <= 0) | ||||
| { | { | ||||
| if (yy_table_value_is_error_ (yyn)) | |||||
| goto yyerrlab; | |||||
| if (yyn == 0 || yyn == yytable_ninf_) | |||||
| goto yyerrlab; | |||||
| yyn = -yyn; | yyn = -yyn; | ||||
| goto yyreduce; | goto yyreduce; | ||||
| } | } | ||||
| @@ -462,64 +428,55 @@ namespace lol { | |||||
| else | else | ||||
| yyval = yysemantic_stack_[0]; | yyval = yysemantic_stack_[0]; | ||||
| // Compute the default @$. | |||||
| { | { | ||||
| slice<location_type, location_stack_type> slice (yylocation_stack_, yylen); | slice<location_type, location_stack_type> slice (yylocation_stack_, yylen); | ||||
| YYLLOC_DEFAULT (yyloc, slice, yylen); | YYLLOC_DEFAULT (yyloc, slice, yylen); | ||||
| } | } | ||||
| // Perform the reduction. | |||||
| YY_REDUCE_PRINT (yyn); | YY_REDUCE_PRINT (yyn); | ||||
| switch (yyn) | switch (yyn) | ||||
| { | { | ||||
| case 206: | |||||
| /* Line 664 of lalr1.cc */ | |||||
| case 206: | |||||
| /* Line 677 of lalr1.cc */ | |||||
| #line 734 "gpu/lolfx-parser.y" | #line 734 "gpu/lolfx-parser.y" | ||||
| { std::cout << "New tech " << std::endl; } | { std::cout << "New tech " << std::endl; } | ||||
| break; | break; | ||||
| case 207: | case 207: | ||||
| /* Line 664 of lalr1.cc */ | |||||
| /* Line 677 of lalr1.cc */ | |||||
| #line 742 "gpu/lolfx-parser.y" | #line 742 "gpu/lolfx-parser.y" | ||||
| { std::cout << "New name " << (yysemantic_stack_[(1) - (1)].sval) << std::endl; } | { std::cout << "New name " << (yysemantic_stack_[(1) - (1)].sval) << std::endl; } | ||||
| break; | break; | ||||
| case 208: | case 208: | ||||
| /* Line 664 of lalr1.cc */ | |||||
| /* Line 677 of lalr1.cc */ | |||||
| #line 743 "gpu/lolfx-parser.y" | #line 743 "gpu/lolfx-parser.y" | ||||
| { std::cout << "New name " << (yysemantic_stack_[(1) - (1)].sval) << std::endl; } | { std::cout << "New name " << (yysemantic_stack_[(1) - (1)].sval) << std::endl; } | ||||
| break; | break; | ||||
| case 211: | case 211: | ||||
| /* Line 664 of lalr1.cc */ | |||||
| /* Line 677 of lalr1.cc */ | |||||
| #line 756 "gpu/lolfx-parser.y" | #line 756 "gpu/lolfx-parser.y" | ||||
| { std::cout << "New pass " << std::endl; } | { std::cout << "New pass " << std::endl; } | ||||
| break; | break; | ||||
| case 230: | case 230: | ||||
| /* Line 664 of lalr1.cc */ | |||||
| /* Line 677 of lalr1.cc */ | |||||
| #line 792 "gpu/lolfx-parser.y" | #line 792 "gpu/lolfx-parser.y" | ||||
| { std::cout << "new shader" << std::endl; } | { std::cout << "new shader" << std::endl; } | ||||
| break; | break; | ||||
| /* Line 664 of lalr1.cc */ | |||||
| #line 508 "generated/lolfx-parser.cpp" | |||||
| default: | |||||
| break; | |||||
| } | |||||
| /* User semantic actions sometimes alter yychar, and that requires | |||||
| that yytoken be updated with the new translation. We take the | |||||
| approach of translating immediately before every use of yytoken. | |||||
| One alternative is translating here after every semantic action, | |||||
| but that translation would be missed if the semantic action | |||||
| invokes YYABORT, YYACCEPT, or YYERROR immediately after altering | |||||
| yychar. In the case of YYABORT or YYACCEPT, an incorrect | |||||
| destructor might then be invoked immediately. In the case of | |||||
| YYERROR, subsequent parser actions might lead to an incorrect | |||||
| destructor call or verbose syntax error message before the | |||||
| lookahead is translated. */ | |||||
| /* Line 677 of lalr1.cc */ | |||||
| #line 477 "generated/lolfx-parser.cpp" | |||||
| default: | |||||
| break; | |||||
| } | |||||
| YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc); | YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc); | ||||
| yypop_ (yylen); | yypop_ (yylen); | ||||
| @@ -543,35 +500,30 @@ namespace lol { | |||||
| | yyerrlab -- here on detecting error | | | yyerrlab -- here on detecting error | | ||||
| `------------------------------------*/ | `------------------------------------*/ | ||||
| yyerrlab: | yyerrlab: | ||||
| /* Make sure we have latest lookahead translation. See comments at | |||||
| user semantic actions for why this is necessary. */ | |||||
| yytoken = yytranslate_ (yychar); | |||||
| /* If not already recovering from an error, report this error. */ | /* If not already recovering from an error, report this error. */ | ||||
| if (!yyerrstatus_) | if (!yyerrstatus_) | ||||
| { | { | ||||
| ++yynerrs_; | ++yynerrs_; | ||||
| if (yychar == yyempty_) | |||||
| yytoken = yyempty_; | |||||
| error (yylloc, yysyntax_error_ (yystate, yytoken)); | error (yylloc, yysyntax_error_ (yystate, yytoken)); | ||||
| } | } | ||||
| yyerror_range[1] = yylloc; | |||||
| yyerror_range[0] = yylloc; | |||||
| if (yyerrstatus_ == 3) | if (yyerrstatus_ == 3) | ||||
| { | { | ||||
| /* If just tried and failed to reuse lookahead token after an | |||||
| error, discard it. */ | |||||
| if (yychar <= yyeof_) | |||||
| { | |||||
| /* Return failure if at end of input. */ | |||||
| if (yychar == yyeof_) | |||||
| YYABORT; | |||||
| } | |||||
| else | |||||
| { | |||||
| yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc); | |||||
| yychar = yyempty_; | |||||
| } | |||||
| /* If just tried and failed to reuse lookahead token after an | |||||
| error, discard it. */ | |||||
| if (yychar <= yyeof_) | |||||
| { | |||||
| /* Return failure if at end of input. */ | |||||
| if (yychar == yyeof_) | |||||
| YYABORT; | |||||
| } | |||||
| else | |||||
| { | |||||
| yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc); | |||||
| yychar = yyempty_; | |||||
| } | |||||
| } | } | ||||
| /* Else will try to reuse lookahead token after shifting the error | /* Else will try to reuse lookahead token after shifting the error | ||||
| @@ -590,7 +542,7 @@ namespace lol { | |||||
| if (false) | if (false) | ||||
| goto yyerrorlab; | goto yyerrorlab; | ||||
| yyerror_range[1] = yylocation_stack_[yylen - 1]; | |||||
| yyerror_range[0] = yylocation_stack_[yylen - 1]; | |||||
| /* Do not reclaim the symbols of the rule which action triggered | /* Do not reclaim the symbols of the rule which action triggered | ||||
| this YYERROR. */ | this YYERROR. */ | ||||
| yypop_ (yylen); | yypop_ (yylen); | ||||
| @@ -607,7 +559,7 @@ namespace lol { | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| yyn = yypact_[yystate]; | yyn = yypact_[yystate]; | ||||
| if (!yy_pact_value_is_default_ (yyn)) | |||||
| if (yyn != yypact_ninf_) | |||||
| { | { | ||||
| yyn += yyterror_; | yyn += yyterror_; | ||||
| if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) | if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) | ||||
| @@ -620,9 +572,9 @@ namespace lol { | |||||
| /* Pop the current state because it cannot handle the error token. */ | /* Pop the current state because it cannot handle the error token. */ | ||||
| if (yystate_stack_.height () == 1) | if (yystate_stack_.height () == 1) | ||||
| YYABORT; | |||||
| YYABORT; | |||||
| yyerror_range[1] = yylocation_stack_[0]; | |||||
| yyerror_range[0] = yylocation_stack_[0]; | |||||
| yydestruct_ ("Error: popping", | yydestruct_ ("Error: popping", | ||||
| yystos_[yystate], | yystos_[yystate], | ||||
| &yysemantic_stack_[0], &yylocation_stack_[0]); | &yysemantic_stack_[0], &yylocation_stack_[0]); | ||||
| @@ -631,10 +583,10 @@ namespace lol { | |||||
| YY_STACK_PRINT (); | YY_STACK_PRINT (); | ||||
| } | } | ||||
| yyerror_range[2] = yylloc; | |||||
| yyerror_range[1] = yylloc; | |||||
| // Using YYLLOC is tempting, but would change the location of | // Using YYLLOC is tempting, but would change the location of | ||||
| // the lookahead. YYLOC is available though. | // the lookahead. YYLOC is available though. | ||||
| YYLLOC_DEFAULT (yyloc, yyerror_range, 2); | |||||
| YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); | |||||
| yysemantic_stack_.push (yylval); | yysemantic_stack_.push (yylval); | ||||
| yylocation_stack_.push (yyloc); | yylocation_stack_.push (yyloc); | ||||
| @@ -657,148 +609,70 @@ namespace lol { | |||||
| yyreturn: | yyreturn: | ||||
| if (yychar != yyempty_) | if (yychar != yyempty_) | ||||
| { | |||||
| /* Make sure we have latest lookahead translation. See comments | |||||
| at user semantic actions for why this is necessary. */ | |||||
| yytoken = yytranslate_ (yychar); | |||||
| yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval, | |||||
| &yylloc); | |||||
| } | |||||
| yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc); | |||||
| /* Do not reclaim the symbols of the rule which action triggered | /* Do not reclaim the symbols of the rule which action triggered | ||||
| this YYABORT or YYACCEPT. */ | this YYABORT or YYACCEPT. */ | ||||
| yypop_ (yylen); | yypop_ (yylen); | ||||
| while (1 < yystate_stack_.height ()) | |||||
| while (yystate_stack_.height () != 1) | |||||
| { | { | ||||
| yydestruct_ ("Cleanup: popping", | |||||
| yystos_[yystate_stack_[0]], | |||||
| &yysemantic_stack_[0], | |||||
| &yylocation_stack_[0]); | |||||
| yypop_ (); | |||||
| yydestruct_ ("Cleanup: popping", | |||||
| yystos_[yystate_stack_[0]], | |||||
| &yysemantic_stack_[0], | |||||
| &yylocation_stack_[0]); | |||||
| yypop_ (); | |||||
| } | } | ||||
| return yyresult; | return yyresult; | ||||
| } | |||||
| catch (...) | |||||
| { | |||||
| YYCDEBUG << "Exception caught: cleaning lookahead and stack" | |||||
| << std::endl; | |||||
| // Do not try to display the values of the reclaimed symbols, | |||||
| // as their printer might throw an exception. | |||||
| if (yychar != yyempty_) | |||||
| { | |||||
| /* Make sure we have latest lookahead translation. See | |||||
| comments at user semantic actions for why this is | |||||
| necessary. */ | |||||
| yytoken = yytranslate_ (yychar); | |||||
| yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc); | |||||
| } | |||||
| while (1 < yystate_stack_.height ()) | |||||
| { | |||||
| yydestruct_ (YY_NULL, | |||||
| yystos_[yystate_stack_[0]], | |||||
| &yysemantic_stack_[0], | |||||
| &yylocation_stack_[0]); | |||||
| yypop_ (); | |||||
| } | |||||
| throw; | |||||
| } | |||||
| } | } | ||||
| // Generate an error message. | // Generate an error message. | ||||
| std::string | std::string | ||||
| LolFxParser::yysyntax_error_ (int yystate, int yytoken) | |||||
| LolFxParser::yysyntax_error_ (int yystate, int tok) | |||||
| { | { | ||||
| std::string yyres; | |||||
| // Number of reported tokens (one for the "unexpected", one per | |||||
| // "expected"). | |||||
| size_t yycount = 0; | |||||
| // Its maximum. | |||||
| enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; | |||||
| // Arguments of yyformat. | |||||
| char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; | |||||
| /* There are many possibilities here to consider: | |||||
| - If this state is a consistent state with a default action, then | |||||
| the only way this function was invoked is if the default action | |||||
| is an error action. In that case, don't check for expected | |||||
| tokens because there are none. | |||||
| - The only way there can be no lookahead present (in yytoken) is | |||||
| if this state is a consistent state with a default action. | |||||
| Thus, detecting the absence of a lookahead is sufficient to | |||||
| determine that there is no unexpected or expected token to | |||||
| report. In that case, just report a simple "syntax error". | |||||
| - Don't assume there isn't a lookahead just because this state is | |||||
| a consistent state with a default action. There might have | |||||
| been a previous inconsistent state, consistent state with a | |||||
| non-default action, or user semantic action that manipulated | |||||
| yychar. | |||||
| - Of course, the expected token list depends on states to have | |||||
| correct lookahead information, and it depends on the parser not | |||||
| to perform extra reductions after fetching a lookahead from the | |||||
| scanner and before detecting a syntax error. Thus, state | |||||
| merging (from LALR or IELR) and default reductions corrupt the | |||||
| expected token list. However, the list is correct for | |||||
| canonical LR with one exception: it will still contain any | |||||
| token that will not be accepted due to an error action in a | |||||
| later state. | |||||
| */ | |||||
| if (yytoken != yyempty_) | |||||
| { | |||||
| yyarg[yycount++] = yytname_[yytoken]; | |||||
| int yyn = yypact_[yystate]; | |||||
| if (!yy_pact_value_is_default_ (yyn)) | |||||
| { | |||||
| /* Start YYX at -YYN if negative to avoid negative indexes in | |||||
| YYCHECK. In other words, skip the first -YYN actions for | |||||
| this state because they are default actions. */ | |||||
| int yyxbegin = yyn < 0 ? -yyn : 0; | |||||
| /* Stay within bounds of both yycheck and yytname. */ | |||||
| int yychecklim = yylast_ - yyn + 1; | |||||
| int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; | |||||
| for (int yyx = yyxbegin; yyx < yyxend; ++yyx) | |||||
| if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_ | |||||
| && !yy_table_value_is_error_ (yytable_[yyx + yyn])) | |||||
| { | |||||
| if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) | |||||
| { | |||||
| yycount = 1; | |||||
| break; | |||||
| } | |||||
| else | |||||
| yyarg[yycount++] = yytname_[yyx]; | |||||
| } | |||||
| } | |||||
| } | |||||
| char const* yyformat = YY_NULL; | |||||
| switch (yycount) | |||||
| std::string res; | |||||
| YYUSE (yystate); | |||||
| #if YYERROR_VERBOSE | |||||
| int yyn = yypact_[yystate]; | |||||
| if (yypact_ninf_ < yyn && yyn <= yylast_) | |||||
| { | { | ||||
| #define YYCASE_(N, S) \ | |||||
| case N: \ | |||||
| yyformat = S; \ | |||||
| break | |||||
| YYCASE_(0, YY_("syntax error")); | |||||
| YYCASE_(1, YY_("syntax error, unexpected %s")); | |||||
| YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); | |||||
| YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); | |||||
| YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); | |||||
| YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); | |||||
| #undef YYCASE_ | |||||
| /* Start YYX at -YYN if negative to avoid negative indexes in | |||||
| YYCHECK. */ | |||||
| int yyxbegin = yyn < 0 ? -yyn : 0; | |||||
| /* Stay within bounds of both yycheck and yytname. */ | |||||
| int yychecklim = yylast_ - yyn + 1; | |||||
| int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; | |||||
| int count = 0; | |||||
| for (int x = yyxbegin; x < yyxend; ++x) | |||||
| if (yycheck_[x + yyn] == x && x != yyterror_) | |||||
| ++count; | |||||
| // FIXME: This method of building the message is not compatible | |||||
| // with internationalization. It should work like yacc.c does it. | |||||
| // That is, first build a string that looks like this: | |||||
| // "syntax error, unexpected %s or %s or %s" | |||||
| // Then, invoke YY_ on this string. | |||||
| // Finally, use the string as a format to output | |||||
| // yytname_[tok], etc. | |||||
| // Until this gets fixed, this message appears in English only. | |||||
| res = "syntax error, unexpected "; | |||||
| res += yytnamerr_ (yytname_[tok]); | |||||
| if (count < 5) | |||||
| { | |||||
| count = 0; | |||||
| for (int x = yyxbegin; x < yyxend; ++x) | |||||
| if (yycheck_[x + yyn] == x && x != yyterror_) | |||||
| { | |||||
| res += (!count++) ? ", expecting " : " or "; | |||||
| res += yytnamerr_ (yytname_[x]); | |||||
| } | |||||
| } | |||||
| } | } | ||||
| // Argument number. | |||||
| size_t yyi = 0; | |||||
| for (char const* yyp = yyformat; *yyp; ++yyp) | |||||
| if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount) | |||||
| { | |||||
| yyres += yytnamerr_ (yyarg[yyi++]); | |||||
| ++yyp; | |||||
| } | |||||
| else | |||||
| yyres += *yyp; | |||||
| return yyres; | |||||
| else | |||||
| #endif | |||||
| res = YY_("syntax error"); | |||||
| return res; | |||||
| } | } | ||||
| @@ -877,9 +751,9 @@ namespace lol { | |||||
| 23, -557, -73, -70, -69, -68, -557, -557, -557, -557 | 23, -557, -73, -70, -69, -68, -557, -557, -557, -557 | ||||
| }; | }; | ||||
| /* YYDEFACT[S] -- default reduction number in state S. Performed when | |||||
| YYTABLE doesn't specify something else to do. Zero means the | |||||
| default is an error. */ | |||||
| /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE | |||||
| doesn't specify something else to do. Zero means the default is an | |||||
| error. */ | |||||
| const unsigned short int | const unsigned short int | ||||
| LolFxParser::yydefact_[] = | LolFxParser::yydefact_[] = | ||||
| { | { | ||||
| @@ -986,7 +860,7 @@ namespace lol { | |||||
| /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If | /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If | ||||
| positive, shift that token. If negative, reduce the rule which | positive, shift that token. If negative, reduce the rule which | ||||
| number is the opposite. If YYTABLE_NINF_, syntax error. */ | |||||
| number is the opposite. If zero, do what YYDEFACT says. */ | |||||
| const short int LolFxParser::yytable_ninf_ = -327; | const short int LolFxParser::yytable_ninf_ = -327; | ||||
| const short int | const short int | ||||
| LolFxParser::yytable_[] = | LolFxParser::yytable_[] = | ||||
| @@ -3487,7 +3361,7 @@ namespace lol { | |||||
| 2, 2, 3, 2, 1, 2, 1, 1, 2 | 2, 2, 3, 2, 1, 2, 1, 1, 2 | ||||
| }; | }; | ||||
| #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE | |||||
| /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. | /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. | ||||
| First, the terminals, then, starting at \a yyntokens_, nonterminals. */ | First, the terminals, then, starting at \a yyntokens_, nonterminals. */ | ||||
| const char* | const char* | ||||
| @@ -3640,8 +3514,9 @@ namespace lol { | |||||
| "glsl_iteration_statement", "glsl_for_init_statement", | "glsl_iteration_statement", "glsl_for_init_statement", | ||||
| "glsl_conditionopt", "glsl_for_rest_statement", "glsl_jump_statement", | "glsl_conditionopt", "glsl_for_rest_statement", "glsl_jump_statement", | ||||
| "glsl_translation_unit", "glsl_external_declaration", | "glsl_translation_unit", "glsl_external_declaration", | ||||
| "glsl_function_definition", YY_NULL | |||||
| "glsl_function_definition", 0 | |||||
| }; | }; | ||||
| #endif | |||||
| #if YYDEBUG | #if YYDEBUG | ||||
| /* YYRHS -- A `-1'-separated list of the rules' RHS. */ | /* YYRHS -- A `-1'-separated list of the rules' RHS. */ | ||||
| @@ -4017,9 +3892,12 @@ namespace lol { | |||||
| } // lol | } // lol | ||||
| /* Line 1135 of lalr1.cc */ | |||||
| #line 4022 "generated/lolfx-parser.cpp" | |||||
| /* Line 1136 of lalr1.cc */ | |||||
| /* Line 1053 of lalr1.cc */ | |||||
| #line 3898 "generated/lolfx-parser.cpp" | |||||
| /* Line 1055 of lalr1.cc */ | |||||
| #line 1304 "gpu/lolfx-parser.y" | #line 1304 "gpu/lolfx-parser.y" | ||||
| @@ -4029,3 +3907,4 @@ void lol::LolFxParser::error(const LolFxParser::location_type& l, | |||||
| mc.Error(l, m); | mc.Error(l, m); | ||||
| } | } | ||||
| @@ -1,8 +1,8 @@ | |||||
| /* A Bison parser, made by GNU Bison 2.7.12-4996. */ | |||||
| /* A Bison parser, made by GNU Bison 2.4.2. */ | |||||
| /* Skeleton interface for Bison LALR(1) parsers in C++ | /* Skeleton interface for Bison LALR(1) parsers in C++ | ||||
| Copyright (C) 2002-2013 Free Software Foundation, Inc. | |||||
| Copyright (C) 2002-2010 Free Software Foundation, Inc. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -30,21 +30,30 @@ | |||||
| This special exception was added by the Free Software Foundation in | This special exception was added by the Free Software Foundation in | ||||
| version 2.2 of Bison. */ | version 2.2 of Bison. */ | ||||
| /** | |||||
| ** \file generated/lolfx-parser.h | |||||
| ** Define the lol::parser class. | |||||
| */ | |||||
| /* C++ LALR(1) parser skeleton written by Akim Demaille. */ | /* C++ LALR(1) parser skeleton written by Akim Demaille. */ | ||||
| #ifndef YY_LOL_GENERATED_LOLFX_PARSER_H_INCLUDED | |||||
| # define YY_LOL_GENERATED_LOLFX_PARSER_H_INCLUDED | |||||
| #ifndef PARSER_HEADER_H | |||||
| # define PARSER_HEADER_H | |||||
| #include <string> | #include <string> | ||||
| #include <iostream> | #include <iostream> | ||||
| #include "stack.hh" | #include "stack.hh" | ||||
| namespace lol { | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 49 "generated/lolfx-parser.h" | |||||
| class position; | |||||
| class location; | |||||
| } // lol | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 56 "generated/lolfx-parser.h" | |||||
| #include "location.hh" | #include "location.hh" | ||||
| /* Enabling traces. */ | /* Enabling traces. */ | ||||
| @@ -52,10 +61,43 @@ | |||||
| # define YYDEBUG 1 | # define YYDEBUG 1 | ||||
| #endif | #endif | ||||
| /* Enabling verbose error messages. */ | |||||
| #ifdef YYERROR_VERBOSE | |||||
| # undef YYERROR_VERBOSE | |||||
| # define YYERROR_VERBOSE 1 | |||||
| #else | |||||
| # define YYERROR_VERBOSE 1 | |||||
| #endif | |||||
| /* Enabling the token table. */ | |||||
| #ifndef YYTOKEN_TABLE | |||||
| # define YYTOKEN_TABLE 0 | |||||
| #endif | |||||
| /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. | |||||
| If N is 0, then set CURRENT to the empty location which ends | |||||
| the previous symbol: RHS[0] (always defined). */ | |||||
| #ifndef YYLLOC_DEFAULT | |||||
| # define YYLLOC_DEFAULT(Current, Rhs, N) \ | |||||
| do { \ | |||||
| if (N) \ | |||||
| { \ | |||||
| (Current).begin = (Rhs)[1].begin; \ | |||||
| (Current).end = (Rhs)[N].end; \ | |||||
| } \ | |||||
| else \ | |||||
| { \ | |||||
| (Current).begin = (Current).end = (Rhs)[0].end; \ | |||||
| } \ | |||||
| } while (false) | |||||
| #endif | |||||
| namespace lol { | namespace lol { | ||||
| /* Line 33 of lalr1.cc */ | |||||
| #line 59 "generated/lolfx-parser.h" | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 101 "generated/lolfx-parser.h" | |||||
| /// A Bison parser. | /// A Bison parser. | ||||
| class LolFxParser | class LolFxParser | ||||
| @@ -65,7 +107,8 @@ namespace lol { | |||||
| #ifndef YYSTYPE | #ifndef YYSTYPE | ||||
| union semantic_type | union semantic_type | ||||
| { | { | ||||
| /* Line 33 of lalr1.cc */ | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 34 "gpu/lolfx-parser.y" | #line 34 "gpu/lolfx-parser.y" | ||||
| int ival; | int ival; | ||||
| @@ -74,8 +117,9 @@ namespace lol { | |||||
| char *sval; | char *sval; | ||||
| /* Line 33 of lalr1.cc */ | |||||
| #line 79 "generated/lolfx-parser.h" | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 123 "generated/lolfx-parser.h" | |||||
| }; | }; | ||||
| #else | #else | ||||
| typedef YYSTYPE semantic_type; | typedef YYSTYPE semantic_type; | ||||
| @@ -552,10 +596,6 @@ namespace lol { | |||||
| #endif | #endif | ||||
| private: | private: | ||||
| /// This class is not copyable. | |||||
| LolFxParser (const LolFxParser&); | |||||
| LolFxParser& operator= (const LolFxParser&); | |||||
| /// Report a syntax error. | /// Report a syntax error. | ||||
| /// \param loc where the syntax error is found. | /// \param loc where the syntax error is found. | ||||
| /// \param msg a description of the syntax error. | /// \param msg a description of the syntax error. | ||||
| @@ -600,14 +640,6 @@ namespace lol { | |||||
| /// The location stack. | /// The location stack. | ||||
| location_stack_type yylocation_stack_; | location_stack_type yylocation_stack_; | ||||
| /// Whether the given \c yypact_ value indicates a defaulted state. | |||||
| /// \param yyvalue the value to check | |||||
| static bool yy_pact_value_is_default_ (int yyvalue); | |||||
| /// Whether the given \c yytable_ value indicates a syntax error. | |||||
| /// \param yyvalue the value to check | |||||
| static bool yy_table_value_is_error_ (int yyvalue); | |||||
| /// Internal symbol numbers. | /// Internal symbol numbers. | ||||
| typedef unsigned short int token_number_type; | typedef unsigned short int token_number_type; | ||||
| /* Tables. */ | /* Tables. */ | ||||
| @@ -615,7 +647,7 @@ namespace lol { | |||||
| static const short int yypact_[]; | static const short int yypact_[]; | ||||
| static const short int yypact_ninf_; | static const short int yypact_ninf_; | ||||
| /// For a state, default reduction number. | |||||
| /// For a state, default rule to reduce. | |||||
| /// Unless\a yytable_ specifies something else to do. | /// Unless\a yytable_ specifies something else to do. | ||||
| /// Zero means the default is an error. | /// Zero means the default is an error. | ||||
| static const unsigned short int yydefact_[]; | static const unsigned short int yydefact_[]; | ||||
| @@ -639,14 +671,18 @@ namespace lol { | |||||
| /// For a rule, its LHS. | /// For a rule, its LHS. | ||||
| static const unsigned short int yyr1_[]; | static const unsigned short int yyr1_[]; | ||||
| /// For a rule, its RHS length. | /// For a rule, its RHS length. | ||||
| static const unsigned char yyr2_[]; | |||||
| /// Convert the symbol name \a n to a form suitable for a diagnostic. | |||||
| static std::string yytnamerr_ (const char *n); | |||||
| static const unsigned char yyr2_[]; | |||||
| #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE | |||||
| /// For a symbol, its name in clear. | /// For a symbol, its name in clear. | ||||
| static const char* const yytname_[]; | static const char* const yytname_[]; | ||||
| #endif | |||||
| #if YYERROR_VERBOSE | |||||
| /// Convert the symbol name \a n to a form suitable for a diagnostic. | |||||
| virtual std::string yytnamerr_ (const char *n); | |||||
| #endif | |||||
| #if YYDEBUG | #if YYDEBUG | ||||
| /// A type to store symbol numbers and -1. | /// A type to store symbol numbers and -1. | ||||
| typedef short int rhs_number_type; | typedef short int rhs_number_type; | ||||
| @@ -673,7 +709,6 @@ namespace lol { | |||||
| /// \brief Reclaim the memory associated to a symbol. | /// \brief Reclaim the memory associated to a symbol. | ||||
| /// \param yymsg Why this token is reclaimed. | /// \param yymsg Why this token is reclaimed. | ||||
| /// If null, do not display the symbol, just free it. | |||||
| /// \param yytype The symbol type. | /// \param yytype The symbol type. | ||||
| /// \param yyvaluep Its semantic value. | /// \param yyvaluep Its semantic value. | ||||
| /// \param yylocationp Its location. | /// \param yylocationp Its location. | ||||
| @@ -703,9 +738,10 @@ namespace lol { | |||||
| }; | }; | ||||
| } // lol | } // lol | ||||
| /* Line 33 of lalr1.cc */ | |||||
| #line 708 "generated/lolfx-parser.h" | |||||
| /* Line 34 of lalr1.cc */ | |||||
| #line 744 "generated/lolfx-parser.h" | |||||
| #endif /* !YY_LOL_GENERATED_LOLFX_PARSER_H_INCLUDED */ | |||||
| #endif /* ! defined PARSER_HEADER_H */ | |||||
| @@ -1,8 +1,8 @@ | |||||
| /* A Bison parser, made by GNU Bison 2.7.12-4996. */ | |||||
| /* A Bison parser, made by GNU Bison 2.4.2. */ | |||||
| /* Positions for Bison parsers in C++ | /* Positions for Bison parsers in C++ | ||||
| Copyright (C) 2002-2007, 2009-2013 Free Software Foundation, Inc. | |||||
| Copyright (C) 2002-2007, 2009-2010 Free Software Foundation, Inc. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -31,71 +31,60 @@ | |||||
| version 2.2 of Bison. */ | version 2.2 of Bison. */ | ||||
| /** | /** | ||||
| ** \file generated/position.hh | |||||
| ** \file position.hh | |||||
| ** Define the lol::position class. | ** Define the lol::position class. | ||||
| */ | */ | ||||
| #ifndef YY_LOL_GENERATED_POSITION_HH_INCLUDED | |||||
| # define YY_LOL_GENERATED_POSITION_HH_INCLUDED | |||||
| #ifndef BISON_POSITION_HH | |||||
| # define BISON_POSITION_HH | |||||
| # include <algorithm> // std::max | |||||
| # include <iostream> | # include <iostream> | ||||
| # include <string> | # include <string> | ||||
| # ifndef YY_NULL | |||||
| # if defined __cplusplus && 201103L <= __cplusplus | |||||
| # define YY_NULL nullptr | |||||
| # else | |||||
| # define YY_NULL 0 | |||||
| # endif | |||||
| # endif | |||||
| # include <algorithm> | |||||
| namespace lol { | namespace lol { | ||||
| /* Line 36 of location.cc */ | |||||
| #line 57 "generated/position.hh" | |||||
| /* Line 37 of location.cc */ | |||||
| #line 50 "generated/position.hh" | |||||
| /// Abstract a position. | /// Abstract a position. | ||||
| class position | class position | ||||
| { | { | ||||
| public: | public: | ||||
| /// Construct a position. | /// Construct a position. | ||||
| explicit position (std::string* f = YY_NULL, | |||||
| unsigned int l = 1u, | |||||
| unsigned int c = 1u) | |||||
| : filename (f) | |||||
| , line (l) | |||||
| , column (c) | |||||
| position () | |||||
| : filename (0), line (1), column (1) | |||||
| { | { | ||||
| } | } | ||||
| /// Initialization. | /// Initialization. | ||||
| void initialize (std::string* fn = YY_NULL, | |||||
| unsigned int l = 1u, | |||||
| unsigned int c = 1u) | |||||
| inline void initialize (std::string* fn) | |||||
| { | { | ||||
| filename = fn; | filename = fn; | ||||
| line = l; | |||||
| column = c; | |||||
| line = 1; | |||||
| column = 1; | |||||
| } | } | ||||
| /** \name Line and Column related manipulators | /** \name Line and Column related manipulators | ||||
| ** \{ */ | ** \{ */ | ||||
| public: | |||||
| /// (line related) Advance to the COUNT next lines. | /// (line related) Advance to the COUNT next lines. | ||||
| void lines (int count = 1) | |||||
| inline void lines (int count = 1) | |||||
| { | { | ||||
| column = 1u; | |||||
| column = 1; | |||||
| line += count; | line += count; | ||||
| } | } | ||||
| /// (column related) Advance to the COUNT next columns. | /// (column related) Advance to the COUNT next columns. | ||||
| void columns (int count = 1) | |||||
| inline void columns (int count = 1) | |||||
| { | { | ||||
| column = std::max (1u, column + count); | column = std::max (1u, column + count); | ||||
| } | } | ||||
| /** \} */ | /** \} */ | ||||
| public: | |||||
| /// File name to which this position refers. | /// File name to which this position refers. | ||||
| std::string* filename; | std::string* filename; | ||||
| /// Current line number. | /// Current line number. | ||||
| @@ -105,7 +94,7 @@ namespace lol { | |||||
| }; | }; | ||||
| /// Add and assign a position. | /// Add and assign a position. | ||||
| inline position& | |||||
| inline const position& | |||||
| operator+= (position& res, const int width) | operator+= (position& res, const int width) | ||||
| { | { | ||||
| res.columns (width); | res.columns (width); | ||||
| @@ -121,7 +110,7 @@ namespace lol { | |||||
| } | } | ||||
| /// Add and assign a position. | /// Add and assign a position. | ||||
| inline position& | |||||
| inline const position& | |||||
| operator-= (position& res, const int width) | operator-= (position& res, const int width) | ||||
| { | { | ||||
| return res += -width; | return res += -width; | ||||
| @@ -156,9 +145,8 @@ namespace lol { | |||||
| ** \param ostr the destination output stream | ** \param ostr the destination output stream | ||||
| ** \param pos a reference to the position to redirect | ** \param pos a reference to the position to redirect | ||||
| */ | */ | ||||
| template <typename YYChar> | |||||
| inline std::basic_ostream<YYChar>& | |||||
| operator<< (std::basic_ostream<YYChar>& ostr, const position& pos) | |||||
| inline std::ostream& | |||||
| operator<< (std::ostream& ostr, const position& pos) | |||||
| { | { | ||||
| if (pos.filename) | if (pos.filename) | ||||
| ostr << *pos.filename << ':'; | ostr << *pos.filename << ':'; | ||||
| @@ -167,6 +155,7 @@ namespace lol { | |||||
| } // lol | } // lol | ||||
| /* Line 148 of location.cc */ | |||||
| #line 172 "generated/position.hh" | |||||
| #endif /* !YY_LOL_GENERATED_POSITION_HH_INCLUDED */ | |||||
| /* Line 144 of location.cc */ | |||||
| #line 161 "generated/position.hh" | |||||
| #endif // not BISON_POSITION_HH | |||||
| @@ -1,8 +1,8 @@ | |||||
| /* A Bison parser, made by GNU Bison 2.7.12-4996. */ | |||||
| /* A Bison parser, made by GNU Bison 2.4.2. */ | |||||
| /* Stack handling for Bison parsers in C++ | /* Stack handling for Bison parsers in C++ | ||||
| Copyright (C) 2002-2013 Free Software Foundation, Inc. | |||||
| Copyright (C) 2002-2010 Free Software Foundation, Inc. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -30,24 +30,21 @@ | |||||
| This special exception was added by the Free Software Foundation in | This special exception was added by the Free Software Foundation in | ||||
| version 2.2 of Bison. */ | version 2.2 of Bison. */ | ||||
| /** | |||||
| ** \file generated/stack.hh | |||||
| ** Define the lol::stack class. | |||||
| */ | |||||
| #ifndef BISON_STACK_HH | |||||
| # define BISON_STACK_HH | |||||
| #ifndef YY_LOL_GENERATED_STACK_HH_INCLUDED | |||||
| # define YY_LOL_GENERATED_STACK_HH_INCLUDED | |||||
| # include <deque> | |||||
| #include <deque> | |||||
| namespace lol { | namespace lol { | ||||
| /* Line 34 of stack.hh */ | |||||
| #line 47 "generated/stack.hh" | |||||
| /* Line 1066 of lalr1.cc */ | |||||
| #line 43 "generated/stack.hh" | |||||
| template <class T, class S = std::deque<T> > | template <class T, class S = std::deque<T> > | ||||
| class stack | class stack | ||||
| { | { | ||||
| public: | public: | ||||
| // Hide our reversed order. | // Hide our reversed order. | ||||
| typedef typename S::reverse_iterator iterator; | typedef typename S::reverse_iterator iterator; | ||||
| typedef typename S::const_reverse_iterator const_iterator; | typedef typename S::const_reverse_iterator const_iterator; | ||||
| @@ -86,13 +83,7 @@ namespace lol { | |||||
| pop (unsigned int n = 1) | pop (unsigned int n = 1) | ||||
| { | { | ||||
| for (; n; --n) | for (; n; --n) | ||||
| seq_.pop_front (); | |||||
| } | |||||
| void | |||||
| clear () | |||||
| { | |||||
| seq_.clear (); | |||||
| seq_.pop_front (); | |||||
| } | } | ||||
| inline | inline | ||||
| @@ -106,8 +97,7 @@ namespace lol { | |||||
| inline const_iterator end () const { return seq_.rend (); } | inline const_iterator end () const { return seq_.rend (); } | ||||
| private: | private: | ||||
| stack (const stack&); | |||||
| stack& operator= (const stack&); | |||||
| S seq_; | S seq_; | ||||
| }; | }; | ||||
| @@ -116,9 +106,10 @@ namespace lol { | |||||
| class slice | class slice | ||||
| { | { | ||||
| public: | public: | ||||
| slice (const S& stack, unsigned int range) | |||||
| : stack_ (stack) | |||||
| , range_ (range) | |||||
| slice (const S& stack, | |||||
| unsigned int range) : stack_ (stack), | |||||
| range_ (range) | |||||
| { | { | ||||
| } | } | ||||
| @@ -130,12 +121,15 @@ namespace lol { | |||||
| } | } | ||||
| private: | private: | ||||
| const S& stack_; | const S& stack_; | ||||
| unsigned int range_; | unsigned int range_; | ||||
| }; | }; | ||||
| } // lol | } // lol | ||||
| /* Line 124 of stack.hh */ | |||||
| #line 140 "generated/stack.hh" | |||||
| #endif /* !YY_LOL_GENERATED_STACK_HH_INCLUDED */ | |||||
| /* Line 1152 of lalr1.cc */ | |||||
| #line 133 "generated/stack.hh" | |||||
| #endif // not BISON_STACK_HH[]dnl | |||||