LCOV - code coverage report
Current view: top level - builds/barbot/Cosmos/build/src/ModelGenerator/LhaParser - Lha-parser.cc (source / functions) Hit Total Coverage
Test: coverage.info Lines: 219 472 46.4 %
Date: 2021-06-16 15:43:28 Functions: 32 46 69.6 %

          Line data    Source code
       1             : // A Bison parser, made by GNU Bison 3.0.4.
       2             : 
       3             : // Skeleton implementation for Bison LALR(1) parsers in C++
       4             : 
       5             : // Copyright (C) 2002-2015 Free Software Foundation, Inc.
       6             : 
       7             : // This program is free software: you can redistribute it and/or modify
       8             : // it under the terms of the GNU General Public License as published by
       9             : // the Free Software Foundation, either version 3 of the License, or
      10             : // (at your option) any later version.
      11             : 
      12             : // This program is distributed in the hope that it will be useful,
      13             : // but WITHOUT ANY WARRANTY; without even the implied warranty of
      14             : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      15             : // GNU General Public License for more details.
      16             : 
      17             : // You should have received a copy of the GNU General Public License
      18             : // along with this program.  If not, see <http://www.gnu.org/licenses/>.
      19             : 
      20             : // As a special exception, you may create a larger work that contains
      21             : // part or all of the Bison parser skeleton and distribute that work
      22             : // under terms of your choice, so long as that work isn't itself a
      23             : // parser generator using the skeleton or a modified version thereof
      24             : // as a parser skeleton.  Alternatively, if you modify or redistribute
      25             : // the parser skeleton itself, you may (at your option) remove this
      26             : // special exception, which will cause the skeleton and the resulting
      27             : // Bison output files to be licensed under the GNU General Public
      28             : // License without this special exception.
      29             : 
      30             : // This special exception was added by the Free Software Foundation in
      31             : // version 2.2 of Bison.
      32             : 
      33             : // Take the name prefix into account.
      34             : #define yylex   lhalex
      35             : 
      36             : // First part of user declarations.
      37             : 
      38             : #line 39 "Lha-parser.cc" // lalr1.cc:404
      39             : 
      40             : # ifndef YY_NULLPTR
      41             : #  if defined __cplusplus && 201103L <= __cplusplus
      42             : #   define YY_NULLPTR nullptr
      43             : #  else
      44             : #   define YY_NULLPTR 0
      45             : #  endif
      46             : # endif
      47             : 
      48             : #include "Lha-parser.hh"
      49             : 
      50             : // User implementation prologue.
      51             : 
      52             : #line 53 "Lha-parser.cc" // lalr1.cc:412
      53             : // Unqualified %code blocks.
      54             : #line 42 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:413
      55             : 
      56             :         #include "../HaslFormula.hpp"
      57             :         #include "Lha-Reader.hpp"
      58             :         #include <set>
      59             :         #include <vector>
      60             : 
      61             :         Eval LhaEvaluate;
      62             : 
      63             : 
      64             : 
      65             :         vector<string> FuncFlowVector;
      66             : 
      67             :         vector<string> FuncUpdateVector;
      68             :     vector<string> FuncUpdateVectorIndex;
      69             : 
      70             :         set <string> PetriTransitions;
      71             :         set <string> SubSet;
      72             : 
      73             : 
      74             : 
      75             :         vector < string > CoeffsVector;
      76             :         vector < vector <string> > CoeffsMatrix;
      77             :         vector <string> CST;
      78             :         vector <string> comp;
      79             : 
      80             : 
      81             : 
      82             : 
      83             : 
      84             : 
      85             : 
      86             : #line 87 "Lha-parser.cc" // lalr1.cc:413
      87             : 
      88             : 
      89             : #ifndef YY_
      90             : # if defined YYENABLE_NLS && YYENABLE_NLS
      91             : #  if ENABLE_NLS
      92             : #   include <libintl.h> // FIXME: INFRINGES ON USER NAME SPACE.
      93             : #   define YY_(msgid) dgettext ("bison-runtime", msgid)
      94             : #  endif
      95             : # endif
      96             : # ifndef YY_
      97             : #  define YY_(msgid) msgid
      98             : # endif
      99             : #endif
     100             : 
     101             : #define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
     102             : /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
     103             :    If N is 0, then set CURRENT to the empty location which ends
     104             :    the previous symbol: RHS[0] (always defined).  */
     105             : 
     106             : # ifndef YYLLOC_DEFAULT
     107             : #  define YYLLOC_DEFAULT(Current, Rhs, N)                               \
     108             :     do                                                                  \
     109             :       if (N)                                                            \
     110             :         {                                                               \
     111             :           (Current).begin  = YYRHSLOC (Rhs, 1).begin;                   \
     112             :           (Current).end    = YYRHSLOC (Rhs, N).end;                     \
     113             :         }                                                               \
     114             :       else                                                              \
     115             :         {                                                               \
     116             :           (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;      \
     117             :         }                                                               \
     118             :     while (/*CONSTCOND*/ false)
     119             : # endif
     120             : 
     121             : 
     122             : // Suppress unused-variable warnings by "using" E.
     123             : #define YYUSE(E) ((void) (E))
     124             : 
     125             : // Enable debugging if requested.
     126             : #if YYDEBUG
     127             : 
     128             : // A pseudo ostream that takes yydebug_ into account.
     129             : # define YYCDEBUG if (yydebug_) (*yycdebug_)
     130             : 
     131             : # define YY_SYMBOL_PRINT(Title, Symbol)         \
     132             :   do {                                          \
     133             :     if (yydebug_)                               \
     134             :     {                                           \
     135             :       *yycdebug_ << Title << ' ';               \
     136             :       yy_print_ (*yycdebug_, Symbol);           \
     137             :       *yycdebug_ << std::endl;                  \
     138             :     }                                           \
     139             :   } while (false)
     140             : 
     141             : # define YY_REDUCE_PRINT(Rule)          \
     142             :   do {                                  \
     143             :     if (yydebug_)                       \
     144             :       yy_reduce_print_ (Rule);          \
     145             :   } while (false)
     146             : 
     147             : # define YY_STACK_PRINT()               \
     148             :   do {                                  \
     149             :     if (yydebug_)                       \
     150             :       yystack_print_ ();                \
     151             :   } while (false)
     152             : 
     153             : #else // !YYDEBUG
     154             : 
     155             : # define YYCDEBUG if (false) std::cerr
     156             : # define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE(Symbol)
     157             : # define YY_REDUCE_PRINT(Rule)           static_cast<void>(0)
     158             : # define YY_STACK_PRINT()                static_cast<void>(0)
     159             : 
     160             : #endif // !YYDEBUG
     161             : 
     162             : #define yyerrok         (yyerrstatus_ = 0)
     163             : #define yyclearin       (yyla.clear ())
     164             : 
     165             : #define YYACCEPT        goto yyacceptlab
     166             : #define YYABORT         goto yyabortlab
     167             : #define YYERROR         goto yyerrorlab
     168             : #define YYRECOVERING()  (!!yyerrstatus_)
     169             : 
     170             : 
     171             : namespace lha {
     172             : #line 173 "Lha-parser.cc" // lalr1.cc:479
     173             : 
     174             :   /* Return YYSTR after stripping away unnecessary quotes and
     175             :      backslashes, so that it's suitable for yyerror.  The heuristic is
     176             :      that double-quoting is unnecessary unless the string contains an
     177             :      apostrophe, a comma, or backslash (other than backslash-backslash).
     178             :      YYSTR is taken from yytname.  */
     179             :   std::string
     180           0 :   Lha_parser::yytnamerr_ (const char *yystr)
     181             :   {
     182           0 :     if (*yystr == '"')
     183             :       {
     184           0 :         std::string yyr = "";
     185           0 :         char const *yyp = yystr;
     186             : 
     187             :         for (;;)
     188           0 :           switch (*++yyp)
     189             :             {
     190             :             case '\'':
     191             :             case ',':
     192           0 :               goto do_not_strip_quotes;
     193             : 
     194             :             case '\\':
     195           0 :               if (*++yyp != '\\')
     196           0 :                 goto do_not_strip_quotes;
     197             :               // Fall through.
     198             :             default:
     199           0 :               yyr += *yyp;
     200           0 :               break;
     201             : 
     202             :             case '"':
     203           0 :               return yyr;
     204             :             }
     205             :       do_not_strip_quotes: ;
     206             :       }
     207             : 
     208           0 :     return yystr;
     209             :   }
     210             : 
     211             : 
     212             :   /// Build a parser object.
     213          29 :   Lha_parser::Lha_parser (Lha_Reader& Reader_yyarg)
     214             :     :
     215             : #if YYDEBUG
     216             :       yydebug_ (false),
     217             :       yycdebug_ (&std::cerr),
     218             : #endif
     219          29 :       Reader (Reader_yyarg)
     220          29 :   {}
     221             : 
     222          29 :   Lha_parser::~Lha_parser ()
     223          29 :   {}
     224             : 
     225             : 
     226             :   /*---------------.
     227             :   | Symbol types.  |
     228             :   `---------------*/
     229             : 
     230             :   inline
     231             :   Lha_parser::syntax_error::syntax_error (const location_type& l, const std::string& m)
     232             :     : std::runtime_error (m)
     233             :     , location (l)
     234             :   {}
     235             : 
     236             :   // basic_symbol.
     237             :   template <typename Base>
     238             :   inline
     239       22445 :   Lha_parser::basic_symbol<Base>::basic_symbol ()
     240       22445 :     : value ()
     241       22445 :   {}
     242             : 
     243             :   template <typename Base>
     244             :   inline
     245       16104 :   Lha_parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
     246             :     : Base (other)
     247             :     , value ()
     248       16104 :     , location (other.location)
     249             :   {
     250       16104 :     value = other.value;
     251       16104 :   }
     252             : 
     253             : 
     254             :   template <typename Base>
     255             :   inline
     256             :   Lha_parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l)
     257             :     : Base (t)
     258             :     , value (v)
     259             :     , location (l)
     260             :   {}
     261             : 
     262             : 
     263             :   /// Constructor for valueless symbols.
     264             :   template <typename Base>
     265             :   inline
     266        9879 :   Lha_parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const location_type& l)
     267             :     : Base (t)
     268             :     , value ()
     269        9879 :     , location (l)
     270        9879 :   {}
     271             : 
     272             :   template <typename Base>
     273             :   inline
     274       48428 :   Lha_parser::basic_symbol<Base>::~basic_symbol ()
     275             :   {
     276       48428 :     clear ();
     277       48428 :   }
     278             : 
     279             :   template <typename Base>
     280             :   inline
     281             :   void
     282       48428 :   Lha_parser::basic_symbol<Base>::clear ()
     283             :   {
     284       48428 :     Base::clear ();
     285       48428 :   }
     286             : 
     287             :   template <typename Base>
     288             :   inline
     289             :   bool
     290       12135 :   Lha_parser::basic_symbol<Base>::empty () const
     291             :   {
     292       12135 :     return Base::type_get () == empty_symbol;
     293             :   }
     294             : 
     295             :   template <typename Base>
     296             :   inline
     297             :   void
     298       16104 :   Lha_parser::basic_symbol<Base>::move (basic_symbol& s)
     299             :   {
     300       16104 :     super_type::move(s);
     301       16104 :     value = s.value;
     302       16104 :     location = s.location;
     303       16104 :   }
     304             : 
     305             :   // by_type.
     306             :   inline
     307          29 :   Lha_parser::by_type::by_type ()
     308          29 :     : type (empty_symbol)
     309          29 :   {}
     310             : 
     311             :   inline
     312             :   Lha_parser::by_type::by_type (const by_type& other)
     313             :     : type (other.type)
     314             :   {}
     315             : 
     316             :   inline
     317             :   Lha_parser::by_type::by_type (token_type t)
     318             :     : type (yytranslate_ (t))
     319             :   {}
     320             : 
     321             :   inline
     322             :   void
     323          29 :   Lha_parser::by_type::clear ()
     324             :   {
     325          29 :     type = empty_symbol;
     326          29 :   }
     327             : 
     328             :   inline
     329             :   void
     330             :   Lha_parser::by_type::move (by_type& that)
     331             :   {
     332             :     type = that.type;
     333             :     that.clear ();
     334             :   }
     335             : 
     336             :   inline
     337             :   int
     338       36347 :   Lha_parser::by_type::type_get () const
     339             :   {
     340       36347 :     return type;
     341             :   }
     342             : 
     343             : 
     344             :   // by_state.
     345             :   inline
     346       22416 :   Lha_parser::by_state::by_state ()
     347       22416 :     : state (empty_state)
     348       22416 :   {}
     349             : 
     350             :   inline
     351       16104 :   Lha_parser::by_state::by_state (const by_state& other)
     352       16104 :     : state (other.state)
     353       16104 :   {}
     354             : 
     355             :   inline
     356             :   void
     357       64503 :   Lha_parser::by_state::clear ()
     358             :   {
     359       64503 :     state = empty_state;
     360       64503 :   }
     361             : 
     362             :   inline
     363             :   void
     364       16104 :   Lha_parser::by_state::move (by_state& that)
     365             :   {
     366       16104 :     state = that.state;
     367       16104 :     that.clear ();
     368       16104 :   }
     369             : 
     370             :   inline
     371        9879 :   Lha_parser::by_state::by_state (state_type s)
     372        9879 :     : state (s)
     373        9879 :   {}
     374             : 
     375             :   inline
     376             :   Lha_parser::symbol_number_type
     377          58 :   Lha_parser::by_state::type_get () const
     378             :   {
     379          58 :     if (state == empty_state)
     380           0 :       return empty_symbol;
     381             :     else
     382          58 :       return yystos_[state];
     383             :   }
     384             : 
     385             :   inline
     386       22416 :   Lha_parser::stack_symbol_type::stack_symbol_type ()
     387       22416 :   {}
     388             : 
     389             : 
     390             :   inline
     391        9879 :   Lha_parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
     392        9879 :     : super_type (s, that.location)
     393             :   {
     394        9879 :     value = that.value;
     395             :     // that is emptied.
     396        9879 :     that.type = empty_symbol;
     397        9879 :   }
     398             : 
     399             :   inline
     400             :   Lha_parser::stack_symbol_type&
     401             :   Lha_parser::stack_symbol_type::operator= (const stack_symbol_type& that)
     402             :   {
     403             :     state = that.state;
     404             :     value = that.value;
     405             :     location = that.location;
     406             :     return *this;
     407             :   }
     408             : 
     409             : 
     410             :   template <typename Base>
     411             :   inline
     412             :   void
     413          58 :   Lha_parser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
     414             :   {
     415          58 :     if (yymsg)
     416          58 :       YY_SYMBOL_PRINT (yymsg, yysym);
     417             : 
     418             :     // User destructor.
     419          58 :     switch (yysym.type_get ())
     420             :     {
     421             :             case 3: // str
     422             : 
     423             : #line 171 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:614
     424             :         { delete (yysym.value.name); }
     425             : #line 426 "Lha-parser.cc" // lalr1.cc:614
     426           0 :         break;
     427             : 
     428             : 
     429             :       default:
     430          58 :         break;
     431             :     }
     432          58 :   }
     433             : 
     434             : #if YYDEBUG
     435             :   template <typename Base>
     436             :   void
     437           0 :   Lha_parser::yy_print_ (std::ostream& yyo,
     438             :                                      const basic_symbol<Base>& yysym) const
     439             :   {
     440           0 :     std::ostream& yyoutput = yyo;
     441             :     YYUSE (yyoutput);
     442           0 :     symbol_number_type yytype = yysym.type_get ();
     443             :     // Avoid a (spurious) G++ 4.8 warning about "array subscript is
     444             :     // below array bounds".
     445           0 :     if (yysym.empty ())
     446           0 :       std::abort ();
     447           0 :     yyo << (yytype < yyntokens_ ? "token" : "nterm")
     448           0 :         << ' ' << yytname_[yytype] << " ("
     449           0 :         << yysym.location << ": ";
     450           0 :     switch (yytype)
     451             :     {
     452             :             case 3: // str
     453             : 
     454             : #line 170 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:636
     455             :         { debug_stream () << *(yysym.value.name); }
     456             : #line 457 "Lha-parser.cc" // lalr1.cc:636
     457           0 :         break;
     458             : 
     459             :       case 4: // rval
     460             : 
     461             : #line 174 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:636
     462             :         { debug_stream () << (yysym.value.RealVal); }
     463             : #line 464 "Lha-parser.cc" // lalr1.cc:636
     464           0 :         break;
     465             : 
     466             :       case 5: // ival
     467             : 
     468             : #line 173 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:636
     469             :         { debug_stream () << (yysym.value.IntVal); }
     470             : #line 471 "Lha-parser.cc" // lalr1.cc:636
     471           0 :         break;
     472             : 
     473             :       case 113: // rorival
     474             : 
     475             : #line 174 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:636
     476             :         { debug_stream () << (yysym.value.RealVal); }
     477             : #line 478 "Lha-parser.cc" // lalr1.cc:636
     478           0 :         break;
     479             : 
     480             : 
     481             :       default:
     482           0 :         break;
     483             :     }
     484           0 :     yyo << ')';
     485           0 :   }
     486             : #endif
     487             : 
     488             :   inline
     489             :   void
     490        9879 :   Lha_parser::yypush_ (const char* m, state_type s, symbol_type& sym)
     491             :   {
     492       19758 :     stack_symbol_type t (s, sym);
     493        9879 :     yypush_ (m, t);
     494        9879 :   }
     495             : 
     496             :   inline
     497             :   void
     498       16104 :   Lha_parser::yypush_ (const char* m, stack_symbol_type& s)
     499             :   {
     500       16104 :     if (m)
     501        9850 :       YY_SYMBOL_PRINT (m, s);
     502       16104 :     yystack_.push (s);
     503       16104 :   }
     504             : 
     505             :   inline
     506             :   void
     507        6312 :   Lha_parser::yypop_ (unsigned int n)
     508             :   {
     509        6312 :     yystack_.pop (n);
     510        6312 :   }
     511             : 
     512             : #if YYDEBUG
     513             :   std::ostream&
     514           0 :   Lha_parser::debug_stream () const
     515             :   {
     516           0 :     return *yycdebug_;
     517             :   }
     518             : 
     519             :   void
     520           0 :   Lha_parser::set_debug_stream (std::ostream& o)
     521             :   {
     522           0 :     yycdebug_ = &o;
     523           0 :   }
     524             : 
     525             : 
     526             :   Lha_parser::debug_level_type
     527           0 :   Lha_parser::debug_level () const
     528             :   {
     529           0 :     return yydebug_;
     530             :   }
     531             : 
     532             :   void
     533          29 :   Lha_parser::set_debug_level (debug_level_type l)
     534             :   {
     535          29 :     yydebug_ = l;
     536          29 :   }
     537             : #endif // YYDEBUG
     538             : 
     539             :   inline Lha_parser::state_type
     540        6225 :   Lha_parser::yy_lr_goto_state_ (state_type yystate, int yysym)
     541             :   {
     542        6225 :     int yyr = yypgoto_[yysym - yyntokens_] + yystate;
     543        6225 :     if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
     544        2176 :       return yytable_[yyr];
     545             :     else
     546        4049 :       return yydefgoto_[yysym - yyntokens_];
     547             :   }
     548             : 
     549             :   inline bool
     550       16075 :   Lha_parser::yy_pact_value_is_default_ (int yyvalue)
     551             :   {
     552       16075 :     return yyvalue == yypact_ninf_;
     553             :   }
     554             : 
     555             :   inline bool
     556           0 :   Lha_parser::yy_table_value_is_error_ (int yyvalue)
     557             :   {
     558           0 :     return yyvalue == yytable_ninf_;
     559             :   }
     560             : 
     561             :   int
     562          29 :   Lha_parser::parse ()
     563             :   {
     564             :     // State.
     565             :     int yyn;
     566             :     /// Length of the RHS of the rule being reduced.
     567          29 :     int yylen = 0;
     568             : 
     569             :     // Error handling.
     570          29 :     int yynerrs_ = 0;
     571          29 :     int yyerrstatus_ = 0;
     572             : 
     573             :     /// The lookahead symbol.
     574          58 :     symbol_type yyla;
     575             : 
     576             :     /// The locations where the error started and ended.
     577          58 :     stack_symbol_type yyerror_range[3];
     578             : 
     579             :     /// The return value of parse ().
     580             :     int yyresult;
     581             : 
     582             :     // FIXME: This shoud be completely indented.  It is not yet to
     583             :     // avoid gratuitous conflicts when merging into the master branch.
     584             :     try
     585             :       {
     586          29 :     YYCDEBUG << "Starting parse" << std::endl;
     587             : 
     588             : 
     589             :     /* Initialize the stack.  The initial state will be set in
     590             :        yynewstate, since the latter expects the semantical and the
     591             :        location values to have been already stored, initialize these
     592             :        stacks with a primary value.  */
     593          29 :     yystack_.clear ();
     594          29 :     yypush_ (YY_NULLPTR, 0, yyla);
     595             : 
     596             :     // A new symbol was pushed on the stack.
     597             :   yynewstate:
     598       16104 :     YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
     599             : 
     600             :     // Accept?
     601       16104 :     if (yystack_[0].state == yyfinal_)
     602          29 :       goto yyacceptlab;
     603             : 
     604       16075 :     goto yybackup;
     605             : 
     606             :     // Backup.
     607             :   yybackup:
     608             : 
     609             :     // Try to take a decision without lookahead.
     610       16075 :     yyn = yypact_[yystack_[0].state];
     611       16075 :     if (yy_pact_value_is_default_ (yyn))
     612        3969 :       goto yydefault;
     613             : 
     614             :     // Read a lookahead token.
     615       12106 :     if (yyla.empty ())
     616             :       {
     617        9850 :         YYCDEBUG << "Reading a token: ";
     618             :         try
     619             :           {
     620        9850 :             yyla.type = yytranslate_ (yylex (&yyla.value, &yyla.location, Reader));
     621             :           }
     622           0 :         catch (const syntax_error& yyexc)
     623             :           {
     624           0 :             error (yyexc);
     625           0 :             goto yyerrlab1;
     626             :           }
     627             :       }
     628       12106 :     YY_SYMBOL_PRINT ("Next token is", yyla);
     629             : 
     630             :     /* If the proper action on seeing token YYLA.TYPE is to reduce or
     631             :        to detect an error, take that action.  */
     632       12106 :     yyn += yyla.type_get ();
     633       12106 :     if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
     634        2256 :       goto yydefault;
     635             : 
     636             :     // Reduce or error.
     637        9850 :     yyn = yytable_[yyn];
     638        9850 :     if (yyn <= 0)
     639             :       {
     640           0 :         if (yy_table_value_is_error_ (yyn))
     641           0 :           goto yyerrlab;
     642           0 :         yyn = -yyn;
     643           0 :         goto yyreduce;
     644             :       }
     645             : 
     646             :     // Count tokens shifted since error; after three, turn off error status.
     647        9850 :     if (yyerrstatus_)
     648           0 :       --yyerrstatus_;
     649             : 
     650             :     // Shift the lookahead token.
     651        9850 :     yypush_ ("Shifting", yyn, yyla);
     652        9850 :     goto yynewstate;
     653             : 
     654             :   /*-----------------------------------------------------------.
     655             :   | yydefault -- do the default action for the current state.  |
     656             :   `-----------------------------------------------------------*/
     657             :   yydefault:
     658        6225 :     yyn = yydefact_[yystack_[0].state];
     659        6225 :     if (yyn == 0)
     660           0 :       goto yyerrlab;
     661        6225 :     goto yyreduce;
     662             : 
     663             :   /*-----------------------------.
     664             :   | yyreduce -- Do a reduction.  |
     665             :   `-----------------------------*/
     666             :   yyreduce:
     667        6225 :     yylen = yyr2_[yyn];
     668             :     {
     669       12450 :       stack_symbol_type yylhs;
     670        6225 :       yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
     671             :       /* If YYLEN is nonzero, implement the default value of the
     672             :          action: '$$ = $1'.  Otherwise, use the top of the stack.
     673             : 
     674             :          Otherwise, the following line sets YYLHS.VALUE to garbage.
     675             :          This behavior is undocumented and Bison users should not rely
     676             :          upon it.  */
     677        6225 :       if (yylen)
     678        6209 :         yylhs.value = yystack_[yylen - 1].value;
     679             :       else
     680          16 :         yylhs.value = yystack_[0].value;
     681             : 
     682             :       // Compute the default @$.
     683             :       {
     684        6225 :         slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
     685        6225 :         YYLLOC_DEFAULT (yylhs.location, slice, yylen);
     686             :       }
     687             : 
     688             :       // Perform the reduction.
     689        6225 :       YY_REDUCE_PRINT (yyn);
     690             :       try
     691             :         {
     692        6225 :           switch (yyn)
     693             :             {
     694             :   case 3:
     695             : #line 191 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     696             :     {Reader.MyLha.isDeterministic=false;}
     697             : #line 698 "Lha-parser.cc" // lalr1.cc:859
     698           0 :     break;
     699             : 
     700             :   case 11:
     701             : #line 205 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     702             :     {sprintf((yylhs.value.expression),"%i",(yystack_[0].value.IntVal));}
     703             : #line 704 "Lha-parser.cc" // lalr1.cc:859
     704           9 :     break;
     705             : 
     706             :   case 12:
     707             : #line 206 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     708             :     {
     709             :         if(Reader.MyLha.PlaceIndex.find(*(yystack_[0].value.name))!=Reader.MyLha.PlaceIndex.end())
     710             :         {std::ostringstream s; s<<" Marking.P->_PL_"<< (yystack_[0].value.name)->c_str()<<" ";
     711             :                 sprintf((yylhs.value.expression), "%s",(s.str()).c_str());
     712             :         }
     713             :         else if(Reader.MyLha.LhaIntConstant.find(*(yystack_[0].value.name))!=Reader.MyLha.LhaIntConstant.end())
     714             :         {std::ostringstream s; s<<Reader.MyLha.LhaIntConstant[*(yystack_[0].value.name)];
     715             :                 sprintf((yylhs.value.expression), "%s",(s.str()).c_str());
     716             :         } else {
     717             :         size_t vararray = Reader.MyLha.Vars.find(*(yystack_[0].value.name));
     718             :         if(vararray!= Reader.MyLha.NbVar && Reader.MyLha.Vars.type[vararray]==DISCRETE_VARIABLE){
     719             :             sprintf((yylhs.value.expression), " floor(Vars->%s)", Reader.MyLha.Vars.label[vararray].c_str() );
     720             :         } else {cout<<"'"<<*(yystack_[0].value.name)<<"' is not a place label or a defined constant"<<endl;YYABORT;}
     721             :     }
     722             : }
     723             : #line 724 "Lha-parser.cc" // lalr1.cc:859
     724           0 :     break;
     725             : 
     726             :   case 13:
     727             : #line 221 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     728             :     {
     729             :     auto pi = Reader.MyLha.PlaceIndex.find(*(yystack_[3].value.name));
     730             :         if( pi !=Reader.MyLha.PlaceIndex.end())
     731             :         {std::ostringstream s;
     732             :          s<<" Marking.P->_PL_"<< (yystack_[3].value.name)->c_str()<< ".mult";
     733             :      if(P.is_domain_impl_set){
     734             :          size_t coldom = Reader.MyLha.MyGspn->placeStruct[pi->second].colorDom;
     735             :          s << "("<< Reader.MyLha.MyGspn->colDoms[coldom].tokname()<< "(" << (yystack_[1].value.expression) << "))";
     736             :      } else s << (yystack_[1].value.expression);
     737             :                 sprintf((yylhs.value.expression), "%s",(s.str()).c_str());
     738             :         }else{cout<<"'"<<*(yystack_[3].value.name)<<"' is not a place label "<<endl;YYABORT;}}
     739             : #line 740 "Lha-parser.cc" // lalr1.cc:859
     740           0 :     break;
     741             : 
     742             :   case 14:
     743             : #line 232 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     744             :     {
     745             :     size_t vararray = Reader.MyLha.Vars.find(*(yystack_[3].value.name));
     746             :         if(vararray!= Reader.MyLha.NbVar && Reader.MyLha.Vars.type[vararray]==INT_INDEXED_DISC_ARRAY)
     747             :         {std::ostringstream s;
     748             :         s<<" Vars.P->" << Reader.MyLha.Vars.label[vararray] << "["<< *(yystack_[1].value.expression) << "]";
     749             :                 sprintf((yylhs.value.expression), "%s",(s.str()).c_str());
     750             :         }else{cout<<"'"<<*(yystack_[3].value.name)<<"' is not a discrete array name "<<endl;YYABORT;}}
     751             : #line 752 "Lha-parser.cc" // lalr1.cc:859
     752           0 :     break;
     753             : 
     754             :   case 15:
     755             : #line 239 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     756             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"( %s )", (yystack_[1].value.expression));       }
     757             : #line 758 "Lha-parser.cc" // lalr1.cc:859
     758           0 :     break;
     759             : 
     760             :   case 16:
     761             : #line 240 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     762             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"-%s",(yystack_[0].value.expression));}
     763             : #line 764 "Lha-parser.cc" // lalr1.cc:859
     764           0 :     break;
     765             : 
     766             :   case 17:
     767             : #line 241 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     768             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s + %s", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
     769             : #line 770 "Lha-parser.cc" // lalr1.cc:859
     770           0 :     break;
     771             : 
     772             :   case 18:
     773             : #line 242 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     774             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s - %s", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
     775             : #line 776 "Lha-parser.cc" // lalr1.cc:859
     776           0 :     break;
     777             : 
     778             :   case 19:
     779             : #line 243 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     780             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s * %s", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
     781             : #line 782 "Lha-parser.cc" // lalr1.cc:859
     782           0 :     break;
     783             : 
     784             :   case 20:
     785             : #line 244 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     786             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"pow(%s , %s)", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
     787             : #line 788 "Lha-parser.cc" // lalr1.cc:859
     788           0 :     break;
     789             : 
     790             :   case 21:
     791             : #line 245 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     792             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"floor( %s )", (yystack_[1].value.expression));  }
     793             : #line 794 "Lha-parser.cc" // lalr1.cc:859
     794           0 :     break;
     795             : 
     796             :   case 22:
     797             : #line 246 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     798             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"floor( %s /double(%s))", (yystack_[3].value.expression),(yystack_[1].value.expression));  }
     799             : #line 800 "Lha-parser.cc" // lalr1.cc:859
     800           0 :     break;
     801             : 
     802             :   case 23:
     803             : #line 247 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     804             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"min(%s , %s)", (yystack_[3].value.expression), (yystack_[1].value.expression));  }
     805             : #line 806 "Lha-parser.cc" // lalr1.cc:859
     806           0 :     break;
     807             : 
     808             :   case 24:
     809             : #line 248 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     810             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"max(%s , %s)", (yystack_[3].value.expression), (yystack_[1].value.expression));  }
     811             : #line 812 "Lha-parser.cc" // lalr1.cc:859
     812           0 :     break;
     813             : 
     814             :   case 25:
     815             : #line 249 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     816             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"((int)%s %% (int)%s)", (yystack_[3].value.expression), (yystack_[1].value.expression));  }
     817             : #line 818 "Lha-parser.cc" // lalr1.cc:859
     818           0 :     break;
     819             : 
     820             :   case 26:
     821             : #line 252 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     822             :     {sprintf((yylhs.value.expression), "%f",(yystack_[0].value.RealVal));}
     823             : #line 824 "Lha-parser.cc" // lalr1.cc:859
     824          13 :     break;
     825             : 
     826             :   case 27:
     827             : #line 253 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     828             :     {sprintf((yylhs.value.expression),"%d",(yystack_[0].value.IntVal));}
     829             : #line 830 "Lha-parser.cc" // lalr1.cc:859
     830         127 :     break;
     831             : 
     832             :   case 28:
     833             : #line 254 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     834             :     {
     835             :     if(Reader.MyLha.PlaceIndex.find(*(yystack_[1].value.name))!=Reader.MyLha.PlaceIndex.end())
     836             :     {std::ostringstream s; s<<" Marking.P->_PL_"<<(yystack_[1].value.name)->c_str();
     837             :         if(Reader.MyLha.MyGspn->placeStruct[Reader.MyLha.PlaceIndex[*(yystack_[1].value.name)]].colorDom !=0 )s <<".value()";
     838             :         sprintf((yylhs.value.expression), "%s ",(s.str()).c_str());
     839             :     }
     840             :     else {cout<<"'"<<*(yystack_[1].value.name)<<"' is not a place label"<<endl;YYABORT;}}
     841             : #line 842 "Lha-parser.cc" // lalr1.cc:859
     842           0 :     break;
     843             : 
     844             :   case 29:
     845             : #line 261 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     846             :     {
     847             :         if(Reader.MyLha.PlaceIndex.find(*(yystack_[0].value.name))!=Reader.MyLha.PlaceIndex.end())
     848             :         {std::ostringstream s; s<<" Marking.P->_PL_"<<(yystack_[0].value.name)->c_str();
     849             :                 if(Reader.MyLha.MyGspn->placeStruct[Reader.MyLha.PlaceIndex[*(yystack_[0].value.name)]].colorDom !=0 )s <<".card()";
     850             :                 snprintf((yylhs.value.expression),BUFF_SIZE, "%s ",(s.str()).c_str());
     851             :         }
     852             :         else if(Reader.MyLha.LhaRealConstant.find(*(yystack_[0].value.name))!=Reader.MyLha.LhaRealConstant.end())
     853             :         {std::ostringstream s; s<<Reader.MyLha.LhaRealConstant[*(yystack_[0].value.name)];
     854             :                 snprintf((yylhs.value.expression), BUFF_SIZE,"%s",(s.str()).c_str());
     855             :         }
     856             : 
     857             :         else{cout<<"'"<<*(yystack_[0].value.name)<<"' is not a place label or a defined constant"<<endl;YYABORT;}}
     858             : #line 859 "Lha-parser.cc" // lalr1.cc:859
     859         470 :     break;
     860             : 
     861             :   case 30:
     862             : #line 273 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     863             :     {
     864             :     auto pi = Reader.MyLha.PlaceIndex.find(*(yystack_[3].value.name));
     865             :     if( pi !=Reader.MyLha.PlaceIndex.end())
     866             :     {std::ostringstream s;
     867             :         s<<" Marking.P->_PL_"<< (yystack_[3].value.name)->c_str()<< ".mult";
     868             :         if(P.is_domain_impl_set){
     869             :             size_t coldom = Reader.MyLha.MyGspn->placeStruct[pi->second].colorDom;
     870             :             s << "("<< Reader.MyLha.MyGspn->colDoms[coldom].tokname()<< "(" << (yystack_[1].value.expression) << "))";
     871             :      } else s << (yystack_[1].value.expression);
     872             :                 snprintf((yylhs.value.expression),BUFF_SIZE, "%s",(s.str()).c_str());
     873             :         }else{cout<<"'"<<*(yystack_[3].value.name)<<"' is not a place label "<<endl;YYABORT;}}
     874             : #line 875 "Lha-parser.cc" // lalr1.cc:859
     875           0 :     break;
     876             : 
     877             :   case 31:
     878             : #line 284 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     879             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"( %s )", (yystack_[1].value.expression));       }
     880             : #line 881 "Lha-parser.cc" // lalr1.cc:859
     881          10 :     break;
     882             : 
     883             :   case 32:
     884             : #line 285 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     885             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"-%s",(yystack_[0].value.expression));}
     886             : #line 887 "Lha-parser.cc" // lalr1.cc:859
     887           0 :     break;
     888             : 
     889             :   case 33:
     890             : #line 286 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     891             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s /double(%s)", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
     892             : #line 893 "Lha-parser.cc" // lalr1.cc:859
     893           0 :     break;
     894             : 
     895             :   case 34:
     896             : #line 287 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     897             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s + %s", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
     898             : #line 899 "Lha-parser.cc" // lalr1.cc:859
     899          34 :     break;
     900             : 
     901             :   case 35:
     902             : #line 288 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     903             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s - %s", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
     904             : #line 905 "Lha-parser.cc" // lalr1.cc:859
     905           0 :     break;
     906             : 
     907             :   case 36:
     908             : #line 289 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     909             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s * %s", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
     910             : #line 911 "Lha-parser.cc" // lalr1.cc:859
     911         101 :     break;
     912             : 
     913             :   case 37:
     914             : #line 290 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     915             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"pow(%s , %s)", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
     916             : #line 917 "Lha-parser.cc" // lalr1.cc:859
     917           0 :     break;
     918             : 
     919             :   case 38:
     920             : #line 291 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     921             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"floor( %s )", (yystack_[1].value.expression));  }
     922             : #line 923 "Lha-parser.cc" // lalr1.cc:859
     923           0 :     break;
     924             : 
     925             :   case 39:
     926             : #line 292 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     927             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"min(%s , %s)", (yystack_[3].value.expression), (yystack_[1].value.expression));  }
     928             : #line 929 "Lha-parser.cc" // lalr1.cc:859
     929           0 :     break;
     930             : 
     931             :   case 40:
     932             : #line 293 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     933             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"max(%s , %s)", (yystack_[3].value.expression), (yystack_[1].value.expression));  }
     934             : #line 935 "Lha-parser.cc" // lalr1.cc:859
     935           0 :     break;
     936             : 
     937             :   case 41:
     938             : #line 295 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     939             :     {sprintf((yylhs.value.expression), "%f",(yystack_[0].value.RealVal));}
     940             : #line 941 "Lha-parser.cc" // lalr1.cc:859
     941           0 :     break;
     942             : 
     943             :   case 42:
     944             : #line 296 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     945             :     {sprintf((yylhs.value.expression),"%d",(yystack_[0].value.IntVal));}
     946             : #line 947 "Lha-parser.cc" // lalr1.cc:859
     947         121 :     break;
     948             : 
     949             :   case 43:
     950             : #line 297 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     951             :     {
     952             :     if(Reader.MyLha.PlaceIndex.find(*(yystack_[1].value.name))!=Reader.MyLha.PlaceIndex.end())
     953             :     {std::ostringstream s; s<<" Marking.P->_PL_"<<(yystack_[1].value.name)->c_str();
     954             :         if(Reader.MyLha.MyGspn->placeStruct[Reader.MyLha.PlaceIndex[*(yystack_[1].value.name)]].colorDom !=0 )s <<".value()";
     955             :         sprintf((yylhs.value.expression), "%s ",(s.str()).c_str());
     956             :     }
     957             :     else {cout<<"'"<<*(yystack_[1].value.name)<<"' is not a place label"<<endl;YYABORT;}}
     958             : #line 959 "Lha-parser.cc" // lalr1.cc:859
     959           0 :     break;
     960             : 
     961             :   case 44:
     962             : #line 304 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     963             :     {
     964             :         if(Reader.MyLha.PlaceIndex.find(*(yystack_[0].value.name))!=Reader.MyLha.PlaceIndex.end())
     965             :         {std::ostringstream s; s<<" Marking.P->_PL_"<<(yystack_[0].value.name)->c_str();
     966             :                 if(Reader.MyLha.MyGspn->placeStruct[Reader.MyLha.PlaceIndex[*(yystack_[0].value.name)]].colorDom !=0 )s <<".card()";
     967             :                 snprintf((yylhs.value.expression),BUFF_SIZE, "%s ",(s.str()).c_str());
     968             :         }
     969             :         else{ if(Reader.MyLha.LhaRealConstant.find(*(yystack_[0].value.name))!=Reader.MyLha.LhaRealConstant.end())
     970             :                 {std::ostringstream s; s<<Reader.MyLha.LhaRealConstant[*(yystack_[0].value.name)];
     971             :                         snprintf((yylhs.value.expression),BUFF_SIZE, "%s",(s.str()).c_str());
     972             :                 }
     973             :                 else {if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
     974             :                         {
     975             :                                 std::ostringstream s; s<<"Vars->"<< (yystack_[0].value.name)->c_str();
     976             :                                 snprintf((yylhs.value.expression),BUFF_SIZE, "%s",(s.str()).c_str());
     977             :                         }
     978             :                         else {cout<<"'"<<*(yystack_[0].value.name)<<"' is not a place label, a lha variable or a defined constant"<<endl;YYABORT;}
     979             :                 }
     980             :         }
     981             : }
     982             : #line 983 "Lha-parser.cc" // lalr1.cc:859
     983         254 :     break;
     984             : 
     985             :   case 45:
     986             : #line 323 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     987             :     {
     988             :     size_t varin = Reader.MyLha.Vars.find(*(yystack_[3].value.name));
     989             :     if(varin != Reader.MyLha.Vars.label.size()){
     990             :         snprintf((yylhs.value.expression),BUFF_SIZE, "Vars->%s[%s]", (yystack_[3].value.name)->c_str(),(yystack_[1].value.expression));
     991             :     }
     992             :         else {cout<<"'"<<*(yystack_[3].value.name)<<"' is not an lha array variable"<<endl;YYABORT;}
     993             :     }
     994             : #line 995 "Lha-parser.cc" // lalr1.cc:859
     995           0 :     break;
     996             : 
     997             :   case 46:
     998             : #line 330 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
     999             :     {
    1000             :     auto pi = Reader.MyLha.PlaceIndex.find(*(yystack_[3].value.name));
    1001             :     if( pi !=Reader.MyLha.PlaceIndex.end())
    1002             :     {std::ostringstream s;
    1003             :         s<<" Marking.P->_PL_"<< (yystack_[3].value.name)->c_str()<< ".mult";
    1004             :         if(P.is_domain_impl_set){
    1005             :             size_t coldom = Reader.MyLha.MyGspn->placeStruct[pi->second].colorDom;
    1006             :             s << "("<< Reader.MyLha.MyGspn->colDoms[coldom].tokname()<< "(" << (yystack_[1].value.expression) << "))";
    1007             :      } else s << (yystack_[1].value.expression);
    1008             :                 snprintf((yylhs.value.expression),BUFF_SIZE, "%s",(s.str()).c_str());
    1009             :         }else{cout<<"'"<<*(yystack_[3].value.name)<<"' is not a place label "<<endl;YYABORT;}}
    1010             : #line 1011 "Lha-parser.cc" // lalr1.cc:859
    1011           0 :     break;
    1012             : 
    1013             :   case 47:
    1014             : #line 341 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1015             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"( %s )", (yystack_[1].value.expression));       }
    1016             : #line 1017 "Lha-parser.cc" // lalr1.cc:859
    1017           0 :     break;
    1018             : 
    1019             :   case 48:
    1020             : #line 342 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1021             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"-%s",(yystack_[0].value.expression));}
    1022             : #line 1023 "Lha-parser.cc" // lalr1.cc:859
    1023           0 :     break;
    1024             : 
    1025             :   case 49:
    1026             : #line 343 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1027             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s /double(%s)", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
    1028             : #line 1029 "Lha-parser.cc" // lalr1.cc:859
    1029           1 :     break;
    1030             : 
    1031             :   case 50:
    1032             : #line 344 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1033             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s + %s", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
    1034             : #line 1035 "Lha-parser.cc" // lalr1.cc:859
    1035         170 :     break;
    1036             : 
    1037             :   case 51:
    1038             : #line 345 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1039             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s - %s", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
    1040             : #line 1041 "Lha-parser.cc" // lalr1.cc:859
    1041           0 :     break;
    1042             : 
    1043             :   case 52:
    1044             : #line 346 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1045             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s * %s", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
    1046             : #line 1047 "Lha-parser.cc" // lalr1.cc:859
    1047           0 :     break;
    1048             : 
    1049             :   case 53:
    1050             : #line 347 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1051             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"pow(%s , %s)", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
    1052             : #line 1053 "Lha-parser.cc" // lalr1.cc:859
    1053           0 :     break;
    1054             : 
    1055             :   case 54:
    1056             : #line 348 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1057             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"floor( %s )", (yystack_[1].value.expression));  }
    1058             : #line 1059 "Lha-parser.cc" // lalr1.cc:859
    1059           0 :     break;
    1060             : 
    1061             :   case 55:
    1062             : #line 349 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1063             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"min(%s , %s)", (yystack_[3].value.expression), (yystack_[1].value.expression));  }
    1064             : #line 1065 "Lha-parser.cc" // lalr1.cc:859
    1065           0 :     break;
    1066             : 
    1067             :   case 56:
    1068             : #line 350 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1069             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"max(%s , %s)", (yystack_[3].value.expression), (yystack_[1].value.expression));  }
    1070             : #line 1071 "Lha-parser.cc" // lalr1.cc:859
    1071           0 :     break;
    1072             : 
    1073             :   case 57:
    1074             : #line 352 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1075             :     {if(P.is_domain_impl_set){
    1076             :                                 snprintf((yylhs.value.expression),BUFF_SIZE,"%s", (yystack_[1].value.name)->c_str()); }
    1077             :                      else snprintf((yylhs.value.expression),BUFF_SIZE,"[%s]", (yystack_[1].value.name)->c_str()); }
    1078             : #line 1079 "Lha-parser.cc" // lalr1.cc:859
    1079           0 :     break;
    1080             : 
    1081             :   case 58:
    1082             : #line 355 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1083             :     {if(P.is_domain_impl_set){
    1084             :     snprintf((yylhs.value.expression),BUFF_SIZE,"%s,%s", (yystack_[2].value.name)->c_str(), (yystack_[0].value.expression)); }
    1085             : else
    1086             :     snprintf((yylhs.value.expression),BUFF_SIZE,"[%s]%s", (yystack_[2].value.name)->c_str(), (yystack_[0].value.expression)); }
    1087             : #line 1088 "Lha-parser.cc" // lalr1.cc:859
    1088           0 :     break;
    1089             : 
    1090             :   case 61:
    1091             : #line 362 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1092             :     {Reader.MyLha.NbVar=0;}
    1093             : #line 1094 "Lha-parser.cc" // lalr1.cc:859
    1094           0 :     break;
    1095             : 
    1096             :   case 62:
    1097             : #line 363 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1098             :     {Reader.MyLha.NbLoc=0;}
    1099             : #line 1100 "Lha-parser.cc" // lalr1.cc:859
    1100           0 :     break;
    1101             : 
    1102             :   case 63:
    1103             : #line 364 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1104             :     {Reader.MyLha.NbVar=0;Reader.MyLha.NbLoc=0;}
    1105             : #line 1106 "Lha-parser.cc" // lalr1.cc:859
    1106          16 :     break;
    1107             : 
    1108             :   case 68:
    1109             : #line 373 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1110             :     {if(Reader.MyLha.LhaRealConstant.find(*(yystack_[3].value.name))!=Reader.MyLha.LhaRealConstant.end())
    1111             :         {cout<<"Constant "<<*(yystack_[3].value.name)<<" already defined."<<endl; YYABORT;}
    1112             :         else {string st=(yystack_[1].value.expression);
    1113             :                 if (Reader.P.constants.count(*(yystack_[3].value.name))>0)st = Reader.P.constants[*(yystack_[3].value.name)];
    1114             : 
    1115             :                 LhaEvaluate.parse(st);
    1116             :                 Reader.MyLha.LhaIntConstant[*(yystack_[3].value.name)]=LhaEvaluate.IntResult;Reader.MyLha.LhaRealConstant[*(yystack_[3].value.name)]=LhaEvaluate.RealResult;}
    1117             : }
    1118             : #line 1119 "Lha-parser.cc" // lalr1.cc:859
    1119           9 :     break;
    1120             : 
    1121             :   case 69:
    1122             : #line 382 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1123             :     {if(Reader.MyLha.LhaRealConstant.find(*(yystack_[3].value.name))!=Reader.MyLha.LhaRealConstant.end())
    1124             :         {cout<<"Constant "<<*(yystack_[3].value.name)<<" already defined."<<endl; YYABORT;}
    1125             :         else {string st=(yystack_[1].value.expression);
    1126             :                 if (Reader.P.constants.count(*(yystack_[3].value.name))>0)st = Reader.P.constants[*(yystack_[3].value.name)];
    1127             :                 LhaEvaluate.parse(st);
    1128             :                 Reader.MyLha.LhaRealConstant[*(yystack_[3].value.name)]=LhaEvaluate.RealResult;}
    1129             : }
    1130             : #line 1131 "Lha-parser.cc" // lalr1.cc:859
    1131          41 :     break;
    1132             : 
    1133             :   case 70:
    1134             : #line 391 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1135             :     {if(Reader.MyLha.LhaRealHybrid.find(*(yystack_[1].value.name))!=Reader.MyLha.LhaRealHybrid.end())
    1136             :         {cout<<"Hybrid Variable "<<*(yystack_[1].value.name)<<" defined twice in the LHA."<<endl; YYABORT;}
    1137             :         else {
    1138             :                 Reader.MyLha.LhaIntHybrid[*(yystack_[1].value.name)]=1;
    1139             :                 Reader.MyLha.LhaRealHybrid[*(yystack_[1].value.name)]=1.0;
    1140             :         }
    1141             : }
    1142             : #line 1143 "Lha-parser.cc" // lalr1.cc:859
    1143           0 :     break;
    1144             : 
    1145             :   case 71:
    1146             : #line 399 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1147             :     {if(Reader.MyLha.LhaRealHybrid.find(*(yystack_[1].value.name))!=Reader.MyLha.LhaRealHybrid.end())
    1148             :     {cout<<"Hybrid Variable "<<*(yystack_[1].value.name)<<" defined twice in the LHA."<<endl; YYABORT;}
    1149             :     else {
    1150             :         Reader.MyLha.LhaRealHybrid[*(yystack_[1].value.name)]=1.0;
    1151             :     }
    1152             : }
    1153             : #line 1154 "Lha-parser.cc" // lalr1.cc:859
    1154           0 :     break;
    1155             : 
    1156             :   case 72:
    1157             : #line 408 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1158             :     {Reader.MyLha.NbVar=(yystack_[1].value.IntVal);}
    1159             : #line 1160 "Lha-parser.cc" // lalr1.cc:859
    1160          11 :     break;
    1161             : 
    1162             :   case 73:
    1163             : #line 410 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1164             :     {Reader.MyLha.NbLoc=(yystack_[1].value.IntVal);}
    1165             : #line 1166 "Lha-parser.cc" // lalr1.cc:859
    1166          11 :     break;
    1167             : 
    1168             :   case 76:
    1169             : #line 415 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1170             :     {
    1171             :         if(Reader.MyLha.NbVar==0)Reader.MyLha.NbVar = Reader.MyLha.Vars.label.size();
    1172             :         if(Reader.MyLha.Vars.label.size()!=Reader.MyLha.NbVar){
    1173             :                 std::cout<<"Variable label missing or redeclared, please check your variables list"<<std::endl;
    1174             :                 YYABORT;
    1175             :         }
    1176             : 
    1177             :         FuncFlowVector.resize(Reader.MyLha.NbVar);
    1178             :         FuncUpdateVector.resize(Reader.MyLha.NbVar);
    1179             :     FuncUpdateVectorIndex.resize(Reader.MyLha.NbVar);
    1180             :         CoeffsVector.resize(Reader.MyLha.NbVar);
    1181             : 
    1182             :         for(const auto &it : Reader.MyLha.TransitionIndex)
    1183             :                 PetriTransitions.insert(it.first);
    1184             : }
    1185             : #line 1186 "Lha-parser.cc" // lalr1.cc:859
    1186          27 :     break;
    1187             : 
    1188             :   case 77:
    1189             : #line 431 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1190             :     {
    1191             :         Reader.MyLha.Vars.label.push_back(*(yystack_[0].value.name));
    1192             :         Reader.MyLha.Vars.initialValue.push_back(0.0);
    1193             :         Reader.MyLha.Vars.type.push_back(CONTINIOUS_VARIABLE);
    1194             :         Reader.MyLha.Vars.colorDomain.push_back(UNCOLORED_DOMAIN);
    1195             :     Reader.MyLha.Vars.isTraced.push_back(true);
    1196             :         //Reader.MyLha.VarIndex[*$1]=Reader.MyLha.VarLabel.size()-1;
    1197             : }
    1198             : #line 1199 "Lha-parser.cc" // lalr1.cc:859
    1199          27 :     break;
    1200             : 
    1201             :   case 78:
    1202             : #line 439 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1203             :     {
    1204             : 
    1205             :         Reader.MyLha.Vars.label.push_back(*(yystack_[0].value.name));
    1206             :         Reader.MyLha.Vars.initialValue.push_back(0.0);
    1207             :         Reader.MyLha.Vars.type.push_back(DISCRETE_VARIABLE);
    1208             :         Reader.MyLha.Vars.colorDomain.push_back(UNCOLORED_DOMAIN);
    1209             :     Reader.MyLha.Vars.isTraced.push_back(true);
    1210             :     //Reader.MyLha.VarIndex[*$1]=Reader.MyLha.VarLabel.size()-1;
    1211             : 
    1212             : }
    1213             : #line 1214 "Lha-parser.cc" // lalr1.cc:859
    1214           0 :     break;
    1215             : 
    1216             :   case 79:
    1217             : #line 449 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1218             :     {
    1219             : 
    1220             :         Reader.MyLha.Vars.label.push_back(*(yystack_[3].value.name));
    1221             :         Reader.MyLha.Vars.initialValue.push_back(0.0);
    1222             :         Reader.MyLha.Vars.type.push_back(INT_INDEXED_DISC_ARRAY);
    1223             :         Reader.MyLha.Vars.colorDomain.push_back((yystack_[1].value.IntVal));
    1224             :     Reader.MyLha.Vars.isTraced.push_back(true);
    1225             :         //Reader.MyLha.VarIndex[*$1]=Reader.MyLha.VarLabel.size()-1;
    1226             : 
    1227             : }
    1228             : #line 1229 "Lha-parser.cc" // lalr1.cc:859
    1229           0 :     break;
    1230             : 
    1231             :   case 80:
    1232             : #line 460 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1233             :     {
    1234             :         Reader.MyLha.Vars.label.push_back(*(yystack_[0].value.name));
    1235             :         Reader.MyLha.Vars.initialValue.push_back(0.0);
    1236             :         Reader.MyLha.Vars.type.push_back(CONTINIOUS_VARIABLE);
    1237             :         Reader.MyLha.Vars.colorDomain.push_back(UNCOLORED_DOMAIN);
    1238             :     Reader.MyLha.Vars.isTraced.push_back(true);
    1239             :         //Reader.MyLha.VarIndex[*$3]=Reader.MyLha.VarLabel.size()-1;
    1240             : }
    1241             : #line 1242 "Lha-parser.cc" // lalr1.cc:859
    1242         184 :     break;
    1243             : 
    1244             :   case 81:
    1245             : #line 468 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1246             :     {
    1247             :         Reader.MyLha.Vars.label.push_back(*(yystack_[0].value.name));
    1248             :         Reader.MyLha.Vars.initialValue.push_back(0.0);
    1249             :         Reader.MyLha.Vars.type.push_back(DISCRETE_VARIABLE);
    1250             :         Reader.MyLha.Vars.colorDomain.push_back(UNCOLORED_DOMAIN);
    1251             :     Reader.MyLha.Vars.isTraced.push_back(true);
    1252             :         //Reader.MyLha.VarIndex[*$3]=Reader.MyLha.VarLabel.size()-1;
    1253             : }
    1254             : #line 1255 "Lha-parser.cc" // lalr1.cc:859
    1255          16 :     break;
    1256             : 
    1257             :   case 82:
    1258             : #line 476 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1259             :     {
    1260             :     Reader.MyLha.Vars.label.push_back(*(yystack_[3].value.name));
    1261             :         Reader.MyLha.Vars.initialValue.push_back(0.0);
    1262             :         Reader.MyLha.Vars.type.push_back(INT_INDEXED_DISC_ARRAY);
    1263             :         Reader.MyLha.Vars.colorDomain.push_back((yystack_[1].value.IntVal));
    1264             :     Reader.MyLha.Vars.isTraced.push_back(true);
    1265             : 
    1266             : }
    1267             : #line 1268 "Lha-parser.cc" // lalr1.cc:859
    1268           0 :     break;
    1269             : 
    1270             :   case 83:
    1271             : #line 485 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1272             :     {
    1273             :         if(Reader.MyLha.NbLoc ==0)Reader.MyLha.NbLoc = Reader.MyLha.LocIndex.size();
    1274             :         if(Reader.MyLha.LocIndex.size()!=Reader.MyLha.NbLoc){
    1275             :         std::cout<<"Location label missing or redeclared, please check your locations list"<<std::endl;
    1276             :         YYABORT;
    1277             :         }
    1278             :     Reader.MyLha.FuncLocProperty=vector<string>(Reader.MyLha.NbLoc,"");
    1279             :     Reader.MyLha.FuncFlow=vector<vector<string> >(Reader.MyLha.NbLoc,vector<string>(Reader.MyLha.NbVar,""));
    1280             : }
    1281             : #line 1282 "Lha-parser.cc" // lalr1.cc:859
    1282          27 :     break;
    1283             : 
    1284             :   case 84:
    1285             : #line 495 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1286             :     {
    1287             :         Reader.MyLha.LocLabel.push_back(*(yystack_[0].value.name));
    1288             :         Reader.MyLha.LocIndex[*(yystack_[0].value.name)]=Reader.MyLha.LocLabel.size()-1;
    1289             : }
    1290             : #line 1291 "Lha-parser.cc" // lalr1.cc:859
    1291          27 :     break;
    1292             : 
    1293             :   case 85:
    1294             : #line 499 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1295             :     {Reader.MyLha.LocLabel.push_back(*(yystack_[0].value.name));
    1296             :         Reader.MyLha.LocIndex[*(yystack_[0].value.name)]=Reader.MyLha.LocLabel.size()-1;
    1297             : }
    1298             : #line 1299 "Lha-parser.cc" // lalr1.cc:859
    1299          58 :     break;
    1300             : 
    1301             :   case 89:
    1302             : #line 509 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1303             :     {
    1304             : 
    1305             :         if(Reader.MyLha.LocIndex.find(*(yystack_[0].value.name))!=Reader.MyLha.LocIndex.end())
    1306             :         Reader.MyLha.InitLoc.insert(Reader.MyLha.LocIndex[*(yystack_[0].value.name)]);
    1307             :         else cout<<"Unknown location:" << *(yystack_[0].value.name) <<endl;
    1308             : 
    1309             : 
    1310             : }
    1311             : #line 1312 "Lha-parser.cc" // lalr1.cc:859
    1312          27 :     break;
    1313             : 
    1314             :   case 90:
    1315             : #line 517 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1316             :     {if(Reader.MyLha.LocIndex.find(*(yystack_[0].value.name))!=Reader.MyLha.LocIndex.end())
    1317             :         Reader.MyLha.InitLoc.insert(Reader.MyLha.LocIndex[*(yystack_[0].value.name)]);
    1318             :         else cout<<"Unknown location:"<< *(yystack_[0].value.name) << endl;
    1319             : }
    1320             : #line 1321 "Lha-parser.cc" // lalr1.cc:859
    1321           0 :     break;
    1322             : 
    1323             :   case 92:
    1324             : #line 524 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1325             :     {
    1326             : 
    1327             :         if(Reader.MyLha.LocIndex.find(*(yystack_[0].value.name))!=Reader.MyLha.LocIndex.end())
    1328             :         Reader.MyLha.FinalLoc.insert(Reader.MyLha.LocIndex[*(yystack_[0].value.name)]);
    1329             :         else cout<<"Unknown location: "<< *(yystack_[0].value.name) <<endl;
    1330             : 
    1331             : 
    1332             : }
    1333             : #line 1334 "Lha-parser.cc" // lalr1.cc:859
    1334          27 :     break;
    1335             : 
    1336             :   case 93:
    1337             : #line 532 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1338             :     {if(Reader.MyLha.LocIndex.find(*(yystack_[0].value.name))!=Reader.MyLha.LocIndex.end())
    1339             :         Reader.MyLha.FinalLoc.insert(Reader.MyLha.LocIndex[*(yystack_[0].value.name)]);
    1340             :         else {cout<<"Unknown location: "<< *(yystack_[0].value.name) <<endl;YYABORT;}
    1341             : }
    1342             : #line 1343 "Lha-parser.cc" // lalr1.cc:859
    1343           8 :     break;
    1344             : 
    1345             :   case 96:
    1346             : #line 546 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1347             :     {
    1348             :         for(size_t l=0; l<Reader.MyLha.FuncLocProperty.size();l++)
    1349             :         if(Reader.MyLha.FuncLocProperty[l]=="")
    1350             :         {cout<<"Some locations are not definded. Please define all the declared locations."<<endl;
    1351             :                 YYABORT;}
    1352             : 
    1353             :         Reader.MyLha.Out_S_Edges.resize(Reader.MyLha.NbLoc);
    1354             :         Reader.MyLha.Out_A_Edges.resize(Reader.MyLha.NbLoc);
    1355             : }
    1356             : #line 1357 "Lha-parser.cc" // lalr1.cc:859
    1357          27 :     break;
    1358             : 
    1359             :   case 99:
    1360             : #line 560 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1361             :     {
    1362             :     auto loc = Reader.MyLha.LocIndex.find(*(yystack_[8].value.name));
    1363             :         if(loc !=Reader.MyLha.LocIndex.end()){
    1364             :                 Reader.MyLha.FuncLocProperty[loc->second]= (yystack_[6].value.expression);
    1365             :                 Reader.MyLha.FuncFlow[loc->second] = FuncFlowVector;
    1366             :         FuncFlowVector=vector<string>(Reader.MyLha.NbVar,"");
    1367             :         }
    1368             :         else {cout<<"Unknown location: "<< *(yystack_[8].value.name) <<endl;YYABORT;}
    1369             : 
    1370             : }
    1371             : #line 1372 "Lha-parser.cc" // lalr1.cc:859
    1372          41 :     break;
    1373             : 
    1374             :   case 100:
    1375             : #line 573 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1376             :     {
    1377             :     auto loc = Reader.MyLha.LocIndex.find(*(yystack_[4].value.name));
    1378             :         if(loc != Reader.MyLha.LocIndex.end()){
    1379             :                 Reader.MyLha.FuncLocProperty[loc->second]= (yystack_[2].value.expression);
    1380             :                 Reader.MyLha.FuncFlow[loc->second] = FuncFlowVector;
    1381             :         }
    1382             :         else {cout<<"Unknown location: "<< *(yystack_[4].value.name) <<endl;YYABORT;}
    1383             : 
    1384             : 
    1385             : }
    1386             : #line 1387 "Lha-parser.cc" // lalr1.cc:859
    1387          44 :     break;
    1388             : 
    1389             :   case 103:
    1390             : #line 586 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1391             :     {
    1392             :     if(Reader.MyLha.Vars.find(*(yystack_[2].value.name))!=Reader.MyLha.Vars.label.size())
    1393             :         FuncFlowVector[Reader.MyLha.Vars.find(*(yystack_[2].value.name))]=(yystack_[0].value.expression);
    1394             :         else{ cout<<"'"<<*(yystack_[2].value.name)<<"' is not an Lha variable"<<endl;
    1395             :                 YYABORT;}
    1396             : }
    1397             : #line 1398 "Lha-parser.cc" // lalr1.cc:859
    1398         143 :     break;
    1399             : 
    1400             :   case 104:
    1401             : #line 593 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1402             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"true");}
    1403             : #line 1404 "Lha-parser.cc" // lalr1.cc:859
    1404          44 :     break;
    1405             : 
    1406             :   case 105:
    1407             : #line 594 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1408             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"false");}
    1409             : #line 1410 "Lha-parser.cc" // lalr1.cc:859
    1410           0 :     break;
    1411             : 
    1412             :   case 106:
    1413             : #line 595 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1414             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s", (yystack_[0].value.expression));}
    1415             : #line 1416 "Lha-parser.cc" // lalr1.cc:859
    1416          75 :     break;
    1417             : 
    1418             :   case 107:
    1419             : #line 596 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1420             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s && %s", (yystack_[2].value.expression), (yystack_[0].value.expression));}
    1421             : #line 1422 "Lha-parser.cc" // lalr1.cc:859
    1422          28 :     break;
    1423             : 
    1424             :   case 108:
    1425             : #line 597 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1426             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s || %s", (yystack_[2].value.expression), (yystack_[0].value.expression));}
    1427             : #line 1428 "Lha-parser.cc" // lalr1.cc:859
    1428           6 :     break;
    1429             : 
    1430             :   case 109:
    1431             : #line 598 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1432             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"( %s )", (yystack_[1].value.expression));}
    1433             : #line 1434 "Lha-parser.cc" // lalr1.cc:859
    1434          63 :     break;
    1435             : 
    1436             :   case 110:
    1437             : #line 599 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1438             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"! %s", (yystack_[0].value.expression));}
    1439             : #line 1440 "Lha-parser.cc" // lalr1.cc:859
    1440           9 :     break;
    1441             : 
    1442             :   case 111:
    1443             : #line 601 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1444             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s == %s", (yystack_[2].value.expression), (yystack_[0].value.expression));}
    1445             : #line 1446 "Lha-parser.cc" // lalr1.cc:859
    1446          48 :     break;
    1447             : 
    1448             :   case 112:
    1449             : #line 602 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1450             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s <= %s", (yystack_[2].value.expression), (yystack_[0].value.expression));}
    1451             : #line 1452 "Lha-parser.cc" // lalr1.cc:859
    1452           0 :     break;
    1453             : 
    1454             :   case 113:
    1455             : #line 603 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1456             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s >= %s", (yystack_[2].value.expression), (yystack_[0].value.expression));}
    1457             : #line 1458 "Lha-parser.cc" // lalr1.cc:859
    1458           0 :     break;
    1459             : 
    1460             :   case 114:
    1461             : #line 604 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1462             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s < %s", (yystack_[2].value.expression), (yystack_[0].value.expression));}
    1463             : #line 1464 "Lha-parser.cc" // lalr1.cc:859
    1464           8 :     break;
    1465             : 
    1466             :   case 115:
    1467             : #line 605 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1468             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s > %s", (yystack_[2].value.expression), (yystack_[0].value.expression));}
    1469             : #line 1470 "Lha-parser.cc" // lalr1.cc:859
    1470          19 :     break;
    1471             : 
    1472             :   case 116:
    1473             : #line 610 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1474             :     {
    1475             : 
    1476             : }
    1477             : #line 1478 "Lha-parser.cc" // lalr1.cc:859
    1478          27 :     break;
    1479             : 
    1480             :   case 119:
    1481             : #line 617 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1482             :     {
    1483             : 
    1484             :         if(Reader.MyLha.LocIndex.find(*(yystack_[11].value.name))!=Reader.MyLha.LocIndex.end())
    1485             :         if(Reader.MyLha.LocIndex.find(*(yystack_[9].value.name))!=Reader.MyLha.LocIndex.end())
    1486             :         { int ne=Reader.MyLha.Edge.size();
    1487             :                 Reader.MyLha.AnEdge.Index=ne;
    1488             :                 Reader.MyLha.AnEdge.Source=Reader.MyLha.LocIndex[*(yystack_[11].value.name)];
    1489             :                 Reader.MyLha.AnEdge.Target=Reader.MyLha.LocIndex[*(yystack_[9].value.name)];
    1490             :                 Reader.MyLha.Edge.push_back(Reader.MyLha.AnEdge);
    1491             :                 Reader.MyLha.EdgeActions.push_back(SubSet);
    1492             :                 if(SubSet.size()>0) Reader.MyLha.Out_S_Edges[Reader.MyLha.AnEdge.Source].insert(ne);
    1493             :                 else Reader.MyLha.Out_A_Edges[Reader.MyLha.AnEdge.Source].insert(ne);
    1494             :                 SubSet.erase(SubSet.begin(),SubSet.end());
    1495             :                 Reader.MyLha.ConstraintsCoeffs.push_back(CoeffsMatrix);
    1496             :         Reader.MyLha.ConstraintsConstants.push_back(CST);
    1497             :                 Reader.MyLha.ConstraintsRelOp.push_back(comp);
    1498             :                 Reader.MyLha.unTimeEdgeConstraints.push_back("true");
    1499             :                 vector<string> vs;comp=vs;CST=vs;
    1500             :                 vector <vector <string> > ms;CoeffsMatrix=ms;
    1501             : 
    1502             :         }
    1503             :         else {cout<<*(yystack_[9].value.name)<<" is not a location label"<<endl;YYABORT;}
    1504             :         else  {cout<<*(yystack_[11].value.name)<<" is not a location label"<<endl;YYABORT;}
    1505             : }
    1506             : #line 1507 "Lha-parser.cc" // lalr1.cc:859
    1507         177 :     break;
    1508             : 
    1509             :   case 121:
    1510             : #line 643 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1511             :     {SubSet=PetriTransitions;}
    1512             : #line 1513 "Lha-parser.cc" // lalr1.cc:859
    1513          57 :     break;
    1514             : 
    1515             :   case 122:
    1516             : #line 644 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1517             :     {set<string> temp=PetriTransitions;
    1518             :         for(set<string>::iterator it=SubSet.begin();it!=SubSet.end();it++)
    1519             :         temp.erase((*it));
    1520             :         SubSet=temp;}
    1521             : #line 1522 "Lha-parser.cc" // lalr1.cc:859
    1522           0 :     break;
    1523             : 
    1524             :   case 125:
    1525             : #line 652 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1526             :     {if(Reader.MyLha.TransitionIndex.find(*(yystack_[0].value.name))!=Reader.MyLha.TransitionIndex.end())
    1527             :         SubSet.insert(*(yystack_[0].value.name));
    1528             :         else {cout<<*(yystack_[0].value.name)<<" is not a Petri-net transition "<<endl;YYABORT;}
    1529             : }
    1530             : #line 1531 "Lha-parser.cc" // lalr1.cc:859
    1531          84 :     break;
    1532             : 
    1533             :   case 126:
    1534             : #line 656 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1535             :     {if(Reader.MyLha.TransitionIndex.find(*(yystack_[0].value.name))!=Reader.MyLha.TransitionIndex.end())
    1536             :         SubSet.insert(*(yystack_[0].value.name));
    1537             :         else {cout<<*(yystack_[0].value.name)<<" is not a Petri-net transition "<<endl;YYABORT;}}
    1538             : #line 1539 "Lha-parser.cc" // lalr1.cc:859
    1539          40 :     break;
    1540             : 
    1541             :   case 127:
    1542             : #line 661 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1543             :     {}
    1544             : #line 1545 "Lha-parser.cc" // lalr1.cc:859
    1545         141 :     break;
    1546             : 
    1547             :   case 128:
    1548             : #line 662 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1549             :     {}
    1550             : #line 1551 "Lha-parser.cc" // lalr1.cc:859
    1551           0 :     break;
    1552             : 
    1553             :   case 130:
    1554             : #line 666 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1555             :     {CoeffsMatrix.push_back(CoeffsVector);
    1556             :         comp.push_back("==");
    1557             :         CST.push_back((yystack_[0].value.expression));
    1558             :         vector<string> vs(Reader.MyLha.NbVar,"");CoeffsVector=vs;}
    1559             : #line 1560 "Lha-parser.cc" // lalr1.cc:859
    1560          37 :     break;
    1561             : 
    1562             :   case 131:
    1563             : #line 671 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1564             :     {CoeffsMatrix.push_back(CoeffsVector);
    1565             :         comp.push_back("<=");
    1566             :         CST.push_back((yystack_[0].value.expression));
    1567             :         vector<string> vs(Reader.MyLha.NbVar,"");CoeffsVector=vs;}
    1568             : #line 1569 "Lha-parser.cc" // lalr1.cc:859
    1569         103 :     break;
    1570             : 
    1571             :   case 132:
    1572             : #line 676 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1573             :     {CoeffsMatrix.push_back(CoeffsVector);
    1574             :         comp.push_back(">=");
    1575             :         CST.push_back((yystack_[0].value.expression));
    1576             :         vector<string> vs(Reader.MyLha.NbVar,"");CoeffsVector=vs;}
    1577             : #line 1578 "Lha-parser.cc" // lalr1.cc:859
    1578           1 :     break;
    1579             : 
    1580             :   case 136:
    1581             : #line 686 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1582             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    1583             :         {CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]="1";}
    1584             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    1585             : #line 1586 "Lha-parser.cc" // lalr1.cc:859
    1586         141 :     break;
    1587             : 
    1588             :   case 137:
    1589             : #line 690 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1590             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    1591             :         {std::ostringstream s; s<<"("<<(yystack_[3].value.expression)<<")";
    1592             :                 CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]=s.str();}
    1593             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    1594             : #line 1595 "Lha-parser.cc" // lalr1.cc:859
    1595           0 :     break;
    1596             : 
    1597             :   case 138:
    1598             : #line 695 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1599             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    1600             :         {std::ostringstream s; s<<(yystack_[2].value.IntVal);
    1601             :                 CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]=s.str();}
    1602             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    1603             : #line 1604 "Lha-parser.cc" // lalr1.cc:859
    1604           0 :     break;
    1605             : 
    1606             :   case 139:
    1607             : #line 700 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1608             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    1609             :         {std::ostringstream s; s<<(yystack_[2].value.RealVal);
    1610             :                 CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]=s.str();}
    1611             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    1612             : #line 1613 "Lha-parser.cc" // lalr1.cc:859
    1613           0 :     break;
    1614             : 
    1615             :   case 140:
    1616             : #line 705 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1617             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    1618             :         {if(Reader.MyLha.LhaRealConstant.find(*(yystack_[2].value.name))!=Reader.MyLha.LhaRealConstant.end())
    1619             :                 {std::ostringstream s; s<<Reader.MyLha.LhaRealConstant[*(yystack_[2].value.name)];
    1620             :                         CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]=s.str();
    1621             :                 }
    1622             :                 else
    1623             :                 {
    1624             :                         if(Reader.MyLha.PlaceIndex.find(*(yystack_[2].value.name))!=Reader.MyLha.PlaceIndex.end())
    1625             :                         {std::ostringstream s; s<<"Marking.P->_PL_"<<(yystack_[2].value.name)->c_str()<<" ";
    1626             :                                 CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]=s.str();
    1627             :                         }
    1628             :                         else
    1629             :                         {
    1630             :                                 cout<<*(yystack_[2].value.name)<<" is not Petri-net Place or a defined constant "<<endl;
    1631             :                                 YYABORT;
    1632             :                         }
    1633             :                 }
    1634             :         }
    1635             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}
    1636             : }
    1637             : #line 1638 "Lha-parser.cc" // lalr1.cc:859
    1638           0 :     break;
    1639             : 
    1640             :   case 141:
    1641             : #line 726 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1642             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    1643             :         {CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]="-1";}
    1644             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    1645             : #line 1646 "Lha-parser.cc" // lalr1.cc:859
    1646           0 :     break;
    1647             : 
    1648             :   case 142:
    1649             : #line 730 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1650             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    1651             :         {std::ostringstream s; s<<"-("<<(yystack_[3].value.expression)<<")";
    1652             :                 CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]=s.str();}
    1653             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    1654             : #line 1655 "Lha-parser.cc" // lalr1.cc:859
    1655           0 :     break;
    1656             : 
    1657             :   case 143:
    1658             : #line 735 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1659             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    1660             :         {std::ostringstream s; s<<"-"<<(yystack_[2].value.IntVal);
    1661             :                 CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]=s.str();}
    1662             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    1663             : #line 1664 "Lha-parser.cc" // lalr1.cc:859
    1664           0 :     break;
    1665             : 
    1666             :   case 144:
    1667             : #line 740 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1668             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    1669             :         {std::ostringstream s; s<<"-"<<(yystack_[2].value.RealVal);
    1670             :                 CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]=s.str();}
    1671             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    1672             : #line 1673 "Lha-parser.cc" // lalr1.cc:859
    1673           0 :     break;
    1674             : 
    1675             :   case 145:
    1676             : #line 745 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1677             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    1678             :         {if(Reader.MyLha.LhaRealConstant.find(*(yystack_[2].value.name))!=Reader.MyLha.LhaRealConstant.end())
    1679             :                 {std::ostringstream s; s<<"-"<<Reader.MyLha.LhaRealConstant[*(yystack_[2].value.name)];
    1680             :                         CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]=s.str();
    1681             :                 }
    1682             :                 else
    1683             :                 {
    1684             :                         if(Reader.MyLha.PlaceIndex.find(*(yystack_[2].value.name))!=Reader.MyLha.PlaceIndex.end())
    1685             :                         {std::ostringstream s; s<<"-Marking.P->_PL_"<<(yystack_[2].value.name)->c_str()<<" ";
    1686             :                                 CoeffsVector[Reader.MyLha.Vars.find(*(yystack_[0].value.name))]=s.str();
    1687             :                         }
    1688             :                         else
    1689             :                         {
    1690             :                                 cout<<*(yystack_[2].value.name)<<" is not Petri-net Place or a defined constant "<<endl;
    1691             :                                 YYABORT;
    1692             :                         }
    1693             :                 }
    1694             :         }
    1695             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}
    1696             : }
    1697             : #line 1698 "Lha-parser.cc" // lalr1.cc:859
    1698           0 :     break;
    1699             : 
    1700             :   case 146:
    1701             : #line 767 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1702             :     {
    1703             :     Reader.MyLha.FuncEdgeUpdates.push_back(FuncUpdateVector);
    1704             :     Reader.MyLha.FuncEdgeUpdatesIndex.push_back(FuncUpdateVectorIndex);
    1705             :     FuncUpdateVector=vector<string>(Reader.MyLha.NbVar,"");
    1706             :     FuncUpdateVectorIndex=vector<string>(Reader.MyLha.NbVar,"");
    1707             : }
    1708             : #line 1709 "Lha-parser.cc" // lalr1.cc:859
    1709         116 :     break;
    1710             : 
    1711             :   case 147:
    1712             : #line 773 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1713             :     {
    1714             :     Reader.MyLha.FuncEdgeUpdates.push_back(FuncUpdateVector);
    1715             :     Reader.MyLha.FuncEdgeUpdatesIndex.push_back(FuncUpdateVectorIndex);
    1716             : }
    1717             : #line 1718 "Lha-parser.cc" // lalr1.cc:859
    1718          61 :     break;
    1719             : 
    1720             :   case 150:
    1721             : #line 781 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1722             :     {
    1723             :         if(Reader.MyLha.Vars.find(*(yystack_[2].value.name))!=Reader.MyLha.Vars.label.size())
    1724             :     {FuncUpdateVector[Reader.MyLha.Vars.find(*(yystack_[2].value.name))]= (yystack_[0].value.expression);}
    1725             :         else{cout<<*(yystack_[2].value.name)<<" is not  variable label"<<endl;YYABORT;}
    1726             : }
    1727             : #line 1728 "Lha-parser.cc" // lalr1.cc:859
    1728         204 :     break;
    1729             : 
    1730             :   case 151:
    1731             : #line 786 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1732             :     {
    1733             :     size_t varin = Reader.MyLha.Vars.find(*(yystack_[5].value.name));
    1734             :         if(varin != Reader.MyLha.Vars.label.size()){
    1735             :         FuncUpdateVector[varin]= (yystack_[0].value.expression);
    1736             :         FuncUpdateVectorIndex[varin]= (yystack_[3].value.expression);
    1737             :         //cout << "var:" << *$1 << "\tindex:" << $3 << "\tupdate:" << $6<< endl;
    1738             :     }else{cout<<*(yystack_[5].value.name)<<" is not  variable label"<<endl;YYABORT;}
    1739             : }
    1740             : #line 1741 "Lha-parser.cc" // lalr1.cc:859
    1741           0 :     break;
    1742             : 
    1743             :   case 154:
    1744             : #line 800 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1745             :     {
    1746             :         if((yystack_[1].value.TOPHASL) != NULL){
    1747             :                 Reader.MyLha.HASLname.push_back(*(yystack_[3].value.name));
    1748             :                 Reader.MyLha.HASLtop.push_back((yystack_[1].value.TOPHASL));
    1749             :         }else{
    1750             :                 for(vector<string>::iterator it = Reader.MyLha.HASLname.begin(); it <Reader.MyLha.HASLname.end() ; it++){
    1751             :                         if( it->find("$_$") == 0)
    1752             :                                 it->replace(0,3,*(yystack_[3].value.name));
    1753             :                 }
    1754             :         }
    1755             : }
    1756             : #line 1757 "Lha-parser.cc" // lalr1.cc:859
    1757         196 :     break;
    1758             : 
    1759             :   case 155:
    1760             : #line 811 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1761             :     {
    1762             :         if((yystack_[1].value.TOPHASL) != NULL){
    1763             :                 Reader.MyLha.HASLname.push_back("");
    1764             :                 Reader.MyLha.HASLtop.push_back((yystack_[1].value.TOPHASL));
    1765             :         }else{
    1766             :                 for(vector<string>::iterator it = Reader.MyLha.HASLname.begin(); it <Reader.MyLha.HASLname.end() ; it++){
    1767             :                         if( it->find("$_$") == 0)
    1768             :                                 it->replace(0,3,"");
    1769             :                 }
    1770             :         }
    1771             : }
    1772             : #line 1773 "Lha-parser.cc" // lalr1.cc:859
    1773          10 :     break;
    1774             : 
    1775             :   case 156:
    1776             : #line 824 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1777             :     {(yylhs.value.RealVal)=(yystack_[0].value.RealVal);}
    1778             : #line 1779 "Lha-parser.cc" // lalr1.cc:859
    1779           0 :     break;
    1780             : 
    1781             :   case 157:
    1782             : #line 825 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1783             :     {(yylhs.value.RealVal)=(double)(yystack_[0].value.IntVal);}
    1784             : #line 1785 "Lha-parser.cc" // lalr1.cc:859
    1785           0 :     break;
    1786             : 
    1787             :   case 158:
    1788             : #line 826 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1789             :     { if(Reader.MyLha.LhaRealConstant.find(*(yystack_[0].value.name))!=Reader.MyLha.LhaRealConstant.end())
    1790             :                         (yylhs.value.RealVal) = Reader.MyLha.LhaRealConstant[*(yystack_[0].value.name)];
    1791             :                 else { if(Reader.MyLha.LhaIntConstant.find(*(yystack_[0].value.name))!=Reader.MyLha.LhaIntConstant.end())
    1792             :                         (yylhs.value.RealVal) = (double)Reader.MyLha.LhaIntConstant[*(yystack_[0].value.name)];
    1793             :                 else {
    1794             :                         cout<<*(yystack_[0].value.name)<<" is not a definded constant "<<endl;
    1795             :                         YYABORT;
    1796             :                 }}}
    1797             : #line 1798 "Lha-parser.cc" // lalr1.cc:859
    1798           0 :     break;
    1799             : 
    1800             :   case 159:
    1801             : #line 836 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1802             :     {
    1803             :         Reader.MyLha.Algebraic.push_back((yystack_[1].value.expression));
    1804             :         (yylhs.value.TOPHASL) = new HaslFormulasTop((size_t)Reader.MyLha.Algebraic.size()-1);
    1805             : }
    1806             : #line 1807 "Lha-parser.cc" // lalr1.cc:859
    1807         197 :     break;
    1808             : 
    1809             :   case 160:
    1810             : #line 840 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1811             :     {
    1812             :         (yylhs.value.TOPHASL) = new HaslFormulasTop(PROBABILITY);
    1813             : }
    1814             : #line 1815 "Lha-parser.cc" // lalr1.cc:859
    1815           9 :     break;
    1816             : 
    1817             :   case 161:
    1818             : #line 843 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1819             :     {
    1820             :     (yylhs.value.TOPHASL) = new HaslFormulasTop(PROBABILITY);
    1821             : }
    1822             : #line 1823 "Lha-parser.cc" // lalr1.cc:859
    1823           0 :     break;
    1824             : 
    1825             :   case 162:
    1826             : #line 846 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1827             :     {
    1828             :     Reader.MyLha.FinalStateCond.push_back(*(yystack_[1].value.name));
    1829             :     (yylhs.value.TOPHASL) = new HaslFormulasTop(PROBCOND,(size_t)Reader.MyLha.FinalStateCond.size()-1);
    1830             : }
    1831             : #line 1832 "Lha-parser.cc" // lalr1.cc:859
    1832           0 :     break;
    1833             : 
    1834             :   case 163:
    1835             : #line 850 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1836             :     {
    1837             :     (yylhs.value.TOPHASL) = new HaslFormulasTop(EXISTS);
    1838             : }
    1839             : #line 1840 "Lha-parser.cc" // lalr1.cc:859
    1840           0 :     break;
    1841             : 
    1842             :   case 164:
    1843             : #line 853 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1844             :     {
    1845             :     (yylhs.value.TOPHASL) = new HaslFormulasTop(NOTALLS);
    1846             : }
    1847             : #line 1848 "Lha-parser.cc" // lalr1.cc:859
    1848           0 :     break;
    1849             : 
    1850             :   case 165:
    1851             : #line 856 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1852             :     {
    1853             :         (yylhs.value.TOPHASL) = new HaslFormulasTop((yystack_[3].value.RealVal),(yystack_[1].value.RealVal));
    1854             : }
    1855             : #line 1856 "Lha-parser.cc" // lalr1.cc:859
    1856           0 :     break;
    1857             : 
    1858             :   case 166:
    1859             : #line 859 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1860             :     {
    1861             : 
    1862             :         for(double bucket = (yystack_[3].value.RealVal) ; bucket < (yystack_[1].value.RealVal) ; bucket+= (yystack_[5].value.RealVal)){
    1863             :                 std::ostringstream algPDF;
    1864             :                 algPDF << "(("<<(yystack_[7].value.expression)<<" >= "<<bucket<<"&& "<<(yystack_[7].value.expression)<<"<"<<bucket+(yystack_[5].value.RealVal)<<") ? 1:0)";
    1865             : 
    1866             :                 Reader.MyLha.Algebraic.push_back(algPDF.str());
    1867             :                 Reader.MyLha.HASLtop.push_back(
    1868             :                         new HaslFormulasTop((size_t)Reader.MyLha.Algebraic.size()-1));
    1869             :                 Reader.MyLha.HASLtop.back()->TypeOp = PDF_PART;
    1870             :                 std::ostringstream s; s<<"$_$: Value in ["<< bucket<< " , "<<bucket+(yystack_[5].value.RealVal)<<"]";
    1871             :                 Reader.MyLha.HASLname.push_back(s.str());
    1872             :         }
    1873             :         (yylhs.value.TOPHASL) = NULL;
    1874             : }
    1875             : #line 1876 "Lha-parser.cc" // lalr1.cc:859
    1876           0 :     break;
    1877             : 
    1878             :   case 167:
    1879             : #line 874 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1880             :     {
    1881             : 
    1882             :         for(double bucket = (yystack_[3].value.RealVal) ; bucket < (yystack_[1].value.RealVal) ; bucket+= (yystack_[5].value.RealVal)){
    1883             :                 std::ostringstream algCDF;
    1884             :                 algCDF << "(("<<(yystack_[7].value.expression)<<" <= "<<bucket<<") ? 1:0)";
    1885             : 
    1886             :                 Reader.MyLha.Algebraic.push_back(algCDF.str());
    1887             :                 Reader.MyLha.HASLtop.push_back(
    1888             :                 new HaslFormulasTop((size_t)Reader.MyLha.Algebraic.size()-1));
    1889             :                 Reader.MyLha.HASLtop.back()->TypeOp = CDF_PART;
    1890             :                 std::ostringstream s; s<<"$_$: Value in [-infinity , "<< bucket<<"]";
    1891             :                 Reader.MyLha.HASLname.push_back(s.str());
    1892             :         }
    1893             :         (yylhs.value.TOPHASL) = NULL;
    1894             : }
    1895             : #line 1896 "Lha-parser.cc" // lalr1.cc:859
    1896           0 :     break;
    1897             : 
    1898             :   case 168:
    1899             : #line 889 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1900             :     {
    1901             :         Reader.MyLha.Algebraic.push_back((yystack_[1].value.expression));
    1902             :         char tmp[5000];
    1903             :         snprintf(tmp,BUFF_SIZE,"(%s * %s)", (yystack_[1].value.expression),(yystack_[1].value.expression));
    1904             :         Reader.MyLha.Algebraic.push_back(tmp);
    1905             :         (yylhs.value.TOPHASL) = new HaslFormulasTop(HASL_MINUS,
    1906             :                 new HaslFormulasTop((size_t)Reader.MyLha.Algebraic.size()-1),
    1907             :                 new HaslFormulasTop(HASL_TIME,
    1908             :                         new HaslFormulasTop((size_t)Reader.MyLha.Algebraic.size()-2),
    1909             :                         new HaslFormulasTop((size_t)Reader.MyLha.Algebraic.size()-2)));
    1910             : }
    1911             : #line 1912 "Lha-parser.cc" // lalr1.cc:859
    1912           0 :     break;
    1913             : 
    1914             :   case 169:
    1915             : #line 900 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1916             :     {
    1917             :         (yylhs.value.TOPHASL) = (yystack_[1].value.TOPHASL);
    1918             : }
    1919             : #line 1920 "Lha-parser.cc" // lalr1.cc:859
    1920           1 :     break;
    1921             : 
    1922             :   case 170:
    1923             : #line 903 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1924             :     {
    1925             :         (yylhs.value.TOPHASL) = new HaslFormulasTop(HASL_PLUS, (yystack_[2].value.TOPHASL),(yystack_[0].value.TOPHASL));
    1926             : }
    1927             : #line 1928 "Lha-parser.cc" // lalr1.cc:859
    1928           1 :     break;
    1929             : 
    1930             :   case 171:
    1931             : #line 906 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1932             :     {
    1933             :         (yylhs.value.TOPHASL) = new HaslFormulasTop(HASL_MINUS, (yystack_[2].value.TOPHASL),(yystack_[0].value.TOPHASL));
    1934             : }
    1935             : #line 1936 "Lha-parser.cc" // lalr1.cc:859
    1936           0 :     break;
    1937             : 
    1938             :   case 172:
    1939             : #line 909 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1940             :     {
    1941             :         (yylhs.value.TOPHASL) = new HaslFormulasTop(HASL_TIME, (yystack_[2].value.TOPHASL), (yystack_[0].value.TOPHASL));
    1942             : }
    1943             : #line 1944 "Lha-parser.cc" // lalr1.cc:859
    1944           1 :     break;
    1945             : 
    1946             :   case 173:
    1947             : #line 912 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1948             :     {
    1949             :         (yylhs.value.TOPHASL) = new HaslFormulasTop(HASL_DIV, (yystack_[2].value.TOPHASL),(yystack_[0].value.TOPHASL));
    1950             : }
    1951             : #line 1952 "Lha-parser.cc" // lalr1.cc:859
    1952           1 :     break;
    1953             : 
    1954             :   case 174:
    1955             : #line 915 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1956             :     {
    1957             :         (yylhs.value.TOPHASL) = new HaslFormulasTop((double)(yystack_[0].value.IntVal),0.0,1.0);
    1958             : }
    1959             : #line 1960 "Lha-parser.cc" // lalr1.cc:859
    1960           3 :     break;
    1961             : 
    1962             :   case 175:
    1963             : #line 918 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1964             :     {
    1965             :         (yylhs.value.TOPHASL) = new HaslFormulasTop((double)(yystack_[0].value.RealVal),0.0,1.0);
    1966             : }
    1967             : #line 1968 "Lha-parser.cc" // lalr1.cc:859
    1968           0 :     break;
    1969             : 
    1970             :   case 176:
    1971             : #line 922 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1972             :     {string ss=(yystack_[0].value.expression);
    1973             :         snprintf((yylhs.value.expression),BUFF_SIZE,"LhaFunc[%d]", Reader.MyLha.LhaFunction[ss]);
    1974             : }
    1975             : #line 1976 "Lha-parser.cc" // lalr1.cc:859
    1976         197 :     break;
    1977             : 
    1978             :   case 177:
    1979             : #line 925 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1980             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"min(%s,%s)", (yystack_[3].value.expression),(yystack_[1].value.expression));}
    1981             : #line 1982 "Lha-parser.cc" // lalr1.cc:859
    1982           0 :     break;
    1983             : 
    1984             :   case 178:
    1985             : #line 926 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1986             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"max(%s,%s)", (yystack_[3].value.expression),(yystack_[1].value.expression));}
    1987             : #line 1988 "Lha-parser.cc" // lalr1.cc:859
    1988           0 :     break;
    1989             : 
    1990             :   case 179:
    1991             : #line 927 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1992             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"-%s", (yystack_[0].value.expression));}
    1993             : #line 1994 "Lha-parser.cc" // lalr1.cc:859
    1994           0 :     break;
    1995             : 
    1996             :   case 180:
    1997             : #line 928 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    1998             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"floor(%s)", (yystack_[1].value.expression));}
    1999             : #line 2000 "Lha-parser.cc" // lalr1.cc:859
    2000           0 :     break;
    2001             : 
    2002             :   case 181:
    2003             : #line 929 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2004             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"(%s)", (yystack_[1].value.expression));}
    2005             : #line 2006 "Lha-parser.cc" // lalr1.cc:859
    2006           0 :     break;
    2007             : 
    2008             :   case 182:
    2009             : #line 930 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2010             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"pow(%s , %s)", (yystack_[2].value.expression),(yystack_[0].value.expression));}
    2011             : #line 2012 "Lha-parser.cc" // lalr1.cc:859
    2012           0 :     break;
    2013             : 
    2014             :   case 183:
    2015             : #line 931 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2016             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"(%s + %s)", (yystack_[2].value.expression),(yystack_[0].value.expression));}
    2017             : #line 2018 "Lha-parser.cc" // lalr1.cc:859
    2018           0 :     break;
    2019             : 
    2020             :   case 184:
    2021             : #line 932 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2022             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"(%s - %s)", (yystack_[2].value.expression),(yystack_[0].value.expression));}
    2023             : #line 2024 "Lha-parser.cc" // lalr1.cc:859
    2024           0 :     break;
    2025             : 
    2026             :   case 185:
    2027             : #line 933 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2028             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"(%s * %s)", (yystack_[2].value.expression),(yystack_[0].value.expression));}
    2029             : #line 2030 "Lha-parser.cc" // lalr1.cc:859
    2030           0 :     break;
    2031             : 
    2032             :   case 186:
    2033             : #line 934 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2034             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"(%s / %s)", (yystack_[2].value.expression),(yystack_[0].value.expression));}
    2035             : #line 2036 "Lha-parser.cc" // lalr1.cc:859
    2036           0 :     break;
    2037             : 
    2038             :   case 187:
    2039             : #line 936 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2040             :     {std::ostringstream s; s<<(yystack_[1].value.expression);
    2041             :         if(Reader.MyLha.LinearForm.find(s.str())==Reader.MyLha.LinearForm.end())
    2042             :         {int i=Reader.MyLha.LinearForm.size();Reader.MyLha.LinearForm[s.str()]=i;}
    2043             :         Reader.MyLha.LhaFuncArg.push_back(Reader.MyLha.LinearForm[s.str()]);
    2044             :         Reader.MyLha.LhaFuncType.push_back("Last");
    2045             :         string ss="Last("; ss.append(s.str()); ss.append(")");
    2046             :         if(Reader.MyLha.LhaFunction.find(ss)==Reader.MyLha.LhaFunction.end())
    2047             :         {int i=Reader.MyLha.LhaFunction.size();Reader.MyLha.LhaFunction[ss]=i;}
    2048             :         snprintf((yylhs.value.expression),BUFF_SIZE,"%s", ss.c_str());
    2049             : }
    2050             : #line 2051 "Lha-parser.cc" // lalr1.cc:859
    2051         196 :     break;
    2052             : 
    2053             :   case 188:
    2054             : #line 946 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2055             :     {std::ostringstream s; s<<(yystack_[1].value.expression);
    2056             :         if(Reader.MyLha.LinearForm.find(s.str())==Reader.MyLha.LinearForm.end())
    2057             :         {int i=Reader.MyLha.LinearForm.size();Reader.MyLha.LinearForm[s.str()]=i;}
    2058             :         Reader.MyLha.LhaFuncArg.push_back(Reader.MyLha.LinearForm[s.str()]);
    2059             :         Reader.MyLha.LhaFuncType.push_back("Min");
    2060             :         string ss="Min("; ss.append(s.str()); ss.append(")");
    2061             :         if(Reader.MyLha.LhaFunction.find(ss)==Reader.MyLha.LhaFunction.end())
    2062             :         {int i=Reader.MyLha.LhaFunction.size();Reader.MyLha.LhaFunction[ss]=i;}
    2063             :         snprintf((yylhs.value.expression),BUFF_SIZE,"%s", ss.c_str());
    2064             : }
    2065             : #line 2066 "Lha-parser.cc" // lalr1.cc:859
    2066           0 :     break;
    2067             : 
    2068             :   case 189:
    2069             : #line 956 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2070             :     {std::ostringstream s; s<<(yystack_[1].value.expression);
    2071             :         if(Reader.MyLha.LinearForm.find(s.str())==Reader.MyLha.LinearForm.end())
    2072             :         {int i=Reader.MyLha.LinearForm.size();Reader.MyLha.LinearForm[s.str()]=i;}
    2073             :         Reader.MyLha.LhaFuncArg.push_back(Reader.MyLha.LinearForm[s.str()]);
    2074             :         Reader.MyLha.LhaFuncType.push_back("Max");
    2075             :         string ss="Max("; ss.append(s.str()); ss.append(")");
    2076             :         if(Reader.MyLha.LhaFunction.find(ss)==Reader.MyLha.LhaFunction.end())
    2077             :         {int i=Reader.MyLha.LhaFunction.size();Reader.MyLha.LhaFunction[ss]=i;}
    2078             :         snprintf((yylhs.value.expression),BUFF_SIZE,"%s", ss.c_str());
    2079             : }
    2080             : #line 2081 "Lha-parser.cc" // lalr1.cc:859
    2081           1 :     break;
    2082             : 
    2083             :   case 190:
    2084             : #line 966 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2085             :     {std::ostringstream s; s<<(yystack_[1].value.expression);
    2086             :         if(Reader.MyLha.LinearForm.find(s.str())==Reader.MyLha.LinearForm.end())
    2087             :         {int i=Reader.MyLha.LinearForm.size();Reader.MyLha.LinearForm[s.str()]=i;}
    2088             :         Reader.MyLha.LhaFuncArg.push_back(Reader.MyLha.LinearForm[s.str()]);
    2089             :         Reader.MyLha.LhaFuncType.push_back("Integral");
    2090             :         string ss="Integral("; ss.append(s.str()); ss.append(")");
    2091             :         if(Reader.MyLha.LhaFunction.find(ss)==Reader.MyLha.LhaFunction.end())
    2092             :         {int i=Reader.MyLha.LhaFunction.size();Reader.MyLha.LhaFunction[ss]=i;}
    2093             :         snprintf((yylhs.value.expression),BUFF_SIZE,"%s", ss.c_str());
    2094             : }
    2095             : #line 2096 "Lha-parser.cc" // lalr1.cc:859
    2096           0 :     break;
    2097             : 
    2098             :   case 191:
    2099             : #line 976 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2100             :     {std::ostringstream s; s<<(yystack_[1].value.expression);
    2101             :                 if(Reader.MyLha.LinearForm.find(s.str())==Reader.MyLha.LinearForm.end())
    2102             :                 {int i=Reader.MyLha.LinearForm.size();Reader.MyLha.LinearForm[s.str()]=i;}
    2103             :                 Reader.MyLha.LhaFuncArg.push_back(Reader.MyLha.LinearForm[s.str()]);
    2104             :                 Reader.MyLha.LhaFuncType.push_back("Mean");
    2105             :                 string ss="Mean("; ss.append(s.str()); ss.append(")");
    2106             :                 if(Reader.MyLha.LhaFunction.find(ss)==Reader.MyLha.LhaFunction.end())
    2107             :                 {int i=Reader.MyLha.LhaFunction.size();Reader.MyLha.LhaFunction[ss]=i;}
    2108             :                 snprintf((yylhs.value.expression),BUFF_SIZE,"%s", ss.c_str());
    2109             : }
    2110             : #line 2111 "Lha-parser.cc" // lalr1.cc:859
    2111           0 :     break;
    2112             : 
    2113             :   case 192:
    2114             : #line 987 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2115             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s", (yystack_[0].value.expression));  }
    2116             : #line 2117 "Lha-parser.cc" // lalr1.cc:859
    2117         197 :     break;
    2118             : 
    2119             :   case 193:
    2120             : #line 988 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2121             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s - %s", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
    2122             : #line 2123 "Lha-parser.cc" // lalr1.cc:859
    2123           0 :     break;
    2124             : 
    2125             :   case 194:
    2126             : #line 989 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2127             :     {snprintf((yylhs.value.expression),BUFF_SIZE,"%s + %s", (yystack_[2].value.expression), (yystack_[0].value.expression));  }
    2128             : #line 2129 "Lha-parser.cc" // lalr1.cc:859
    2129           0 :     break;
    2130             : 
    2131             :   case 195:
    2132             : #line 993 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2133             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    2134             :         {snprintf((yylhs.value.expression),BUFF_SIZE,"Vars->%s", (yystack_[0].value.name)->c_str());}
    2135             :     else if(Reader.MyLha.LhaRealHybrid.find(*(yystack_[0].value.name))!=Reader.MyLha.LhaRealHybrid.end())
    2136             :     {snprintf((yylhs.value.expression),BUFF_SIZE," hybridVar::%s",(yystack_[0].value.name)->c_str());}
    2137             :         else if(Reader.MyLha.PlaceIndex.find(*(yystack_[0].value.name))!=Reader.MyLha.PlaceIndex.end())
    2138             :         {std::ostringstream s; s<<" Marking.P->_PL_"<< (yystack_[0].value.name)->c_str();
    2139             :                         if(Reader.MyLha.MyGspn->placeStruct[Reader.MyLha.PlaceIndex[*(yystack_[0].value.name)]].colorDom !=0 )s <<".card()";
    2140             :                 snprintf((yylhs.value.expression),BUFF_SIZE, "%s ",(s.str()).c_str());
    2141             :         } else {cout<<*(yystack_[0].value.name)<<" is not a Hybrid variable, a Lha variable or a place name"<<endl;YYABORT;}
    2142             : }
    2143             : #line 2144 "Lha-parser.cc" // lalr1.cc:859
    2144         197 :     break;
    2145             : 
    2146             :   case 196:
    2147             : #line 1003 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2148             :     {
    2149             :     if(Reader.MyLha.PlaceIndex.find(*(yystack_[1].value.name))!=Reader.MyLha.PlaceIndex.end())
    2150             :     {std::ostringstream s; s<<" Marking.P->_PL_"<<(yystack_[1].value.name)->c_str();
    2151             :         if(Reader.MyLha.MyGspn->placeStruct[Reader.MyLha.PlaceIndex[*(yystack_[1].value.name)]].colorDom !=0 )s <<".value()";
    2152             :         snprintf((yylhs.value.expression),BUFF_SIZE, "%s ",(s.str()).c_str());
    2153             :     }
    2154             :     else {cout<<"'"<<*(yystack_[1].value.name)<<"' is not a place label"<<endl;YYABORT;}}
    2155             : #line 2156 "Lha-parser.cc" // lalr1.cc:859
    2156           0 :     break;
    2157             : 
    2158             :   case 197:
    2159             : #line 1010 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2160             :     {
    2161             :     if(Reader.MyLha.Vars.find(*(yystack_[3].value.name))!=Reader.MyLha.Vars.label.size()){
    2162             :         snprintf((yylhs.value.expression),BUFF_SIZE,"Vars->%s[%s]", (yystack_[3].value.name)->c_str(), (yystack_[1].value.expression));
    2163             :         } else {cout<<*(yystack_[3].value.name)<<" is not a Lha array variable "<<endl;YYABORT;}
    2164             : }
    2165             : #line 2166 "Lha-parser.cc" // lalr1.cc:859
    2166           0 :     break;
    2167             : 
    2168             :   case 198:
    2169             : #line 1018 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2170             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    2171             :         {snprintf((yylhs.value.expression),BUFF_SIZE,"(%s) * Vars->%s", (yystack_[3].value.expression), (yystack_[0].value.name)->c_str());
    2172             :         }
    2173             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    2174             : #line 2175 "Lha-parser.cc" // lalr1.cc:859
    2175           0 :     break;
    2176             : 
    2177             :   case 199:
    2178             : #line 1023 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2179             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    2180             :         {snprintf((yylhs.value.expression),BUFF_SIZE,"%d * Vars->%s", (yystack_[2].value.IntVal), (yystack_[0].value.name)->c_str());
    2181             :         }
    2182             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    2183             : #line 2184 "Lha-parser.cc" // lalr1.cc:859
    2184           0 :     break;
    2185             : 
    2186             :   case 200:
    2187             : #line 1028 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2188             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    2189             :         {snprintf((yylhs.value.expression),BUFF_SIZE,"%f * Vars->%s", (yystack_[2].value.RealVal), (yystack_[0].value.name)->c_str());
    2190             :         }
    2191             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    2192             : #line 2193 "Lha-parser.cc" // lalr1.cc:859
    2193           0 :     break;
    2194             : 
    2195             :   case 201:
    2196             : #line 1034 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2197             :     { sprintf((yylhs.value.expression),"%i ", (yystack_[0].value.IntVal));
    2198             : }
    2199             : #line 2200 "Lha-parser.cc" // lalr1.cc:859
    2200           0 :     break;
    2201             : 
    2202             :   case 202:
    2203             : #line 1037 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2204             :     { sprintf((yylhs.value.expression),"%f ", (yystack_[0].value.RealVal));}
    2205             : #line 2206 "Lha-parser.cc" // lalr1.cc:859
    2206           0 :     break;
    2207             : 
    2208             :   case 203:
    2209             : #line 1040 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2210             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    2211             :         {if(Reader.MyLha.LhaRealConstant.find(*(yystack_[2].value.name))!=Reader.MyLha.LhaRealConstant.end())
    2212             :                 {snprintf((yylhs.value.expression),BUFF_SIZE,"%f * Vars->%s", Reader.MyLha.LhaRealConstant[*(yystack_[2].value.name)],(yystack_[0].value.name)->c_str());
    2213             :                 }
    2214             :                 else
    2215             :                 {
    2216             :                         if(Reader.MyLha.PlaceIndex.find(*(yystack_[2].value.name))!=Reader.MyLha.PlaceIndex.end())
    2217             :                         {snprintf((yylhs.value.expression),BUFF_SIZE,"Marking.P->_PL_%s * Vars->%s", (yystack_[2].value.name)->c_str() ,(yystack_[0].value.name)->c_str());
    2218             :                         }
    2219             :                         else
    2220             :                         {
    2221             :                                 cout<<*(yystack_[2].value.name)<<" is not Petri-net Place or a definded constant "<<endl;
    2222             :                                 YYABORT;
    2223             :                         }
    2224             :                 }
    2225             :         }
    2226             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}
    2227             : }
    2228             : #line 2229 "Lha-parser.cc" // lalr1.cc:859
    2229           0 :     break;
    2230             : 
    2231             :   case 204:
    2232             : #line 1059 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2233             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    2234             :         {snprintf((yylhs.value.expression),BUFF_SIZE,"-Vars->%s", (yystack_[0].value.name)->c_str());}
    2235             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    2236             : #line 2237 "Lha-parser.cc" // lalr1.cc:859
    2237           0 :     break;
    2238             : 
    2239             :   case 205:
    2240             : #line 1063 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2241             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    2242             :         {snprintf((yylhs.value.expression),BUFF_SIZE,"-(%s) * Vars->%s", (yystack_[3].value.expression), (yystack_[0].value.name)->c_str());
    2243             :         }
    2244             :         else {cout<<*(yystack_[1].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    2245             : #line 2246 "Lha-parser.cc" // lalr1.cc:859
    2246           0 :     break;
    2247             : 
    2248             :   case 206:
    2249             : #line 1068 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2250             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    2251             :         {snprintf((yylhs.value.expression),BUFF_SIZE,"-%d * Vars->%s", (yystack_[2].value.IntVal), (yystack_[0].value.name)->c_str());
    2252             :         }
    2253             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    2254             : #line 2255 "Lha-parser.cc" // lalr1.cc:859
    2255           0 :     break;
    2256             : 
    2257             :   case 207:
    2258             : #line 1073 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2259             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    2260             :         {snprintf((yylhs.value.expression),BUFF_SIZE,"-%f * Vars->%s", (yystack_[2].value.RealVal), (yystack_[0].value.name)->c_str());
    2261             :         }
    2262             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}}
    2263             : #line 2264 "Lha-parser.cc" // lalr1.cc:859
    2264           0 :     break;
    2265             : 
    2266             :   case 208:
    2267             : #line 1078 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:859
    2268             :     { if(Reader.MyLha.Vars.find(*(yystack_[0].value.name))!=Reader.MyLha.Vars.label.size())
    2269             :         {if(Reader.MyLha.LhaRealConstant.find(*(yystack_[2].value.name))!=Reader.MyLha.LhaRealConstant.end())
    2270             :                 {snprintf((yylhs.value.expression),BUFF_SIZE,"-%f * Vars->%s", Reader.MyLha.LhaRealConstant[*(yystack_[2].value.name)],(yystack_[0].value.name)->c_str());
    2271             :                 }
    2272             :                 else
    2273             :                 {
    2274             :                         if(Reader.MyLha.PlaceIndex.find(*(yystack_[2].value.name))!=Reader.MyLha.PlaceIndex.end())
    2275             :                         {sprintf((yylhs.value.expression),"-Marking.P->_PL_%s * Vars->%s", (yystack_[2].value.name)->c_str() ,(yystack_[0].value.name)->c_str());
    2276             :                         }
    2277             :                         else
    2278             :                         {
    2279             :                                 cout<<*(yystack_[2].value.name)<<" is not Petri-net Place or a definded constant "<<endl;
    2280             :                                 YYABORT;
    2281             :                         }
    2282             :                 }
    2283             :         }
    2284             :         else {cout<<*(yystack_[0].value.name)<<" is not a Lha variable"<<endl;YYABORT;}
    2285             : }
    2286             : #line 2287 "Lha-parser.cc" // lalr1.cc:859
    2287           0 :     break;
    2288             : 
    2289             : 
    2290             : #line 2291 "Lha-parser.cc" // lalr1.cc:859
    2291             :             default:
    2292        1448 :               break;
    2293             :             }
    2294             :         }
    2295           0 :       catch (const syntax_error& yyexc)
    2296             :         {
    2297           0 :           error (yyexc);
    2298           0 :           YYERROR;
    2299             :         }
    2300        6225 :       YY_SYMBOL_PRINT ("-> $$ =", yylhs);
    2301        6225 :       yypop_ (yylen);
    2302        6225 :       yylen = 0;
    2303        6225 :       YY_STACK_PRINT ();
    2304             : 
    2305             :       // Shift the result of the reduction.
    2306        6225 :       yypush_ (YY_NULLPTR, yylhs);
    2307             :     }
    2308        6225 :     goto yynewstate;
    2309             : 
    2310             :   /*--------------------------------------.
    2311             :   | yyerrlab -- here on detecting error.  |
    2312             :   `--------------------------------------*/
    2313             :   yyerrlab:
    2314             :     // If not already recovering from an error, report this error.
    2315           0 :     if (!yyerrstatus_)
    2316             :       {
    2317           0 :         ++yynerrs_;
    2318           0 :         error (yyla.location, yysyntax_error_ (yystack_[0].state, yyla));
    2319             :       }
    2320             : 
    2321             : 
    2322           0 :     yyerror_range[1].location = yyla.location;
    2323           0 :     if (yyerrstatus_ == 3)
    2324             :       {
    2325             :         /* If just tried and failed to reuse lookahead token after an
    2326             :            error, discard it.  */
    2327             : 
    2328             :         // Return failure if at end of input.
    2329           0 :         if (yyla.type_get () == yyeof_)
    2330           0 :           YYABORT;
    2331           0 :         else if (!yyla.empty ())
    2332             :           {
    2333           0 :             yy_destroy_ ("Error: discarding", yyla);
    2334           0 :             yyla.clear ();
    2335             :           }
    2336             :       }
    2337             : 
    2338             :     // Else will try to reuse lookahead token after shifting the error token.
    2339           0 :     goto yyerrlab1;
    2340             : 
    2341             : 
    2342             :   /*---------------------------------------------------.
    2343             :   | yyerrorlab -- error raised explicitly by YYERROR.  |
    2344             :   `---------------------------------------------------*/
    2345             :   yyerrorlab:
    2346             : 
    2347             :     /* Pacify compilers like GCC when the user code never invokes
    2348             :        YYERROR and the label yyerrorlab therefore never appears in user
    2349             :        code.  */
    2350             :     if (false)
    2351             :       goto yyerrorlab;
    2352           0 :     yyerror_range[1].location = yystack_[yylen - 1].location;
    2353             :     /* Do not reclaim the symbols of the rule whose action triggered
    2354             :        this YYERROR.  */
    2355           0 :     yypop_ (yylen);
    2356           0 :     yylen = 0;
    2357           0 :     goto yyerrlab1;
    2358             : 
    2359             :   /*-------------------------------------------------------------.
    2360             :   | yyerrlab1 -- common code for both syntax error and YYERROR.  |
    2361             :   `-------------------------------------------------------------*/
    2362             :   yyerrlab1:
    2363           0 :     yyerrstatus_ = 3;   // Each real token shifted decrements this.
    2364             :     {
    2365           0 :       stack_symbol_type error_token;
    2366             :       for (;;)
    2367             :         {
    2368           0 :           yyn = yypact_[yystack_[0].state];
    2369           0 :           if (!yy_pact_value_is_default_ (yyn))
    2370             :             {
    2371           0 :               yyn += yyterror_;
    2372           0 :               if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
    2373             :                 {
    2374           0 :                   yyn = yytable_[yyn];
    2375           0 :                   if (0 < yyn)
    2376           0 :                     break;
    2377             :                 }
    2378             :             }
    2379             : 
    2380             :           // Pop the current state because it cannot handle the error token.
    2381           0 :           if (yystack_.size () == 1)
    2382           0 :             YYABORT;
    2383             : 
    2384           0 :           yyerror_range[1].location = yystack_[0].location;
    2385           0 :           yy_destroy_ ("Error: popping", yystack_[0]);
    2386           0 :           yypop_ ();
    2387           0 :           YY_STACK_PRINT ();
    2388             :         }
    2389             : 
    2390           0 :       yyerror_range[2].location = yyla.location;
    2391           0 :       YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);
    2392             : 
    2393             :       // Shift the error token.
    2394           0 :       error_token.state = yyn;
    2395           0 :       yypush_ ("Shifting", error_token);
    2396             :     }
    2397           0 :     goto yynewstate;
    2398             : 
    2399             :     // Accept.
    2400             :   yyacceptlab:
    2401          29 :     yyresult = 0;
    2402          29 :     goto yyreturn;
    2403             : 
    2404             :     // Abort.
    2405             :   yyabortlab:
    2406           0 :     yyresult = 1;
    2407           0 :     goto yyreturn;
    2408             : 
    2409             :   yyreturn:
    2410          29 :     if (!yyla.empty ())
    2411           0 :       yy_destroy_ ("Cleanup: discarding lookahead", yyla);
    2412             : 
    2413             :     /* Do not reclaim the symbols of the rule whose action triggered
    2414             :        this YYABORT or YYACCEPT.  */
    2415          29 :     yypop_ (yylen);
    2416         145 :     while (1 < yystack_.size ())
    2417             :       {
    2418          58 :         yy_destroy_ ("Cleanup: popping", yystack_[0]);
    2419          58 :         yypop_ ();
    2420             :       }
    2421             : 
    2422          58 :     return yyresult;
    2423             :   }
    2424           0 :     catch (...)
    2425             :       {
    2426           0 :         YYCDEBUG << "Exception caught: cleaning lookahead and stack"
    2427           0 :                  << std::endl;
    2428             :         // Do not try to display the values of the reclaimed symbols,
    2429             :         // as their printer might throw an exception.
    2430           0 :         if (!yyla.empty ())
    2431           0 :           yy_destroy_ (YY_NULLPTR, yyla);
    2432             : 
    2433           0 :         while (1 < yystack_.size ())
    2434             :           {
    2435           0 :             yy_destroy_ (YY_NULLPTR, yystack_[0]);
    2436           0 :             yypop_ ();
    2437             :           }
    2438           0 :         throw;
    2439             :       }
    2440             :   }
    2441             : 
    2442             :   void
    2443           0 :   Lha_parser::error (const syntax_error& yyexc)
    2444             :   {
    2445           0 :     error (yyexc.location, yyexc.what());
    2446           0 :   }
    2447             : 
    2448             :   // Generate an error message.
    2449             :   std::string
    2450           0 :   Lha_parser::yysyntax_error_ (state_type yystate, const symbol_type& yyla) const
    2451             :   {
    2452             :     // Number of reported tokens (one for the "unexpected", one per
    2453             :     // "expected").
    2454           0 :     size_t yycount = 0;
    2455             :     // Its maximum.
    2456             :     enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
    2457             :     // Arguments of yyformat.
    2458             :     char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
    2459             : 
    2460             :     /* There are many possibilities here to consider:
    2461             :        - If this state is a consistent state with a default action, then
    2462             :          the only way this function was invoked is if the default action
    2463             :          is an error action.  In that case, don't check for expected
    2464             :          tokens because there are none.
    2465             :        - The only way there can be no lookahead present (in yyla) is
    2466             :          if this state is a consistent state with a default action.
    2467             :          Thus, detecting the absence of a lookahead is sufficient to
    2468             :          determine that there is no unexpected or expected token to
    2469             :          report.  In that case, just report a simple "syntax error".
    2470             :        - Don't assume there isn't a lookahead just because this state is
    2471             :          a consistent state with a default action.  There might have
    2472             :          been a previous inconsistent state, consistent state with a
    2473             :          non-default action, or user semantic action that manipulated
    2474             :          yyla.  (However, yyla is currently not documented for users.)
    2475             :        - Of course, the expected token list depends on states to have
    2476             :          correct lookahead information, and it depends on the parser not
    2477             :          to perform extra reductions after fetching a lookahead from the
    2478             :          scanner and before detecting a syntax error.  Thus, state
    2479             :          merging (from LALR or IELR) and default reductions corrupt the
    2480             :          expected token list.  However, the list is correct for
    2481             :          canonical LR with one exception: it will still contain any
    2482             :          token that will not be accepted due to an error action in a
    2483             :          later state.
    2484             :     */
    2485           0 :     if (!yyla.empty ())
    2486             :       {
    2487           0 :         int yytoken = yyla.type_get ();
    2488           0 :         yyarg[yycount++] = yytname_[yytoken];
    2489           0 :         int yyn = yypact_[yystate];
    2490           0 :         if (!yy_pact_value_is_default_ (yyn))
    2491             :           {
    2492             :             /* Start YYX at -YYN if negative to avoid negative indexes in
    2493             :                YYCHECK.  In other words, skip the first -YYN actions for
    2494             :                this state because they are default actions.  */
    2495           0 :             int yyxbegin = yyn < 0 ? -yyn : 0;
    2496             :             // Stay within bounds of both yycheck and yytname.
    2497           0 :             int yychecklim = yylast_ - yyn + 1;
    2498           0 :             int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
    2499           0 :             for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
    2500           0 :               if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
    2501           0 :                   && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
    2502             :                 {
    2503           0 :                   if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
    2504             :                     {
    2505           0 :                       yycount = 1;
    2506           0 :                       break;
    2507             :                     }
    2508             :                   else
    2509           0 :                     yyarg[yycount++] = yytname_[yyx];
    2510             :                 }
    2511             :           }
    2512             :       }
    2513             : 
    2514           0 :     char const* yyformat = YY_NULLPTR;
    2515           0 :     switch (yycount)
    2516             :       {
    2517             : #define YYCASE_(N, S)                         \
    2518             :         case N:                               \
    2519             :           yyformat = S;                       \
    2520             :         break
    2521           0 :         YYCASE_(0, YY_("syntax error"));
    2522           0 :         YYCASE_(1, YY_("syntax error, unexpected %s"));
    2523           0 :         YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
    2524           0 :         YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
    2525           0 :         YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
    2526           0 :         YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
    2527             : #undef YYCASE_
    2528             :       }
    2529             : 
    2530           0 :     std::string yyres;
    2531             :     // Argument number.
    2532           0 :     size_t yyi = 0;
    2533           0 :     for (char const* yyp = yyformat; *yyp; ++yyp)
    2534           0 :       if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
    2535             :         {
    2536           0 :           yyres += yytnamerr_ (yyarg[yyi++]);
    2537           0 :           ++yyp;
    2538             :         }
    2539             :       else
    2540           0 :         yyres += *yyp;
    2541           0 :     return yyres;
    2542             :   }
    2543             : 
    2544             : 
    2545             :   const short int Lha_parser::yypact_ninf_ = -342;
    2546             : 
    2547             :   const signed char Lha_parser::yytable_ninf_ = -7;
    2548             : 
    2549             :   const short int
    2550             :   Lha_parser::yypact_[] =
    2551             :   {
    2552             :       14,   -12,  -342,  -342,   117,    37,    43,    71,    80,   354,
    2553             :       96,   101,   137,   166,  -342,  -342,   123,   -34,   470,   208,
    2554             :      144,  -342,    74,   297,   117,   586,   213,   213,    10,   248,
    2555             :      -34,   229,   267,   213,   213,  -342,   246,   280,   145,   233,
    2556             :      269,   272,   295,   348,   358,   508,   238,   301,   349,    74,
    2557             :      362,   379,  -342,  -342,  -342,  -342,   117,   117,   117,   117,
    2558             :      323,  -342,   213,   213,   435,   437,   446,   474,   476,   479,
    2559             :      502,   509,   200,  -342,   398,   397,  -342,   434,   145,   441,
    2560             :      480,   302,   312,   417,   457,   510,   518,  -342,   499,   468,
    2561             :     -342,  -342,   556,   560,   562,   564,   524,   525,   238,    74,
    2562             :       74,  -342,  -342,  -342,  -342,  -342,  -342,  -342,   334,   334,
    2563             :     -342,   421,   161,   213,   213,   213,   157,   157,   157,   157,
    2564             :      157,  -342,   213,   213,   213,   213,   213,  -342,  -342,   596,
    2565             :     -342,  -342,  -342,   265,   265,   587,   594,   539,   565,  -342,
    2566             :     -342,   588,   611,   622,   636,    13,   638,    74,  -342,  -342,
    2567             :     -342,   428,   328,   338,    77,   537,   629,   304,   436,    20,
    2568             :     -342,   114,   143,   153,   257,   627,   627,   161,   161,  -342,
    2569             :      651,  -342,  -342,  -342,   654,   664,  -342,    -5,  -342,    -2,
    2570             :      665,   666,   304,   230,  -342,  -342,  -342,   670,     7,  -342,
    2571             :       16,  -342,  -342,   213,   213,   230,  -342,   673,   674,   675,
    2572             :       22,  -342,  -342,   304,   304,   671,   672,   676,   433,   650,
    2573             :      653,   655,   304,  -342,   157,   157,  -342,  -342,  -342,  -342,
    2574             :     -342,   265,   265,   680,   681,   683,   682,   686,    -1,  -342,
    2575             :      684,   625,   666,   249,   685,  -342,   230,   230,   688,   689,
    2576             :      690,   691,   119,   692,    25,   695,   699,   698,   438,   444,
    2577             :      589,  -342,  -342,  -342,   702,  -342,   461,   570,   304,   304,
    2578             :      304,   662,   304,   304,   304,   304,   304,   703,   704,   705,
    2579             :      467,  -342,  -342,   687,   701,  -342,  -342,  -342,  -342,   706,
    2580             :      707,  -342,   708,   709,  -342,  -342,   240,   550,    11,   230,
    2581             :      230,   230,   230,  -342,   230,   230,   230,   230,   711,  -342,
    2582             :      714,  -342,  -342,  -342,  -342,  -342,  -342,   710,   700,  -342,
    2583             :      472,   347,   353,   716,   660,   660,   570,   570,  -342,  -342,
    2584             :     -342,  -342,   693,   265,   265,   281,  -342,   712,  -342,   156,
    2585             :      593,   713,  -342,   477,   357,   382,   388,   678,    11,    11,
    2586             :     -342,   715,   717,   702,  -342,  -342,   304,   304,  -342,   718,
    2587             :      719,   720,   281,   281,  -342,  -342,   635,   232,  -342,   721,
    2588             :     -342,  -342,  -342,   230,   230,   230,   230,  -342,   726,  -342,
    2589             :      484,   500,  -342,  -342,  -342,   405,   273,  -342,   304,   304,
    2590             :      304,   304,   304,   723,   727,   281,   281,   724,   554,   563,
    2591             :      577,   581,   725,  -342,  -342,  -342,   603,   603,   603,   603,
    2592             :      603,   732,  -342,  -342,   722,   728,  -342,  -342,  -342,  -342,
    2593             :     -342,   731,   201,  -342,    23,   304,   732,   729,  -342,   679,
    2594             :      737,   733,  -342,   603,  -342,   736,   659,  -342,    17,   134,
    2595             :     -342,  -342,   741,  -342,   697,   730,   734,   304,  -342,   475,
    2596             :      738,   735,   124,  -342,  -342,   742,   744,   745,   507,   739,
    2597             :      740,   743,   304,    34,   134,   304,   304,   304,   177,   177,
    2598             :     -342,  -342,  -342,   746,   747,   748,   749,   512,  -342,   750,
    2599             :      751,  -342,   603,   603,   603,  -342,  -342,   752,  -342,  -342,
    2600             :     -342,   753,    15,    21,  -342,   754,  -342,   755,   230,   314,
    2601             :      750,  -342,  -342,  -342,   614,   174,  -342,  -342,   314,   314,
    2602             :      756,   757,   758,   608,  -342,   760,   240,  -342,   517,   628,
    2603             :      314,   314,   314,   314,   314,   314,   314,   314,   314,   618,
    2604             :      759,  -342,   523,   363,   372,   761,   761,   628,   628,  -342,
    2605             :      608,  -342,  -342,  -342,   314,   314,   540,   546,  -342,  -342
    2606             :   };
    2607             : 
    2608             :   const unsigned char
    2609             :   Lha_parser::yydefact_[] =
    2610             :   {
    2611             :       63,     0,   175,   174,     0,     0,     0,   160,     0,    63,
    2612             :        0,     0,     0,     0,   163,   164,     0,     0,     0,    62,
    2613             :       61,     5,   152,     0,     0,     0,     0,     0,     0,     0,
    2614             :        0,     0,     0,     0,     0,     1,     0,     0,     0,     0,
    2615             :        0,     0,     0,     0,     0,     0,     0,    64,    66,     0,
    2616             :        0,     0,    60,    59,   153,   155,     0,     0,     0,     0,
    2617             :        0,   169,     0,     0,     0,     0,     0,     0,     0,     0,
    2618             :        0,     0,     0,   176,     0,     0,   161,     0,     0,     0,
    2619             :        0,     0,     0,     0,     0,     0,     0,     4,     0,     0,
    2620             :       86,    87,     0,     0,     0,     0,     0,     0,     0,     0,
    2621             :        0,    65,    67,    10,    74,    75,   173,   172,   170,   171,
    2622             :      154,     0,   179,     0,     0,     0,     0,     0,     0,     0,
    2623             :        0,   159,     0,     0,     0,     0,     0,   168,   162,     0,
    2624             :        3,    73,    72,     0,     0,     0,     0,     0,     0,    94,
    2625             :       95,     0,     0,     0,     0,     0,     0,     0,     9,     8,
    2626             :      181,     0,     0,     0,   195,   202,   201,     0,     0,     0,
    2627             :      192,     0,     0,     0,     0,   186,   185,   183,   184,   182,
    2628             :        0,   158,   156,   157,     0,     0,    89,     0,    92,     0,
    2629             :        0,     0,     0,     0,    71,    70,    77,     0,     0,    84,
    2630             :        0,     7,   180,     0,     0,     0,   196,     0,     0,     0,
    2631             :       29,    26,    27,     0,     0,     0,     0,     0,     0,   204,
    2632             :        0,     0,     0,   188,     0,     0,   189,   187,   190,   191,
    2633             :      165,     0,     0,     0,     0,     0,     0,     0,     0,    97,
    2634             :        0,     0,   117,     0,    12,    11,     0,     0,     0,     0,
    2635             :        0,     0,     0,    78,     0,     0,     0,     0,     0,     0,
    2636             :        0,   203,   200,   199,     0,    28,     0,    32,     0,     0,
    2637             :        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2638             :        0,   194,   193,     0,     0,    90,    88,    93,    91,     0,
    2639             :        0,    98,     0,     0,   118,    69,     0,     0,    16,     0,
    2640             :        0,     0,     0,    68,     0,     0,     0,     0,     0,    80,
    2641             :        0,    76,    85,    83,   177,   178,   197,     0,     0,    31,
    2642             :        0,     0,     0,     0,    33,    36,    34,    35,    37,   208,
    2643             :      207,   206,     0,     0,     0,     0,    96,     0,   116,    12,
    2644             :        0,     0,    15,     0,     0,     0,     0,    19,    17,    18,
    2645             :       20,     0,    81,    57,    30,    38,     0,     0,   198,     0,
    2646             :        0,     0,     0,     0,   104,   105,     0,     0,   106,     0,
    2647             :       14,    13,    21,     0,     0,     0,     0,    79,     0,    58,
    2648             :        0,     0,   205,   166,   167,     0,     0,   110,     0,     0,
    2649             :        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2650             :        0,     0,     0,    39,    40,   109,   111,   113,   112,   114,
    2651             :      115,     0,   100,   107,   108,     0,    22,    23,    24,    25,
    2652             :       82,     0,     0,   101,     0,     0,     0,     0,   120,   121,
    2653             :        0,     0,   123,   103,   102,     0,     0,   125,     0,     0,
    2654             :       99,   122,     0,   124,   136,     0,     0,     0,   129,     0,
    2655             :        0,   127,     0,   133,   126,     0,     0,     0,     0,   141,
    2656             :        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2657             :      140,   139,   138,     0,     0,     0,     0,     0,   147,     0,
    2658             :        0,   128,   130,   132,   131,   135,   134,     0,   145,   144,
    2659             :      143,     0,     0,     0,   148,     0,   137,     0,     0,     0,
    2660             :        0,   146,   119,   142,     0,    44,    41,    42,     0,     0,
    2661             :        0,     0,     0,   150,   149,     0,     0,    43,     0,    48,
    2662             :        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2663             :        0,    47,     0,     0,     0,    49,    52,    50,    51,    53,
    2664             :      151,    45,    46,    54,     0,     0,     0,     0,    55,    56
    2665             :   };
    2666             : 
    2667             :   const short int
    2668             :   Lha_parser::yypgoto_[] =
    2669             :   {
    2670             :     -342,  -342,   764,  -195,  -155,  -298,  -285,  -342,   762,   193,
    2671             :     -342,  -342,   763,   765,   -36,   766,  -342,   768,  -342,   767,
    2672             :      770,  -342,   769,  -342,   696,   668,  -342,   521,  -342,   346,
    2673             :     -341,  -342,   771,   522,  -342,  -342,   344,  -342,   310,  -342,
    2674             :     -342,   -86,  -342,  -342,   287,   -15,  -342,  -129,   148,     5,
    2675             :     -342,   551,   183
    2676             :   };
    2677             : 
    2678             :   const short int
    2679             :   Lha_parser::yydefgoto_[] =
    2680             :   {
    2681             :       -1,    16,    17,   242,   356,   503,   308,    18,    45,    46,
    2682             :       47,    48,    19,    20,    49,    50,   188,    51,   190,    38,
    2683             :       39,   177,    40,   179,    87,    88,   228,   229,   412,   413,
    2684             :      357,   358,    89,   231,   232,   421,   422,   428,   440,   441,
    2685             :      442,   443,   470,   483,   484,    21,    22,   174,    23,    72,
    2686             :       73,   159,   160
    2687             :   };
    2688             : 
    2689             :   const short int
    2690             :   Lha_parser::yytable_[] =
    2691             :   {
    2692             :      250,   331,   208,   223,    24,   175,   225,    54,   227,    99,
    2693             :      100,   376,   377,    75,    -2,   244,   186,     1,     2,     3,
    2694             :       76,    36,    37,     4,   246,   432,   488,   233,   299,   490,
    2695             :      213,   489,    74,   254,   103,   255,   418,   419,    81,    82,
    2696             :      294,   287,   288,   297,   403,   404,    26,   468,   256,   257,
    2697             :      214,   215,    27,     5,     6,     7,     8,   270,   369,   187,
    2698             :      224,     9,   147,   226,   280,    10,    11,   111,   112,    -6,
    2699             :       -6,   300,   245,    12,    13,    14,    15,     1,     2,     3,
    2700             :       28,   247,   433,     4,   148,   149,   491,   420,   195,    29,
    2701             :      196,   330,   273,   274,   333,   334,   335,   336,   469,   337,
    2702             :      338,   339,   340,   310,   311,   312,   197,   314,   315,   316,
    2703             :      317,   318,    31,     5,     6,     7,     8,    32,   151,   152,
    2704             :      153,     2,     3,    35,   216,   293,     4,   165,   166,   167,
    2705             :      168,   169,   191,    12,    13,    14,    15,   434,   435,   436,
    2706             :      455,   456,   457,   437,   214,   215,    33,   438,   294,   295,
    2707             :      296,   297,    25,   217,   458,   459,     5,     6,     7,     8,
    2708             :      154,   155,   156,   218,   343,   439,   157,   286,   388,   389,
    2709             :      390,   391,    60,   214,   215,    34,    12,    13,    14,    15,
    2710             :      434,   435,   436,   214,   215,   506,   437,   507,   158,   122,
    2711             :      123,   370,   371,   126,   350,   351,    11,   375,   248,   249,
    2712             :      508,   509,    85,    86,   106,   107,   108,   109,   439,   416,
    2713             :      121,   417,   522,   523,   524,   525,   526,   527,   528,   529,
    2714             :      530,   520,    62,   396,   397,   398,   399,   400,   122,   123,
    2715             :      124,   125,   126,   234,    79,   235,   536,   537,    98,   236,
    2716             :      383,   102,   384,   329,    63,   235,    64,    65,    66,   236,
    2717             :       67,    68,    77,   385,   386,   285,    69,    70,    71,    10,
    2718             :      423,   237,    83,   238,   239,   240,   241,   219,   171,   172,
    2719             :      173,   237,    80,   238,   239,   240,   241,   262,   263,   264,
    2720             :      265,   266,   448,   395,   200,   201,   202,   214,   215,    37,
    2721             :      352,    43,    44,   494,   385,   386,    84,   467,    92,    93,
    2722             :      472,   473,   474,    55,   353,   354,   355,   200,   201,   202,
    2723             :      133,   519,   204,   203,   205,   206,   207,   495,   496,   497,
    2724             :      134,    94,    95,   498,    36,    56,    57,    58,    59,   110,
    2725             :      122,   123,   124,   125,   126,   204,   193,   205,   206,   207,
    2726             :      122,   123,   124,   125,   126,   499,   194,   500,   501,   502,
    2727             :       41,    56,    57,    58,    59,   346,   122,   123,   124,   125,
    2728             :      126,   347,    56,    57,    96,   364,   122,   123,   124,   125,
    2729             :      126,   534,   475,   476,    97,   262,   263,   264,   265,   266,
    2730             :      535,   262,   263,   264,   265,   266,   294,   295,   296,   297,
    2731             :      365,   513,   514,   515,   516,   517,   366,   271,   272,    42,
    2732             :      513,   514,   515,   516,   517,    10,    11,   128,   127,    -6,
    2733             :       -6,   294,   295,   296,   297,   309,    44,   294,   295,   296,
    2734             :      297,   378,   379,   380,   381,   382,   122,   123,   124,   125,
    2735             :      126,   150,    43,   262,   263,   264,   265,   266,   192,   209,
    2736             :      210,   211,   129,   261,   113,   212,   114,   131,   304,   122,
    2737             :      123,   124,   125,   126,   305,   115,   122,   123,   124,   125,
    2738             :      126,   262,   263,   264,   265,   266,   122,   123,   124,   125,
    2739             :      126,   309,   122,   123,   124,   125,   126,   322,   449,   450,
    2740             :      451,   135,   345,   116,   452,   117,   132,   362,   118,   262,
    2741             :      263,   264,   265,   266,   393,   262,   263,   264,   265,   266,
    2742             :      262,   263,   264,   265,   266,   363,   294,   295,   296,   297,
    2743             :      394,   119,   262,   263,   264,   265,   266,   463,   120,    41,
    2744             :       42,   136,   481,    43,    44,    85,   137,   521,   262,   263,
    2745             :      264,   265,   266,   533,   138,   262,   263,   264,   265,   266,
    2746             :      262,   263,   264,   265,   266,   513,   514,   515,   516,   517,
    2747             :      538,   513,   514,   515,   516,   517,   539,    86,    42,   141,
    2748             :      332,    43,    44,   142,   406,   143,   198,   144,   513,   514,
    2749             :      515,   516,   517,   407,   513,   514,   515,   516,   517,   294,
    2750             :      295,   296,   297,   294,   295,   296,   297,   408,   145,   146,
    2751             :      176,   409,   294,   295,   296,   297,    61,   178,   262,   263,
    2752             :      170,   306,   266,   180,   182,   360,   294,   295,   296,   297,
    2753             :      294,   295,   296,   297,    56,    57,    58,    59,   294,   295,
    2754             :      296,   297,   294,   295,   296,   297,   505,   183,   184,   181,
    2755             :      531,   262,   263,   264,   265,   266,   513,   514,   515,   516,
    2756             :      517,   189,   185,   294,   295,   296,   297,   294,   295,   296,
    2757             :      297,   378,   379,   380,   381,   382,   513,   514,   199,   126,
    2758             :      517,   220,   221,   262,   263,   264,   265,   266,   161,   162,
    2759             :      163,   164,   222,   243,   227,   230,   251,   252,   253,   267,
    2760             :      258,   259,   268,   275,   269,   260,   277,   276,   278,   279,
    2761             :      283,   313,   266,   282,   426,   323,   286,   289,   290,   291,
    2762             :      292,   301,   302,   298,   303,   307,   319,   320,   321,   324,
    2763             :      297,   327,   344,   326,   325,   328,   341,   342,   343,   348,
    2764             :      359,   372,   349,   420,   387,   361,   445,   367,   368,   373,
    2765             :      374,   392,   401,   402,   405,   411,   414,   410,   415,   425,
    2766             :      427,   429,   430,   385,   444,   460,   453,   461,   462,   281,
    2767             :      478,   479,   480,   482,   284,   486,   454,   140,   493,   446,
    2768             :      492,   485,   424,   447,   471,   510,   511,   512,   464,   465,
    2769             :      431,   532,   466,    30,   130,   477,   518,   504,     0,     0,
    2770             :        0,     0,   487,    53,    52,     0,     0,     0,     0,     0,
    2771             :        0,     0,     0,   517,     0,     0,     0,    78,     0,     0,
    2772             :        0,     0,     0,     0,     0,     0,     0,     0,    90,   101,
    2773             :       91,     0,     0,     0,     0,     0,     0,   105,   104,     0,
    2774             :        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2775             :        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2776             :        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2777             :        0,     0,     0,     0,     0,     0,     0,     0,     0,   139
    2778             :   };
    2779             : 
    2780             :   const short int
    2781             :   Lha_parser::yycheck_[] =
    2782             :   {
    2783             :      195,   286,   157,     8,    16,   134,     8,    22,     9,    45,
    2784             :       46,   352,   353,     3,     0,     8,     3,     3,     4,     5,
    2785             :       10,    55,    56,     9,     8,     8,    11,   182,     3,     8,
    2786             :       10,    16,    27,    11,    49,    13,    13,    14,    33,    34,
    2787             :       29,   236,   237,    32,   385,   386,     9,    13,   203,   204,
    2788             :       30,    31,     9,    39,    40,    41,    42,   212,   343,    46,
    2789             :       65,    47,    98,    65,    65,    51,    52,    62,    63,    55,
    2790             :       56,    46,    65,    59,    60,    61,    62,     3,     4,     5,
    2791             :        9,    65,    65,     9,    99,   100,    65,    64,    11,     9,
    2792             :       13,   286,   221,   222,   289,   290,   291,   292,    64,   294,
    2793             :      295,   296,   297,   258,   259,   260,    29,   262,   263,   264,
    2794             :      265,   266,    16,    39,    40,    41,    42,    16,   113,   114,
    2795             :      115,     4,     5,     0,    10,     6,     9,   122,   123,   124,
    2796             :      125,   126,   147,    59,    60,    61,    62,     3,     4,     5,
    2797             :       16,    17,    18,     9,    30,    31,     9,    13,    29,    30,
    2798             :       31,    32,     4,    10,    30,    31,    39,    40,    41,    42,
    2799             :        3,     4,     5,    10,     8,    31,     9,    11,   363,   364,
    2800             :      365,   366,    24,    30,    31,     9,    59,    60,    61,    62,
    2801             :        3,     4,     5,    30,    31,    11,     9,    13,    31,    28,
    2802             :       29,   346,   347,    32,   323,   324,    52,   352,   193,   194,
    2803             :      498,   499,    57,    58,    56,    57,    58,    59,    31,     8,
    2804             :       10,    10,   510,   511,   512,   513,   514,   515,   516,   517,
    2805             :      518,   506,     9,   378,   379,   380,   381,   382,    28,    29,
    2806             :       30,    31,    32,     3,     5,     5,   534,   535,    45,     9,
    2807             :        8,    48,    10,     3,    31,     5,    33,    34,    35,     9,
    2808             :       37,    38,     4,    21,    22,     6,    43,    44,    45,    51,
    2809             :      415,    31,    16,    33,    34,    35,    36,    10,     3,     4,
    2810             :        5,    31,     5,    33,    34,    35,    36,    28,    29,    30,
    2811             :       31,    32,   437,    10,     3,     4,     5,    30,    31,    56,
    2812             :        9,    53,    54,   488,    21,    22,    16,   452,    26,    27,
    2813             :      455,   456,   457,     6,    23,    24,    25,     3,     4,     5,
    2814             :        8,   506,    31,     9,    33,    34,    35,     3,     4,     5,
    2815             :        8,    26,    27,     9,    55,    28,    29,    30,    31,     6,
    2816             :       28,    29,    30,    31,    32,    31,     8,    33,    34,    35,
    2817             :       28,    29,    30,    31,    32,    31,     8,    33,    34,    35,
    2818             :       49,    28,    29,    30,    31,     8,    28,    29,    30,    31,
    2819             :       32,     8,    28,    29,    16,     8,    28,    29,    30,    31,
    2820             :       32,     8,   458,   459,    16,    28,    29,    30,    31,    32,
    2821             :        8,    28,    29,    30,    31,    32,    29,    30,    31,    32,
    2822             :        8,    28,    29,    30,    31,    32,     8,   214,   215,    50,
    2823             :       28,    29,    30,    31,    32,    51,    52,    10,    10,    55,
    2824             :       56,    29,    30,    31,    32,    10,    54,    29,    30,    31,
    2825             :       32,    16,    17,    18,    19,    20,    28,    29,    30,    31,
    2826             :       32,    10,    53,    28,    29,    30,    31,    32,    10,     3,
    2827             :        4,     5,     8,    10,     9,     9,     9,     6,    10,    28,
    2828             :       29,    30,    31,    32,    10,     9,    28,    29,    30,    31,
    2829             :       32,    28,    29,    30,    31,    32,    28,    29,    30,    31,
    2830             :       32,    10,    28,    29,    30,    31,    32,    10,     3,     4,
    2831             :        5,    64,    10,     9,     9,     9,     6,    10,     9,    28,
    2832             :       29,    30,    31,    32,    10,    28,    29,    30,    31,    32,
    2833             :       28,    29,    30,    31,    32,    28,    29,    30,    31,    32,
    2834             :       10,     9,    28,    29,    30,    31,    32,    10,     9,    49,
    2835             :       50,    64,    10,    53,    54,    57,    16,    10,    28,    29,
    2836             :       30,    31,    32,    10,    16,    28,    29,    30,    31,    32,
    2837             :       28,    29,    30,    31,    32,    28,    29,    30,    31,    32,
    2838             :       10,    28,    29,    30,    31,    32,    10,    58,    50,     3,
    2839             :       10,    53,    54,     3,    10,     3,    29,     3,    28,    29,
    2840             :       30,    31,    32,    10,    28,    29,    30,    31,    32,    29,
    2841             :       30,    31,    32,    29,    30,    31,    32,    10,    64,    64,
    2842             :        3,    10,    29,    30,    31,    32,    10,     3,    28,    29,
    2843             :        4,    12,    32,    64,    16,    12,    29,    30,    31,    32,
    2844             :       29,    30,    31,    32,    28,    29,    30,    31,    29,    30,
    2845             :       31,    32,    29,    30,    31,    32,    12,    16,     6,    64,
    2846             :       12,    28,    29,    30,    31,    32,    28,    29,    30,    31,
    2847             :       32,     3,     6,    29,    30,    31,    32,    29,    30,    31,
    2848             :       32,    16,    17,    18,    19,    20,    28,    29,    29,    32,
    2849             :       32,    10,     8,    28,    29,    30,    31,    32,   117,   118,
    2850             :      119,   120,     8,     3,     9,     9,     3,     3,     3,    29,
    2851             :        9,     9,    29,     3,    29,     9,     3,     6,     6,     3,
    2852             :       65,    29,    32,     9,    15,     8,    11,     9,     9,     9,
    2853             :        9,     6,     3,    11,     6,     3,     3,     3,     3,     8,
    2854             :       32,     3,    12,     6,     8,     6,     5,     3,     8,     3,
    2855             :        8,     3,    29,    64,     3,    12,    29,    12,    11,    10,
    2856             :       10,     5,     9,     6,    10,     3,     8,    12,     7,    10,
    2857             :        3,     8,     6,    21,     3,     3,     8,     3,     3,   228,
    2858             :        3,     3,     3,     3,   232,     3,    21,    89,     3,    29,
    2859             :        6,    10,   416,    29,   454,     9,     9,     9,    29,    29,
    2860             :      426,    12,    29,     9,    78,    29,    16,   490,    -1,    -1,
    2861             :       -1,    -1,    29,    20,    19,    -1,    -1,    -1,    -1,    -1,
    2862             :       -1,    -1,    -1,    32,    -1,    -1,    -1,    30,    -1,    -1,
    2863             :       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    47,
    2864             :       40,    -1,    -1,    -1,    -1,    -1,    -1,    51,    50,    -1,
    2865             :       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    2866             :       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    2867             :       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    2868             :       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88
    2869             :   };
    2870             : 
    2871             :   const unsigned char
    2872             :   Lha_parser::yystos_[] =
    2873             :   {
    2874             :        0,     3,     4,     5,     9,    39,    40,    41,    42,    47,
    2875             :       51,    52,    59,    60,    61,    62,    67,    68,    73,    78,
    2876             :       79,   111,   112,   114,    16,   114,     9,     9,     9,     9,
    2877             :       68,    16,    16,     9,     9,     0,    55,    56,    85,    86,
    2878             :       88,    49,    50,    53,    54,    74,    75,    76,    77,    80,
    2879             :       81,    83,    79,    78,   111,     6,    28,    29,    30,    31,
    2880             :      114,    10,     9,    31,    33,    34,    35,    37,    38,    43,
    2881             :       44,    45,   115,   116,   115,     3,    10,     4,    85,     5,
    2882             :        5,   115,   115,    16,    16,    57,    58,    90,    91,    98,
    2883             :       88,    86,    26,    27,    26,    27,    16,    16,    75,    80,
    2884             :       80,    74,    75,   111,    83,    81,   114,   114,   114,   114,
    2885             :        6,   115,   115,     9,     9,     9,     9,     9,     9,     9,
    2886             :        9,    10,    28,    29,    30,    31,    32,    10,    10,     8,
    2887             :       90,     6,     6,     8,     8,    64,    64,    16,    16,    98,
    2888             :       91,     3,     3,     3,     3,    64,    64,    80,   111,   111,
    2889             :       10,   115,   115,   115,     3,     4,     5,     9,    31,   117,
    2890             :      118,   117,   117,   117,   117,   115,   115,   115,   115,   115,
    2891             :        4,     3,     4,     5,   113,   113,     3,    87,     3,    89,
    2892             :       64,    64,    16,    16,     6,     6,     3,    46,    82,     3,
    2893             :       84,   111,    10,     8,     8,    11,    13,    29,    29,    29,
    2894             :        3,     4,     5,     9,    31,    33,    34,    35,    70,     3,
    2895             :        4,     5,     9,    10,    30,    31,    10,    10,    10,    10,
    2896             :       10,     8,     8,     8,    65,     8,    65,     9,    92,    93,
    2897             :        9,    99,   100,    70,     3,     5,     9,    31,    33,    34,
    2898             :       35,    36,    69,     3,     8,    65,     8,    65,   115,   115,
    2899             :       69,     3,     3,     3,    11,    13,    70,    70,     9,     9,
    2900             :        9,    10,    28,    29,    30,    31,    32,    29,    29,    29,
    2901             :       70,   118,   118,   113,   113,     3,     6,     3,     6,     3,
    2902             :       65,    93,     9,    65,    99,     6,    11,    69,    69,     9,
    2903             :        9,     9,     9,     6,    29,    30,    31,    32,    11,     3,
    2904             :       46,     6,     3,     6,    10,    10,    12,     3,    72,    10,
    2905             :       70,    70,    70,    29,    70,    70,    70,    70,    70,     3,
    2906             :        3,     3,    10,     8,     8,     8,     6,     3,     6,     3,
    2907             :       69,    72,    10,    69,    69,    69,    69,    69,    69,    69,
    2908             :       69,     5,     3,     8,    12,    10,     8,     8,     3,    29,
    2909             :      113,   113,     9,    23,    24,    25,    70,    96,    97,     8,
    2910             :       12,    12,    10,    28,     8,     8,     8,    12,    11,    72,
    2911             :       70,    70,     3,    10,    10,    70,    96,    96,    16,    17,
    2912             :       18,    19,    20,     8,    10,    21,    22,     3,    69,    69,
    2913             :       69,    69,     5,    10,    10,    10,    70,    70,    70,    70,
    2914             :       70,     9,     6,    96,    96,    10,    10,    10,    10,    10,
    2915             :       12,     3,    94,    95,     8,     7,     8,    10,    13,    14,
    2916             :       64,   101,   102,    70,    95,    10,    15,     3,   103,     8,
    2917             :        6,   102,     8,    65,     3,     4,     5,     9,    13,    31,
    2918             :      104,   105,   106,   107,     3,    29,    29,    29,    70,     3,
    2919             :        4,     5,     9,     8,    21,    16,    17,    18,    30,    31,
    2920             :        3,     3,     3,    10,    29,    29,    29,    70,    13,    64,
    2921             :      108,   104,    70,    70,    70,   107,   107,    29,     3,     3,
    2922             :        3,    10,     3,   109,   110,    10,     3,    29,    11,    16,
    2923             :        8,    65,     6,     3,    69,     3,     4,     5,     9,    31,
    2924             :       33,    34,    35,    71,   110,    12,    11,    13,    71,    71,
    2925             :        9,     9,     9,    28,    29,    30,    31,    32,    16,    69,
    2926             :       72,    10,    71,    71,    71,    71,    71,    71,    71,    71,
    2927             :       71,    12,    12,    10,     8,     8,    71,    71,    10,    10
    2928             :   };
    2929             : 
    2930             :   const unsigned char
    2931             :   Lha_parser::yyr1_[] =
    2932             :   {
    2933             :        0,    66,    67,    67,    67,    67,    68,    68,    68,    68,
    2934             :       68,    69,    69,    69,    69,    69,    69,    69,    69,    69,
    2935             :       69,    69,    69,    69,    69,    69,    70,    70,    70,    70,
    2936             :       70,    70,    70,    70,    70,    70,    70,    70,    70,    70,
    2937             :       70,    71,    71,    71,    71,    71,    71,    71,    71,    71,
    2938             :       71,    71,    71,    71,    71,    71,    71,    72,    72,    73,
    2939             :       73,    73,    73,    73,    74,    74,    75,    75,    76,    76,
    2940             :       77,    77,    78,    79,    80,    80,    81,    82,    82,    82,
    2941             :       82,    82,    82,    83,    84,    84,    85,    85,    86,    87,
    2942             :       87,    88,    89,    89,    90,    90,    91,    92,    92,    93,
    2943             :       93,    94,    94,    95,    96,    96,    96,    96,    96,    96,
    2944             :       96,    97,    97,    97,    97,    97,    98,    99,    99,   100,
    2945             :      101,   101,   101,   101,   102,   103,   103,   104,   104,   104,
    2946             :      105,   105,   105,   106,   106,   106,   107,   107,   107,   107,
    2947             :      107,   107,   107,   107,   107,   107,   108,   108,   109,   109,
    2948             :      110,   110,   111,   111,   112,   112,   113,   113,   113,   114,
    2949             :      114,   114,   114,   114,   114,   114,   114,   114,   114,   114,
    2950             :      114,   114,   114,   114,   114,   114,   115,   115,   115,   115,
    2951             :      115,   115,   115,   115,   115,   115,   115,   116,   116,   116,
    2952             :      116,   116,   117,   117,   117,   118,   118,   118,   118,   118,
    2953             :      118,   118,   118,   118,   118,   118,   118,   118,   118
    2954             :   };
    2955             : 
    2956             :   const unsigned char
    2957             :   Lha_parser::yyr2_[] =
    2958             :   {
    2959             :        0,     2,     0,     4,     3,     1,     0,     5,     4,     4,
    2960             :        3,     1,     1,     4,     4,     3,     2,     3,     3,     3,
    2961             :        3,     4,     6,     6,     6,     6,     1,     1,     2,     1,
    2962             :        4,     3,     2,     3,     3,     3,     3,     3,     4,     6,
    2963             :        6,     1,     1,     2,     1,     4,     4,     3,     2,     3,
    2964             :        3,     3,     3,     3,     4,     6,     6,     2,     3,     2,
    2965             :        2,     1,     1,     0,     1,     2,     1,     2,     6,     6,
    2966             :        4,     4,     4,     4,     2,     2,     6,     1,     2,     5,
    2967             :        3,     4,     7,     6,     1,     3,     2,     2,     6,     1,
    2968             :        3,     6,     1,     3,     2,     2,     6,     1,     2,    10,
    2969             :        6,     1,     3,     3,     1,     1,     1,     3,     3,     3,
    2970             :        2,     3,     3,     3,     3,     3,     6,     1,     2,    14,
    2971             :        1,     1,     3,     1,     3,     1,     3,     1,     3,     1,
    2972             :        3,     3,     3,     1,     3,     3,     1,     5,     3,     3,
    2973             :        3,     2,     6,     4,     4,     4,     3,     1,     1,     3,
    2974             :        3,     6,     1,     2,     4,     2,     1,     1,     1,     4,
    2975             :        1,     3,     4,     1,     1,     6,    10,    10,     4,     3,
    2976             :        3,     3,     3,     3,     1,     1,     1,     6,     6,     2,
    2977             :        4,     3,     3,     3,     3,     3,     3,     4,     4,     4,
    2978             :        4,     4,     1,     3,     3,     1,     2,     4,     5,     3,
    2979             :        3,     1,     1,     3,     2,     6,     4,     4,     4
    2980             :   };
    2981             : 
    2982             : 
    2983             : 
    2984             :   // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    2985             :   // First, the terminals, then, starting at \a yyntokens_, nonterminals.
    2986             :   const char*
    2987             :   const Lha_parser::yytname_[] =
    2988             :   {
    2989             :   "\"end of file\"", "error", "$undefined", "str", "rval", "ival",
    2990             :   "SEMICOLON", "COLON", "COMMA", "LB", "RB", "LSB", "RSB", "SHARP", "ALL",
    2991             :   "BackSlash", "EQ", "GEQ", "LEQ", "LL", "GG", "AND", "OR", "NOT", "TRUE",
    2992             :   "FALSE", "DOUBLE", "INT", "DIV", "MUL", "PLUS", "MINUS", "POWER",
    2993             :   "FLOOR", "MIN", "MAX", "MOD", "LhaMIN", "LhaMAX", "AVG", "VAR", "PROB",
    2994             :   "SPRT", "LAST", "INTEGRAL", "MEAN", "DISC", "NOTDET", "LhaName", "Const",
    2995             :   "Hybrid", "NbLoc", "NbVar", "VList", "LList", "Iloc", "Floc",
    2996             :   "locations", "edges", "PDF", "CDF", "EXIST_TOK", "NOTALL_TOK", "NEG",
    2997             :   "'{'", "'}'", "$accept", "LHA", "declarations", "IntMarkingFormula",
    2998             :   "RealMarkingFormula", "RealVarMarkingFormula", "ColorClassList", "Sizes",
    2999             :   "Constants", "HybridVars", "Constant", "HybridVar", "NbVariables",
    3000             :   "NbLocations", "Lists", "VariablesList", "VLabels", "LocationsList",
    3001             :   "LLabels", "InitFinal", "init", "iLLabels", "final", "fLLabels",
    3002             :   "definitions", "LocationsDef", "LOCATIONS", "LOCATION", "FLOWS", "FLOW",
    3003             :   "LogExpr", "CompExpr", "EdgesDef", "EDGES", "EDGE", "ACTIONS",
    3004             :   "SetOfActions", "Actions", "CONSTRAINTS", "CONSTRAINT", "LinearExp",
    3005             :   "term", "UPDATES", "Updates", "Update", "HaslExps", "HaslExp", "rorival",
    3006             :   "TopHaslExp", "AlgExpr", "LhaFunc", "LinForm", "VarTerm", YY_NULLPTR
    3007             :   };
    3008             : 
    3009             : #if YYDEBUG
    3010             :   const unsigned short int
    3011             :   Lha_parser::yyrline_[] =
    3012             :   {
    3013             :        0,   190,   190,   191,   192,   193,   195,   196,   197,   198,
    3014             :      199,   205,   206,   221,   232,   239,   240,   241,   242,   243,
    3015             :      244,   245,   246,   247,   248,   249,   252,   253,   254,   261,
    3016             :      273,   284,   285,   286,   287,   288,   289,   290,   291,   292,
    3017             :      293,   295,   296,   297,   304,   323,   330,   341,   342,   343,
    3018             :      344,   345,   346,   347,   348,   349,   350,   352,   355,   360,
    3019             :      361,   362,   363,   364,   366,   367,   369,   370,   372,   381,
    3020             :      390,   398,   408,   410,   412,   413,   415,   431,   439,   449,
    3021             :      460,   468,   476,   485,   495,   499,   504,   505,   507,   509,
    3022             :      517,   522,   524,   532,   541,   542,   546,   556,   557,   559,
    3023             :      570,   584,   585,   586,   593,   594,   595,   596,   597,   598,
    3024             :      599,   601,   602,   603,   604,   605,   610,   614,   615,   617,
    3025             :      642,   643,   644,   648,   650,   652,   656,   661,   662,   663,
    3026             :      665,   670,   675,   681,   682,   683,   685,   689,   694,   699,
    3027             :      704,   725,   729,   734,   739,   744,   767,   773,   778,   779,
    3028             :      781,   786,   798,   798,   800,   811,   824,   825,   826,   836,
    3029             :      840,   843,   846,   850,   853,   856,   859,   874,   889,   900,
    3030             :      903,   906,   909,   912,   915,   918,   922,   925,   926,   927,
    3031             :      928,   929,   930,   931,   932,   933,   934,   936,   946,   956,
    3032             :      966,   976,   987,   988,   989,   992,  1003,  1010,  1017,  1022,
    3033             :     1027,  1033,  1036,  1039,  1058,  1062,  1067,  1072,  1077
    3034             :   };
    3035             : 
    3036             :   // Print the state stack on the debug stream.
    3037             :   void
    3038           0 :   Lha_parser::yystack_print_ ()
    3039             :   {
    3040           0 :     *yycdebug_ << "Stack now";
    3041           0 :     for (stack_type::const_iterator
    3042           0 :            i = yystack_.begin (),
    3043           0 :            i_end = yystack_.end ();
    3044             :          i != i_end; ++i)
    3045           0 :       *yycdebug_ << ' ' << i->state;
    3046           0 :     *yycdebug_ << std::endl;
    3047           0 :   }
    3048             : 
    3049             :   // Report on the debug stream that the rule \a yyrule is going to be reduced.
    3050             :   void
    3051           0 :   Lha_parser::yy_reduce_print_ (int yyrule)
    3052             :   {
    3053           0 :     unsigned int yylno = yyrline_[yyrule];
    3054           0 :     int yynrhs = yyr2_[yyrule];
    3055             :     // Print the symbols being reduced, and their result.
    3056           0 :     *yycdebug_ << "Reducing stack by rule " << yyrule - 1
    3057           0 :                << " (line " << yylno << "):" << std::endl;
    3058             :     // The symbols being reduced.
    3059           0 :     for (int yyi = 0; yyi < yynrhs; yyi++)
    3060           0 :       YY_SYMBOL_PRINT ("   $" << yyi + 1 << " =",
    3061             :                        yystack_[(yynrhs) - (yyi + 1)]);
    3062           0 :   }
    3063             : #endif // YYDEBUG
    3064             : 
    3065             :   // Symbol number corresponding to token number t.
    3066             :   inline
    3067             :   Lha_parser::token_number_type
    3068        9850 :   Lha_parser::yytranslate_ (int t)
    3069             :   {
    3070             :     static
    3071             :     const token_number_type
    3072             :     translate_table[] =
    3073             :     {
    3074             :      0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3075             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3076             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3077             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3078             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3079             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3080             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3081             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3082             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3083             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3084             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3085             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3086             :        2,     2,     2,    64,     2,    65,     2,     2,     2,     2,
    3087             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3088             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3089             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3090             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3091             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3092             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3093             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3094             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3095             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3096             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3097             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3098             :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    3099             :        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
    3100             :        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3101             :       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3102             :       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
    3103             :       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
    3104             :       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
    3105             :       55,    56,    57,    58,    59,    60,    61,    62,    63
    3106             :     };
    3107        9850 :     const unsigned int user_token_number_max_ = 318;
    3108        9850 :     const token_number_type undef_token_ = 2;
    3109             : 
    3110        9850 :     if (static_cast<int>(t) <= yyeof_)
    3111          29 :       return yyeof_;
    3112        9821 :     else if (static_cast<unsigned int> (t) <= user_token_number_max_)
    3113        9821 :       return translate_table[t];
    3114             :     else
    3115           0 :       return undef_token_;
    3116             :   }
    3117             : 
    3118             : 
    3119             : } // lha
    3120             : #line 3121 "Lha-parser.cc" // lalr1.cc:1167
    3121             : #line 1101 "../../../../src/ModelGenerator/LhaParser/Lha-parser.yy" // lalr1.cc:1168
    3122             : 
    3123             : 
    3124             : void
    3125             : lha::Lha_parser::error (const lha::Lha_parser::location_type& l,
    3126             : const std::string& m)
    3127             : {
    3128             :         Reader.error (l, m);
    3129             : }

Generated by: LCOV version 1.13