-/* A Bison parser, made by GNU Bison 3.2.2. */
+/* A Bison parser, made by GNU Bison 3.4.1. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "3.2.2"
+#define YYBISON_VERSION "3.4.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
#define yychar xbt_automaton_parser_char
/* First part of user prologue. */
-#line 7 "parserPromela.yacc" /* yacc.c:338 */
+#line 7 "parserPromela.yacc"
#include "simgrid/config.h"
#if !HAVE_UNISTD_H
void yyerror(const char *s);
+static void new_state(char* id, int src);
+static void new_transition(char* id, xbt_automaton_exp_label_t label);
+
+
+#line 94 "parserPromela.tab.cacc"
-#line 90 "parserPromela.tab.cacc" /* yacc.c:338 */
# ifndef YY_NULLPTR
# if defined __cplusplus
# if 201103L <= __cplusplus
# define YYERROR_VERBOSE 0
#endif
-/* In a future release of Bison, this section will be replaced
- by #include "parserPromela.tab.hacc". */
+/* Use api.header.include to #include this header
+ instead of duplicating it here. */
#ifndef YY_XBT_AUTOMATON_PARSER_PARSERPROMELA_TAB_HACC_INCLUDED
# define YY_XBT_AUTOMATON_PARSER_PARSERPROMELA_TAB_HACC_INCLUDED
/* Debug traces. */
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
union YYSTYPE
{
-#line 20 "parserPromela.yacc" /* yacc.c:353 */
+#line 23 "parserPromela.yacc"
double real;
int integer;
char* string;
xbt_automaton_exp_label_t label;
-#line 163 "parserPromela.tab.cacc" /* yacc.c:353 */
-};
+#line 167 "parserPromela.tab.cacc"
+};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
#if ! defined yyoverflow || YYERROR_VERBOSE
/* The parser invokes alloca or malloc; define the necessary symbols. */
/* YYNSTATES -- Number of states. */
#define YYNSTATES 32
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
- by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
#define YYMAXUTOK 277
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, with out-of-bounds checking. */
#define YYTRANSLATE(YYX) \
((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
- as returned by yylex, without out-of-bounds checking. */
+ as returned by yylex. */
static const yytype_uint8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint8 yyrline[] =
{
- 0, 57, 57, 60, 61, 61, 64, 65, 68, 69,
- 70, 71, 72, 73
+ 0, 60, 60, 63, 64, 64, 67, 68, 71, 72,
+ 73, 74, 75, 76
};
#endif
#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- YYPOPSTACK (yylen); \
- yystate = *yyssp; \
- goto yybackup; \
- } \
- else \
- { \
- yyerror (YY_("syntax error: cannot back up")); \
- YYERROR; \
- } \
-while (0)
+#define YYBACKUP(Token, Value) \
+ do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+ while (0)
/* Error token number */
#define YYTERROR 1
YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr,
yystos[yyssp[yyi + 1 - yynrhs]],
- &(yyvsp[(yyi + 1) - (yynrhs)])
+ &yyvsp[(yyi + 1) - (yynrhs)]
);
YYFPRINTF (stderr, "\n");
}
case '\\':
if (*++yyp != '\\')
goto do_not_strip_quotes;
- /* Fall through. */
+ else
+ goto append;
+
+ append:
default:
if (yyres)
yyres[yyn] = *yyp;
yyarg[yycount++] = yytname[yyx];
{
YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+ yysize = yysize1;
+ else
return 2;
- yysize = yysize1;
}
}
}
{
YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+ yysize = yysize1;
+ else
return 2;
- yysize = yysize1;
}
if (*yymsg_alloc < yysize)
yychar = YYEMPTY; /* Cause a token to be read. */
goto yysetstate;
+
/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate. |
+| yynewstate -- push a new state, which is found in yystate. |
`------------------------------------------------------------*/
- yynewstate:
+yynewstate:
/* In all cases, when you get here, the value and location stacks
have just been pushed. So pushing a state here evens the stacks. */
yyssp++;
- yysetstate:
+
+/*--------------------------------------------------------------------.
+| yynewstate -- set current state (the top of the stack) to yystate. |
+`--------------------------------------------------------------------*/
+yysetstate:
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+ YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
*yyssp = (yytype_int16) yystate;
if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+#else
{
/* Get the current used size of the three stacks, in elements. */
YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
-#ifdef yyoverflow
+# if defined yyoverflow
{
/* Give user a chance to reallocate the stack. Use copies of
these so that the &'s don't force the real ones into
yyss = yyss1;
yyvs = yyvs1;
}
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
/* Extend the stack our own way. */
if (YYMAXDEPTH <= yystacksize)
goto yyexhaustedlab;
goto yyexhaustedlab;
YYSTACK_RELOCATE (yyss_alloc, yyss);
YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-# undef YYSTACK_RELOCATE
+# undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
}
# endif
-#endif /* no yyoverflow */
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
}
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
if (yystate == YYFINAL)
YYACCEPT;
goto yybackup;
+
/*-----------.
| yybackup. |
`-----------*/
yybackup:
-
/* Do appropriate processing given the current state. Read a
lookahead token if we need one and don't already have one. */
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
-
goto yynewstate;
/*-----------------------------.
-| yyreduce -- Do a reduction. |
+| yyreduce -- do a reduction. |
`-----------------------------*/
yyreduce:
/* yyn is the number of a rule to reduce with. */
YY_REDUCE_PRINT (yyn);
switch (yyn)
{
- case 4:
-#line 61 "parserPromela.yacc" /* yacc.c:1645 */
+ case 4:
+#line 64 "parserPromela.yacc"
{ new_state((yyvsp[-1].string), 1);}
-#line 1257 "parserPromela.tab.cacc" /* yacc.c:1645 */
+#line 1271 "parserPromela.tab.cacc"
break;
case 7:
-#line 65 "parserPromela.yacc" /* yacc.c:1645 */
+#line 68 "parserPromela.yacc"
{ new_transition((yyvsp[-1].string), (yyvsp[-4].label));}
-#line 1263 "parserPromela.tab.cacc" /* yacc.c:1645 */
+#line 1277 "parserPromela.tab.cacc"
break;
case 8:
-#line 68 "parserPromela.yacc" /* yacc.c:1645 */
+#line 71 "parserPromela.yacc"
{ (yyval.label) = (yyvsp[-1].label); }
-#line 1269 "parserPromela.tab.cacc" /* yacc.c:1645 */
+#line 1283 "parserPromela.tab.cacc"
break;
case 9:
-#line 69 "parserPromela.yacc" /* yacc.c:1645 */
+#line 72 "parserPromela.yacc"
{ (yyval.label) = xbt_automaton_exp_label_new_or((yyvsp[-2].label), (yyvsp[0].label)); }
-#line 1275 "parserPromela.tab.cacc" /* yacc.c:1645 */
+#line 1289 "parserPromela.tab.cacc"
break;
case 10:
-#line 70 "parserPromela.yacc" /* yacc.c:1645 */
+#line 73 "parserPromela.yacc"
{ (yyval.label) = xbt_automaton_exp_label_new_and((yyvsp[-2].label), (yyvsp[0].label)); }
-#line 1281 "parserPromela.tab.cacc" /* yacc.c:1645 */
+#line 1295 "parserPromela.tab.cacc"
break;
case 11:
-#line 71 "parserPromela.yacc" /* yacc.c:1645 */
+#line 74 "parserPromela.yacc"
{ (yyval.label) = xbt_automaton_exp_label_new_not((yyvsp[0].label)); }
-#line 1287 "parserPromela.tab.cacc" /* yacc.c:1645 */
+#line 1301 "parserPromela.tab.cacc"
break;
case 12:
-#line 72 "parserPromela.yacc" /* yacc.c:1645 */
+#line 75 "parserPromela.yacc"
{ (yyval.label) = xbt_automaton_exp_label_new_one(); }
-#line 1293 "parserPromela.tab.cacc" /* yacc.c:1645 */
+#line 1307 "parserPromela.tab.cacc"
break;
case 13:
-#line 73 "parserPromela.yacc" /* yacc.c:1645 */
+#line 76 "parserPromela.yacc"
{ (yyval.label) = xbt_automaton_exp_label_new_predicat((yyvsp[0].string)); }
-#line 1299 "parserPromela.tab.cacc" /* yacc.c:1645 */
+#line 1313 "parserPromela.tab.cacc"
break;
-#line 1303 "parserPromela.tab.cacc" /* yacc.c:1645 */
+#line 1317 "parserPromela.tab.cacc"
+
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
- if (/*CONSTCOND*/ 0)
- goto yyerrorlab;
+ /* Pacify compilers when the user code never invokes YYERROR and the
+ label yyerrorlab therefore never appears in user code. */
+ if (0)
+ YYERROR;
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
yyresult = 0;
goto yyreturn;
+
/*-----------------------------------.
| yyabortlab -- YYABORT comes here. |
`-----------------------------------*/
yyresult = 1;
goto yyreturn;
+
#if !defined yyoverflow || YYERROR_VERBOSE
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
/* Fall through. */
#endif
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result. |
+`-----------------------------------------------------*/
yyreturn:
if (yychar != YYEMPTY)
{
#endif
return yyresult;
}
-#line 76 "parserPromela.yacc" /* yacc.c:1903 */
+#line 79 "parserPromela.yacc"