52 #define YYBISON_VERSION "3.6.4"
55 #define YYSKELETON_NAME "yacc.c"
70 #line 37 "jsgf_parser.y"
72 #define YYERROR_VERBOSE
82 #include "jsgf_parser.h"
83 #include "jsgf_scanner.h"
87 #pragma warning(disable: 4273)
90 void yyerror(yyscan_t lex,
jsgf_t *jsgf,
const char *s);
93 #line 94 "jsgf_parser.c"
97 # define YY_CAST(Type, Val) static_cast<Type> (Val)
98 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
100 # define YY_CAST(Type, Val) ((Type) (Val))
101 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
105 # if defined __cplusplus
106 # if 201103L <= __cplusplus
107 # define YY_NULLPTR nullptr
109 # define YY_NULLPTR 0
112 # define YY_NULLPTR ((void*)0)
118 #ifndef YY_YY_JSGF_PARSER_H_INCLUDED
119 # define YY_YY_JSGF_PARSER_H_INCLUDED
146 typedef enum yytokentype yytoken_kind_t;
162 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
165 #line 65 "jsgf_parser.y"
173 #line 174 "jsgf_parser.c"
177 # define YYSTYPE_IS_TRIVIAL 1
178 # define YYSTYPE_IS_DECLARED 1
183 int yyparse (
void* yyscanner,
jsgf_t *jsgf);
189 YYSYMBOL_YYEMPTY = -2,
191 YYSYMBOL_YYerror = 1,
192 YYSYMBOL_YYUNDEF = 2,
194 YYSYMBOL_GRAMMAR = 4,
198 YYSYMBOL_RULENAME = 8,
200 YYSYMBOL_WEIGHT = 10,
210 YYSYMBOL_YYACCEPT = 20,
211 YYSYMBOL_grammar = 21,
212 YYSYMBOL_header = 22,
213 YYSYMBOL_jsgf_header = 23,
214 YYSYMBOL_grammar_header = 24,
215 YYSYMBOL_import_header = 25,
216 YYSYMBOL_import_statement = 26,
217 YYSYMBOL_rule_list = 27,
219 YYSYMBOL_alternate_list = 29,
220 YYSYMBOL_rule_expansion = 30,
221 YYSYMBOL_tagged_rule_item = 31,
222 YYSYMBOL_rule_item = 32,
223 YYSYMBOL_rule_group = 33,
224 YYSYMBOL_rule_optional = 34,
225 YYSYMBOL_rule_atom = 35
227 typedef enum yysymbol_kind_t yysymbol_kind_t;
240 #ifndef __PTRDIFF_MAX__
242 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
253 #ifdef __INT_LEAST8_MAX__
254 typedef __INT_LEAST8_TYPE__ yytype_int8;
255 #elif defined YY_STDINT_H
256 typedef int_least8_t yytype_int8;
258 typedef signed char yytype_int8;
261 #ifdef __INT_LEAST16_MAX__
262 typedef __INT_LEAST16_TYPE__ yytype_int16;
263 #elif defined YY_STDINT_H
264 typedef int_least16_t yytype_int16;
266 typedef short yytype_int16;
269 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
270 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
271 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
272 && UINT_LEAST8_MAX <= INT_MAX)
273 typedef uint_least8_t yytype_uint8;
274 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
275 typedef unsigned char yytype_uint8;
277 typedef short yytype_uint8;
280 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
281 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
282 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
283 && UINT_LEAST16_MAX <= INT_MAX)
284 typedef uint_least16_t yytype_uint16;
285 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
286 typedef unsigned short yytype_uint16;
288 typedef int yytype_uint16;
292 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
293 # define YYPTRDIFF_T __PTRDIFF_TYPE__
294 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
295 # elif defined PTRDIFF_MAX
299 # define YYPTRDIFF_T ptrdiff_t
300 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
302 # define YYPTRDIFF_T long
303 # define YYPTRDIFF_MAXIMUM LONG_MAX
308 # ifdef __SIZE_TYPE__
309 # define YYSIZE_T __SIZE_TYPE__
310 # elif defined size_t
311 # define YYSIZE_T size_t
312 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
314 # define YYSIZE_T size_t
316 # define YYSIZE_T unsigned
320 #define YYSIZE_MAXIMUM \
321 YY_CAST (YYPTRDIFF_T, \
322 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
323 ? YYPTRDIFF_MAXIMUM \
324 : YY_CAST (YYSIZE_T, -1)))
326 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
330 typedef yytype_int8 yy_state_t;
333 typedef int yy_state_fast_t;
336 # if defined YYENABLE_NLS && YYENABLE_NLS
338 # include <libintl.h>
339 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
343 # define YY_(Msgid) Msgid
348 #ifndef YY_ATTRIBUTE_PURE
349 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
350 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
352 # define YY_ATTRIBUTE_PURE
356 #ifndef YY_ATTRIBUTE_UNUSED
357 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
358 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
360 # define YY_ATTRIBUTE_UNUSED
365 #if ! defined lint || defined __GNUC__
366 # define YYUSE(E) ((void) (E))
371 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
373 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
374 _Pragma ("GCC diagnostic push") \
375 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
376 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
377 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
378 _Pragma ("GCC diagnostic pop")
380 # define YY_INITIAL_VALUE(Value) Value
382 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
383 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
384 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
386 #ifndef YY_INITIAL_VALUE
387 # define YY_INITIAL_VALUE(Value)
390 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
391 # define YY_IGNORE_USELESS_CAST_BEGIN \
392 _Pragma ("GCC diagnostic push") \
393 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
394 # define YY_IGNORE_USELESS_CAST_END \
395 _Pragma ("GCC diagnostic pop")
397 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
398 # define YY_IGNORE_USELESS_CAST_BEGIN
399 # define YY_IGNORE_USELESS_CAST_END
403 #define YY_ASSERT(E) ((void) (0 && (E)))
405 #if !defined yyoverflow
409 # ifdef YYSTACK_USE_ALLOCA
410 # if YYSTACK_USE_ALLOCA
412 # define YYSTACK_ALLOC __builtin_alloca
413 # elif defined __BUILTIN_VA_ARG_INCR
416 # define YYSTACK_ALLOC __alloca
417 # elif defined _MSC_VER
419 # define alloca _alloca
421 # define YYSTACK_ALLOC alloca
422 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
425 # ifndef EXIT_SUCCESS
426 # define EXIT_SUCCESS 0
433 # ifdef YYSTACK_ALLOC
435 # define YYSTACK_FREE(Ptr) do { ; } while (0)
436 # ifndef YYSTACK_ALLOC_MAXIMUM
441 # define YYSTACK_ALLOC_MAXIMUM 4032
444 # define YYSTACK_ALLOC YYMALLOC
445 # define YYSTACK_FREE YYFREE
446 # ifndef YYSTACK_ALLOC_MAXIMUM
447 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
449 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
450 && ! ((defined YYMALLOC || defined malloc) \
451 && (defined YYFREE || defined free)))
453 # ifndef EXIT_SUCCESS
454 # define EXIT_SUCCESS 0
458 # define YYMALLOC malloc
459 # if ! defined malloc && ! defined EXIT_SUCCESS
460 void *malloc (YYSIZE_T);
465 # if ! defined free && ! defined EXIT_SUCCESS
472 #if (! defined yyoverflow \
473 && (! defined __cplusplus \
474 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
479 yy_state_t yyss_alloc;
484 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
488 # define YYSTACK_BYTES(N) \
489 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
490 + YYSTACK_GAP_MAXIMUM)
492 # define YYCOPY_NEEDED 1
499 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
502 YYPTRDIFF_T yynewbytes; \
503 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
504 Stack = &yyptr->Stack_alloc; \
505 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
506 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
512 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
516 # if defined __GNUC__ && 1 < __GNUC__
517 # define YYCOPY(Dst, Src, Count) \
518 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
520 # define YYCOPY(Dst, Src, Count) \
524 for (yyi = 0; yyi < (Count); yyi++) \
525 (Dst)[yyi] = (Src)[yyi]; \
546 #define YYMAXUTOK 265
551 #define YYTRANSLATE(YYX) \
552 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
553 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
558 static const yytype_int8 yytranslate[] =
560 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
564 14, 15, 18, 19, 2, 2, 2, 2, 2, 2,
565 2, 2, 2, 2, 2, 2, 2, 2, 2, 11,
566 2, 12, 2, 2, 2, 2, 2, 2, 2, 2,
567 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
568 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
569 2, 16, 2, 17, 2, 2, 2, 2, 2, 2,
570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
571 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
572 2, 2, 2, 2, 13, 2, 2, 2, 2, 2,
573 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
574 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
575 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
576 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
577 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
578 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
579 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
580 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
581 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
582 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
583 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
584 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
585 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
591 static const yytype_uint8 yyrline[] =
593 0, 82, 82, 83, 84, 87, 90, 91, 92, 93,
594 97, 100, 101, 104, 107, 108, 111, 112, 115, 116,
595 121, 123, 127, 128, 132, 133, 136, 139, 142, 143,
601 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
606 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
610 static const char *
const yytname[] =
612 "\"end of file\"",
"error",
"\"invalid token\"",
"HEADER",
"GRAMMAR",
613 "IMPORT",
"PUBLIC",
"TOKEN",
"RULENAME",
"TAG",
"WEIGHT",
"';'",
"'='",
614 "'|'",
"'('",
"')'",
"'['",
"']'",
"'*'",
"'+'",
"$accept",
"grammar",
615 "header",
"jsgf_header",
"grammar_header",
"import_header",
616 "import_statement",
"rule_list",
"rule",
"alternate_list",
617 "rule_expansion",
"tagged_rule_item",
"rule_item",
"rule_group",
618 "rule_optional",
"rule_atom", YY_NULLPTR
622 yysymbol_name (yysymbol_kind_t yysymbol)
624 return yytname[yysymbol];
631 static const yytype_int16 yytoknum[] =
633 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
634 265, 59, 61, 124, 40, 41, 91, 93, 42, 43
638 #define YYPACT_NINF (-37)
640 #define yypact_value_is_default(Yyn) \
641 ((Yyn) == YYPACT_NINF)
643 #define YYTABLE_NINF (-1)
645 #define yytable_value_is_error(Yyn) \
650 static const yytype_int8 yypact[] =
652 -1, -2, 36, 22, 35, 8, -37, -37, 32, 33,
653 30, 22, -37, 17, -37, 37, -37, 13, -37, 34,
654 31, -4, -37, 17, -37, 38, 39, -37, -37, -4,
655 -37, -37, 0, -4, -4, 18, -4, 42, -37, -37,
656 -37, 19, -37, -37, 21, 19, 20, 9, -37, -4,
657 42, -37, -37, -37, -37, -37, -37, -4
663 static const yytype_int8 yydefact[] =
665 0, 0, 0, 2, 0, 0, 6, 1, 0, 0,
666 0, 0, 11, 3, 14, 0, 5, 0, 7, 0,
667 0, 0, 12, 4, 15, 0, 0, 8, 13, 0,
668 28, 29, 0, 0, 0, 0, 18, 20, 22, 30,
669 31, 24, 10, 9, 0, 25, 0, 0, 16, 0,
670 21, 23, 32, 33, 17, 26, 27, 19
674 static const yytype_int8 yypgoto[] =
676 -37, -37, -37, -37, -37, -37, 41, 43, -12, -16,
677 -3, -36, -37, -37, -37, 15
681 static const yytype_int8 yydefgoto[] =
683 -1, 2, 3, 4, 16, 11, 12, 13, 14, 35,
684 36, 37, 38, 39, 40, 41
690 static const yytype_int8 yytable[] =
692 50, 24, 1, 30, 31, 5, 32, 30, 31, 6,
693 33, 24, 34, 44, 33, 17, 34, 46, 47, 18,
694 26, 50, 49, 9, 27, 10, 56, 8, 9, 48,
695 10, 49, 54, 49, 49, 55, 7, 52, 53, 15,
696 19, 20, 21, 29, 25, 28, 57, 45, 0, 42,
700 static const yytype_int8 yycheck[] =
702 36, 13, 3, 7, 8, 7, 10, 7, 8, 11,
703 14, 23, 16, 29, 14, 7, 16, 33, 34, 11,
704 7, 57, 13, 6, 11, 8, 17, 5, 6, 11,
705 8, 13, 11, 13, 13, 15, 0, 18, 19, 4,
706 8, 8, 12, 12, 7, 11, 49, 32, -1, 11,
712 static const yytype_int8 yystos[] =
714 0, 3, 21, 22, 23, 7, 11, 0, 5, 6,
715 8, 25, 26, 27, 28, 4, 24, 7, 11, 8,
716 8, 12, 26, 27, 28, 7, 7, 11, 11, 12,
717 7, 8, 10, 14, 16, 29, 30, 31, 32, 33,
718 34, 35, 11, 11, 29, 35, 29, 29, 11, 13,
719 31, 9, 18, 19, 11, 15, 17, 30
723 static const yytype_int8 yyr1[] =
725 0, 20, 21, 21, 21, 22, 23, 23, 23, 23,
726 24, 25, 25, 26, 27, 27, 28, 28, 29, 29,
727 30, 30, 31, 31, 32, 32, 33, 34, 35, 35,
732 static const yytype_int8 yyr2[] =
734 0, 2, 1, 2, 3, 2, 2, 3, 4, 5,
735 3, 1, 2, 3, 1, 2, 4, 5, 1, 3,
736 1, 2, 1, 2, 1, 2, 3, 3, 1, 1,
741 enum { YYENOMEM = -2 };
743 #define yyerrok (yyerrstatus = 0)
744 #define yyclearin (yychar = YYEMPTY)
746 #define YYACCEPT goto yyacceptlab
747 #define YYABORT goto yyabortlab
748 #define YYERROR goto yyerrorlab
751 #define YYRECOVERING() (!!yyerrstatus)
753 #define YYBACKUP(Token, Value) \
755 if (yychar == YYEMPTY) \
759 YYPOPSTACK (yylen); \
765 yyerror (yyscanner, jsgf, YY_("syntax error: cannot back up")); \
772 #define YYERRCODE YYUNDEF
780 # define YYFPRINTF fprintf
783 # define YYDPRINTF(Args) \
790 # ifndef YY_LOCATION_PRINT
791 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
795 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
799 YYFPRINTF (stderr, "%s ", Title); \
800 yy_symbol_print (stderr, \
801 Kind, Value, yyscanner, jsgf); \
802 YYFPRINTF (stderr, "\n"); \
812 yy_symbol_value_print (FILE *yyo,
813 yysymbol_kind_t yykind,
YYSTYPE const *
const yyvaluep,
void* yyscanner,
jsgf_t *jsgf)
815 FILE *yyoutput = yyo;
822 if (yykind < YYNTOKENS)
823 YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
825 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
827 YY_IGNORE_MAYBE_UNINITIALIZED_END
836 yy_symbol_print (FILE *yyo,
837 yysymbol_kind_t yykind,
YYSTYPE const *
const yyvaluep,
void* yyscanner,
jsgf_t *jsgf)
839 YYFPRINTF (yyo,
"%s %s (",
840 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
842 yy_symbol_value_print (yyo, yykind, yyvaluep, yyscanner, jsgf);
843 YYFPRINTF (yyo,
")");
852 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
854 YYFPRINTF (stderr,
"Stack now");
855 for (; yybottom <= yytop; yybottom++)
857 int yybot = *yybottom;
858 YYFPRINTF (stderr,
" %d", yybot);
860 YYFPRINTF (stderr,
"\n");
863 # define YY_STACK_PRINT(Bottom, Top) \
866 yy_stack_print ((Bottom), (Top)); \
875 yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
876 int yyrule,
void* yyscanner,
jsgf_t *jsgf)
878 int yylno = yyrline[yyrule];
879 int yynrhs = yyr2[yyrule];
881 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
884 for (yyi = 0; yyi < yynrhs; yyi++)
886 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
887 yy_symbol_print (stderr,
888 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
889 &yyvsp[(yyi + 1) - (yynrhs)], yyscanner, jsgf);
890 YYFPRINTF (stderr,
"\n");
894 # define YY_REDUCE_PRINT(Rule) \
897 yy_reduce_print (yyssp, yyvsp, Rule, yyscanner, jsgf); \
904 # define YYDPRINTF(Args) ((void) 0)
905 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
906 # define YY_STACK_PRINT(Bottom, Top)
907 # define YY_REDUCE_PRINT(Rule)
913 # define YYINITDEPTH 200
924 # define YYMAXDEPTH 10000
937 yydestruct (
const char *yymsg,
938 yysymbol_kind_t yykind,
YYSTYPE *yyvaluep,
void* yyscanner,
jsgf_t *jsgf)
945 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
947 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
949 YY_IGNORE_MAYBE_UNINITIALIZED_END
962 yyparse (
void* yyscanner,
jsgf_t *jsgf)
971 YY_INITIAL_VALUE (
static YYSTYPE yyval_default;)
972 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
977 yy_state_fast_t yystate;
989 YYPTRDIFF_T yystacksize;
992 yy_state_t yyssa[YYINITDEPTH];
1005 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
1012 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1022 yystacksize = YYINITDEPTH;
1023 yyssp = yyss = yyssa;
1024 yyvsp = yyvs = yyvsa;
1027 YYDPRINTF ((stderr,
"Starting parse\n"));
1046 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
1047 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1048 YY_IGNORE_USELESS_CAST_BEGIN
1049 *yyssp = YY_CAST (yy_state_t, yystate);
1050 YY_IGNORE_USELESS_CAST_END
1051 YY_STACK_PRINT (yyss, yyssp);
1053 if (yyss + yystacksize - 1 <= yyssp)
1054 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
1055 goto yyexhaustedlab;
1059 YYPTRDIFF_T yysize = yyssp - yyss + 1;
1061 # if defined yyoverflow
1066 yy_state_t *yyss1 = yyss;
1073 yyoverflow (YY_(
"memory exhausted"),
1074 &yyss1, yysize * YYSIZEOF (*yyssp),
1075 &yyvs1, yysize * YYSIZEOF (*yyvsp),
1082 if (YYMAXDEPTH <= yystacksize)
1083 goto yyexhaustedlab;
1085 if (YYMAXDEPTH < yystacksize)
1086 yystacksize = YYMAXDEPTH;
1089 yy_state_t *yyss1 = yyss;
1092 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1094 goto yyexhaustedlab;
1095 YYSTACK_RELOCATE (yyss_alloc, yyss);
1096 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1097 # undef YYSTACK_RELOCATE
1099 YYSTACK_FREE (yyss1);
1103 yyssp = yyss + yysize - 1;
1104 yyvsp = yyvs + yysize - 1;
1106 YY_IGNORE_USELESS_CAST_BEGIN
1107 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
1108 YY_CAST (
long, yystacksize)));
1109 YY_IGNORE_USELESS_CAST_END
1111 if (yyss + yystacksize - 1 <= yyssp)
1116 if (yystate == YYFINAL)
1130 yyn = yypact[yystate];
1131 if (yypact_value_is_default (yyn))
1137 if (yychar == YYEMPTY)
1139 YYDPRINTF ((stderr,
"Reading a token\n"));
1140 yychar = yylex (&yylval, yyscanner);
1143 if (yychar <= YYEOF)
1146 yytoken = YYSYMBOL_YYEOF;
1147 YYDPRINTF ((stderr,
"Now at end of input.\n"));
1149 else if (yychar == YYerror)
1156 yytoken = YYSYMBOL_YYerror;
1161 yytoken = YYTRANSLATE (yychar);
1162 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc);
1168 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1173 if (yytable_value_is_error (yyn))
1185 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc);
1187 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1189 YY_IGNORE_MAYBE_UNINITIALIZED_END
1200 yyn = yydefact[yystate];
1221 yyval = yyvsp[1-yylen];
1224 YY_REDUCE_PRINT (yyn);
1228 #line 87 "jsgf_parser.y"
1229 { jsgf->
name = (yyvsp[0].name); }
1230 #line 1231 "jsgf_parser.c"
1234 #line 91 "jsgf_parser.y"
1235 { jsgf->
version = (yyvsp[-1].name); }
1236 #line 1237 "jsgf_parser.c"
1240 #line 92 "jsgf_parser.y"
1241 { jsgf->
version = (yyvsp[-2].name); jsgf->
charset = (yyvsp[-1].name); }
1242 #line 1243 "jsgf_parser.c"
1246 #line 93 "jsgf_parser.y"
1247 { jsgf->
version = (yyvsp[-3].name); jsgf->
charset = (yyvsp[-2].name);
1248 jsgf->
locale = (yyvsp[-1].name); }
1249 #line 1250 "jsgf_parser.c"
1253 #line 97 "jsgf_parser.y"
1254 { (yyval.name) = (yyvsp[-1].name); }
1255 #line 1256 "jsgf_parser.c"
1259 #line 104 "jsgf_parser.y"
1260 { jsgf_import_rule(jsgf, (yyvsp[-1].name));
ckd_free((yyvsp[-1].name)); }
1261 #line 1262 "jsgf_parser.c"
1265 #line 111 "jsgf_parser.y"
1266 { jsgf_define_rule(jsgf, (yyvsp[-3].name), (yyvsp[-1].rhs), 0);
ckd_free((yyvsp[-3].name)); }
1267 #line 1268 "jsgf_parser.c"
1271 #line 112 "jsgf_parser.y"
1272 { jsgf_define_rule(jsgf, (yyvsp[-3].name), (yyvsp[-1].rhs), 1);
ckd_free((yyvsp[-3].name)); }
1273 #line 1274 "jsgf_parser.c"
1277 #line 115 "jsgf_parser.y"
1278 { (yyval.rhs) = (yyvsp[0].rhs); (yyval.rhs)->atoms =
glist_reverse((yyval.rhs)->atoms); }
1279 #line 1280 "jsgf_parser.c"
1283 #line 116 "jsgf_parser.y"
1284 { (yyval.rhs) = (yyvsp[0].rhs);
1286 (yyval.rhs)->alt = (yyvsp[-2].rhs); }
1287 #line 1288 "jsgf_parser.c"
1291 #line 121 "jsgf_parser.y"
1292 { (yyval.rhs) =
ckd_calloc(1,
sizeof(*(yyval.rhs)));
1293 (yyval.rhs)->atoms =
glist_add_ptr((yyval.rhs)->atoms, (yyvsp[0].atom)); }
1294 #line 1295 "jsgf_parser.c"
1298 #line 123 "jsgf_parser.y"
1299 { (yyval.rhs) = (yyvsp[-1].rhs);
1300 (yyval.rhs)->atoms =
glist_add_ptr((yyval.rhs)->atoms, (yyvsp[0].atom)); }
1301 #line 1302 "jsgf_parser.c"
1305 #line 128 "jsgf_parser.y"
1306 { (yyval.atom) = (yyvsp[-1].atom);
1307 (yyval.atom)->tags =
glist_add_ptr((yyval.atom)->tags, (yyvsp[0].name)); }
1308 #line 1309 "jsgf_parser.c"
1312 #line 133 "jsgf_parser.y"
1313 { (yyval.atom) = (yyvsp[0].atom); (yyval.atom)->weight = (yyvsp[-1].weight); }
1314 #line 1315 "jsgf_parser.c"
1318 #line 136 "jsgf_parser.y"
1319 { (yyval.rule) = jsgf_define_rule(jsgf, NULL, (yyvsp[-1].rhs), 0); }
1320 #line 1321 "jsgf_parser.c"
1324 #line 139 "jsgf_parser.y"
1325 { (yyval.rule) = jsgf_optional_new(jsgf, (yyvsp[-1].rhs)); }
1326 #line 1327 "jsgf_parser.c"
1330 #line 142 "jsgf_parser.y"
1331 { (yyval.atom) = jsgf_atom_new((yyvsp[0].name), 1.0);
ckd_free((yyvsp[0].name)); }
1332 #line 1333 "jsgf_parser.c"
1336 #line 143 "jsgf_parser.y"
1337 { (yyval.atom) = jsgf_atom_new((yyvsp[0].name), 1.0);
ckd_free((yyvsp[0].name)); }
1338 #line 1339 "jsgf_parser.c"
1342 #line 144 "jsgf_parser.y"
1343 { (yyval.atom) = jsgf_atom_new((yyvsp[0].rule)->name, 1.0); }
1344 #line 1345 "jsgf_parser.c"
1348 #line 145 "jsgf_parser.y"
1349 { (yyval.atom) = jsgf_atom_new((yyvsp[0].rule)->name, 1.0); }
1350 #line 1351 "jsgf_parser.c"
1354 #line 146 "jsgf_parser.y"
1355 { (yyval.atom) = jsgf_kleene_new(jsgf, (yyvsp[-1].atom), 0); }
1356 #line 1357 "jsgf_parser.c"
1360 #line 147 "jsgf_parser.y"
1361 { (yyval.atom) = jsgf_kleene_new(jsgf, (yyvsp[-1].atom), 1); }
1362 #line 1363 "jsgf_parser.c"
1366 #line 1367 "jsgf_parser.c"
1381 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
1392 const int yylhs = yyr1[yyn] - YYNTOKENS;
1393 const int yyi = yypgoto[yylhs] + *yyssp;
1394 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
1396 : yydefgoto[yylhs]);
1408 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
1413 yyerror (yyscanner, jsgf, YY_(
"syntax error"));
1416 if (yyerrstatus == 3)
1421 if (yychar <= YYEOF)
1424 if (yychar == YYEOF)
1429 yydestruct (
"Error: discarding",
1430 yytoken, &yylval, yyscanner, jsgf);
1453 YY_STACK_PRINT (yyss, yyssp);
1467 yyn = yypact[yystate];
1468 if (!yypact_value_is_default (yyn))
1470 yyn += YYSYMBOL_YYerror;
1471 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
1484 yydestruct (
"Error: popping",
1485 YY_ACCESSING_SYMBOL (yystate), yyvsp, yyscanner, jsgf);
1488 YY_STACK_PRINT (yyss, yyssp);
1491 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1493 YY_IGNORE_MAYBE_UNINITIALIZED_END
1497 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
1519 #if !defined yyoverflow
1524 yyerror (yyscanner, jsgf, YY_(
"memory exhausted"));
1534 if (yychar != YYEMPTY)
1538 yytoken = YYTRANSLATE (yychar);
1539 yydestruct (
"Cleanup: discarding lookahead",
1540 yytoken, &yylval, yyscanner, jsgf);
1545 YY_STACK_PRINT (yyss, yyssp);
1546 while (yyssp != yyss)
1548 yydestruct (
"Cleanup: popping",
1549 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yyscanner, jsgf);
1554 YYSTACK_FREE (yyss);
1560 #line 150 "jsgf_parser.y"
1564 yyerror(yyscan_t lex,
jsgf_t *jsgf,
const char *s)
1566 E_ERROR(
"%s at line %d current token '%s'\n", s, yyget_lineno(lex), yyget_text(lex));