Commit d93cf734 authored by Michal Marek's avatar Michal Marek Committed by Greg Kroah-Hartman

genksyms: Fix segfault with invalid declarations

commit d920f7c6 upstream.

Do not try to recover too early and segfault when parsing invalid
declarations such as

echo 'int (int);' | scripts/genksyms/genksyms
echo 'int a, (int);' | scripts/genksyms/genksyms
echo 'extern void *__inline_memcpy((void *), (const void *), (__kernel_size_t));' | scripts/genksyms/genksyms

The last one was a real-life bug with
include/asm-generic/asm-prototypes.h on x86_64.
Reported-and-tested-by: default avatarBorislav Petkov <bp@alien8.de>
Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
[arnd: rebase to 4.4, regenerate parse.tab.{c,h}]
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5381db24
/* A Bison parser, made by GNU Bison 2.7. */
/* A Bison parser, made by GNU Bison 3.0.4. */
/* Bison implementation for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
Copyright (C) 1984, 1989-1990, 2000-2015 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
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
......@@ -26,7 +26,7 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
......@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
#define YYBISON_VERSION "2.7"
#define YYBISON_VERSION "3.0.4"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
......@@ -62,7 +62,7 @@
/* Copy the first part of user declarations. */
#line 24 "parse.y" /* yacc.c:339 */
#include <assert.h>
......@@ -113,13 +113,13 @@ static void record_compound(struct string_list **keyw,
}
#line 117 "parse.tab.c" /* yacc.c:339 */
# ifndef YY_NULL
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
# define YY_NULL nullptr
# define YY_NULLPTR nullptr
# else
# define YY_NULL 0
# define YY_NULLPTR 0
# endif
# endif
......@@ -131,8 +131,11 @@ static void record_compound(struct string_list **keyw,
# define YYERROR_VERBOSE 0
#endif
/* Enabling traces. */
/* In a future release of Bison, this section will be replaced
by #include "parse.tab.h". */
#ifndef YY_YY_PARSE_TAB_H_INCLUDED
# define YY_YY_PARSE_TAB_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 1
#endif
......@@ -140,86 +143,73 @@ static void record_compound(struct string_list **keyw,
extern int yydebug;
#endif
/* Tokens. */
/* Token type. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
/* Put the tokens into the symbol table, so that GDB and other debuggers
know about them. */
enum yytokentype {
ASM_KEYW = 258,
ATTRIBUTE_KEYW = 259,
AUTO_KEYW = 260,
BOOL_KEYW = 261,
CHAR_KEYW = 262,
CONST_KEYW = 263,
DOUBLE_KEYW = 264,
ENUM_KEYW = 265,
EXTERN_KEYW = 266,
EXTENSION_KEYW = 267,
FLOAT_KEYW = 268,
INLINE_KEYW = 269,
INT_KEYW = 270,
LONG_KEYW = 271,
REGISTER_KEYW = 272,
RESTRICT_KEYW = 273,
SHORT_KEYW = 274,
SIGNED_KEYW = 275,
STATIC_KEYW = 276,
STRUCT_KEYW = 277,
TYPEDEF_KEYW = 278,
UNION_KEYW = 279,
UNSIGNED_KEYW = 280,
VOID_KEYW = 281,
VOLATILE_KEYW = 282,
TYPEOF_KEYW = 283,
EXPORT_SYMBOL_KEYW = 284,
ASM_PHRASE = 285,
ATTRIBUTE_PHRASE = 286,
TYPEOF_PHRASE = 287,
BRACE_PHRASE = 288,
BRACKET_PHRASE = 289,
EXPRESSION_PHRASE = 290,
CHAR = 291,
DOTS = 292,
IDENT = 293,
INT = 294,
REAL = 295,
STRING = 296,
TYPE = 297,
OTHER = 298,
FILENAME = 299
};
enum yytokentype
{
ASM_KEYW = 258,
ATTRIBUTE_KEYW = 259,
AUTO_KEYW = 260,
BOOL_KEYW = 261,
CHAR_KEYW = 262,
CONST_KEYW = 263,
DOUBLE_KEYW = 264,
ENUM_KEYW = 265,
EXTERN_KEYW = 266,
EXTENSION_KEYW = 267,
FLOAT_KEYW = 268,
INLINE_KEYW = 269,
INT_KEYW = 270,
LONG_KEYW = 271,
REGISTER_KEYW = 272,
RESTRICT_KEYW = 273,
SHORT_KEYW = 274,
SIGNED_KEYW = 275,
STATIC_KEYW = 276,
STRUCT_KEYW = 277,
TYPEDEF_KEYW = 278,
UNION_KEYW = 279,
UNSIGNED_KEYW = 280,
VOID_KEYW = 281,
VOLATILE_KEYW = 282,
TYPEOF_KEYW = 283,
EXPORT_SYMBOL_KEYW = 284,
ASM_PHRASE = 285,
ATTRIBUTE_PHRASE = 286,
TYPEOF_PHRASE = 287,
BRACE_PHRASE = 288,
BRACKET_PHRASE = 289,
EXPRESSION_PHRASE = 290,
CHAR = 291,
DOTS = 292,
IDENT = 293,
INT = 294,
REAL = 295,
STRING = 296,
TYPE = 297,
OTHER = 298,
FILENAME = 299
};
#endif
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef int YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
extern YYSTYPE yylval;
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
int yyparse (void *YYPARSE_PARAM);
#else
int yyparse ();
#endif
#else /* ! YYPARSE_PARAM */
#if defined __STDC__ || defined __cplusplus
int yyparse (void);
#else
int yyparse ();
#endif
#endif /* ! YYPARSE_PARAM */
#endif /* !YY_YY_PARSE_TAB_H_INCLUDED */
/* Copy the second part of user declarations. */
#line 213 "parse.tab.c" /* yacc.c:358 */
#ifdef short
# undef short
......@@ -233,11 +223,8 @@ typedef unsigned char yytype_uint8;
#ifdef YYTYPE_INT8
typedef YYTYPE_INT8 yytype_int8;
#elif (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
typedef signed char yytype_int8;
#else
typedef short int yytype_int8;
typedef signed char yytype_int8;
#endif
#ifdef YYTYPE_UINT16
......@@ -257,8 +244,7 @@ typedef short int yytype_int16;
# define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
# define YYSIZE_T size_t
# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# elif ! defined YYSIZE_T
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
......@@ -280,6 +266,33 @@ typedef short int yytype_int16;
# endif
#endif
#ifndef YY_ATTRIBUTE
# if (defined __GNUC__ \
&& (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
|| defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
# else
# define YY_ATTRIBUTE(Spec) /* empty */
# endif
#endif
#ifndef YY_ATTRIBUTE_PURE
# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
#endif
#ifndef YY_ATTRIBUTE_UNUSED
# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
#endif
#if !defined _Noreturn \
&& (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
# if defined _MSC_VER && 1200 <= _MSC_VER
# define _Noreturn __declspec (noreturn)
# else
# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
# endif
#endif
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
# define YYUSE(E) ((void) (E))
......@@ -287,24 +300,26 @@ typedef short int yytype_int16;
# define YYUSE(E) /* empty */
#endif
/* Identity function, used to suppress warnings about constant conditions. */
#ifndef lint
# define YYID(N) (N)
#else
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static int
YYID (int yyi)
#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
_Pragma ("GCC diagnostic pop")
#else
static int
YYID (yyi)
int yyi;
# define YY_INITIAL_VALUE(Value) Value
#endif
{
return yyi;
}
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
#endif
#ifndef YY_INITIAL_VALUE
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif
#if ! defined yyoverflow || YYERROR_VERBOSE
/* The parser invokes alloca or malloc; define the necessary symbols. */
......@@ -322,8 +337,7 @@ YYID (yyi)
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
/* Use EXIT_SUCCESS as a witness for stdlib.h. */
# ifndef EXIT_SUCCESS
......@@ -335,8 +349,8 @@ YYID (yyi)
# endif
# ifdef YYSTACK_ALLOC
/* Pacify GCC's `empty if-body' warning. */
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
/* Pacify GCC's 'empty if-body' warning. */
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
# ifndef YYSTACK_ALLOC_MAXIMUM
/* The OS might guarantee only one guard page at the bottom of the stack,
and a page size can be as small as 4096 bytes. So we cannot safely
......@@ -352,7 +366,7 @@ YYID (yyi)
# endif
# if (defined __cplusplus && ! defined EXIT_SUCCESS \
&& ! ((defined YYMALLOC || defined malloc) \
&& (defined YYFREE || defined free)))
&& (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
# ifndef EXIT_SUCCESS
# define EXIT_SUCCESS 0
......@@ -360,15 +374,13 @@ YYID (yyi)
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# if ! defined malloc && ! defined EXIT_SUCCESS
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# if ! defined free && ! defined EXIT_SUCCESS
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
......@@ -378,7 +390,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
#if (! defined yyoverflow \
&& (! defined __cplusplus \
|| (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
|| (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
......@@ -403,16 +415,16 @@ union yyalloc
elements in the stack, and YYPTR gives the new location of the
stack. Advance YYPTR to a properly aligned location for the next
stack. */
# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
YYSIZE_T yynewbytes; \
YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
Stack = &yyptr->Stack_alloc; \
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
while (YYID (0))
# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
YYSIZE_T yynewbytes; \
YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
Stack = &yyptr->Stack_alloc; \
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
while (0)
#endif
......@@ -431,7 +443,7 @@ union yyalloc
for (yyi = 0; yyi < (Count); yyi++) \
(Dst)[yyi] = (Src)[yyi]; \
} \
while (YYID (0))
while (0)
# endif
# endif
#endif /* !YYCOPY_NEEDED */
......@@ -439,25 +451,27 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 4
/* YYLAST -- Last index in YYTABLE. */
#define YYLAST 515
#define YYLAST 513
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 54
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 49
/* YYNRULES -- Number of rules. */
#define YYNRULES 133
/* YYNRULES -- Number of states. */
#define YYNSTATES 188
#define YYNRULES 132
/* YYNSTATES -- Number of states. */
#define YYNSTATES 186
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
#define YYMAXUTOK 299
#define YYTRANSLATE(YYX) \
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
as returned by yylex, without out-of-bounds checking. */
static const yytype_uint8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
......@@ -493,69 +507,7 @@ static const yytype_uint8 yytranslate[] =
};
#if YYDEBUG
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
YYRHS. */
static const yytype_uint16 yyprhs[] =
{
0, 0, 3, 5, 8, 9, 12, 13, 18, 19,
23, 25, 27, 29, 31, 34, 37, 41, 42, 44,
46, 50, 55, 56, 58, 60, 63, 65, 67, 69,
71, 73, 75, 77, 79, 81, 86, 88, 91, 94,
97, 101, 105, 109, 112, 115, 118, 120, 122, 124,
126, 128, 130, 132, 134, 136, 138, 140, 143, 144,
146, 148, 151, 153, 155, 157, 159, 162, 164, 166,
168, 173, 178, 181, 185, 189, 192, 194, 196, 198,
203, 208, 211, 215, 219, 222, 224, 228, 229, 231,
233, 237, 240, 243, 245, 246, 248, 250, 255, 260,
263, 267, 271, 275, 276, 278, 281, 285, 289, 290,
292, 294, 297, 301, 304, 305, 307, 309, 313, 316,
319, 321, 324, 325, 328, 332, 337, 339, 343, 345,
349, 352, 353, 355
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int8 yyrhs[] =
{
55, 0, -1, 56, -1, 55, 56, -1, -1, 57,
58, -1, -1, 12, 23, 59, 61, -1, -1, 23,
60, 61, -1, 61, -1, 85, -1, 100, -1, 102,
-1, 1, 45, -1, 1, 46, -1, 65, 62, 45,
-1, -1, 63, -1, 64, -1, 63, 47, 64, -1,
75, 101, 96, 86, -1, -1, 66, -1, 67, -1,
66, 67, -1, 68, -1, 69, -1, 5, -1, 17,
-1, 21, -1, 11, -1, 14, -1, 70, -1, 74,
-1, 28, 48, 82, 49, -1, 32, -1, 22, 38,
-1, 24, 38, -1, 10, 38, -1, 22, 38, 88,
-1, 24, 38, 88, -1, 10, 38, 97, -1, 10,
97, -1, 22, 88, -1, 24, 88, -1, 7, -1,
19, -1, 15, -1, 16, -1, 20, -1, 25, -1,
13, -1, 9, -1, 26, -1, 6, -1, 42, -1,
50, 72, -1, -1, 73, -1, 74, -1, 73, 74,
-1, 8, -1, 27, -1, 31, -1, 18, -1, 71,
75, -1, 76, -1, 38, -1, 42, -1, 76, 48,
79, 49, -1, 76, 48, 1, 49, -1, 76, 34,
-1, 48, 75, 49, -1, 48, 1, 49, -1, 71,
77, -1, 78, -1, 38, -1, 42, -1, 78, 48,
79, 49, -1, 78, 48, 1, 49, -1, 78, 34,
-1, 48, 77, 49, -1, 48, 1, 49, -1, 80,
37, -1, 80, -1, 81, 47, 37, -1, -1, 81,
-1, 82, -1, 81, 47, 82, -1, 66, 83, -1,
71, 83, -1, 84, -1, -1, 38, -1, 42, -1,
84, 48, 79, 49, -1, 84, 48, 1, 49, -1,
84, 34, -1, 48, 83, 49, -1, 48, 1, 49,
-1, 65, 75, 33, -1, -1, 87, -1, 51, 35,
-1, 52, 89, 46, -1, 52, 1, 46, -1, -1,
90, -1, 91, -1, 90, 91, -1, 65, 92, 45,
-1, 1, 45, -1, -1, 93, -1, 94, -1, 93,
47, 94, -1, 77, 96, -1, 38, 95, -1, 95,
-1, 53, 35, -1, -1, 96, 31, -1, 52, 98,
46, -1, 52, 98, 47, 46, -1, 99, -1, 98,
47, 99, -1, 38, -1, 38, 51, 35, -1, 30,
45, -1, -1, 30, -1, 29, 48, 38, 49, 45,
-1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
0, 124, 124, 125, 129, 129, 135, 135, 137, 137,
......@@ -565,13 +517,13 @@ static const yytype_uint16 yyrline[] =
237, 239, 241, 246, 249, 250, 254, 255, 256, 257,
258, 259, 260, 261, 262, 263, 264, 268, 273, 274,
278, 279, 283, 283, 283, 284, 292, 293, 297, 306,
315, 317, 319, 321, 323, 330, 331, 335, 336, 337,
339, 341, 343, 345, 350, 351, 352, 356, 357, 361,
362, 367, 372, 374, 378, 379, 387, 391, 393, 395,
397, 399, 404, 413, 414, 419, 424, 425, 429, 430,
434, 435, 439, 441, 446, 447, 451, 452, 456, 457,
458, 462, 466, 467, 471, 472, 476, 477, 480, 485,
493, 497, 498, 502
315, 317, 319, 321, 328, 329, 333, 334, 335, 337,
339, 341, 343, 348, 349, 350, 354, 355, 359, 360,
365, 370, 372, 376, 377, 385, 389, 391, 393, 395,
397, 402, 411, 412, 417, 422, 423, 427, 428, 432,
433, 437, 439, 444, 445, 449, 450, 454, 455, 456,
460, 464, 465, 469, 470, 474, 475, 478, 483, 491,
495, 496, 500
};
#endif
......@@ -606,13 +558,13 @@ static const char *const yytname[] =
"member_declarator_list_opt", "member_declarator_list",
"member_declarator", "member_bitfield_declarator", "attribute_opt",
"enum_body", "enumerator_list", "enumerator", "asm_definition",
"asm_phrase_opt", "export_definition", YY_NULL
"asm_phrase_opt", "export_definition", YY_NULLPTR
};
#endif
# ifdef YYPRINT
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
token YYLEX-NUM. */
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
(internal) symbol number NUM (which must be that of a token). */
static const yytype_uint16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
......@@ -624,47 +576,44 @@ static const yytype_uint16 yytoknum[] =
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
0, 54, 55, 55, 57, 56, 59, 58, 60, 58,
58, 58, 58, 58, 58, 58, 61, 62, 62, 63,
63, 64, 65, 65, 66, 66, 67, 67, 68, 68,
68, 68, 68, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 70, 70, 70, 70,
70, 70, 70, 70, 70, 70, 70, 71, 72, 72,
73, 73, 74, 74, 74, 74, 75, 75, 76, 76,
76, 76, 76, 76, 76, 77, 77, 78, 78, 78,
78, 78, 78, 78, 79, 79, 79, 80, 80, 81,
81, 82, 83, 83, 84, 84, 84, 84, 84, 84,
84, 84, 85, 86, 86, 87, 88, 88, 89, 89,
90, 90, 91, 91, 92, 92, 93, 93, 94, 94,
94, 95, 96, 96, 97, 97, 98, 98, 99, 99,
100, 101, 101, 102
};
#define YYPACT_NINF -135
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
#define yypact_value_is_default(Yystate) \
(!!((Yystate) == (-135)))
#define YYTABLE_NINF -109
#define yytable_value_is_error(Yytable_value) \
0
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
static const yytype_int16 yypact[] =
{
0, 2, 1, 2, 0, 2, 0, 4, 0, 3,
1, 1, 1, 1, 2, 2, 3, 0, 1, 1,
3, 4, 0, 1, 1, 2, 1, 1, 1, 1,
1, 1, 1, 1, 1, 4, 1, 2, 2, 2,
3, 3, 3, 2, 2, 2, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 2, 0, 1,
1, 2, 1, 1, 1, 1, 2, 1, 1, 1,
4, 4, 2, 3, 3, 2, 1, 1, 1, 4,
4, 2, 3, 3, 2, 1, 3, 0, 1, 1,
3, 2, 2, 1, 0, 1, 1, 4, 4, 2,
3, 3, 3, 0, 1, 2, 3, 3, 0, 1,
1, 2, 3, 2, 0, 1, 1, 3, 2, 2,
1, 2, 0, 2, 3, 4, 1, 3, 1, 3,
2, 0, 1, 5
-135, 38, -135, 206, -135, -135, 22, -135, -135, -135,
-135, -135, -24, -135, 20, -135, -135, -135, -135, -135,
-135, -135, -135, -135, -23, -135, 6, -135, -135, -135,
-2, 15, 24, -135, -135, -135, -135, -135, 41, 471,
-135, -135, -135, -135, -135, -135, -135, -135, -135, -135,
13, 36, -135, -135, 35, 106, -135, 471, 35, -135,
471, 44, -135, -135, -135, 41, 39, 45, 48, -135,
41, -10, 25, -135, -135, 47, 34, -135, 471, -135,
26, -26, 53, 156, -135, -135, 41, -135, 387, 52,
57, 59, -135, 39, -135, -135, 41, -135, -135, -135,
-135, -135, 252, 67, -135, -21, -135, -135, -135, 51,
-135, 12, 83, 46, -135, 27, 84, 88, -135, -135,
-135, 91, -135, 109, -135, -135, 3, 55, -135, 30,
-135, 95, -135, -135, -135, -20, 92, 93, 108, 96,
-135, -135, -135, -135, -135, 97, -135, 98, -135, -135,
118, -135, 297, -135, -26, 101, -135, 104, -135, -135,
342, -135, -135, 120, -135, -135, -135, -135, -135, 433,
-135, -135, 111, 119, -135, -135, -135, 130, 136, -135,
-135, -135, -135, -135, -135, -135
};
/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
Performed when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
Performed when YYTABLE does not specify something else to do. Zero
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
4, 4, 2, 0, 1, 3, 0, 28, 55, 46,
......@@ -673,191 +622,158 @@ static const yytype_uint8 yydefact[] =
0, 0, 0, 64, 36, 56, 5, 10, 17, 23,
24, 26, 27, 33, 34, 11, 12, 13, 14, 15,
39, 0, 43, 6, 37, 0, 44, 22, 38, 45,
0, 0, 130, 68, 69, 0, 58, 0, 18, 19,
0, 131, 67, 25, 42, 128, 0, 126, 22, 40,
0, 114, 0, 0, 110, 9, 17, 41, 94, 0,
0, 0, 0, 57, 59, 60, 16, 0, 66, 132,
102, 122, 72, 0, 0, 124, 0, 7, 113, 107,
77, 78, 0, 0, 0, 122, 76, 0, 115, 116,
120, 106, 0, 111, 131, 95, 56, 0, 94, 91,
93, 35, 0, 74, 73, 61, 20, 103, 0, 0,
85, 88, 89, 129, 125, 127, 119, 0, 77, 0,
121, 75, 118, 81, 0, 112, 0, 0, 96, 0,
92, 99, 0, 133, 123, 0, 21, 104, 71, 70,
84, 0, 83, 82, 0, 0, 117, 101, 100, 0,
0, 105, 86, 90, 80, 79, 98, 97
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
-1, 1, 2, 3, 36, 78, 57, 37, 67, 68,
69, 81, 39, 40, 41, 42, 43, 70, 93, 94,
44, 124, 72, 115, 116, 139, 140, 141, 142, 129,
130, 45, 166, 167, 56, 82, 83, 84, 117, 118,
119, 120, 137, 52, 76, 77, 46, 101, 47
0, 0, 129, 68, 69, 0, 58, 0, 18, 19,
0, 130, 67, 25, 42, 127, 0, 125, 22, 40,
0, 113, 0, 0, 109, 9, 17, 41, 93, 0,
0, 0, 57, 59, 60, 16, 0, 66, 131, 101,
121, 72, 0, 0, 123, 0, 7, 112, 106, 76,
77, 0, 0, 0, 121, 75, 0, 114, 115, 119,
105, 0, 110, 130, 94, 56, 0, 93, 90, 92,
35, 0, 73, 61, 20, 102, 0, 0, 84, 87,
88, 128, 124, 126, 118, 0, 76, 0, 120, 74,
117, 80, 0, 111, 0, 0, 95, 0, 91, 98,
0, 132, 122, 0, 21, 103, 71, 70, 83, 0,
82, 81, 0, 0, 116, 100, 99, 0, 0, 104,
85, 89, 79, 78, 97, 96
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
#define YYPACT_NINF -92
static const yytype_int16 yypact[] =
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{