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 gspnlex
35 :
36 : // First part of user declarations.
37 :
38 : #line 39 "Gspn-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 "Gspn-parser.hh"
49 :
50 : // User implementation prologue.
51 :
52 : #line 53 "Gspn-parser.cc" // lalr1.cc:412
53 : // Unqualified %code blocks.
54 : #line 44 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:413
55 :
56 : #include "Gspn-Reader.hpp"
57 : #include <set>
58 : #include <vector>
59 :
60 : vector<string> Par;
61 : std::string distrib;
62 : Eval Evaluate;
63 :
64 :
65 : int NbServers;
66 : bool SingleService;
67 : bool MarkingDependent;
68 : bool AgeMemory;
69 :
70 :
71 :
72 : #line 73 "Gspn-parser.cc" // lalr1.cc:413
73 :
74 :
75 : #ifndef YY_
76 : # if defined YYENABLE_NLS && YYENABLE_NLS
77 : # if ENABLE_NLS
78 : # include <libintl.h> // FIXME: INFRINGES ON USER NAME SPACE.
79 : # define YY_(msgid) dgettext ("bison-runtime", msgid)
80 : # endif
81 : # endif
82 : # ifndef YY_
83 : # define YY_(msgid) msgid
84 : # endif
85 : #endif
86 :
87 : #define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
88 : /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
89 : If N is 0, then set CURRENT to the empty location which ends
90 : the previous symbol: RHS[0] (always defined). */
91 :
92 : # ifndef YYLLOC_DEFAULT
93 : # define YYLLOC_DEFAULT(Current, Rhs, N) \
94 : do \
95 : if (N) \
96 : { \
97 : (Current).begin = YYRHSLOC (Rhs, 1).begin; \
98 : (Current).end = YYRHSLOC (Rhs, N).end; \
99 : } \
100 : else \
101 : { \
102 : (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
103 : } \
104 : while (/*CONSTCOND*/ false)
105 : # endif
106 :
107 :
108 : // Suppress unused-variable warnings by "using" E.
109 : #define YYUSE(E) ((void) (E))
110 :
111 : // Enable debugging if requested.
112 : #if YYDEBUG
113 :
114 : // A pseudo ostream that takes yydebug_ into account.
115 : # define YYCDEBUG if (yydebug_) (*yycdebug_)
116 :
117 : # define YY_SYMBOL_PRINT(Title, Symbol) \
118 : do { \
119 : if (yydebug_) \
120 : { \
121 : *yycdebug_ << Title << ' '; \
122 : yy_print_ (*yycdebug_, Symbol); \
123 : *yycdebug_ << std::endl; \
124 : } \
125 : } while (false)
126 :
127 : # define YY_REDUCE_PRINT(Rule) \
128 : do { \
129 : if (yydebug_) \
130 : yy_reduce_print_ (Rule); \
131 : } while (false)
132 :
133 : # define YY_STACK_PRINT() \
134 : do { \
135 : if (yydebug_) \
136 : yystack_print_ (); \
137 : } while (false)
138 :
139 : #else // !YYDEBUG
140 :
141 : # define YYCDEBUG if (false) std::cerr
142 : # define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol)
143 : # define YY_REDUCE_PRINT(Rule) static_cast<void>(0)
144 : # define YY_STACK_PRINT() static_cast<void>(0)
145 :
146 : #endif // !YYDEBUG
147 :
148 : #define yyerrok (yyerrstatus_ = 0)
149 : #define yyclearin (yyla.clear ())
150 :
151 : #define YYACCEPT goto yyacceptlab
152 : #define YYABORT goto yyabortlab
153 : #define YYERROR goto yyerrorlab
154 : #define YYRECOVERING() (!!yyerrstatus_)
155 :
156 :
157 : namespace gspn {
158 : #line 159 "Gspn-parser.cc" // lalr1.cc:479
159 :
160 : /* Return YYSTR after stripping away unnecessary quotes and
161 : backslashes, so that it's suitable for yyerror. The heuristic is
162 : that double-quoting is unnecessary unless the string contains an
163 : apostrophe, a comma, or backslash (other than backslash-backslash).
164 : YYSTR is taken from yytname. */
165 : std::string
166 0 : Gspn_parser::yytnamerr_ (const char *yystr)
167 : {
168 0 : if (*yystr == '"')
169 : {
170 0 : std::string yyr = "";
171 0 : char const *yyp = yystr;
172 :
173 : for (;;)
174 0 : switch (*++yyp)
175 : {
176 : case '\'':
177 : case ',':
178 0 : goto do_not_strip_quotes;
179 :
180 : case '\\':
181 0 : if (*++yyp != '\\')
182 0 : goto do_not_strip_quotes;
183 : // Fall through.
184 : default:
185 0 : yyr += *yyp;
186 0 : break;
187 :
188 : case '"':
189 0 : return yyr;
190 : }
191 : do_not_strip_quotes: ;
192 : }
193 :
194 0 : return yystr;
195 : }
196 :
197 :
198 : /// Build a parser object.
199 11 : Gspn_parser::Gspn_parser (Gspn_Reader& Reader_yyarg)
200 : :
201 : #if YYDEBUG
202 : yydebug_ (false),
203 : yycdebug_ (&std::cerr),
204 : #endif
205 11 : Reader (Reader_yyarg)
206 11 : {}
207 :
208 11 : Gspn_parser::~Gspn_parser ()
209 11 : {}
210 :
211 :
212 : /*---------------.
213 : | Symbol types. |
214 : `---------------*/
215 :
216 : inline
217 : Gspn_parser::syntax_error::syntax_error (const location_type& l, const std::string& m)
218 : : std::runtime_error (m)
219 : , location (l)
220 : {}
221 :
222 : // basic_symbol.
223 : template <typename Base>
224 : inline
225 7040 : Gspn_parser::basic_symbol<Base>::basic_symbol ()
226 7040 : : value ()
227 7040 : {}
228 :
229 : template <typename Base>
230 : inline
231 5333 : Gspn_parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
232 : : Base (other)
233 : , value ()
234 5333 : , location (other.location)
235 : {
236 5333 : value = other.value;
237 5333 : }
238 :
239 :
240 : template <typename Base>
241 : inline
242 : Gspn_parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l)
243 : : Base (t)
244 : , value (v)
245 : , location (l)
246 : {}
247 :
248 :
249 : /// Constructor for valueless symbols.
250 : template <typename Base>
251 : inline
252 3670 : Gspn_parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const location_type& l)
253 : : Base (t)
254 : , value ()
255 3670 : , location (l)
256 3670 : {}
257 :
258 : template <typename Base>
259 : inline
260 16043 : Gspn_parser::basic_symbol<Base>::~basic_symbol ()
261 : {
262 16043 : clear ();
263 16043 : }
264 :
265 : template <typename Base>
266 : inline
267 : void
268 16043 : Gspn_parser::basic_symbol<Base>::clear ()
269 : {
270 16043 : Base::clear ();
271 16043 : }
272 :
273 : template <typename Base>
274 : inline
275 : bool
276 3864 : Gspn_parser::basic_symbol<Base>::empty () const
277 : {
278 3864 : return Base::type_get () == empty_symbol;
279 : }
280 :
281 : template <typename Base>
282 : inline
283 : void
284 5333 : Gspn_parser::basic_symbol<Base>::move (basic_symbol& s)
285 : {
286 5333 : super_type::move(s);
287 5333 : value = s.value;
288 5333 : location = s.location;
289 5333 : }
290 :
291 : // by_type.
292 : inline
293 11 : Gspn_parser::by_type::by_type ()
294 11 : : type (empty_symbol)
295 11 : {}
296 :
297 : inline
298 : Gspn_parser::by_type::by_type (const by_type& other)
299 : : type (other.type)
300 : {}
301 :
302 : inline
303 : Gspn_parser::by_type::by_type (token_type t)
304 : : type (yytranslate_ (t))
305 : {}
306 :
307 : inline
308 : void
309 11 : Gspn_parser::by_type::clear ()
310 : {
311 11 : type = empty_symbol;
312 11 : }
313 :
314 : inline
315 : void
316 : Gspn_parser::by_type::move (by_type& that)
317 : {
318 : type = that.type;
319 : that.clear ();
320 : }
321 :
322 : inline
323 : int
324 11570 : Gspn_parser::by_type::type_get () const
325 : {
326 11570 : return type;
327 : }
328 :
329 :
330 : // by_state.
331 : inline
332 7029 : Gspn_parser::by_state::by_state ()
333 7029 : : state (empty_state)
334 7029 : {}
335 :
336 : inline
337 5333 : Gspn_parser::by_state::by_state (const by_state& other)
338 5333 : : state (other.state)
339 5333 : {}
340 :
341 : inline
342 : void
343 21365 : Gspn_parser::by_state::clear ()
344 : {
345 21365 : state = empty_state;
346 21365 : }
347 :
348 : inline
349 : void
350 5333 : Gspn_parser::by_state::move (by_state& that)
351 : {
352 5333 : state = that.state;
353 5333 : that.clear ();
354 5333 : }
355 :
356 : inline
357 3670 : Gspn_parser::by_state::by_state (state_type s)
358 3670 : : state (s)
359 3670 : {}
360 :
361 : inline
362 : Gspn_parser::symbol_number_type
363 22 : Gspn_parser::by_state::type_get () const
364 : {
365 22 : if (state == empty_state)
366 0 : return empty_symbol;
367 : else
368 22 : return yystos_[state];
369 : }
370 :
371 : inline
372 7029 : Gspn_parser::stack_symbol_type::stack_symbol_type ()
373 7029 : {}
374 :
375 :
376 : inline
377 3670 : Gspn_parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
378 3670 : : super_type (s, that.location)
379 : {
380 3670 : value = that.value;
381 : // that is emptied.
382 3670 : that.type = empty_symbol;
383 3670 : }
384 :
385 : inline
386 : Gspn_parser::stack_symbol_type&
387 : Gspn_parser::stack_symbol_type::operator= (const stack_symbol_type& that)
388 : {
389 : state = that.state;
390 : value = that.value;
391 : location = that.location;
392 : return *this;
393 : }
394 :
395 :
396 : template <typename Base>
397 : inline
398 : void
399 22 : Gspn_parser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
400 : {
401 22 : if (yymsg)
402 22 : YY_SYMBOL_PRINT (yymsg, yysym);
403 :
404 : // User destructor.
405 22 : switch (yysym.type_get ())
406 : {
407 : case 3: // str
408 :
409 : #line 115 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:614
410 : { delete (yysym.value.name); }
411 : #line 412 "Gspn-parser.cc" // lalr1.cc:614
412 0 : break;
413 :
414 :
415 : default:
416 22 : break;
417 : }
418 22 : }
419 :
420 : #if YYDEBUG
421 : template <typename Base>
422 : void
423 0 : Gspn_parser::yy_print_ (std::ostream& yyo,
424 : const basic_symbol<Base>& yysym) const
425 : {
426 0 : std::ostream& yyoutput = yyo;
427 : YYUSE (yyoutput);
428 0 : symbol_number_type yytype = yysym.type_get ();
429 : // Avoid a (spurious) G++ 4.8 warning about "array subscript is
430 : // below array bounds".
431 0 : if (yysym.empty ())
432 0 : std::abort ();
433 0 : yyo << (yytype < yyntokens_ ? "token" : "nterm")
434 0 : << ' ' << yytname_[yytype] << " ("
435 0 : << yysym.location << ": ";
436 0 : switch (yytype)
437 : {
438 : case 3: // str
439 :
440 : #line 114 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:636
441 : { debug_stream () << *(yysym.value.name); }
442 : #line 443 "Gspn-parser.cc" // lalr1.cc:636
443 0 : break;
444 :
445 : case 5: // rval
446 :
447 : #line 118 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:636
448 : { debug_stream () << (yysym.value.RealVal); }
449 : #line 450 "Gspn-parser.cc" // lalr1.cc:636
450 0 : break;
451 :
452 : case 6: // ival
453 :
454 : #line 117 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:636
455 : { debug_stream () << (yysym.value.IntVal); }
456 : #line 457 "Gspn-parser.cc" // lalr1.cc:636
457 0 : break;
458 :
459 :
460 : default:
461 0 : break;
462 : }
463 0 : yyo << ')';
464 0 : }
465 : #endif
466 :
467 : inline
468 : void
469 3670 : Gspn_parser::yypush_ (const char* m, state_type s, symbol_type& sym)
470 : {
471 7340 : stack_symbol_type t (s, sym);
472 3670 : yypush_ (m, t);
473 3670 : }
474 :
475 : inline
476 : void
477 5333 : Gspn_parser::yypush_ (const char* m, stack_symbol_type& s)
478 : {
479 5333 : if (m)
480 3659 : YY_SYMBOL_PRINT (m, s);
481 5333 : yystack_.push (s);
482 5333 : }
483 :
484 : inline
485 : void
486 1696 : Gspn_parser::yypop_ (unsigned int n)
487 : {
488 1696 : yystack_.pop (n);
489 1696 : }
490 :
491 : #if YYDEBUG
492 : std::ostream&
493 0 : Gspn_parser::debug_stream () const
494 : {
495 0 : return *yycdebug_;
496 : }
497 :
498 : void
499 0 : Gspn_parser::set_debug_stream (std::ostream& o)
500 : {
501 0 : yycdebug_ = &o;
502 0 : }
503 :
504 :
505 : Gspn_parser::debug_level_type
506 0 : Gspn_parser::debug_level () const
507 : {
508 0 : return yydebug_;
509 : }
510 :
511 : void
512 11 : Gspn_parser::set_debug_level (debug_level_type l)
513 : {
514 11 : yydebug_ = l;
515 11 : }
516 : #endif // YYDEBUG
517 :
518 : inline Gspn_parser::state_type
519 1663 : Gspn_parser::yy_lr_goto_state_ (state_type yystate, int yysym)
520 : {
521 1663 : int yyr = yypgoto_[yysym - yyntokens_] + yystate;
522 1663 : if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
523 868 : return yytable_[yyr];
524 : else
525 795 : return yydefgoto_[yysym - yyntokens_];
526 : }
527 :
528 : inline bool
529 5322 : Gspn_parser::yy_pact_value_is_default_ (int yyvalue)
530 : {
531 5322 : return yyvalue == yypact_ninf_;
532 : }
533 :
534 : inline bool
535 0 : Gspn_parser::yy_table_value_is_error_ (int yyvalue)
536 : {
537 0 : return yyvalue == yytable_ninf_;
538 : }
539 :
540 : int
541 11 : Gspn_parser::parse ()
542 : {
543 : // State.
544 : int yyn;
545 : /// Length of the RHS of the rule being reduced.
546 11 : int yylen = 0;
547 :
548 : // Error handling.
549 11 : int yynerrs_ = 0;
550 11 : int yyerrstatus_ = 0;
551 :
552 : /// The lookahead symbol.
553 22 : symbol_type yyla;
554 :
555 : /// The locations where the error started and ended.
556 22 : stack_symbol_type yyerror_range[3];
557 :
558 : /// The return value of parse ().
559 : int yyresult;
560 :
561 : // FIXME: This shoud be completely indented. It is not yet to
562 : // avoid gratuitous conflicts when merging into the master branch.
563 : try
564 : {
565 11 : YYCDEBUG << "Starting parse" << std::endl;
566 :
567 :
568 : /* Initialize the stack. The initial state will be set in
569 : yynewstate, since the latter expects the semantical and the
570 : location values to have been already stored, initialize these
571 : stacks with a primary value. */
572 11 : yystack_.clear ();
573 11 : yypush_ (YY_NULLPTR, 0, yyla);
574 :
575 : // A new symbol was pushed on the stack.
576 : yynewstate:
577 5333 : YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
578 :
579 : // Accept?
580 5333 : if (yystack_[0].state == yyfinal_)
581 11 : goto yyacceptlab;
582 :
583 5322 : goto yybackup;
584 :
585 : // Backup.
586 : yybackup:
587 :
588 : // Try to take a decision without lookahead.
589 5322 : yyn = yypact_[yystack_[0].state];
590 5322 : if (yy_pact_value_is_default_ (yyn))
591 1469 : goto yydefault;
592 :
593 : // Read a lookahead token.
594 3853 : if (yyla.empty ())
595 : {
596 3659 : YYCDEBUG << "Reading a token: ";
597 : try
598 : {
599 3659 : yyla.type = yytranslate_ (yylex (&yyla.value, &yyla.location, Reader));
600 : }
601 0 : catch (const syntax_error& yyexc)
602 : {
603 0 : error (yyexc);
604 0 : goto yyerrlab1;
605 : }
606 : }
607 3853 : YY_SYMBOL_PRINT ("Next token is", yyla);
608 :
609 : /* If the proper action on seeing token YYLA.TYPE is to reduce or
610 : to detect an error, take that action. */
611 3853 : yyn += yyla.type_get ();
612 3853 : if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
613 194 : goto yydefault;
614 :
615 : // Reduce or error.
616 3659 : yyn = yytable_[yyn];
617 3659 : if (yyn <= 0)
618 : {
619 0 : if (yy_table_value_is_error_ (yyn))
620 0 : goto yyerrlab;
621 0 : yyn = -yyn;
622 0 : goto yyreduce;
623 : }
624 :
625 : // Count tokens shifted since error; after three, turn off error status.
626 3659 : if (yyerrstatus_)
627 0 : --yyerrstatus_;
628 :
629 : // Shift the lookahead token.
630 3659 : yypush_ ("Shifting", yyn, yyla);
631 3659 : goto yynewstate;
632 :
633 : /*-----------------------------------------------------------.
634 : | yydefault -- do the default action for the current state. |
635 : `-----------------------------------------------------------*/
636 : yydefault:
637 1663 : yyn = yydefact_[yystack_[0].state];
638 1663 : if (yyn == 0)
639 0 : goto yyerrlab;
640 1663 : goto yyreduce;
641 :
642 : /*-----------------------------.
643 : | yyreduce -- Do a reduction. |
644 : `-----------------------------*/
645 : yyreduce:
646 1663 : yylen = yyr2_[yyn];
647 : {
648 3326 : stack_symbol_type yylhs;
649 1663 : yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
650 : /* If YYLEN is nonzero, implement the default value of the
651 : action: '$$ = $1'. Otherwise, use the top of the stack.
652 :
653 : Otherwise, the following line sets YYLHS.VALUE to garbage.
654 : This behavior is undocumented and Bison users should not rely
655 : upon it. */
656 1663 : if (yylen)
657 1663 : yylhs.value = yystack_[yylen - 1].value;
658 : else
659 0 : yylhs.value = yystack_[0].value;
660 :
661 : // Compute the default @$.
662 : {
663 1663 : slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
664 1663 : YYLLOC_DEFAULT (yylhs.location, slice, yylen);
665 : }
666 :
667 : // Perform the reduction.
668 1663 : YY_REDUCE_PRINT (yyn);
669 : try
670 : {
671 1663 : switch (yyn)
672 : {
673 : case 2:
674 : #line 130 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
675 : { sprintf((yylhs.value.expression),"%d",(yystack_[0].value.IntVal));}
676 : #line 677 "Gspn-parser.cc" // lalr1.cc:859
677 233 : break;
678 :
679 : case 3:
680 : #line 131 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
681 : {
682 : if(Reader.spn->PlacesId.find(*(yystack_[0].value.name))!=Reader.spn->PlacesId.end())
683 : {std::ostringstream s; s<<" Marking.P->_PL_"<< (yystack_[0].value.name)->c_str() <<" ";
684 : sprintf((yylhs.value.expression), "%s",(s.str()).c_str());
685 : }
686 : else if(Reader.spn->IntConstant.find(*(yystack_[0].value.name))!=Reader.spn->IntConstant.end())
687 : {std::ostringstream s; s<<Reader.spn->IntConstant[*(yystack_[0].value.name)];
688 : sprintf((yylhs.value.expression), "%s",(s.str()).c_str());
689 :
690 : }
691 : else{cout<<"'"<<*(yystack_[0].value.name)<<"' has not been declared"<<endl;YYABORT;}}
692 : #line 693 "Gspn-parser.cc" // lalr1.cc:859
693 8 : break;
694 :
695 : case 4:
696 : #line 142 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
697 : {snprintf((yylhs.value.expression),BUFF_SIZE,"( %s )", (yystack_[1].value.expression)); }
698 : #line 699 "Gspn-parser.cc" // lalr1.cc:859
699 0 : break;
700 :
701 : case 5:
702 : #line 143 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
703 : {snprintf((yylhs.value.expression),BUFF_SIZE,"%s + %s", (yystack_[2].value.expression), (yystack_[0].value.expression)); }
704 : #line 705 "Gspn-parser.cc" // lalr1.cc:859
705 0 : break;
706 :
707 : case 6:
708 : #line 144 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
709 : {snprintf((yylhs.value.expression),BUFF_SIZE,"%s - %s", (yystack_[2].value.expression), (yystack_[0].value.expression)); }
710 : #line 711 "Gspn-parser.cc" // lalr1.cc:859
711 0 : break;
712 :
713 : case 7:
714 : #line 145 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
715 : {snprintf((yylhs.value.expression),BUFF_SIZE,"%s * %s", (yystack_[2].value.expression), (yystack_[0].value.expression)); }
716 : #line 717 "Gspn-parser.cc" // lalr1.cc:859
717 0 : break;
718 :
719 : case 8:
720 : #line 146 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
721 : {snprintf((yylhs.value.expression),BUFF_SIZE,"pow(%s , %s)", (yystack_[2].value.expression), (yystack_[0].value.expression)); }
722 : #line 723 "Gspn-parser.cc" // lalr1.cc:859
723 0 : break;
724 :
725 : case 9:
726 : #line 147 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
727 : {snprintf((yylhs.value.expression),BUFF_SIZE,"floor( %s )", (yystack_[1].value.expression)); }
728 : #line 729 "Gspn-parser.cc" // lalr1.cc:859
729 0 : break;
730 :
731 : case 10:
732 : #line 148 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
733 : {snprintf((yylhs.value.expression),BUFF_SIZE,"floor( %s /double(%s)", (yystack_[3].value.expression),(yystack_[1].value.expression)); }
734 : #line 735 "Gspn-parser.cc" // lalr1.cc:859
735 0 : break;
736 :
737 : case 11:
738 : #line 149 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
739 : {snprintf((yylhs.value.expression),BUFF_SIZE,"min(%s , %s)", (yystack_[3].value.expression), (yystack_[1].value.expression)); }
740 : #line 741 "Gspn-parser.cc" // lalr1.cc:859
741 0 : break;
742 :
743 : case 12:
744 : #line 150 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
745 : {snprintf((yylhs.value.expression),BUFF_SIZE,"max(%s , %s)", (yystack_[3].value.expression), (yystack_[1].value.expression)); }
746 : #line 747 "Gspn-parser.cc" // lalr1.cc:859
747 0 : break;
748 :
749 : case 13:
750 : #line 153 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
751 : {sprintf((yylhs.value.expression), "%f",(yystack_[0].value.RealVal));}
752 : #line 753 "Gspn-parser.cc" // lalr1.cc:859
753 28 : break;
754 :
755 : case 14:
756 : #line 154 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
757 : {snprintf((yylhs.value.expression),BUFF_SIZE,"%d",(yystack_[0].value.IntVal));}
758 : #line 759 "Gspn-parser.cc" // lalr1.cc:859
759 168 : break;
760 :
761 : case 15:
762 : #line 155 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
763 : {
764 : if(Reader.spn->PlacesId.find(*(yystack_[0].value.name))!=Reader.spn->PlacesId.end())
765 : {std::ostringstream s; s<<" Marking.P->_PL_"<<(yystack_[0].value.name)->c_str()<<" ";
766 : snprintf((yylhs.value.expression),BUFF_SIZE, "%s",(s.str()).c_str());
767 : }
768 : else if(Reader.spn->RealConstant.find(*(yystack_[0].value.name))!=Reader.spn->RealConstant.end())
769 : {std::ostringstream s; s<<Reader.spn->RealConstant[*(yystack_[0].value.name)];
770 : snprintf((yylhs.value.expression),BUFF_SIZE, "%s",(s.str()).c_str());
771 : }
772 : else{cout<<"'"<<*(yystack_[0].value.name)<<"' has not been declared"<<endl;YYABORT;}}
773 : #line 774 "Gspn-parser.cc" // lalr1.cc:859
774 46 : break;
775 :
776 : case 16:
777 : #line 165 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
778 : {snprintf((yylhs.value.expression),BUFF_SIZE,"( %s )", (yystack_[1].value.expression)); }
779 : #line 780 "Gspn-parser.cc" // lalr1.cc:859
780 0 : break;
781 :
782 : case 17:
783 : #line 166 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
784 : {snprintf((yylhs.value.expression),BUFF_SIZE,"%s /double(%s)", (yystack_[2].value.expression), (yystack_[0].value.expression)); }
785 : #line 786 "Gspn-parser.cc" // lalr1.cc:859
786 0 : break;
787 :
788 : case 18:
789 : #line 167 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
790 : {snprintf((yylhs.value.expression),BUFF_SIZE,"%s + %s", (yystack_[2].value.expression), (yystack_[0].value.expression)); }
791 : #line 792 "Gspn-parser.cc" // lalr1.cc:859
792 0 : break;
793 :
794 : case 19:
795 : #line 168 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
796 : {snprintf((yylhs.value.expression),BUFF_SIZE,"%s - %s", (yystack_[2].value.expression), (yystack_[0].value.expression)); }
797 : #line 798 "Gspn-parser.cc" // lalr1.cc:859
798 0 : break;
799 :
800 : case 20:
801 : #line 169 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
802 : {snprintf((yylhs.value.expression),BUFF_SIZE,"%s * %s", (yystack_[2].value.expression), (yystack_[0].value.expression)); }
803 : #line 804 "Gspn-parser.cc" // lalr1.cc:859
804 12 : break;
805 :
806 : case 21:
807 : #line 170 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
808 : {snprintf((yylhs.value.expression),BUFF_SIZE,"pow(%s , %s)", (yystack_[2].value.expression), (yystack_[0].value.expression)); }
809 : #line 810 "Gspn-parser.cc" // lalr1.cc:859
810 0 : break;
811 :
812 : case 22:
813 : #line 171 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
814 : {snprintf((yylhs.value.expression),BUFF_SIZE,"floor( %s )", (yystack_[1].value.expression)); }
815 : #line 816 "Gspn-parser.cc" // lalr1.cc:859
816 0 : break;
817 :
818 : case 23:
819 : #line 172 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
820 : {snprintf((yylhs.value.expression),BUFF_SIZE,"min(%s , %s)", (yystack_[3].value.expression), (yystack_[1].value.expression)); }
821 : #line 822 "Gspn-parser.cc" // lalr1.cc:859
822 0 : break;
823 :
824 : case 24:
825 : #line 173 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
826 : {snprintf((yylhs.value.expression),BUFF_SIZE,"max(%s , %s)", (yystack_[3].value.expression), (yystack_[1].value.expression)); }
827 : #line 828 "Gspn-parser.cc" // lalr1.cc:859
828 0 : break;
829 :
830 : case 33:
831 : #line 192 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
832 : {if(Reader.spn->RealConstant.find(*(yystack_[3].value.name))!=Reader.spn->RealConstant.end())
833 : {cout<<"Constant "<<*(yystack_[3].value.name)<<" already defined."<<endl; YYABORT;}
834 : else {string st=(yystack_[1].value.expression);
835 : if (Reader.P.constants.count(*(yystack_[3].value.name))>0)st = Reader.P.constants[*(yystack_[3].value.name)];
836 :
837 : Evaluate.parse(st);
838 : Reader.spn->IntConstant[*(yystack_[3].value.name)]=Evaluate.IntResult;
839 : Reader.spn->RealConstant[*(yystack_[3].value.name)]=Evaluate.RealResult;}
840 : }
841 : #line 842 "Gspn-parser.cc" // lalr1.cc:859
842 11 : break;
843 :
844 : case 34:
845 : #line 202 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
846 : {if(Reader.spn->RealConstant.find(*(yystack_[3].value.name))!=Reader.spn->RealConstant.end())
847 : {cout<<"Constant "<<*(yystack_[3].value.name)<<" already defined."<<endl; YYABORT;}
848 : else {string st=(yystack_[1].value.expression);
849 : if (Reader.P.constants.count(*(yystack_[3].value.name))>0)st = Reader.P.constants[*(yystack_[3].value.name)];
850 : Evaluate.parse(st);
851 : Reader.spn->RealConstant[*(yystack_[3].value.name)]=Evaluate.RealResult;}
852 : }
853 : #line 854 "Gspn-parser.cc" // lalr1.cc:859
854 24 : break;
855 :
856 : case 37:
857 : #line 213 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
858 : {Reader.spn->pl=(yystack_[1].value.IntVal);
859 :
860 : }
861 : #line 862 "Gspn-parser.cc" // lalr1.cc:859
862 11 : break;
863 :
864 : case 38:
865 : #line 216 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
866 : {if(Reader.spn->IntConstant.find(*(yystack_[1].value.name))==Reader.spn->IntConstant.end())
867 : {
868 : std::cout<<*(yystack_[1].value.name)<<" was not declared"<<std::endl;
869 : YYABORT;
870 : }
871 : Reader.spn->pl=Reader.spn->IntConstant[*(yystack_[1].value.name)];
872 :
873 : }
874 : #line 875 "Gspn-parser.cc" // lalr1.cc:859
875 0 : break;
876 :
877 : case 39:
878 : #line 225 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
879 : {Reader.spn->tr=(yystack_[1].value.IntVal);
880 :
881 : }
882 : #line 883 "Gspn-parser.cc" // lalr1.cc:859
883 11 : break;
884 :
885 : case 40:
886 : #line 228 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
887 : {if(Reader.spn->IntConstant.find(*(yystack_[1].value.name))==Reader.spn->IntConstant.end())
888 : {
889 : std::cout<<*(yystack_[1].value.name)<<" was not declared"<<std::endl;
890 : YYABORT;
891 : }
892 : Reader.spn->tr=Reader.spn->IntConstant[*(yystack_[1].value.name)];
893 :
894 : }
895 : #line 896 "Gspn-parser.cc" // lalr1.cc:859
896 0 : break;
897 :
898 : case 41:
899 : #line 237 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
900 : {
901 : if(Reader.spn->PlacesId.size()!=Reader.spn->pl){
902 : std::cout<<"Place label missing or redeclared, expected:"<< Reader.spn->pl <<"; found: "<< Reader.spn->PlacesId.size() <<std::endl;
903 : YYABORT;
904 : }
905 :
906 : //Reader.spn->Marking= vector<string>(Reader.spn->pl, " ");
907 :
908 : MarkingDependent=false;
909 : AgeMemory=false;
910 :
911 :
912 : }
913 : #line 914 "Gspn-parser.cc" // lalr1.cc:859
914 11 : break;
915 :
916 : case 42:
917 : #line 251 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
918 : {
919 : //cout << "New place name:" << *$1 << endl;
920 : place p;
921 : p.name = *(yystack_[0].value.name);
922 : p.id = Reader.spn->placeStruct.size();
923 : Reader.spn->placeStruct.push_back(p);
924 : int sz=Reader.spn->PlacesId.size();
925 : Reader.spn->PlacesId[*(yystack_[0].value.name)]=sz;
926 : }
927 : #line 928 "Gspn-parser.cc" // lalr1.cc:859
928 11 : break;
929 :
930 : case 43:
931 : #line 260 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
932 : {
933 : //cout << "New place name:" << *$3 << endl;
934 :
935 : place p;
936 : p.name = *(yystack_[0].value.name);
937 : p.id = Reader.spn->placeStruct.size();
938 : Reader.spn->placeStruct.push_back(p);
939 : int sz=Reader.spn->PlacesId.size();
940 : Reader.spn->PlacesId[*(yystack_[0].value.name)]=sz;
941 : }
942 : #line 943 "Gspn-parser.cc" // lalr1.cc:859
943 49 : break;
944 :
945 : case 44:
946 : #line 271 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
947 : {
948 : if(Reader.spn->TransList.size()!=Reader.spn->tr){
949 : std::cout<<"Transition label missing or redeclared, expected:"<< Reader.spn->tr <<"; found: "<< Reader.spn->TransList.size() << endl;
950 : YYABORT;
951 : }
952 :
953 : }
954 : #line 955 "Gspn-parser.cc" // lalr1.cc:859
955 11 : break;
956 :
957 : case 45:
958 : #line 279 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
959 : {Reader.spn->TransList.insert(*(yystack_[0].value.name));
960 : /*int sz=Reader.spn->TransId.size();
961 : Reader.spn->TransId[*$1]=sz;*/
962 :
963 : }
964 : #line 965 "Gspn-parser.cc" // lalr1.cc:859
965 11 : break;
966 :
967 : case 46:
968 : #line 284 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
969 : {Reader.spn->TransList.insert(*(yystack_[0].value.name));
970 : /*int sz=Reader.spn->TransId.size();
971 : Reader.spn->TransId[*$3]=sz;*/
972 :
973 : }
974 : #line 975 "Gspn-parser.cc" // lalr1.cc:859
975 62 : break;
976 :
977 : case 49:
978 : #line 294 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
979 : {}
980 : #line 981 "Gspn-parser.cc" // lalr1.cc:859
981 11 : break;
982 :
983 : case 52:
984 : #line 300 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
985 : { if(Reader.spn->PlacesId.find(*(yystack_[4].value.name))==Reader.spn->PlacesId.end())
986 : {cout<<"'"<<*(yystack_[4].value.name)<<"' has not been declared"<<endl;
987 : YYABORT;
988 : }
989 : string st=(yystack_[2].value.expression);
990 : if(Evaluate.parse(st)){
991 : std::cout<<"Initial Marking is not marking dependent"<<std::endl;
992 : YYABORT;
993 : }
994 : stringstream ss;
995 : ss << Evaluate.IntResult;
996 : Reader.spn->placeStruct[Reader.spn->PlacesId[*(yystack_[4].value.name)]].Marking=ss.str();
997 : Reader.spn->placeStruct[Reader.spn->PlacesId[*(yystack_[4].value.name)]].initMarking=vector<coloredToken>(1, coloredToken(ss.str()));
998 : }
999 : #line 1000 "Gspn-parser.cc" // lalr1.cc:859
1000 60 : break;
1001 :
1002 : case 54:
1003 : #line 318 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1004 : {}
1005 : #line 1006 "Gspn-parser.cc" // lalr1.cc:859
1006 11 : break;
1007 :
1008 : case 55:
1009 : #line 319 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1010 : {}
1011 : #line 1012 "Gspn-parser.cc" // lalr1.cc:859
1012 62 : break;
1013 :
1014 : case 56:
1015 : #line 321 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1016 : {
1017 : if(Reader.spn->TransList.find(*(yystack_[8].value.name))==Reader.spn->TransList.end())
1018 : {
1019 : std::cout<<"Transition: "<<*(yystack_[8].value.name)<<" was not declared"<<std::endl;
1020 : YYABORT;
1021 : }
1022 : transition *trans = new transition();
1023 : trans->name = (yystack_[8].value.name)->c_str();
1024 : trans->type = Timed;
1025 : trans->dist.name = distrib;
1026 : for(auto &s:Par)trans->dist.Param.push_back(expr(s));
1027 : trans->priority = expr(string((yystack_[4].value.expression)));
1028 : trans->weight = expr(string((yystack_[2].value.expression)));
1029 : trans->singleService = true;
1030 : trans->markingDependant = false;
1031 : trans->ageMemory = false;
1032 : trans->nbServers = 1;
1033 : trans->id = Reader.spn->transitionStruct.size();
1034 : int sz=Reader.spn->TransId.size();
1035 : Reader.spn->TransId[*(yystack_[8].value.name)]=sz;
1036 : Reader.spn->transitionStruct.push_back(*trans);
1037 :
1038 : Par.clear();
1039 : }
1040 : #line 1041 "Gspn-parser.cc" // lalr1.cc:859
1041 2 : break;
1042 :
1043 : case 57:
1044 : #line 345 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1045 : {
1046 : if(Reader.spn->TransList.find(*(yystack_[10].value.name))==Reader.spn->TransList.end())
1047 : {
1048 : std::cout<<"Transition: "<<*(yystack_[10].value.name)<<" was not declared"<<std::endl;
1049 : YYABORT;
1050 : }
1051 : transition *trans = new transition();
1052 : trans->name = (yystack_[10].value.name)->c_str();
1053 : trans->type = Timed;
1054 : trans->dist.name = distrib;
1055 : for(auto &s:Par)trans->dist.Param.push_back(expr(s));
1056 : trans->priority = *(yystack_[6].value.expression);
1057 : trans->weight = *(yystack_[4].value.expression);
1058 : trans->singleService = true;
1059 : trans->markingDependant = false;
1060 : trans->ageMemory = AgeMemory;
1061 : trans->nbServers = 1;
1062 : trans->id = Reader.spn->transitionStruct.size();
1063 : int sz=Reader.spn->TransId.size();
1064 : Reader.spn->TransId[*(yystack_[10].value.name)]=sz;
1065 : Reader.spn->transitionStruct.push_back(*trans);
1066 :
1067 : Par.clear();
1068 : AgeMemory=false;
1069 : }
1070 : #line 1071 "Gspn-parser.cc" // lalr1.cc:859
1071 0 : break;
1072 :
1073 : case 58:
1074 : #line 370 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1075 : {
1076 : if(Reader.spn->TransList.find(*(yystack_[13].value.name))==Reader.spn->TransList.end())
1077 : {
1078 : std::cout<<"Transition: "<<*(yystack_[13].value.name)<<" was not declared"<<std::endl;
1079 : YYABORT;
1080 : }
1081 : if(!SingleService) MarkingDependent=true;
1082 : string st=(yystack_[9].value.expression);
1083 : vector<string> v(1);
1084 : if(Evaluate.parse(st))
1085 : {MarkingDependent=true;v[0]=st;
1086 : }
1087 : else{ if (Evaluate.RealResult<= 0 ) {
1088 : cout << "In exponential distribution Lambda > 0" << endl;
1089 : YYABORT;
1090 : }
1091 : std::ostringstream s;s<<Evaluate.RealResult;
1092 : v[0]=s.str();
1093 : Par.clear();
1094 : }
1095 :
1096 : transition *trans = new transition();
1097 : trans->name = (yystack_[13].value.name)->c_str();
1098 : trans->type = Timed;
1099 : trans->dist.name = "EXPONENTIAL";
1100 : for(auto &s:v)trans->dist.Param.push_back(expr(s));
1101 : trans->priority = expr(string((yystack_[6].value.expression)));
1102 : trans->weight = expr(string((yystack_[4].value.expression)));
1103 : trans->singleService = SingleService;
1104 : trans->markingDependant = MarkingDependent;
1105 : trans->ageMemory = false;
1106 : trans->nbServers = NbServers;
1107 : trans->id = Reader.spn->transitionStruct.size();
1108 : int sz=Reader.spn->TransId.size();
1109 : Reader.spn->TransId[*(yystack_[13].value.name)]=sz;
1110 : Reader.spn->transitionStruct.push_back(*trans);
1111 :
1112 : Par.clear();
1113 : MarkingDependent=false;
1114 :
1115 : }
1116 : #line 1117 "Gspn-parser.cc" // lalr1.cc:859
1117 56 : break;
1118 :
1119 : case 59:
1120 : #line 412 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1121 : {
1122 : if(Reader.spn->TransList.find(*(yystack_[15].value.name))==Reader.spn->TransList.end())
1123 : {
1124 : std::cout<<"Transition: "<<*(yystack_[15].value.name)<<" was not declared"<<std::endl;
1125 : YYABORT;
1126 : }
1127 :
1128 : if(!SingleService) MarkingDependent=true;
1129 : string st=(yystack_[11].value.expression);
1130 : vector<string> v(1);
1131 : if(Evaluate.parse(st))
1132 : {MarkingDependent=true;v[0]=st;
1133 : }
1134 : else{ if (Evaluate.RealResult<= 0 ) {
1135 : cout << "In exponential distribution Lambda > 0" << endl;
1136 : YYABORT;
1137 : }
1138 : std::ostringstream s;s<<Evaluate.RealResult;
1139 : v[0]=s.str();
1140 : }
1141 :
1142 : transition *trans = new transition();
1143 : trans->name= (yystack_[15].value.name)->c_str();
1144 : trans->type = Timed;
1145 : trans->dist.name = "EXPONENTIAL";
1146 : for(auto &s:v)trans->dist.Param.push_back(expr(s));
1147 : trans->priority = expr(string((yystack_[8].value.expression)));
1148 : trans->weight = expr(string((yystack_[6].value.expression)));
1149 : trans->singleService = SingleService;
1150 : trans->markingDependant = MarkingDependent;
1151 : trans->ageMemory = AgeMemory;
1152 : trans->nbServers = NbServers;
1153 : trans->id = Reader.spn->transitionStruct.size();
1154 : Reader.spn->transitionStruct.push_back(*trans);
1155 : int sz=Reader.spn->TransId.size();
1156 : Reader.spn->TransId[*(yystack_[15].value.name)]=sz;
1157 : MarkingDependent=false;
1158 : AgeMemory=false;
1159 : Par.clear();
1160 : }
1161 : #line 1162 "Gspn-parser.cc" // lalr1.cc:859
1162 0 : break;
1163 :
1164 : case 60:
1165 : #line 453 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1166 : {
1167 : if(Reader.spn->TransList.find(*(yystack_[8].value.name))==Reader.spn->TransList.end())
1168 : {
1169 : std::cout<<"Transition: "<<*(yystack_[8].value.name)<<" was not declared"<<std::endl;
1170 : YYABORT;
1171 : }
1172 :
1173 : transition *trans = new transition();
1174 : trans->name = (yystack_[8].value.name)->c_str();
1175 : trans->type = unTimed;
1176 : trans->dist.name = "IMMEDIATE";
1177 : trans->priority = expr(string((yystack_[4].value.expression)));
1178 : trans->weight = expr(string((yystack_[2].value.expression)));
1179 : trans->singleService = true;
1180 : trans->markingDependant = false;
1181 : trans->ageMemory = false;
1182 : trans->nbServers = 1;
1183 : trans->id = Reader.spn->transitionStruct.size();
1184 : int sz=Reader.spn->TransId.size();
1185 : Reader.spn->TransId[*(yystack_[8].value.name)]=sz;
1186 : Reader.spn->transitionStruct.push_back(*trans);
1187 : Par.clear();
1188 : }
1189 : #line 1190 "Gspn-parser.cc" // lalr1.cc:859
1190 15 : break;
1191 :
1192 : case 61:
1193 : #line 482 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1194 : {string st=(yystack_[0].value.expression);
1195 : if(Evaluate.parse(st))
1196 : {cout<<"Weight is not marking dependent: '"<<st<<"'"<<endl;YYABORT; }
1197 : else{ if(Evaluate.RealResult<0)
1198 : {cout<<"Weight is a positive value: '"<<st<<"'"<<endl; YYABORT;}
1199 : else{std::ostringstream s;s<<Evaluate.RealResult;
1200 : sprintf((yylhs.value.expression), "%s",(s.str()).c_str());
1201 : }
1202 : }
1203 : }
1204 : #line 1205 "Gspn-parser.cc" // lalr1.cc:859
1205 73 : break;
1206 :
1207 : case 62:
1208 : #line 493 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1209 : {string st=(yystack_[0].value.expression);
1210 : if(Evaluate.parse(st))
1211 : {cout<<"Priority is not marking dependent: '"<<st<<"'"<<endl;YYABORT; }
1212 : else{ if(Evaluate.RealResult<0)
1213 : {cout<<"Priority is a positive value: '"<<st<<"'"<<endl; YYABORT;}
1214 : else{std::ostringstream s;s<<Evaluate.RealResult;
1215 : sprintf((yylhs.value.expression), "%s",(s.str()).c_str());
1216 : }
1217 : }
1218 : }
1219 : #line 1220 "Gspn-parser.cc" // lalr1.cc:859
1220 73 : break;
1221 :
1222 : case 63:
1223 : #line 504 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1224 : {SingleService=true; NbServers=1;}
1225 : #line 1226 "Gspn-parser.cc" // lalr1.cc:859
1226 56 : break;
1227 :
1228 : case 64:
1229 : #line 505 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1230 : {SingleService=false;NbServers=INT_MAX;}
1231 : #line 1232 "Gspn-parser.cc" // lalr1.cc:859
1232 0 : break;
1233 :
1234 : case 65:
1235 : #line 506 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1236 : {NbServers= (yystack_[1].value.IntVal);
1237 : if(NbServers<1)
1238 : { cout<<"Number of servers should be at least one"<<endl;
1239 : YYABORT;
1240 : }
1241 : if(NbServers==1) SingleService=true;
1242 : else {SingleService=false;}
1243 :
1244 :
1245 : }
1246 : #line 1247 "Gspn-parser.cc" // lalr1.cc:859
1247 0 : break;
1248 :
1249 : case 66:
1250 : #line 516 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1251 : {
1252 : if(Reader.spn->IntConstant.find(*(yystack_[1].value.name))!=Reader.spn->IntConstant.end()){
1253 : NbServers=Reader.spn->IntConstant[*(yystack_[1].value.name)];
1254 : if(NbServers<1)
1255 : { cout<<"Number of servers should be at least one"<<endl;
1256 : YYABORT;
1257 : }
1258 : if(NbServers==1) SingleService=true;
1259 : else {SingleService=false;}
1260 : }
1261 : else{cout<<*(yystack_[1].value.name)<<" not defined or not defined like an integer constant "<<endl;}
1262 :
1263 : }
1264 : #line 1265 "Gspn-parser.cc" // lalr1.cc:859
1265 0 : break;
1266 :
1267 : case 67:
1268 : #line 530 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1269 : {AgeMemory=true;}
1270 : #line 1271 "Gspn-parser.cc" // lalr1.cc:859
1271 0 : break;
1272 :
1273 : case 68:
1274 : #line 531 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1275 : {AgeMemory=false;}
1276 : #line 1277 "Gspn-parser.cc" // lalr1.cc:859
1277 0 : break;
1278 :
1279 : case 69:
1280 : #line 534 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1281 : {
1282 : distrib=*(yystack_[3].value.name);
1283 : int np=Par.size();
1284 : switch (Reader.IndexDist[distrib]) {
1285 : case UNIFORM:
1286 : {
1287 : if (np != 2){
1288 : cout << "Uniform distribution has two parameters: min and max where 0<=min<max" << endl;
1289 : YYABORT;
1290 : }
1291 : double p1,p2;
1292 : string st=Par[0];
1293 : Evaluate.parse(st);p1=Evaluate.RealResult;
1294 : st=Par[1];
1295 : Evaluate.parse(st);p2=Evaluate.RealResult;
1296 : if ((p1>=p2) || (p1<0)) {
1297 : cout << "In uniform distribution 0 <= min< max " << endl;
1298 : YYABORT;
1299 : }
1300 : break;
1301 : }
1302 :
1303 : case EXPONENTIAL:
1304 : {
1305 : if (np != 1) {
1306 : cout << "exponential distribution has one parameter: Lambda > 0, got "<< np << " parameters "<< distrib <<"[";
1307 : for(const auto &x : Par) cout << x << ", ";
1308 : cout << "]" << endl;
1309 : YYABORT;
1310 : }
1311 :
1312 : double p1;
1313 : string st=Par[0];
1314 : Evaluate.parse(st);p1=Evaluate.RealResult;
1315 : if (p1<= 0 ) {
1316 : cout << "In exponential distribution Lambda > 0" << endl;
1317 : YYABORT;
1318 : }
1319 : break;
1320 : }
1321 :
1322 : case DETERMINISTIC:
1323 : {
1324 : if (np != 1) {
1325 : cout << "Deterministic distribution has one parameter: T >= 0" << endl;
1326 : YYABORT;
1327 : }
1328 :
1329 : double p1;
1330 : string st=Par[0];
1331 : Evaluate.parse(st);p1=Evaluate.RealResult;
1332 : if (p1<0 ) {
1333 : cout << "In Deterministic distribution Lambda > 0" << endl;
1334 : YYABORT;
1335 : }
1336 : break;
1337 : }
1338 :
1339 : case LOGNORMAL:
1340 : {
1341 : if (np != 2) {
1342 : cout << "Lognormal distribution has two parameters: mu and sigma^2, where mu > 0 sigma^2 > 0" << endl;
1343 : YYABORT;
1344 : }
1345 :
1346 : double p1,p2;
1347 : string st=Par[0];
1348 : Evaluate.parse(st);p1=Evaluate.RealResult;
1349 : st=Par[1];
1350 : Evaluate.parse(st);p2=Evaluate.RealResult;
1351 : if ((p1<=0) || (p2<=0)) {
1352 : cout << "In Lognormal distribution mu > 0 sigma^2 > 0" << endl;
1353 : YYABORT;
1354 : }
1355 : break;
1356 : }
1357 :
1358 : case TRIANGLE:
1359 : {
1360 : if (np != 3) {
1361 : cout << "Triangle distribution has three parameters: 0 <= b <= c <= a" << endl;
1362 : YYABORT;
1363 : }
1364 : double p1,p2,p3;
1365 : string st=Par[0];
1366 : Evaluate.parse(st);p1=Evaluate.RealResult;
1367 : st=Par[1];
1368 : Evaluate.parse(st);p2=Evaluate.RealResult;
1369 : st=Par[2];
1370 : Evaluate.parse(st);p3=Evaluate.RealResult;
1371 : if ((p1<0) || (p2<p1) || (p3<p2)) {
1372 : cout << "In Triangle distribution: 0 <= b <= c<= a" << endl;
1373 : YYABORT;
1374 : }
1375 :
1376 :
1377 : break;
1378 : }
1379 :
1380 : case GEOMETRIC:
1381 : {
1382 : if (np != 2) {
1383 : cout << "Geometric distribution has two parameters: 0 <= p <= 1 (probability of success) and T > 0 (duration of one step)" << endl;
1384 : YYABORT;
1385 : }
1386 : double p1,p2;
1387 : string st=Par[0];
1388 : Evaluate.parse(st);p1=Evaluate.RealResult;
1389 : st=Par[1];
1390 : Evaluate.parse(st);p2=Evaluate.RealResult;
1391 : if ((p1<0) || (p1>1) || p2<=0) {
1392 : cout << "In Geometric distribution 0 <= p <= 1 (probability of success) and T > 0 (duration of one step)" << endl;
1393 : YYABORT;
1394 : }
1395 : break;
1396 : }
1397 : case ERLANG:
1398 : {
1399 : if (np != 2) {
1400 : cout << "Erlang distribution has two parameters: Shape and Rate, where Shape is a positive integer and Rate > 0" << endl;
1401 : YYABORT;
1402 : }
1403 :
1404 :
1405 : string st=Par[0];
1406 : Evaluate.parse(st);
1407 : if(Evaluate.RealResult != Evaluate.IntResult || Evaluate.IntResult < 1){
1408 : cout << "In Erlang distribution Shape is a positive integer" << endl;
1409 : YYABORT;
1410 : }
1411 :
1412 : st=Par[1];
1413 : Evaluate.parse(st);
1414 : if (Evaluate.RealResult<=0) {
1415 : cout << "In Erlang distribution Rate > 0" << endl;
1416 : YYABORT;
1417 : }
1418 : break;
1419 : }
1420 : case GAMMA:
1421 : {
1422 : if (np != 2) {
1423 : cout << "Gamma distribution has two parameters: Shape>0 and Scale>0" << endl;
1424 : YYABORT;
1425 : }
1426 :
1427 :
1428 : string st=Par[0];
1429 : Evaluate.parse(st);
1430 : if(Evaluate.RealResult<=0){
1431 : cout << "In Gamma distribution Shape > 0" << endl;
1432 : YYABORT;
1433 : }
1434 :
1435 : st=Par[1];
1436 : Evaluate.parse(st);
1437 : if (Evaluate.RealResult<=0) {
1438 : cout << "In Gamma distribution Scale > 0" << endl;
1439 : YYABORT;
1440 : }
1441 : break;
1442 : }
1443 :
1444 :
1445 : default: cout << "\nUnknown distribution !" << endl;
1446 : YYABORT;
1447 :
1448 : }
1449 : }
1450 : #line 1451 "Gspn-parser.cc" // lalr1.cc:859
1451 2 : break;
1452 :
1453 : case 72:
1454 : #line 711 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1455 : {string st=(yystack_[0].value.expression);
1456 : if(Evaluate.parse(st))
1457 : {cout<<"The exponential distribution is the only marking dependent distribution: '"<<st<<"'"<<endl;YYABORT; }
1458 : else{std::ostringstream s;s<<Evaluate.RealResult;
1459 : Par.push_back(s.str());
1460 : }
1461 : }
1462 : #line 1463 "Gspn-parser.cc" // lalr1.cc:859
1463 4 : break;
1464 :
1465 : case 73:
1466 : #line 720 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1467 : {}
1468 : #line 1469 "Gspn-parser.cc" // lalr1.cc:859
1469 11 : break;
1470 :
1471 : case 74:
1472 : #line 722 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1473 : {}
1474 : #line 1475 "Gspn-parser.cc" // lalr1.cc:859
1475 11 : break;
1476 :
1477 : case 75:
1478 : #line 723 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1479 : {}
1480 : #line 1481 "Gspn-parser.cc" // lalr1.cc:859
1481 75 : break;
1482 :
1483 : case 76:
1484 : #line 725 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1485 : {
1486 : if(Reader.spn->PlacesId.find(*(yystack_[6].value.name))==Reader.spn->PlacesId.end())
1487 : {
1488 : std::cout<<"Place: "<<*(yystack_[6].value.name)<<" was not declared"<<std::endl;
1489 : YYABORT;
1490 : }
1491 : if(Reader.spn->TransList.find(*(yystack_[4].value.name))==Reader.spn->TransList.end())
1492 : {
1493 : std::cout<<"Transition: "<<*(yystack_[4].value.name)<<" was not declared"<<std::endl;
1494 : YYABORT;
1495 : }
1496 : string st=(yystack_[2].value.expression);
1497 :
1498 : if(Evaluate.parse(st)){
1499 : Reader.spn->inArcsStruct.insert(make_pair<pair<size_t,size_t>,arc>(Reader.spn->arckey(Reader.spn->TransId[*(yystack_[4].value.name)],Reader.spn->PlacesId[*(yystack_[6].value.name)]), arc(st)));
1500 : }else Reader.spn->inArcsStruct.insert(make_pair<pair<size_t,size_t>,arc>(Reader.spn->arckey(Reader.spn->TransId[*(yystack_[4].value.name)],Reader.spn->PlacesId[*(yystack_[6].value.name)]),arc(Evaluate.IntResult)));
1501 :
1502 : }
1503 : #line 1504 "Gspn-parser.cc" // lalr1.cc:859
1504 85 : break;
1505 :
1506 : case 77:
1507 : #line 743 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1508 : {
1509 : if(Reader.spn->PlacesId.find(*(yystack_[4].value.name))==Reader.spn->PlacesId.end())
1510 : {
1511 : std::cout<<"Place: "<<*(yystack_[4].value.name)<<" was not declared"<<std::endl;
1512 : YYABORT;
1513 : }
1514 : if(Reader.spn->TransList.find(*(yystack_[2].value.name))==Reader.spn->TransList.end())
1515 : {
1516 : std::cout<<"Transition: "<<*(yystack_[2].value.name)<<" was not declared"<<std::endl;
1517 : YYABORT;
1518 : }
1519 : Reader.spn->inArcsStruct.insert(make_pair<pair<size_t,size_t>,arc>(Reader.spn->arckey(Reader.spn->TransId[*(yystack_[2].value.name)],Reader.spn->PlacesId[*(yystack_[4].value.name)]),arc(1)));
1520 :
1521 : }
1522 : #line 1523 "Gspn-parser.cc" // lalr1.cc:859
1523 1 : break;
1524 :
1525 : case 78:
1526 : #line 758 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1527 : {}
1528 : #line 1529 "Gspn-parser.cc" // lalr1.cc:859
1529 11 : break;
1530 :
1531 : case 79:
1532 : #line 760 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1533 : {}
1534 : #line 1535 "Gspn-parser.cc" // lalr1.cc:859
1535 11 : break;
1536 :
1537 : case 80:
1538 : #line 761 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1539 : {}
1540 : #line 1541 "Gspn-parser.cc" // lalr1.cc:859
1541 75 : break;
1542 :
1543 : case 81:
1544 : #line 763 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1545 : {
1546 : if(Reader.spn->TransList.find(*(yystack_[6].value.name))==Reader.spn->TransList.end())
1547 : {
1548 : std::cout<<"Transition: "<<*(yystack_[6].value.name)<<" was not declared"<<std::endl;
1549 : YYABORT;
1550 : }
1551 : if(Reader.spn->PlacesId.find(*(yystack_[4].value.name))==Reader.spn->PlacesId.end())
1552 : {
1553 : std::cout<<"Place: "<<*(yystack_[4].value.name)<<" was not declared"<<std::endl;
1554 : YYABORT;
1555 : }
1556 : string st=(yystack_[2].value.expression);
1557 :
1558 : if(Evaluate.parse(st)){
1559 : Reader.spn->outArcsStruct.insert(make_pair<pair<size_t,size_t>,arc>(Reader.spn->arckey(Reader.spn->TransId[*(yystack_[6].value.name)],Reader.spn->PlacesId[*(yystack_[4].value.name)]),arc(st)));
1560 : }
1561 : else Reader.spn->outArcsStruct.insert(make_pair<pair<size_t,size_t>,arc>(Reader.spn->arckey(Reader.spn->TransId[*(yystack_[6].value.name)],Reader.spn->PlacesId[*(yystack_[4].value.name)]),arc(Evaluate.IntResult)));
1562 :
1563 : }
1564 : #line 1565 "Gspn-parser.cc" // lalr1.cc:859
1565 85 : break;
1566 :
1567 : case 82:
1568 : #line 782 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1569 : {
1570 : if(Reader.spn->TransList.find(*(yystack_[4].value.name))==Reader.spn->TransList.end())
1571 : {
1572 : std::cout<<"Transition: "<<*(yystack_[4].value.name)<<" was not declared"<<std::endl;
1573 : YYABORT;
1574 : }
1575 : if(Reader.spn->PlacesId.find(*(yystack_[2].value.name))==Reader.spn->PlacesId.end())
1576 : {
1577 : std::cout<<"Place: "<<*(yystack_[2].value.name)<<" was not declared"<<std::endl;
1578 : YYABORT;
1579 : }
1580 : Reader.spn->outArcsStruct.insert(make_pair<pair<size_t,size_t>,arc>(Reader.spn->arckey(Reader.spn->TransId[*(yystack_[4].value.name)],Reader.spn->PlacesId[*(yystack_[2].value.name)]),arc(1)));
1581 : }
1582 : #line 1583 "Gspn-parser.cc" // lalr1.cc:859
1583 1 : break;
1584 :
1585 : case 83:
1586 : #line 798 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1587 : {}
1588 : #line 1589 "Gspn-parser.cc" // lalr1.cc:859
1589 0 : break;
1590 :
1591 : case 84:
1592 : #line 800 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1593 : {}
1594 : #line 1595 "Gspn-parser.cc" // lalr1.cc:859
1595 0 : break;
1596 :
1597 : case 85:
1598 : #line 801 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1599 : {}
1600 : #line 1601 "Gspn-parser.cc" // lalr1.cc:859
1601 0 : break;
1602 :
1603 : case 86:
1604 : #line 803 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1605 : {
1606 : if(Reader.spn->PlacesId.find(*(yystack_[6].value.name))==Reader.spn->PlacesId.end())
1607 : {
1608 : std::cout<<"Place: "<<*(yystack_[6].value.name)<<" was not declared"<<std::endl;
1609 : YYABORT;
1610 : }
1611 : if(Reader.spn->TransList.find(*(yystack_[4].value.name))==Reader.spn->TransList.end())
1612 : {
1613 : std::cout<<"Transition: "<<*(yystack_[4].value.name)<<" was not declared"<<std::endl;
1614 : YYABORT;
1615 : }
1616 : string st=(yystack_[2].value.expression);
1617 :
1618 : if(Evaluate.parse(st)){
1619 : Reader.spn->inhibArcsStruct.insert(make_pair<pair<size_t,size_t>,arc>(Reader.spn->arckey(Reader.spn->TransId[*(yystack_[4].value.name)],Reader.spn->PlacesId[*(yystack_[6].value.name)]),arc(st)));
1620 : }
1621 : else Reader.spn->inhibArcsStruct.insert(make_pair<pair<size_t,size_t>,arc>(Reader.spn->arckey(Reader.spn->TransId[*(yystack_[4].value.name)],Reader.spn->PlacesId[*(yystack_[6].value.name)]),arc(Evaluate.IntResult)));
1622 :
1623 : }
1624 : #line 1625 "Gspn-parser.cc" // lalr1.cc:859
1625 0 : break;
1626 :
1627 : case 87:
1628 : #line 823 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:859
1629 : {
1630 : if(Reader.spn->PlacesId.find(*(yystack_[4].value.name))==Reader.spn->PlacesId.end())
1631 : {
1632 : std::cout<<"Place: "<<*(yystack_[4].value.name)<<" was not declared"<<std::endl;
1633 : YYABORT;
1634 : }
1635 : if(Reader.spn->TransList.find(*(yystack_[2].value.name))==Reader.spn->TransList.end())
1636 : {
1637 : std::cout<<"Transition: "<<*(yystack_[2].value.name)<<" was not declared"<<std::endl;
1638 : YYABORT;
1639 : }
1640 : Reader.spn->inhibArcsStruct.insert(make_pair<pair<size_t,size_t>,arc>(Reader.spn->arckey(Reader.spn->TransId[*(yystack_[2].value.name)],Reader.spn->PlacesId[*(yystack_[4].value.name)]),arc(1)));
1641 :
1642 : }
1643 : #line 1644 "Gspn-parser.cc" // lalr1.cc:859
1644 0 : break;
1645 :
1646 :
1647 : #line 1648 "Gspn-parser.cc" // lalr1.cc:859
1648 : default:
1649 165 : break;
1650 : }
1651 : }
1652 0 : catch (const syntax_error& yyexc)
1653 : {
1654 0 : error (yyexc);
1655 0 : YYERROR;
1656 : }
1657 1663 : YY_SYMBOL_PRINT ("-> $$ =", yylhs);
1658 1663 : yypop_ (yylen);
1659 1663 : yylen = 0;
1660 1663 : YY_STACK_PRINT ();
1661 :
1662 : // Shift the result of the reduction.
1663 1663 : yypush_ (YY_NULLPTR, yylhs);
1664 : }
1665 1663 : goto yynewstate;
1666 :
1667 : /*--------------------------------------.
1668 : | yyerrlab -- here on detecting error. |
1669 : `--------------------------------------*/
1670 : yyerrlab:
1671 : // If not already recovering from an error, report this error.
1672 0 : if (!yyerrstatus_)
1673 : {
1674 0 : ++yynerrs_;
1675 0 : error (yyla.location, yysyntax_error_ (yystack_[0].state, yyla));
1676 : }
1677 :
1678 :
1679 0 : yyerror_range[1].location = yyla.location;
1680 0 : if (yyerrstatus_ == 3)
1681 : {
1682 : /* If just tried and failed to reuse lookahead token after an
1683 : error, discard it. */
1684 :
1685 : // Return failure if at end of input.
1686 0 : if (yyla.type_get () == yyeof_)
1687 0 : YYABORT;
1688 0 : else if (!yyla.empty ())
1689 : {
1690 0 : yy_destroy_ ("Error: discarding", yyla);
1691 0 : yyla.clear ();
1692 : }
1693 : }
1694 :
1695 : // Else will try to reuse lookahead token after shifting the error token.
1696 0 : goto yyerrlab1;
1697 :
1698 :
1699 : /*---------------------------------------------------.
1700 : | yyerrorlab -- error raised explicitly by YYERROR. |
1701 : `---------------------------------------------------*/
1702 : yyerrorlab:
1703 :
1704 : /* Pacify compilers like GCC when the user code never invokes
1705 : YYERROR and the label yyerrorlab therefore never appears in user
1706 : code. */
1707 : if (false)
1708 : goto yyerrorlab;
1709 0 : yyerror_range[1].location = yystack_[yylen - 1].location;
1710 : /* Do not reclaim the symbols of the rule whose action triggered
1711 : this YYERROR. */
1712 0 : yypop_ (yylen);
1713 0 : yylen = 0;
1714 0 : goto yyerrlab1;
1715 :
1716 : /*-------------------------------------------------------------.
1717 : | yyerrlab1 -- common code for both syntax error and YYERROR. |
1718 : `-------------------------------------------------------------*/
1719 : yyerrlab1:
1720 0 : yyerrstatus_ = 3; // Each real token shifted decrements this.
1721 : {
1722 0 : stack_symbol_type error_token;
1723 : for (;;)
1724 : {
1725 0 : yyn = yypact_[yystack_[0].state];
1726 0 : if (!yy_pact_value_is_default_ (yyn))
1727 : {
1728 0 : yyn += yyterror_;
1729 0 : if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
1730 : {
1731 0 : yyn = yytable_[yyn];
1732 0 : if (0 < yyn)
1733 0 : break;
1734 : }
1735 : }
1736 :
1737 : // Pop the current state because it cannot handle the error token.
1738 0 : if (yystack_.size () == 1)
1739 0 : YYABORT;
1740 :
1741 0 : yyerror_range[1].location = yystack_[0].location;
1742 0 : yy_destroy_ ("Error: popping", yystack_[0]);
1743 0 : yypop_ ();
1744 0 : YY_STACK_PRINT ();
1745 : }
1746 :
1747 0 : yyerror_range[2].location = yyla.location;
1748 0 : YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);
1749 :
1750 : // Shift the error token.
1751 0 : error_token.state = yyn;
1752 0 : yypush_ ("Shifting", error_token);
1753 : }
1754 0 : goto yynewstate;
1755 :
1756 : // Accept.
1757 : yyacceptlab:
1758 11 : yyresult = 0;
1759 11 : goto yyreturn;
1760 :
1761 : // Abort.
1762 : yyabortlab:
1763 0 : yyresult = 1;
1764 0 : goto yyreturn;
1765 :
1766 : yyreturn:
1767 11 : if (!yyla.empty ())
1768 0 : yy_destroy_ ("Cleanup: discarding lookahead", yyla);
1769 :
1770 : /* Do not reclaim the symbols of the rule whose action triggered
1771 : this YYABORT or YYACCEPT. */
1772 11 : yypop_ (yylen);
1773 55 : while (1 < yystack_.size ())
1774 : {
1775 22 : yy_destroy_ ("Cleanup: popping", yystack_[0]);
1776 22 : yypop_ ();
1777 : }
1778 :
1779 22 : return yyresult;
1780 : }
1781 0 : catch (...)
1782 : {
1783 0 : YYCDEBUG << "Exception caught: cleaning lookahead and stack"
1784 0 : << std::endl;
1785 : // Do not try to display the values of the reclaimed symbols,
1786 : // as their printer might throw an exception.
1787 0 : if (!yyla.empty ())
1788 0 : yy_destroy_ (YY_NULLPTR, yyla);
1789 :
1790 0 : while (1 < yystack_.size ())
1791 : {
1792 0 : yy_destroy_ (YY_NULLPTR, yystack_[0]);
1793 0 : yypop_ ();
1794 : }
1795 0 : throw;
1796 : }
1797 : }
1798 :
1799 : void
1800 0 : Gspn_parser::error (const syntax_error& yyexc)
1801 : {
1802 0 : error (yyexc.location, yyexc.what());
1803 0 : }
1804 :
1805 : // Generate an error message.
1806 : std::string
1807 0 : Gspn_parser::yysyntax_error_ (state_type yystate, const symbol_type& yyla) const
1808 : {
1809 : // Number of reported tokens (one for the "unexpected", one per
1810 : // "expected").
1811 0 : size_t yycount = 0;
1812 : // Its maximum.
1813 : enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1814 : // Arguments of yyformat.
1815 : char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1816 :
1817 : /* There are many possibilities here to consider:
1818 : - If this state is a consistent state with a default action, then
1819 : the only way this function was invoked is if the default action
1820 : is an error action. In that case, don't check for expected
1821 : tokens because there are none.
1822 : - The only way there can be no lookahead present (in yyla) is
1823 : if this state is a consistent state with a default action.
1824 : Thus, detecting the absence of a lookahead is sufficient to
1825 : determine that there is no unexpected or expected token to
1826 : report. In that case, just report a simple "syntax error".
1827 : - Don't assume there isn't a lookahead just because this state is
1828 : a consistent state with a default action. There might have
1829 : been a previous inconsistent state, consistent state with a
1830 : non-default action, or user semantic action that manipulated
1831 : yyla. (However, yyla is currently not documented for users.)
1832 : - Of course, the expected token list depends on states to have
1833 : correct lookahead information, and it depends on the parser not
1834 : to perform extra reductions after fetching a lookahead from the
1835 : scanner and before detecting a syntax error. Thus, state
1836 : merging (from LALR or IELR) and default reductions corrupt the
1837 : expected token list. However, the list is correct for
1838 : canonical LR with one exception: it will still contain any
1839 : token that will not be accepted due to an error action in a
1840 : later state.
1841 : */
1842 0 : if (!yyla.empty ())
1843 : {
1844 0 : int yytoken = yyla.type_get ();
1845 0 : yyarg[yycount++] = yytname_[yytoken];
1846 0 : int yyn = yypact_[yystate];
1847 0 : if (!yy_pact_value_is_default_ (yyn))
1848 : {
1849 : /* Start YYX at -YYN if negative to avoid negative indexes in
1850 : YYCHECK. In other words, skip the first -YYN actions for
1851 : this state because they are default actions. */
1852 0 : int yyxbegin = yyn < 0 ? -yyn : 0;
1853 : // Stay within bounds of both yycheck and yytname.
1854 0 : int yychecklim = yylast_ - yyn + 1;
1855 0 : int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
1856 0 : for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
1857 0 : if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
1858 0 : && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
1859 : {
1860 0 : if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1861 : {
1862 0 : yycount = 1;
1863 0 : break;
1864 : }
1865 : else
1866 0 : yyarg[yycount++] = yytname_[yyx];
1867 : }
1868 : }
1869 : }
1870 :
1871 0 : char const* yyformat = YY_NULLPTR;
1872 0 : switch (yycount)
1873 : {
1874 : #define YYCASE_(N, S) \
1875 : case N: \
1876 : yyformat = S; \
1877 : break
1878 0 : YYCASE_(0, YY_("syntax error"));
1879 0 : YYCASE_(1, YY_("syntax error, unexpected %s"));
1880 0 : YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1881 0 : YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1882 0 : YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1883 0 : YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1884 : #undef YYCASE_
1885 : }
1886 :
1887 0 : std::string yyres;
1888 : // Argument number.
1889 0 : size_t yyi = 0;
1890 0 : for (char const* yyp = yyformat; *yyp; ++yyp)
1891 0 : if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
1892 : {
1893 0 : yyres += yytnamerr_ (yyarg[yyi++]);
1894 0 : ++yyp;
1895 : }
1896 : else
1897 0 : yyres += *yyp;
1898 0 : return yyres;
1899 : }
1900 :
1901 :
1902 : const short int Gspn_parser::yypact_ninf_ = -210;
1903 :
1904 : const signed char Gspn_parser::yytable_ninf_ = -1;
1905 :
1906 : const short int
1907 : Gspn_parser::yypact_[] =
1908 : {
1909 : -7, 44, 62, 7, 13, 35, 48, 73, 58, 69,
1910 : 85, 59, 155, 120, 127, -210, 162, 147, 147, 73,
1911 : 169, 175, -210, 158, 176, -210, -210, -210, 188, 195,
1912 : 196, 202, 199, 206, 183, 213, -210, -210, 194, -210,
1913 : 203, 204, -210, -210, -210, -210, -210, -210, 55, 51,
1914 : 222, 207, 234, 223, 245, 246, -210, -210, 55, 241,
1915 : 242, 243, 9, -210, -210, -210, 51, 244, 247, 248,
1916 : 56, 251, 0, -210, 249, 215, 250, 230, -210, -5,
1917 : -210, -2, 161, 55, 55, 55, -210, 55, 55, 55,
1918 : 55, 64, 51, 51, 51, -210, 51, 51, 51, 51,
1919 : 51, 252, 255, -210, 260, 1, -210, 256, 226, 253,
1920 : -210, 264, 261, 266, 263, -210, 101, 105, 112, 257,
1921 : 2, 2, -210, -210, 83, 92, 119, 258, 258, 217,
1922 : 217, -210, 55, -210, 267, 265, -210, 268, 5, -210,
1923 : 269, 236, -210, -210, -210, -210, 55, 55, -210, 55,
1924 : 51, 51, -210, 168, -1, -210, 271, 270, -210, 277,
1925 : 11, -210, 272, 177, 184, 191, 129, 136, 275, 274,
1926 : 276, 278, 280, 282, -210, 281, 279, -210, 287, 12,
1927 : -210, -210, -210, -210, -210, -210, -210, 51, 51, 51,
1928 : 51, -3, 288, -210, 284, 286, -210, 141, 224, -210,
1929 : 141, 289, 153, 290, 55, 292, 227, 291, -210, 51,
1930 : -210, 51, 293, 51, 198, -210, 55, 295, 228, -210,
1931 : 141, 285, 51, 231, 296, 205, -210, 55, 297, 298,
1932 : 299, 100, 301, -210, 302, 212, -210, -210, 51, -210,
1933 : -210, 300, -210, -210, 304, 305, 307, -210, 77, -210,
1934 : -210, -210, 303, 232, 182, 100, 308, 306, 309, 310,
1935 : -210, -210, -210, 311, -210
1936 : };
1937 :
1938 : const unsigned char
1939 : Gspn_parser::yydefact_[] =
1940 : {
1941 : 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
1942 : 0, 0, 0, 0, 0, 1, 0, 25, 0, 0,
1943 : 0, 0, 28, 0, 0, 30, 31, 32, 0, 0,
1944 : 0, 0, 0, 0, 0, 0, 88, 26, 0, 27,
1945 : 0, 0, 35, 36, 38, 37, 40, 39, 0, 0,
1946 : 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,
1947 : 0, 0, 0, 15, 13, 14, 0, 0, 0, 0,
1948 : 0, 0, 0, 50, 0, 0, 0, 47, 42, 0,
1949 : 45, 0, 0, 0, 0, 0, 33, 0, 0, 0,
1950 : 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
1951 : 0, 0, 0, 51, 0, 0, 54, 0, 0, 0,
1952 : 48, 0, 0, 0, 0, 4, 0, 0, 0, 7,
1953 : 5, 6, 8, 16, 0, 0, 0, 17, 20, 18,
1954 : 19, 21, 0, 49, 0, 0, 55, 0, 0, 74,
1955 : 0, 0, 43, 41, 46, 44, 0, 0, 9, 0,
1956 : 0, 0, 22, 0, 0, 53, 0, 0, 75, 0,
1957 : 0, 79, 0, 0, 0, 0, 0, 0, 0, 0,
1958 : 0, 0, 0, 0, 73, 0, 0, 80, 0, 0,
1959 : 84, 11, 12, 10, 23, 24, 52, 0, 0, 0,
1960 : 0, 0, 0, 78, 0, 0, 85, 72, 0, 70,
1961 : 62, 0, 0, 0, 0, 0, 0, 0, 83, 0,
1962 : 69, 0, 0, 0, 0, 77, 0, 0, 0, 71,
1963 : 61, 0, 0, 0, 0, 0, 82, 0, 0, 0,
1964 : 0, 0, 0, 76, 0, 0, 87, 60, 0, 68,
1965 : 67, 0, 56, 81, 0, 0, 0, 86, 0, 57,
1966 : 63, 64, 0, 0, 0, 0, 0, 0, 0, 0,
1967 : 58, 66, 65, 0, 59
1968 : };
1969 :
1970 : const short int
1971 : Gspn_parser::yypgoto_[] =
1972 : {
1973 : -210, -57, -49, -210, -210, 313, 294, -210, 312, 314,
1974 : 316, 315, -210, 273, -210, -210, -210, -210, 254, 317,
1975 : -210, 201, -209, -182, -210, 67, -210, -210, 108, -210,
1976 : -210, 185, -210, -210, 167, -210, -210, 149, -210
1977 : };
1978 :
1979 : const short int
1980 : Gspn_parser::yydefgoto_[] =
1981 : {
1982 : -1, 62, 200, 4, 5, 6, 7, 8, 22, 9,
1983 : 10, 23, 79, 24, 81, 17, 18, 72, 73, 36,
1984 : 105, 106, 221, 201, 253, 241, 172, 198, 199, 53,
1985 : 138, 139, 77, 160, 161, 110, 179, 180, 37
1986 : };
1987 :
1988 : const unsigned short int
1989 : Gspn_parser::yytable_[] =
1990 : {
1991 : 70, 82, 169, 111, 223, 204, 113, 205, 203, 71,
1992 : 104, 1, 2, 15, 137, 87, 86, 91, 90, 3,
1993 : 159, 178, 87, 88, 89, 90, 116, 117, 118, 245,
1994 : 119, 120, 121, 122, 13, 14, 112, 170, 171, 114,
1995 : 230, 102, 135, 124, 125, 126, 157, 127, 128, 129,
1996 : 130, 131, 176, 195, 63, 11, 64, 65, 56, 16,
1997 : 66, 57, 28, 95, 58, 29, 1, 2, 96, 97,
1998 : 98, 99, 100, 12, 123, 153, 96, 97, 98, 99,
1999 : 100, 67, 68, 69, 3, 59, 60, 61, 2, 163,
2000 : 164, 150, 165, 20, 21, 96, 97, 98, 99, 100,
2001 : 151, 166, 167, 1, 96, 97, 98, 99, 100, 146,
2002 : 250, 251, 252, 147, 87, 88, 89, 90, 87, 88,
2003 : 89, 90, 148, 32, 149, 87, 88, 89, 90, 152,
2004 : 33, 96, 97, 98, 99, 100, 239, 240, 197, 184,
2005 : 202, 96, 97, 98, 99, 100, 185, 214, 96, 97,
2006 : 98, 99, 100, 96, 97, 98, 99, 100, 30, 225,
2007 : 197, 31, 220, 212, 220, 96, 97, 98, 99, 100,
2008 : 235, 115, 35, 34, 87, 88, 89, 90, 168, 21,
2009 : 40, 87, 88, 89, 90, 257, 41, 181, 258, 220,
2010 : 87, 88, 89, 90, 182, 44, 20, 87, 88, 89,
2011 : 90, 183, 45, 46, 87, 88, 89, 90, 224, 47,
2012 : 48, 87, 88, 89, 90, 234, 52, 49, 87, 88,
2013 : 89, 90, 244, 50, 51, 87, 88, 89, 90, 96,
2014 : 97, 71, 209, 100, 210, 216, 227, 217, 228, 231,
2015 : 255, 232, 256, 54, 55, 75, 76, 74, 78, 80,
2016 : 83, 84, 85, 92, 101, 107, 93, 94, 104, 109,
2017 : 132, 108, 133, 134, 141, 137, 140, 142, 143, 144,
2018 : 145, 156, 155, 90, 100, 154, 162, 174, 159, 173,
2019 : 175, 178, 186, 187, 188, 191, 193, 189, 190, 192,
2020 : 194, 206, 207, 208, 218, 229, 42, 211, 213, 215,
2021 : 19, 222, 226, 233, 236, 237, 136, 238, 242, 243,
2022 : 246, 247, 254, 248, 249, 260, 261, 219, 264, 262,
2023 : 263, 25, 259, 158, 27, 26, 103, 177, 196, 0,
2024 : 0, 39, 0, 0, 0, 38, 0, 0, 0, 43
2025 : };
2026 :
2027 : const short int
2028 : Gspn_parser::yycheck_[] =
2029 : {
2030 : 49, 58, 3, 8, 213, 8, 8, 10, 190, 9,
2031 : 9, 18, 19, 0, 9, 13, 7, 66, 16, 26,
2032 : 9, 9, 13, 14, 15, 16, 83, 84, 85, 238,
2033 : 87, 88, 89, 90, 27, 28, 41, 38, 39, 41,
2034 : 222, 41, 41, 92, 93, 94, 41, 96, 97, 98,
2035 : 99, 100, 41, 41, 3, 11, 5, 6, 3, 24,
2036 : 9, 6, 3, 7, 9, 6, 18, 19, 12, 13,
2037 : 14, 15, 16, 11, 10, 132, 12, 13, 14, 15,
2038 : 16, 30, 31, 32, 26, 30, 31, 32, 19, 146,
2039 : 147, 8, 149, 20, 21, 12, 13, 14, 15, 16,
2040 : 8, 150, 151, 18, 12, 13, 14, 15, 16, 8,
2041 : 33, 34, 35, 8, 13, 14, 15, 16, 13, 14,
2042 : 15, 16, 10, 3, 12, 13, 14, 15, 16, 10,
2043 : 3, 12, 13, 14, 15, 16, 36, 37, 187, 10,
2044 : 189, 12, 13, 14, 15, 16, 10, 204, 12, 13,
2045 : 14, 15, 16, 12, 13, 14, 15, 16, 3, 216,
2046 : 209, 6, 211, 10, 213, 12, 13, 14, 15, 16,
2047 : 227, 10, 25, 11, 13, 14, 15, 16, 10, 21,
2048 : 11, 13, 14, 15, 16, 3, 11, 10, 6, 238,
2049 : 13, 14, 15, 16, 10, 7, 20, 13, 14, 15,
2050 : 16, 10, 7, 7, 13, 14, 15, 16, 10, 7,
2051 : 11, 13, 14, 15, 16, 10, 22, 11, 13, 14,
2052 : 15, 16, 10, 40, 11, 13, 14, 15, 16, 12,
2053 : 13, 9, 8, 16, 10, 8, 8, 10, 10, 8,
2054 : 8, 10, 10, 40, 40, 11, 23, 40, 3, 3,
2055 : 9, 9, 9, 9, 3, 40, 9, 9, 9, 29,
2056 : 8, 11, 7, 3, 11, 9, 40, 3, 7, 3,
2057 : 7, 3, 7, 16, 16, 8, 40, 7, 9, 8,
2058 : 3, 9, 7, 9, 8, 3, 7, 9, 8, 8,
2059 : 3, 3, 8, 7, 3, 10, 23, 8, 8, 7,
2060 : 6, 8, 7, 7, 7, 7, 105, 8, 7, 7,
2061 : 10, 7, 9, 8, 7, 7, 10, 209, 7, 10,
2062 : 10, 8, 255, 138, 10, 9, 72, 160, 179, -1,
2063 : -1, 19, -1, -1, -1, 18, -1, -1, -1, 24
2064 : };
2065 :
2066 : const unsigned char
2067 : Gspn_parser::yystos_[] =
2068 : {
2069 : 0, 18, 19, 26, 45, 46, 47, 48, 49, 51,
2070 : 52, 11, 11, 27, 28, 0, 24, 57, 58, 48,
2071 : 20, 21, 50, 53, 55, 47, 52, 51, 3, 6,
2072 : 3, 6, 3, 3, 11, 25, 61, 80, 61, 50,
2073 : 11, 11, 55, 53, 7, 7, 7, 7, 11, 11,
2074 : 40, 11, 22, 71, 40, 40, 3, 6, 9, 30,
2075 : 31, 32, 43, 3, 5, 6, 9, 30, 31, 32,
2076 : 44, 9, 59, 60, 40, 11, 23, 74, 3, 54,
2077 : 3, 56, 43, 9, 9, 9, 7, 13, 14, 15,
2078 : 16, 44, 9, 9, 9, 7, 12, 13, 14, 15,
2079 : 16, 3, 41, 60, 9, 62, 63, 40, 11, 29,
2080 : 77, 8, 41, 8, 41, 10, 43, 43, 43, 43,
2081 : 43, 43, 43, 10, 44, 44, 44, 44, 44, 44,
2082 : 44, 44, 8, 7, 3, 41, 63, 9, 72, 73,
2083 : 40, 11, 3, 7, 3, 7, 8, 8, 10, 12,
2084 : 8, 8, 10, 43, 8, 7, 3, 41, 73, 9,
2085 : 75, 76, 40, 43, 43, 43, 44, 44, 10, 3,
2086 : 38, 39, 68, 8, 7, 3, 41, 76, 9, 78,
2087 : 79, 10, 10, 10, 10, 10, 7, 9, 8, 9,
2088 : 8, 3, 8, 7, 3, 41, 79, 44, 69, 70,
2089 : 44, 65, 44, 65, 8, 10, 3, 8, 7, 8,
2090 : 10, 8, 10, 8, 43, 7, 8, 10, 3, 70,
2091 : 44, 64, 8, 64, 10, 43, 7, 8, 10, 10,
2092 : 65, 8, 10, 7, 10, 43, 7, 7, 8, 36,
2093 : 37, 67, 7, 7, 10, 64, 10, 7, 8, 7,
2094 : 33, 34, 35, 66, 9, 8, 10, 3, 6, 67,
2095 : 7, 10, 10, 10, 7
2096 : };
2097 :
2098 : const unsigned char
2099 : Gspn_parser::yyr1_[] =
2100 : {
2101 : 0, 42, 43, 43, 43, 43, 43, 43, 43, 43,
2102 : 43, 43, 43, 44, 44, 44, 44, 44, 44, 44,
2103 : 44, 44, 44, 44, 44, 45, 45, 46, 46, 47,
2104 : 47, 48, 48, 49, 49, 50, 50, 51, 51, 52,
2105 : 52, 53, 54, 54, 55, 56, 56, 57, 57, 58,
2106 : 59, 59, 60, 61, 62, 62, 63, 63, 63, 63,
2107 : 63, 64, 65, 66, 66, 66, 66, 67, 67, 68,
2108 : 69, 69, 70, 71, 72, 72, 73, 73, 74, 75,
2109 : 75, 76, 76, 77, 78, 78, 79, 79, 80
2110 : };
2111 :
2112 : const unsigned char
2113 : Gspn_parser::yyr2_[] =
2114 : {
2115 : 0, 2, 1, 1, 3, 3, 3, 3, 3, 4,
2116 : 6, 6, 6, 1, 1, 1, 3, 3, 3, 3,
2117 : 3, 3, 4, 6, 6, 2, 3, 3, 2, 1,
2118 : 2, 2, 2, 6, 6, 2, 2, 4, 4, 4,
2119 : 4, 6, 1, 3, 6, 1, 3, 4, 5, 6,
2120 : 1, 2, 6, 6, 1, 2, 10, 12, 15, 17,
2121 : 10, 1, 1, 1, 1, 4, 4, 1, 1, 4,
2122 : 1, 3, 1, 6, 1, 2, 8, 6, 6, 1,
2123 : 2, 8, 6, 6, 1, 2, 8, 6, 1
2124 : };
2125 :
2126 :
2127 :
2128 : // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2129 : // First, the terminals, then, starting at \a yyntokens_, nonterminals.
2130 : const char*
2131 : const Gspn_parser::yytname_[] =
2132 : {
2133 : "\"end of file\"", "error", "$undefined", "str", "chr", "rval", "ival",
2134 : "SEMICOLON", "COMMA", "LB", "RB", "EQ", "DIV", "MUL", "PLUS", "MINUS",
2135 : "POWER", "GspnName", "NbPl", "NbTr", "PList", "TList", "in", "out",
2136 : "marking", "transitions", "Const", "INT", "DOUBLE", "inhibitor", "MIN",
2137 : "MAX", "FLOOR", "SINGLE", "INFINITE", "MULTIPLE", "ENABLINGMEMORY",
2138 : "AGEMEMORY", "IMDT", "EXPO", "'{'", "'}'", "$accept", "IntStringFormula",
2139 : "RealStringFormula", "GSPN", "declarations", "Constants", "Sizes",
2140 : "Constant", "Lists", "NbPlaces", "NbTransitions", "PlacesList",
2141 : "PLabels", "TransitionsList", "TLabels", "definitions", "PlacesDef",
2142 : "PLACES", "PLACE", "TransitionsDef", "TRANSITIONS", "TRANSITION",
2143 : "WEIGHT", "PRIORITY", "SERVICE", "MEMORY", "dist", "params", "param",
2144 : "InArcs", "incells", "incell", "OutArcs", "outcells", "outcell",
2145 : "Inhibitors", "inhibcells", "inhibcell", "redifinitions", YY_NULLPTR
2146 : };
2147 :
2148 : #if YYDEBUG
2149 : const unsigned short int
2150 : Gspn_parser::yyrline_[] =
2151 : {
2152 : 0, 130, 130, 131, 142, 143, 144, 145, 146, 147,
2153 : 148, 149, 150, 153, 154, 155, 165, 166, 167, 168,
2154 : 169, 170, 171, 172, 173, 177, 178, 180, 181, 185,
2155 : 186, 188, 189, 191, 201, 210, 211, 213, 216, 225,
2156 : 228, 237, 251, 260, 271, 279, 284, 291, 292, 294,
2157 : 296, 297, 299, 316, 318, 319, 321, 345, 370, 412,
2158 : 453, 481, 492, 504, 505, 506, 516, 530, 531, 534,
2159 : 706, 707, 711, 720, 722, 723, 725, 743, 758, 760,
2160 : 761, 763, 782, 798, 800, 801, 803, 823, 840
2161 : };
2162 :
2163 : // Print the state stack on the debug stream.
2164 : void
2165 0 : Gspn_parser::yystack_print_ ()
2166 : {
2167 0 : *yycdebug_ << "Stack now";
2168 0 : for (stack_type::const_iterator
2169 0 : i = yystack_.begin (),
2170 0 : i_end = yystack_.end ();
2171 : i != i_end; ++i)
2172 0 : *yycdebug_ << ' ' << i->state;
2173 0 : *yycdebug_ << std::endl;
2174 0 : }
2175 :
2176 : // Report on the debug stream that the rule \a yyrule is going to be reduced.
2177 : void
2178 0 : Gspn_parser::yy_reduce_print_ (int yyrule)
2179 : {
2180 0 : unsigned int yylno = yyrline_[yyrule];
2181 0 : int yynrhs = yyr2_[yyrule];
2182 : // Print the symbols being reduced, and their result.
2183 0 : *yycdebug_ << "Reducing stack by rule " << yyrule - 1
2184 0 : << " (line " << yylno << "):" << std::endl;
2185 : // The symbols being reduced.
2186 0 : for (int yyi = 0; yyi < yynrhs; yyi++)
2187 0 : YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
2188 : yystack_[(yynrhs) - (yyi + 1)]);
2189 0 : }
2190 : #endif // YYDEBUG
2191 :
2192 : // Symbol number corresponding to token number t.
2193 : inline
2194 : Gspn_parser::token_number_type
2195 3659 : Gspn_parser::yytranslate_ (int t)
2196 : {
2197 : static
2198 : const token_number_type
2199 : translate_table[] =
2200 : {
2201 : 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2202 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2203 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2204 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2205 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2206 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2207 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2208 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2209 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2210 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2211 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2212 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2213 : 2, 2, 2, 40, 2, 41, 2, 2, 2, 2,
2214 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2215 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2216 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2217 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2218 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2219 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2220 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2221 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2222 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2223 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2224 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2225 : 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2226 : 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2227 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2228 : 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2229 : 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2230 : 35, 36, 37, 38, 39
2231 : };
2232 3659 : const unsigned int user_token_number_max_ = 294;
2233 3659 : const token_number_type undef_token_ = 2;
2234 :
2235 3659 : if (static_cast<int>(t) <= yyeof_)
2236 11 : return yyeof_;
2237 3648 : else if (static_cast<unsigned int> (t) <= user_token_number_max_)
2238 3648 : return translate_table[t];
2239 : else
2240 0 : return undef_token_;
2241 : }
2242 :
2243 :
2244 : } // gspn
2245 : #line 2246 "Gspn-parser.cc" // lalr1.cc:1167
2246 : #line 842 "../../../../src/ModelGenerator/GspnParser/Gspn-parser.yy" // lalr1.cc:1168
2247 :
2248 :
2249 : void
2250 : gspn::Gspn_parser::error (const gspn::Gspn_parser::location_type& l,
2251 : const std::string& m)
2252 : {
2253 : Reader.error (l, m);
2254 : }
|