| /* A Bison parser, made by GNU Bison 3.0.4. */ |
| |
| /* Bison implementation for Yacc-like parsers in C |
| |
| 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/>. */ |
| |
| /* As a special exception, you may create a larger work that contains |
| part or all of the Bison parser skeleton and distribute that work |
| under terms of your choice, so long as that work isn't itself a |
| parser generator using the skeleton or a modified version thereof |
| as a parser skeleton. Alternatively, if you modify or redistribute |
| the parser skeleton itself, you may (at your option) remove this |
| 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. */ |
| |
| /* C LALR(1) parser skeleton written by Richard Stallman, by |
| simplifying the original so-called "semantic" parser. */ |
| |
| /* All symbols defined below should begin with yy or YY, to avoid |
| infringing on user name space. This should be done even for local |
| variables, as they might otherwise be expanded by user macros. |
| There are some unavoidable exceptions within include files to |
| define necessary library symbols; they are noted "INFRINGES ON |
| USER NAME SPACE" below. */ |
| |
| /* Identify Bison output. */ |
| #define YYBISON 1 |
| |
| /* Bison version. */ |
| #define YYBISON_VERSION "3.0.4" |
| |
| /* Skeleton name. */ |
| #define YYSKELETON_NAME "yacc.c" |
| |
| /* Pure parsers. */ |
| #define YYPURE 2 |
| |
| /* Push parsers. */ |
| #define YYPUSH 0 |
| |
| /* Pull parsers. */ |
| #define YYPULL 1 |
| |
| |
| |
| |
| /* Copy the first part of user declarations. */ |
| |
| |
| #include <stdio.h> |
| #include <stdarg.h> |
| #include <string.h> |
| #include <stdlib.h> |
| #include "context.h" |
| #include "resolve.h" |
| #include "common.h" |
| #include "parser_yang.h" |
| #include "parser_yang_lex.h" |
| #include "parser.h" |
| |
| /* only syntax rules */ |
| #define EXTENSION_ARG 0x01 |
| #define EXTENSION_STA 0x02 |
| #define EXTENSION_DSC 0x04 |
| #define EXTENSION_REF 0x08 |
| |
| void yyerror(YYLTYPE *yylloc, void *scanner, ...); |
| /* temporary pointer for the check extension nacm 'data_node' */ |
| /* pointer on the current parsed element 'actual' */ |
| |
| |
| |
| # ifndef YY_NULLPTR |
| # if defined __cplusplus && 201103L <= __cplusplus |
| # define YY_NULLPTR nullptr |
| # else |
| # define YY_NULLPTR 0 |
| # endif |
| # endif |
| |
| /* Enabling verbose error messages. */ |
| #ifdef YYERROR_VERBOSE |
| # undef YYERROR_VERBOSE |
| # define YYERROR_VERBOSE 1 |
| #else |
| # define YYERROR_VERBOSE 0 |
| #endif |
| |
| /* In a future release of Bison, this section will be replaced |
| by #include "parser_yang_bis.h". */ |
| #ifndef YY_YY_PARSER_YANG_BIS_H_INCLUDED |
| # define YY_YY_PARSER_YANG_BIS_H_INCLUDED |
| /* Debug traces. */ |
| #ifndef YYDEBUG |
| # define YYDEBUG 0 |
| #endif |
| #if YYDEBUG |
| extern int yydebug; |
| #endif |
| |
| /* Token type. */ |
| #ifndef YYTOKENTYPE |
| # define YYTOKENTYPE |
| enum yytokentype |
| { |
| UNION_KEYWORD = 258, |
| ANYXML_KEYWORD = 259, |
| WHITESPACE = 260, |
| ERROR = 261, |
| EOL = 262, |
| STRING = 263, |
| STRINGS = 264, |
| IDENTIFIER = 265, |
| IDENTIFIERPREFIX = 266, |
| REVISION_DATE = 267, |
| TAB = 268, |
| DOUBLEDOT = 269, |
| URI = 270, |
| INTEGER = 271, |
| NON_NEGATIVE_INTEGER = 272, |
| ZERO = 273, |
| DECIMAL = 274, |
| ARGUMENT_KEYWORD = 275, |
| AUGMENT_KEYWORD = 276, |
| BASE_KEYWORD = 277, |
| BELONGS_TO_KEYWORD = 278, |
| BIT_KEYWORD = 279, |
| CASE_KEYWORD = 280, |
| CHOICE_KEYWORD = 281, |
| CONFIG_KEYWORD = 282, |
| CONTACT_KEYWORD = 283, |
| CONTAINER_KEYWORD = 284, |
| DEFAULT_KEYWORD = 285, |
| DESCRIPTION_KEYWORD = 286, |
| ENUM_KEYWORD = 287, |
| ERROR_APP_TAG_KEYWORD = 288, |
| ERROR_MESSAGE_KEYWORD = 289, |
| EXTENSION_KEYWORD = 290, |
| DEVIATION_KEYWORD = 291, |
| DEVIATE_KEYWORD = 292, |
| FEATURE_KEYWORD = 293, |
| FRACTION_DIGITS_KEYWORD = 294, |
| GROUPING_KEYWORD = 295, |
| IDENTITY_KEYWORD = 296, |
| IF_FEATURE_KEYWORD = 297, |
| IMPORT_KEYWORD = 298, |
| INCLUDE_KEYWORD = 299, |
| INPUT_KEYWORD = 300, |
| KEY_KEYWORD = 301, |
| LEAF_KEYWORD = 302, |
| LEAF_LIST_KEYWORD = 303, |
| LENGTH_KEYWORD = 304, |
| LIST_KEYWORD = 305, |
| MANDATORY_KEYWORD = 306, |
| MAX_ELEMENTS_KEYWORD = 307, |
| MIN_ELEMENTS_KEYWORD = 308, |
| MODULE_KEYWORD = 309, |
| MUST_KEYWORD = 310, |
| NAMESPACE_KEYWORD = 311, |
| NOTIFICATION_KEYWORD = 312, |
| ORDERED_BY_KEYWORD = 313, |
| ORGANIZATION_KEYWORD = 314, |
| OUTPUT_KEYWORD = 315, |
| PATH_KEYWORD = 316, |
| PATTERN_KEYWORD = 317, |
| POSITION_KEYWORD = 318, |
| PREFIX_KEYWORD = 319, |
| PRESENCE_KEYWORD = 320, |
| RANGE_KEYWORD = 321, |
| REFERENCE_KEYWORD = 322, |
| REFINE_KEYWORD = 323, |
| REQUIRE_INSTANCE_KEYWORD = 324, |
| REVISION_KEYWORD = 325, |
| REVISION_DATE_KEYWORD = 326, |
| RPC_KEYWORD = 327, |
| STATUS_KEYWORD = 328, |
| SUBMODULE_KEYWORD = 329, |
| TYPE_KEYWORD = 330, |
| TYPEDEF_KEYWORD = 331, |
| UNIQUE_KEYWORD = 332, |
| UNITS_KEYWORD = 333, |
| USES_KEYWORD = 334, |
| VALUE_KEYWORD = 335, |
| WHEN_KEYWORD = 336, |
| YANG_VERSION_KEYWORD = 337, |
| YIN_ELEMENT_KEYWORD = 338, |
| ADD_KEYWORD = 339, |
| CURRENT_KEYWORD = 340, |
| DELETE_KEYWORD = 341, |
| DEPRECATED_KEYWORD = 342, |
| FALSE_KEYWORD = 343, |
| NOT_SUPPORTED_KEYWORD = 344, |
| OBSOLETE_KEYWORD = 345, |
| REPLACE_KEYWORD = 346, |
| SYSTEM_KEYWORD = 347, |
| TRUE_KEYWORD = 348, |
| UNBOUNDED_KEYWORD = 349, |
| USER_KEYWORD = 350, |
| ACTION_KEYWORD = 351, |
| MODIFIER_KEYWORD = 352, |
| ANYDATA_KEYWORD = 353 |
| }; |
| #endif |
| |
| /* Value type. */ |
| #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED |
| |
| union YYSTYPE |
| { |
| |
| |
| int32_t i; |
| uint32_t uint; |
| char *str; |
| char **p_str; |
| void *v; |
| char ch; |
| struct lys_module *inc; |
| struct yang_type *type; |
| union { |
| uint32_t index; |
| struct lys_node_container *container; |
| struct lys_node_anydata *anydata; |
| struct type_node node; |
| struct lys_node_case *cs; |
| struct lys_node_grp *grouping; |
| struct lys_refine *refine; |
| struct lys_node_notif *notif; |
| struct type_deviation *deviation; |
| struct lys_node_uses *uses; |
| } nodes; |
| |
| |
| }; |
| |
| typedef union YYSTYPE YYSTYPE; |
| # define YYSTYPE_IS_TRIVIAL 1 |
| # define YYSTYPE_IS_DECLARED 1 |
| #endif |
| |
| /* Location type. */ |
| #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED |
| typedef struct YYLTYPE YYLTYPE; |
| struct YYLTYPE |
| { |
| int first_line; |
| int first_column; |
| int last_line; |
| int last_column; |
| }; |
| # define YYLTYPE_IS_DECLARED 1 |
| # define YYLTYPE_IS_TRIVIAL 1 |
| #endif |
| |
| |
| |
| int yyparse (void *scanner, struct lys_module *module, struct lys_submodule *submodule, struct unres_schema *unres, struct lys_array_size *size_arrays, int read_all); |
| |
| #endif /* !YY_YY_PARSER_YANG_BIS_H_INCLUDED */ |
| |
| /* Copy the second part of user declarations. */ |
| |
| |
| |
| #ifdef short |
| # undef short |
| #endif |
| |
| #ifdef YYTYPE_UINT8 |
| typedef YYTYPE_UINT8 yytype_uint8; |
| #else |
| typedef unsigned char yytype_uint8; |
| #endif |
| |
| #ifdef YYTYPE_INT8 |
| typedef YYTYPE_INT8 yytype_int8; |
| #else |
| typedef signed char yytype_int8; |
| #endif |
| |
| #ifdef YYTYPE_UINT16 |
| typedef YYTYPE_UINT16 yytype_uint16; |
| #else |
| typedef unsigned short int yytype_uint16; |
| #endif |
| |
| #ifdef YYTYPE_INT16 |
| typedef YYTYPE_INT16 yytype_int16; |
| #else |
| typedef short int yytype_int16; |
| #endif |
| |
| #ifndef YYSIZE_T |
| # ifdef __SIZE_TYPE__ |
| # define YYSIZE_T __SIZE_TYPE__ |
| # elif defined size_t |
| # define YYSIZE_T size_t |
| # elif ! defined YYSIZE_T |
| # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ |
| # define YYSIZE_T size_t |
| # else |
| # define YYSIZE_T unsigned int |
| # endif |
| #endif |
| |
| #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) |
| |
| #ifndef YY_ |
| # if defined YYENABLE_NLS && YYENABLE_NLS |
| # if ENABLE_NLS |
| # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ |
| # define YY_(Msgid) dgettext ("bison-runtime", Msgid) |
| # endif |
| # endif |
| # ifndef YY_ |
| # define YY_(Msgid) Msgid |
| # 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)) |
| #else |
| # define YYUSE(E) /* empty */ |
| #endif |
| |
| #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 |
| # define YY_INITIAL_VALUE(Value) Value |
| #endif |
| #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. */ |
| |
| # ifdef YYSTACK_USE_ALLOCA |
| # if YYSTACK_USE_ALLOCA |
| # ifdef __GNUC__ |
| # define YYSTACK_ALLOC __builtin_alloca |
| # elif defined __BUILTIN_VA_ARG_INCR |
| # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ |
| # elif defined _AIX |
| # define YYSTACK_ALLOC __alloca |
| # elif defined _MSC_VER |
| # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ |
| # define alloca _alloca |
| # else |
| # define YYSTACK_ALLOC alloca |
| # 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 |
| # define EXIT_SUCCESS 0 |
| # endif |
| # endif |
| # endif |
| # endif |
| # endif |
| |
| # ifdef YYSTACK_ALLOC |
| /* 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 |
| invoke alloca (N) if N exceeds 4096. Use a slightly smaller number |
| to allow for a few compiler-allocated temporary stack slots. */ |
| # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ |
| # endif |
| # else |
| # define YYSTACK_ALLOC YYMALLOC |
| # define YYSTACK_FREE YYFREE |
| # ifndef YYSTACK_ALLOC_MAXIMUM |
| # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM |
| # endif |
| # if (defined __cplusplus && ! defined EXIT_SUCCESS \ |
| && ! ((defined YYMALLOC || defined malloc) \ |
| && (defined YYFREE || defined free))) |
| # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ |
| # ifndef EXIT_SUCCESS |
| # define EXIT_SUCCESS 0 |
| # endif |
| # endif |
| # ifndef YYMALLOC |
| # define YYMALLOC malloc |
| # 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 |
| void free (void *); /* INFRINGES ON USER NAME SPACE */ |
| # endif |
| # endif |
| # endif |
| #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ |
| |
| |
| #if (! defined yyoverflow \ |
| && (! defined __cplusplus \ |
| || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ |
| && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) |
| |
| /* A type that is properly aligned for any stack member. */ |
| union yyalloc |
| { |
| yytype_int16 yyss_alloc; |
| YYSTYPE yyvs_alloc; |
| YYLTYPE yyls_alloc; |
| }; |
| |
| /* The size of the maximum gap between one aligned stack and the next. */ |
| # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) |
| |
| /* The size of an array large to enough to hold all stacks, each with |
| N elements. */ |
| # define YYSTACK_BYTES(N) \ |
| ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ |
| + 2 * YYSTACK_GAP_MAXIMUM) |
| |
| # define YYCOPY_NEEDED 1 |
| |
| /* Relocate STACK from its old location to the new one. The |
| local variables YYSIZE and YYSTACKSIZE give the old and new number of |
| 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 (0) |
| |
| #endif |
| |
| #if defined YYCOPY_NEEDED && YYCOPY_NEEDED |
| /* Copy COUNT objects from SRC to DST. The source and destination do |
| not overlap. */ |
| # ifndef YYCOPY |
| # if defined __GNUC__ && 1 < __GNUC__ |
| # define YYCOPY(Dst, Src, Count) \ |
| __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) |
| # else |
| # define YYCOPY(Dst, Src, Count) \ |
| do \ |
| { \ |
| YYSIZE_T yyi; \ |
| for (yyi = 0; yyi < (Count); yyi++) \ |
| (Dst)[yyi] = (Src)[yyi]; \ |
| } \ |
| while (0) |
| # endif |
| # endif |
| #endif /* !YYCOPY_NEEDED */ |
| |
| /* YYFINAL -- State number of the termination state. */ |
| #define YYFINAL 5 |
| /* YYLAST -- Last index in YYTABLE. */ |
| #define YYLAST 3360 |
| |
| /* YYNTOKENS -- Number of terminals. */ |
| #define YYNTOKENS 109 |
| /* YYNNTS -- Number of nonterminals. */ |
| #define YYNNTS 337 |
| /* YYNRULES -- Number of rules. */ |
| #define YYNRULES 762 |
| /* YYNSTATES -- Number of states. */ |
| #define YYNSTATES 1230 |
| |
| /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned |
| by yylex, with out-of-bounds checking. */ |
| #define YYUNDEFTOK 2 |
| #define YYMAXUTOK 353 |
| |
| #define YYTRANSLATE(YYX) \ |
| ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) |
| |
| /* 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, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 107, 108, 2, 99, 2, 2, 2, 103, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 102, |
| 2, 106, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 104, 2, 105, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 100, 2, 101, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, |
| 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, |
| 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, |
| 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, |
| 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, |
| 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, |
| 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, |
| 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, |
| 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, |
| 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, |
| 95, 96, 97, 98 |
| }; |
| |
| #if YYDEBUG |
| /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ |
| static const yytype_uint16 yyrline[] = |
| { |
| 0, 269, 269, 270, 290, 317, 320, 322, 321, 345, |
| 358, 345, 367, 368, 376, 377, 380, 393, 380, 404, |
| 405, 413, 413, 422, 424, 426, 449, 450, 453, 453, |
| 473, 474, 480, 491, 502, 511, 513, 513, 536, 537, |
| 541, 542, 553, 564, 573, 585, 596, 585, 605, 607, |
| 608, 609, 610, 615, 621, 623, 625, 627, 629, 637, |
| 640, 640, 649, 650, 650, 655, 656, 661, 668, 668, |
| 677, 683, 722, 725, 726, 727, 728, 729, 730, 731, |
| 735, 736, 737, 739, 739, 758, 759, 763, 764, 771, |
| 778, 789, 801, 801, 803, 804, 808, 810, 811, 812, |
| 823, 825, 826, 825, 829, 830, 831, 832, 849, 849, |
| 858, 859, 864, 885, 898, 904, 909, 915, 917, 917, |
| 926, 927, 932, 972, 981, 990, 996, 1001, 1007, 1009, |
| 1020, 1044, 1047, 1054, 1055, 1061, 1067, 1072, 1079, 1081, |
| 1089, 1090, 1095, 1096, 1097, 1100, 1135, 1139, 1147, 1155, |
| 1156, 1160, 1161, 1162, 1170, 1183, 1189, 1190, 1209, 1213, |
| 1223, 1224, 1229, 1241, 1246, 1251, 1256, 1262, 1271, 1284, |
| 1285, 1289, 1290, 1302, 1307, 1312, 1317, 1323, 1336, 1336, |
| 1355, 1356, 1359, 1371, 1381, 1382, 1387, 1411, 1420, 1429, |
| 1435, 1440, 1446, 1458, 1459, 1477, 1482, 1483, 1488, 1490, |
| 1492, 1493, 1494, 1510, 1510, 1529, 1530, 1532, 1543, 1553, |
| 1554, 1559, 1583, 1592, 1601, 1607, 1612, 1618, 1630, 1631, |
| 1649, 1651, 1653, 1655, 1657, 1657, 1664, 1670, 1675, 1697, |
| 1703, 1708, 1713, 1714, 1721, 1722, 1723, 1734, 1735, 1736, |
| 1737, 1738, 1739, 1740, 1741, 1744, 1744, 1752, 1758, 1768, |
| 1804, 1804, 1806, 1813, 1813, 1821, 1822, 1828, 1834, 1839, |
| 1844, 1844, 1849, 1849, 1854, 1854, 1865, 1865, 1873, 1873, |
| 1880, 1912, 1920, 1950, 1950, 1952, 1959, 1959, 1966, 1967, |
| 1967, 1975, 1978, 1984, 1990, 1996, 2001, 2006, 2016, 2061, |
| 2102, 2102, 2104, 2111, 2111, 2118, 2138, 2139, 2139, 2147, |
| 2153, 2168, 2183, 2195, 2201, 2206, 2212, 2219, 2212, 2250, |
| 2295, 2295, 2297, 2304, 2304, 2312, 2326, 2334, 2340, 2355, |
| 2370, 2382, 2388, 2393, 2398, 2398, 2406, 2406, 2411, 2411, |
| 2416, 2416, 2427, 2427, 2435, 2435, 2446, 2452, 2463, 2486, |
| 2486, 2488, 2498, 2522, 2530, 2538, 2546, 2554, 2562, 2562, |
| 2572, 2573, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2589, |
| 2589, 2597, 2603, 2614, 2636, 2636, 2638, 2645, 2651, 2656, |
| 2661, 2661, 2668, 2668, 2680, 2680, 2692, 2698, 2709, 2738, |
| 2738, 2744, 2751, 2751, 2759, 2766, 2773, 2780, 2785, 2791, |
| 2791, 2812, 2813, 2817, 2853, 2853, 2855, 2862, 2868, 2873, |
| 2878, 2878, 2886, 2886, 2900, 2900, 2910, 2911, 2916, 2917, |
| 2920, 2988, 2995, 3004, 3028, 3048, 3067, 3086, 3109, 3132, |
| 3137, 3143, 3152, 3143, 3167, 3168, 3171, 3180, 3171, 3198, |
| 3219, 3219, 3221, 3228, 3237, 3242, 3247, 3247, 3255, 3255, |
| 3263, 3263, 3275, 3275, 3285, 3286, 3289, 3300, 3302, 3313, |
| 3315, 3316, 3321, 3351, 3358, 3364, 3369, 3374, 3374, 3382, |
| 3382, 3387, 3387, 3399, 3399, 3412, 3426, 3412, 3436, 3467, |
| 3467, 3475, 3475, 3483, 3483, 3488, 3488, 3498, 3512, 3498, |
| 3522, 3532, 3534, 3535, 3547, 3587, 3587, 3595, 3602, 3608, |
| 3613, 3618, 3618, 3626, 3626, 3631, 3631, 3638, 3638, 3676, |
| 3696, 3704, 3712, 3722, 3723, 3725, 3730, 3732, 3733, 3734, |
| 3737, 3739, 3739, 3745, 3746, 3757, 3784, 3792, 3800, 3816, |
| 3826, 3833, 3840, 3851, 3863, 3863, 3869, 3870, 3895, 3922, |
| 3930, 3941, 3951, 3962, 3962, 3968, 3972, 3973, 3985, 4002, |
| 4006, 4014, 4024, 4031, 4038, 4049, 4061, 4061, 4064, 4065, |
| 4069, 4070, 4075, 4081, 4083, 4084, 4083, 4087, 4088, 4089, |
| 4104, 4106, 4107, 4106, 4110, 4111, 4112, 4127, 4129, 4131, |
| 4132, 4154, 4156, 4157, 4158, 4180, 4182, 4183, 4184, 4198, |
| 4198, 4206, 4207, 4212, 4214, 4215, 4217, 4218, 4220, 4222, |
| 4222, 4231, 4234, 4244, 4265, 4267, 4268, 4271, 4271, 4290, |
| 4290, 4299, 4299, 4308, 4311, 4313, 4315, 4316, 4318, 4320, |
| 4322, 4323, 4325, 4327, 4328, 4330, 4331, 4333, 4335, 4338, |
| 4342, 4344, 4345, 4347, 4348, 4350, 4352, 4363, 4364, 4367, |
| 4368, 4380, 4381, 4383, 4384, 4386, 4387, 4393, 4394, 4397, |
| 4398, 4399, 4425, 4426, 4429, 4430, 4431, 4434, 4434, 4442, |
| 4444, 4445, 4447, 4448, 4449, 4451, 4452, 4454, 4455, 4457, |
| 4458, 4460, 4461, 4463, 4464, 4467, 4468, 4471, 4473, 4474, |
| 4477, 4477, 4486, 4488, 4489, 4490, 4491, 4492, 4493, 4494, |
| 4496, 4497, 4498, 4499, 4500, 4501, 4502, 4503, 4504, 4505, |
| 4506, 4507, 4508, 4509, 4510, 4511, 4512, 4513, 4514, 4515, |
| 4516, 4517, 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525, |
| 4526, 4527, 4528, 4529, 4530, 4531, 4532, 4533, 4534, 4535, |
| 4536, 4537, 4538, 4539, 4540, 4541, 4542, 4543, 4544, 4545, |
| 4546, 4547, 4548, 4549, 4550, 4551, 4552, 4553, 4554, 4555, |
| 4556, 4557, 4558, 4559, 4560, 4561, 4562, 4563, 4564, 4565, |
| 4566, 4567, 4568, 4569, 4570, 4571, 4572, 4573, 4574, 4575, |
| 4576, 4579, 4588 |
| }; |
| #endif |
| |
| #if YYDEBUG || YYERROR_VERBOSE || 0 |
| /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. |
| First, the terminals, then, starting at YYNTOKENS, nonterminals. */ |
| static const char *const yytname[] = |
| { |
| "$end", "error", "$undefined", "UNION_KEYWORD", "ANYXML_KEYWORD", |
| "WHITESPACE", "ERROR", "EOL", "STRING", "STRINGS", "IDENTIFIER", |
| "IDENTIFIERPREFIX", "REVISION_DATE", "TAB", "DOUBLEDOT", "URI", |
| "INTEGER", "NON_NEGATIVE_INTEGER", "ZERO", "DECIMAL", "ARGUMENT_KEYWORD", |
| "AUGMENT_KEYWORD", "BASE_KEYWORD", "BELONGS_TO_KEYWORD", "BIT_KEYWORD", |
| "CASE_KEYWORD", "CHOICE_KEYWORD", "CONFIG_KEYWORD", "CONTACT_KEYWORD", |
| "CONTAINER_KEYWORD", "DEFAULT_KEYWORD", "DESCRIPTION_KEYWORD", |
| "ENUM_KEYWORD", "ERROR_APP_TAG_KEYWORD", "ERROR_MESSAGE_KEYWORD", |
| "EXTENSION_KEYWORD", "DEVIATION_KEYWORD", "DEVIATE_KEYWORD", |
| "FEATURE_KEYWORD", "FRACTION_DIGITS_KEYWORD", "GROUPING_KEYWORD", |
| "IDENTITY_KEYWORD", "IF_FEATURE_KEYWORD", "IMPORT_KEYWORD", |
| "INCLUDE_KEYWORD", "INPUT_KEYWORD", "KEY_KEYWORD", "LEAF_KEYWORD", |
| "LEAF_LIST_KEYWORD", "LENGTH_KEYWORD", "LIST_KEYWORD", |
| "MANDATORY_KEYWORD", "MAX_ELEMENTS_KEYWORD", "MIN_ELEMENTS_KEYWORD", |
| "MODULE_KEYWORD", "MUST_KEYWORD", "NAMESPACE_KEYWORD", |
| "NOTIFICATION_KEYWORD", "ORDERED_BY_KEYWORD", "ORGANIZATION_KEYWORD", |
| "OUTPUT_KEYWORD", "PATH_KEYWORD", "PATTERN_KEYWORD", "POSITION_KEYWORD", |
| "PREFIX_KEYWORD", "PRESENCE_KEYWORD", "RANGE_KEYWORD", |
| "REFERENCE_KEYWORD", "REFINE_KEYWORD", "REQUIRE_INSTANCE_KEYWORD", |
| "REVISION_KEYWORD", "REVISION_DATE_KEYWORD", "RPC_KEYWORD", |
| "STATUS_KEYWORD", "SUBMODULE_KEYWORD", "TYPE_KEYWORD", "TYPEDEF_KEYWORD", |
| "UNIQUE_KEYWORD", "UNITS_KEYWORD", "USES_KEYWORD", "VALUE_KEYWORD", |
| "WHEN_KEYWORD", "YANG_VERSION_KEYWORD", "YIN_ELEMENT_KEYWORD", |
| "ADD_KEYWORD", "CURRENT_KEYWORD", "DELETE_KEYWORD", "DEPRECATED_KEYWORD", |
| "FALSE_KEYWORD", "NOT_SUPPORTED_KEYWORD", "OBSOLETE_KEYWORD", |
| "REPLACE_KEYWORD", "SYSTEM_KEYWORD", "TRUE_KEYWORD", "UNBOUNDED_KEYWORD", |
| "USER_KEYWORD", "ACTION_KEYWORD", "MODIFIER_KEYWORD", "ANYDATA_KEYWORD", |
| "'+'", "'{'", "'}'", "';'", "'/'", "'['", "']'", "'='", "'('", "')'", |
| "$accept", "start", "tmp_string", "string_1", "string_2", "$@1", |
| "module_stmt", "$@2", "$@3", "module_header_stmts", "submodule_stmt", |
| "$@4", "$@5", "submodule_header_stmts", "$@6", "yang_version_stmt", |
| "namespace_stmt", "linkage_stmts", "import_stmt", "$@7", |
| "import_opt_stmt", "tmp_identifier_arg_str", "include_stmt", "$@8", |
| "include_end", "include_opt_stmt", "revision_date_stmt", |
| "belongs_to_stmt", "$@9", "$@10", "prefix_stmt", "meta_stmts", |
| "organization_stmt", "contact_stmt", "description_stmt", |
| "reference_stmt", "revision_stmts", "revision_stmt", "$@11", |
| "revision_end", "$@12", "revision_opt_stmt", "date_arg_str", "$@13", |
| "body_stmts", "body_stmt", "extension_stmt", "$@14", "extension_end", |
| "extension_opt_stmt", "argument_stmt", "$@15", "argument_end", |
| "yin_element_stmt", "yin_element_arg_str", "status_stmt", |
| "status_read_stmt", "$@16", "$@17", "status_arg_str", "feature_stmt", |
| "$@18", "feature_end", "feature_opt_stmt", "if_feature_stmt", |
| "identity_stmt", "$@19", "identity_end", "identity_opt_stmt", |
| "base_stmt", "typedef_arg_str", "typedef_stmt", "type_opt_stmt", |
| "type_stmt", "type_arg_str", "type_end", "type_body_stmts", |
| "some_restrictions", "union_spec", "fraction_digits_stmt", |
| "fraction_digits_arg_str", "length_stmt", "length_arg_str", "length_end", |
| "message_opt_stmt", "pattern_stmt", "pattern_arg_str", "pattern_end", |
| "pattern_opt_stmt", "modifier_stmt", "enum_specification", "$@20", |
| "enum_stmts", "enum_stmt", "enum_arg_str", "enum_end", "enum_opt_stmt", |
| "value_stmt", "integer_value_arg_str", "range_stmt", "range_end", |
| "path_stmt", "require_instance_stmt", "require_instance_arg_str", |
| "bits_specification", "$@21", "bit_stmts", "bit_stmt", "bit_arg_str", |
| "bit_end", "bit_opt_stmt", "position_stmt", "position_value_arg_str", |
| "error_message_stmt", "error_app_tag_stmt", "units_stmt", "default_stmt", |
| "grouping_stmt", "$@22", "grouping_end", "grouping_opt_stmt", |
| "data_def_stmt", "container_stmt", "$@23", "container_end", |
| "container_opt_stmt", "$@24", "$@25", "$@26", "$@27", "$@28", "$@29", |
| "$@30", "leaf_stmt", "leaf_arg_str", "leaf_opt_stmt", "$@31", "$@32", |
| "$@33", "leaf_list_arg_str", "leaf_list_stmt", "leaf_list_opt_stmt", |
| "$@34", "$@35", "$@36", "list_stmt", "$@37", "$@38", "list_opt_stmt", |
| "$@39", "$@40", "$@41", "$@42", "$@43", "$@44", "$@45", "choice_stmt", |
| "$@46", "choice_end", "choice_opt_stmt", "$@47", "$@48", |
| "short_case_case_stmt", "short_case_stmt", "case_stmt", "$@49", |
| "case_end", "case_opt_stmt", "$@50", "$@51", "anyxml_stmt", "$@52", |
| "anydata_stmt", "$@53", "anyxml_end", "anyxml_opt_stmt", "$@54", "$@55", |
| "uses_stmt", "$@56", "uses_end", "uses_opt_stmt", "$@57", "$@58", "$@59", |
| "refine_stmt", "$@60", "refine_end", "refine_arg_str", |
| "refine_body_opt_stmts", "uses_augment_stmt", "$@61", "$@62", |
| "uses_augment_arg_str", "augment_stmt", "$@63", "$@64", |
| "augment_opt_stmt", "$@65", "$@66", "$@67", "$@68", "$@69", |
| "augment_arg_str", "action_arg_str", "action_stmt", "rpc_arg_str", |
| "rpc_stmt", "rpc_end", "rpc_opt_stmt", "$@70", "$@71", "$@72", "$@73", |
| "input_stmt", "$@74", "$@75", "input_output_opt_stmt", "$@76", "$@77", |
| "$@78", "$@79", "output_stmt", "$@80", "$@81", "notification_arg_str", |
| "notification_stmt", "notification_end", "notification_opt_stmt", "$@82", |
| "$@83", "$@84", "$@85", "deviation_stmt", "$@86", "deviation_opt_stmt", |
| "deviation_arg_str", "deviate_body_stmt", "deviate_stmts", |
| "deviate_not_supported_stmt", "deviate_add_stmt", "$@87", |
| "deviate_add_end", "deviate_add_opt_stmt", "deviate_delete_stmt", "$@88", |
| "deviate_delete_end", "deviate_delete_opt_stmt", "deviate_replace_stmt", |
| "$@89", "deviate_replace_stmtsep", "deviate_replace_end", |
| "deviate_replace_opt_stmt", "when_stmt", "$@90", "when_end", |
| "when_opt_stmt", "config_stmt", "config_read_stmt", "$@91", "$@92", |
| "config_arg_str", "mandatory_stmt", "mandatory_read_stmt", "$@93", |
| "$@94", "mandatory_arg_str", "presence_stmt", "min_elements_stmt", |
| "min_value_arg_str", "max_elements_stmt", "max_value_arg_str", |
| "ordered_by_stmt", "ordered_by_arg_str", "must_stmt", "$@95", "must_end", |
| "unique_stmt", "unique_arg_str", "unique_arg", "key_stmt", "key_arg_str", |
| "$@96", "range_arg_str", "absolute_schema_nodeid", |
| "absolute_schema_nodeids", "absolute_schema_nodeid_opt", |
| "descendant_schema_nodeid", "$@97", "path_arg_str", "$@98", "$@99", |
| "absolute_path", "absolute_paths", "absolute_path_opt", "relative_path", |
| "relative_path_part1", "relative_path_part1_opt", "descendant_path", |
| "descendant_path_opt", "path_predicate", "path_equality_expr", |
| "path_key_expr", "rel_path_keyexpr", "rel_path_keyexpr_part1", |
| "rel_path_keyexpr_part1_opt", "rel_path_keyexpr_part2", |
| "current_function_invocation", "positive_integer_value", |
| "non_negative_integer_value", "integer_value", "integer_value_convert", |
| "prefix_arg_str", "identifier_arg_str", "node_identifier", |
| "identifier_ref_arg_str", "stmtend", "stmtsep", "unknown_statement", |
| "$@100", "string_opt", "string_opt_part1", "string_opt_part2", |
| "string_opt_part3", "unknown_statement_end", "unknown_statement2_opt", |
| "unknown_statement2_end", "sep_stmt", "optsep", "sep", "whitespace_opt", |
| "string", "$@101", "strings", "identifier", "identifiers", |
| "identifiers_ref", YY_NULLPTR |
| }; |
| #endif |
| |
| # ifdef YYPRINT |
| /* 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, |
| 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, |
| 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, |
| 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, |
| 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, |
| 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, |
| 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, |
| 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, |
| 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, |
| 345, 346, 347, 348, 349, 350, 351, 352, 353, 43, |
| 123, 125, 59, 47, 91, 93, 61, 40, 41 |
| }; |
| # endif |
| |
| #define YYPACT_NINF -1090 |
| |
| #define yypact_value_is_default(Yystate) \ |
| (!!((Yystate) == (-1090))) |
| |
| #define YYTABLE_NINF -616 |
| |
| #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[] = |
| { |
| -1090, 28, -1090, -1090, 366, -1090, -1090, -1090, 164, 164, |
| -1090, -1090, 3167, 3167, 164, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, 164, -86, 164, -25, 21, -1090, -1090, |
| -1090, 472, 472, 184, -1090, -17, -1090, -1090, 43, -1090, |
| 164, 164, 164, 164, -1090, -1090, -1090, -1090, -1090, 130, |
| -1090, -1090, 137, 2597, -1090, 2692, 3167, 2692, 20, 20, |
| 164, -1090, 164, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, 177, -1090, -1090, |
| 177, -1090, 177, 164, 164, -1090, -1090, 403, 403, 3167, |
| 164, 164, 164, -1090, -1090, -1090, -1090, -1090, 164, -1090, |
| 3167, 3167, 164, 164, 164, 164, -1090, -1090, -1090, -1090, |
| 93, 93, -1090, 2407, 89, 48, 472, 164, -1090, -1090, |
| -1090, 2692, 2692, 2692, 2692, 164, -1090, 1287, 1358, 98, |
| -1090, -1090, 164, -1090, -1090, -1090, 104, 264, 177, 177, |
| 177, 177, 37, 472, 164, 164, 164, 164, 164, 164, |
| 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, |
| 164, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, 333, 249, 472, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, 3167, 9, 3167, |
| 3167, 3167, 9, 3167, 3167, 3167, 3167, 3167, 3167, 3167, |
| 3167, 3167, 1821, 3167, 164, 472, 164, 294, -1090, -1090, |
| -1090, -1090, 472, 472, 472, -1090, 378, -1090, 3262, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, 110, -1090, 115, -1090, -1090, 387, -1090, 392, |
| -1090, 153, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| 164, 164, 164, 723, 145, 164, -1090, -1090, -1090, 395, |
| -1090, 174, 111, 164, 430, 462, 513, 180, 164, 518, |
| 540, 544, -1090, -1090, 185, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, 566, 164, 164, 395, 206, 2502, 164, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, 472, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, 472, 472, -1090, 472, 472, 472, -1090, |
| -1090, -1090, -1090, -1090, -1090, 37, 472, -1090, 472, 472, |
| 472, 472, 472, 472, 472, 472, 472, 998, 570, 472, |
| 277, 574, 415, 472, 472, 164, 177, 230, 937, 1035, |
| 1391, 1109, 13, 380, 838, 56, 175, 164, 164, 164, |
| 164, 164, 164, 164, 164, 164, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, 164, 164, |
| 164, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, 1715, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, 164, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, 262, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, 164, 164, |
| -1090, -1090, -1090, -1090, -1090, -1090, 210, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, 164, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, 164, -1090, -1090, -1090, -1090, -1090, |
| 164, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, 164, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, 2692, 2692, -1090, 2692, |
| -1090, 1821, 2692, 2692, -1090, -1090, -1090, 14, 44, 35, |
| -1090, -1090, -1090, 164, 164, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, 211, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, 164, 164, -1090, |
| -1090, -1090, -1090, 85, 472, 164, 164, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, 3167, 3167, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, 2692, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, 3167, 256, 472, 472, 472, |
| 472, 472, 1821, 38, 177, 177, 94, -1090, 85, 583, |
| -1090, 177, -1090, 472, 472, 472, -1090, -1090, -1090, 177, |
| -1090, -1090, -1090, 177, -1090, -1090, -1090, -1090, -1090, 177, |
| 472, 472, 472, 2787, 2787, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, 472, 472, 472, 472, 218, 226, 472, |
| 472, 472, 472, -1090, -1090, -1090, -1090, 177, 2787, 2787, |
| -1090, -1090, -1090, 472, 472, -1090, 392, -1090, 472, 472, |
| 472, 472, 472, 472, 472, 177, 472, 472, 472, 472, |
| 472, 472, 472, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, 177, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, 584, -1090, -1090, -1090, -1090, |
| -1090, 588, 164, -1090, 164, -1090, 164, 164, 164, -1090, |
| -1090, 177, -1090, 177, -1090, 62, -1090, 472, 472, 472, |
| 472, 472, 472, 472, -1090, -1090, 164, 164, 164, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, 472, 472, 472, 589, |
| -1090, -1090, 592, 164, 164, 62, 164, 164, -1090, 164, |
| 164, 177, 164, 164, 177, -1090, -1090, -1090, 177, 628, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, 3262, -1090, |
| 472, 472, 239, 164, 593, 164, -1090, -1090, -1090, -1090, |
| -1090, -1090, 596, 609, -1090, 610, -1090, -1090, 472, -1090, |
| 251, 1157, -1090, 323, -1090, 344, 472, 164, 62, 111, |
| 215, 215, -1090, -1090, -1090, -1090, 472, 67, 472, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, 372, -1090, |
| 164, 164, 164, 164, 164, 164, -1090, 292, -1090, -1090, |
| -1090, -1090, -1090, -1090, 164, -1090, 164, -1090, 341, -1090, |
| -1090, -1090, -1090, 276, -1090, 281, 472, 472, 1457, 164, |
| 288, 472, 472, -1090, 472, 164, 164, -1090, -1090, -1090, |
| -1090, -1090, 148, 2692, 147, 2692, 2692, 114, -1090, 472, |
| 2692, 472, 3167, 344, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, 1035, 776, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, 125, -1090, 349, 245, 335, 2692, 2692, -1090, |
| 177, -1090, 625, -1090, -1090, 177, 306, 409, 632, -1090, |
| 633, -1090, -1090, -1090, -1090, 177, 472, 636, -1090, 323, |
| 637, -1090, -1090, 472, 472, 472, 472, 331, 164, 164, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, 177, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, 177, |
| 177, -1090, 164, -1090, -1090, -1090, -1090, 3262, -1090, -1090, |
| 334, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, 164, |
| 164, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| 38, 94, 472, 472, 472, 164, 164, -1090, 472, 472, |
| 472, -1090, -1090, 472, 472, -1090, 306, -1090, 2882, 472, |
| 472, 472, 472, 472, 472, 472, 177, 177, 385, 360, |
| -1090, -1090, -1090, -20, 648, 432, 607, 247, -1090, -1090, |
| -1090, 443, -1090, 80, 164, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, 164, -1090, -1090, -1090, -1090, -1090, -1090, 164, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, 3262, -1090, 2692, |
| 343, 44, 443, 443, 177, -1090, -1090, -1090, -1090, 177, |
| -1090, -1090, -1090, 177, -1090, 363, 365, -1090, -1090, 164, |
| -1090, 164, -1090, 443, 399, 443, -1090, 443, 384, 369, |
| 443, 443, 377, 482, -1090, 443, -1090, -1090, 397, 2977, |
| 443, -1090, -1090, -1090, 3072, -1090, 398, 443, 3262, -1090 |
| }; |
| |
| /* 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_uint16 yydefact[] = |
| { |
| 665, 0, 2, 3, 0, 1, 663, 664, 0, 0, |
| 666, 665, 0, 0, 667, 681, 4, 680, 682, 683, |
| 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, |
| 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, |
| 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, |
| 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, |
| 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, |
| 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, |
| 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, |
| 754, 755, 756, 757, 758, 759, 760, 665, 636, 9, |
| 761, 665, 16, 6, 0, 635, 0, 5, 644, 644, |
| 665, 12, 19, 0, 647, 10, 646, 645, 17, 7, |
| 650, 0, 0, 0, 25, 13, 14, 15, 25, 0, |
| 20, 665, 0, 652, 651, 0, 0, 0, 49, 49, |
| 0, 22, 8, 665, 657, 648, 665, 673, 676, 674, |
| 678, 679, 677, 649, 665, 675, 672, 0, 670, 633, |
| 0, 665, 0, 0, 0, 26, 27, 58, 58, 0, |
| 659, 655, 653, 644, 644, 24, 665, 48, 634, 23, |
| 0, 0, 0, 0, 0, 0, 50, 51, 52, 53, |
| 71, 71, 45, 0, 654, 0, 642, 671, 28, 35, |
| 36, 0, 0, 0, 0, 0, 644, 0, 0, 0, |
| 638, 658, 650, 637, 665, 644, 0, 0, 0, 0, |
| 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 665, 644, 73, 74, 75, 76, 77, 78, 237, |
| 238, 239, 240, 241, 242, 243, 244, 79, 80, 81, |
| 82, 665, 644, 0, 0, 643, 644, 644, 38, 644, |
| 55, 56, 54, 57, 68, 70, 60, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 11, 72, 18, 0, 665, 665, |
| 660, 665, 30, 40, 37, 665, 0, 372, 0, 445, |
| 426, 595, 665, 334, 245, 83, 504, 497, 665, 108, |
| 224, 118, 0, 271, 0, 287, 306, 0, 480, 0, |
| 448, 0, 129, 762, 641, 389, 665, 665, 374, 46, |
| 659, 661, 656, 0, 0, 69, 644, 62, 61, 0, |
| 593, 0, 594, 444, 0, 0, 0, 0, 503, 0, |
| 0, 0, 644, 644, 0, 644, 482, 481, 644, 450, |
| 449, 644, 0, 639, 640, 0, 0, 0, 0, 644, |
| 34, 31, 32, 33, 39, 43, 41, 42, 63, 644, |
| 376, 373, 644, 596, 644, 336, 335, 644, 247, 246, |
| 644, 85, 84, 644, 644, 110, 109, 644, 226, 225, |
| 644, 120, 119, 272, 289, 644, 484, 452, 131, 644, |
| 391, 390, 375, 644, 665, 0, 29, 65, 378, 429, |
| 338, 249, 87, 499, 112, 228, 122, 0, 0, 309, |
| 0, 0, 0, 393, 47, 662, 0, 0, 0, 427, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 270, 285, 286, 284, |
| 275, 276, 278, 281, 273, 282, 283, 279, 0, 0, |
| 0, 288, 304, 305, 303, 292, 293, 296, 295, 290, |
| 299, 300, 301, 302, 297, 307, 483, 489, 490, 488, |
| 487, 491, 493, 495, 485, 665, 665, 451, 455, 456, |
| 454, 453, 457, 459, 461, 463, 0, 130, 136, 137, |
| 135, 644, 133, 134, 0, 44, 64, 66, 67, 377, |
| 387, 388, 386, 381, 379, 384, 385, 382, 0, 0, |
| 434, 435, 433, 432, 436, 442, 0, 438, 440, 430, |
| 337, 346, 347, 345, 341, 342, 352, 353, 354, 355, |
| 358, 348, 350, 351, 356, 357, 339, 343, 344, 0, |
| 248, 258, 259, 257, 252, 266, 260, 268, 262, 264, |
| 250, 256, 255, 253, 0, 86, 90, 91, 88, 89, |
| 0, 498, 500, 501, 111, 115, 116, 114, 113, 227, |
| 230, 231, 229, 644, 644, 644, 644, 644, 0, 121, |
| 126, 127, 125, 124, 123, 554, 0, 0, 561, 0, |
| 101, 0, 0, 0, 644, 644, 644, 0, 0, 0, |
| 644, 644, 644, 0, 0, 322, 323, 321, 312, 324, |
| 326, 332, 0, 328, 330, 310, 317, 318, 319, 320, |
| 313, 316, 315, 644, 644, 644, 644, 465, 477, 644, |
| 644, 644, 644, 0, 132, 0, 0, 392, 398, 399, |
| 397, 396, 400, 402, 394, 644, 644, 0, 0, 644, |
| 644, 428, 644, 644, 644, 644, 644, 0, 644, 644, |
| 644, 644, 644, 644, 644, 0, 0, 233, 232, 234, |
| 235, 236, 0, 0, 0, 0, 0, 579, 0, 0, |
| 139, 0, 546, 277, 274, 280, 626, 665, 574, 0, |
| 665, 627, 570, 0, 628, 665, 665, 665, 578, 0, |
| 294, 291, 298, 0, 0, 644, 644, 644, 308, 644, |
| 644, 644, 644, 492, 494, 496, 486, 0, 0, 458, |
| 460, 462, 464, 665, 665, 665, 107, 0, 0, 0, |
| 644, 644, 644, 380, 383, 359, 0, 446, 437, 443, |
| 439, 441, 431, 349, 340, 0, 267, 261, 269, 263, |
| 265, 251, 254, 92, 665, 665, 665, 665, 502, 665, |
| 505, 507, 509, 508, 0, 665, 665, 559, 555, 223, |
| 117, 665, 665, 566, 562, 0, 102, 644, 140, 138, |
| 222, 0, 572, 571, 573, 568, 569, 577, 576, 575, |
| 591, 0, 589, 0, 583, 0, 597, 325, 327, 333, |
| 329, 331, 311, 314, 644, 644, 104, 106, 105, 100, |
| 425, 421, 665, 409, 404, 665, 401, 403, 395, 0, |
| 447, 567, 0, 511, 524, 0, 533, 506, 128, 558, |
| 557, 0, 565, 564, 0, 644, 581, 580, 0, 145, |
| 644, 548, 547, 588, 665, 585, 584, 587, 0, 595, |
| 468, 468, 0, 424, 0, 408, 644, 361, 360, 644, |
| 94, 644, 0, 0, 510, 0, 556, 563, 162, 103, |
| 0, 142, 143, 0, 144, 0, 550, 590, 0, 598, |
| 466, 478, 644, 644, 406, 405, 363, 0, 93, 644, |
| 513, 512, 644, 526, 525, 644, 536, 534, 0, 141, |
| 0, 0, 0, 0, 0, 0, 148, 0, 151, 149, |
| 150, 644, 147, 146, 0, 644, 0, 205, 0, 586, |
| 471, 473, 475, 0, 469, 0, 429, 410, 0, 0, |
| 0, 515, 528, 538, 535, 0, 0, 582, 165, 166, |
| 163, 164, 0, 0, 599, 0, 0, 0, 644, 152, |
| 0, 180, 0, 204, 549, 551, 552, 644, 644, 644, |
| 467, 644, 479, 422, 0, 362, 368, 369, 367, 366, |
| 370, 364, 0, 95, 0, 0, 0, 0, 0, 157, |
| 0, 665, 0, 159, 603, 0, 0, 0, 0, 168, |
| 0, 592, 665, 665, 202, 0, 153, 0, 183, 179, |
| 0, 208, 206, 472, 474, 476, 470, 0, 0, 0, |
| 407, 419, 420, 412, 414, 415, 416, 413, 417, 418, |
| 644, 644, 644, 665, 665, 99, 0, 514, 516, 519, |
| 520, 521, 522, 523, 644, 518, 527, 529, 532, 644, |
| 531, 537, 644, 540, 541, 542, 543, 544, 545, 0, |
| 0, 155, 156, 644, 160, 644, 198, 0, 606, 600, |
| 0, 602, 610, 644, 169, 644, 644, 196, 195, 201, |
| 200, 199, 644, 184, 182, 644, 644, 209, 644, 423, |
| 0, 0, 411, 371, 365, 98, 97, 96, 517, 530, |
| 539, 221, 220, 162, 158, 615, 605, 609, 0, 171, |
| 167, 162, 186, 181, 211, 207, 0, 0, 0, 604, |
| 607, 611, 608, 613, 0, 0, 0, 0, 553, 560, |
| 161, 668, 612, 0, 0, 170, 175, 176, 172, 173, |
| 174, 197, 0, 185, 190, 191, 189, 187, 188, 0, |
| 210, 215, 216, 214, 212, 213, 669, 0, 614, 0, |
| 0, 0, 668, 668, 0, 631, 632, 629, 194, 0, |
| 665, 630, 219, 0, 665, 0, 0, 177, 192, 193, |
| 217, 218, 616, 668, 0, 668, 617, 668, 0, 0, |
| 668, 668, 0, 0, 625, 668, 618, 621, 0, 0, |
| 668, 622, 623, 620, 668, 619, 0, 668, 0, 624 |
| }; |
| |
| /* YYPGOTO[NTERM-NUM]. */ |
| static const yytype_int16 yypgoto[] = |
| { |
| -1090, -1090, -1090, 643, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, 391, -1090, 386, -1090, -1090, |
| -1090, 332, -1090, -1090, -1090, -1090, 176, -1090, -1090, -1090, |
| -209, 400, -1090, -1090, -57, 100, 368, -1090, -1090, -1090, |
| -1090, -1090, 118, -1090, 382, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -441, -26, -1090, -1090, -151, |
| -1090, -1090, -1090, -1090, -400, -1090, -1090, -1090, -1090, -333, |
| -1090, -255, -1090, -429, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1089, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -453, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -402, -1090, -1090, |
| -1090, -1090, -1090, -560, -559, -435, -415, -246, -1090, -1090, |
| -1090, -167, 138, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, 142, -1090, -1090, -1090, -1090, -1090, -1090, |
| 143, -1090, -1090, -1090, -1090, 152, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, 157, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, 160, -1090, -1090, -1090, -1090, -1090, |
| 167, -1090, 171, -1090, 223, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -353, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -252, -1090, -1090, -140, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -254, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -419, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, -1090, |
| -1090, -1090, -1090, -380, -1090, -1090, -1090, -759, -179, -1090, |
| -1090, -478, -740, 1, -1090, -1090, -475, -331, -398, -1090, |
| -395, -1090, 178, -1090, -422, -1090, -1090, -863, -1090, -239, |
| -1090, -1090, -1090, -1090, -350, 419, -182, -739, -1090, -1090, |
| -1090, -1090, -413, -449, -1090, -1090, -421, -1090, -1090, -1090, |
| -427, -1090, -1090, -1090, -493, -1090, -1090, -1090, -615, -439, |
| -1090, -1090, -1090, 238, -187, -597, 510, 1317, -1090, -1090, |
| 528, -1090, -1090, -1090, -1090, 408, -1090, -4, -3, 536, |
| -238, -112, -1090, 620, -56, -115, -1090 |
| }; |
| |
| /* YYDEFGOTO[NTERM-NUM]. */ |
| static const yytype_int16 yydefgoto[] = |
| { |
| -1, 1, 97, 98, 107, 131, 2, 104, 124, 115, |
| 3, 106, 128, 118, 129, 125, 126, 138, 165, 216, |
| 343, 198, 166, 217, 269, 344, 380, 141, 209, 376, |
| 127, 167, 186, 187, 968, 969, 190, 206, 306, 348, |
| 427, 447, 276, 305, 207, 242, 243, 356, 402, 452, |
| 588, 852, 891, 960, 1056, 542, 469, 708, 868, 757, |
| 244, 359, 406, 454, 543, 245, 361, 412, 456, 614, |
| 331, 246, 442, 471, 709, 809, 900, 901, 937, 938, |
| 1010, 939, 1012, 1085, 928, 940, 1018, 1095, 1144, 1158, |
| 902, 903, 1029, 945, 1027, 1104, 1146, 1168, 1189, 941, |
| 1098, 942, 943, 1025, 904, 905, 983, 947, 1030, 1108, |
| 1147, 1175, 1193, 970, 971, 472, 473, 247, 360, 409, |
| 455, 248, 249, 355, 399, 451, 693, 694, 689, 691, |
| 692, 688, 690, 250, 322, 437, 625, 624, 626, 324, |
| 251, 438, 631, 630, 632, 252, 364, 642, 495, 741, |
| 742, 735, 736, 739, 740, 737, 253, 354, 396, 450, |
| 686, 685, 561, 562, 545, 849, 888, 958, 1052, 1051, |
| 254, 349, 255, 375, 391, 448, 675, 676, 256, 372, |
| 421, 524, 762, 760, 761, 672, 884, 915, 844, 994, |
| 673, 882, 1037, 841, 257, 351, 546, 449, 684, 679, |
| 682, 683, 680, 310, 766, 547, 329, 258, 370, 441, |
| 659, 660, 661, 662, 514, 747, 953, 910, 991, 987, |
| 988, 989, 515, 748, 955, 327, 259, 367, 440, 656, |
| 653, 654, 655, 260, 357, 453, 317, 788, 789, 790, |
| 791, 892, 921, 1004, 792, 893, 924, 1005, 793, 895, |
| 963, 927, 1006, 549, 811, 872, 948, 1045, 475, 703, |
| 861, 798, 1046, 476, 706, 864, 804, 582, 491, 723, |
| 492, 719, 493, 729, 954, 805, 867, 651, 824, 876, |
| 652, 821, 874, 1020, 311, 312, 352, 825, 879, 1015, |
| 1016, 1017, 1088, 1089, 1126, 1091, 1092, 1128, 1142, 1152, |
| 1139, 1182, 1206, 1216, 1217, 1219, 1224, 1207, 724, 725, |
| 1190, 1191, 160, 199, 826, 335, 877, 111, 116, 120, |
| 132, 133, 153, 194, 145, 193, 300, 117, 4, 134, |
| 1177, 157, 176, 158, 100, 101, 337 |
| }; |
| |
| /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If |
| positive, shift that token. If negative, reduce the rule whose |
| number is the opposite. If YYTABLE_NINF, syntax error. */ |
| static const yytype_int16 yytable[] = |
| { |
| 10, 520, 393, 487, 11, 11, 212, 522, 14, 486, |
| 10, 589, 720, 521, 108, 477, 494, 16, 504, 842, |
| 845, 161, 16, 488, 710, 162, 537, 523, 5, 583, |
| 548, 716, 579, 584, 1138, 555, 607, 470, 485, 121, |
| 500, 511, 1145, 16, 183, 16, 16, 122, 533, 274, |
| 554, 574, 16, 6, 598, 7, 613, 474, 489, 114, |
| 224, 716, 721, 163, 164, 123, -21, 6, 534, 7, |
| 566, 580, 6, 650, 7, 109, 644, 155, 114, 155, |
| 185, 155, 226, -615, -615, 227, 516, 183, 339, 218, |
| 219, 220, 221, 16, 103, 638, 231, 647, 105, 10, |
| 648, 10, 16, 233, 234, 794, 235, 113, 717, 10, |
| 188, 188, 308, 236, 585, 645, 11, 11, 11, 11, |
| 110, 350, 16, 185, 671, 123, 795, 726, 142, 462, |
| 727, 796, 238, 16, 381, 239, 11, 213, 10, 908, |
| 170, 1065, 1070, 171, 674, 155, 155, 155, 155, 215, |
| 959, 172, 539, 140, 240, 16, 16, 599, 178, 11, |
| 11, -601, 173, 205, 174, 716, 10, 10, 10, 6, |
| 753, 7, 754, 197, 10, 755, 183, 336, 11, 11, |
| 11, 11, 801, 1087, 1151, 501, 512, 802, 214, 6, |
| 212, 7, 119, 10, 502, 513, 575, 608, 262, 578, |
| 603, 11, 1022, 606, 266, 576, 183, 1023, 11, 604, |
| 362, 264, 185, 1053, 308, 363, 378, 459, 1054, 224, |
| 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, |
| 11, 11, 11, 11, 11, 11, 11, 143, 294, 144, |
| 639, 226, 185, 643, 227, 1060, 384, 1075, 462, 640, |
| 99, 102, 213, 371, 6, 231, 7, 301, 296, 490, |
| 10, 183, 233, 234, 1061, 235, 1076, 189, 189, 535, |
| 461, 567, 581, 503, 392, 458, 609, 173, 183, 174, |
| 403, 224, 544, 665, 577, 415, 382, 386, 605, 459, |
| 10, 238, 10, 183, 239, 340, 341, 185, 342, 6, |
| 461, 7, 345, 226, 459, 114, 227, 423, 183, 353, |
| 1169, 681, 738, 240, 185, 358, 646, 231, 834, 459, |
| 516, 213, 634, 464, 233, 234, 835, 235, 641, 185, |
| 666, 526, 461, 373, 374, 462, 10, 10, 10, 912, |
| 784, 10, 785, 465, 185, 786, 1066, 787, 1170, 10, |
| 462, 16, 929, 238, 10, 944, 239, 1011, 122, 1185, |
| 1186, 1187, 1038, 667, 267, 458, 268, 463, 946, 10, |
| 10, 6, 183, 7, 11, 240, 1038, 990, 496, 458, |
| 467, 482, 992, 497, 508, 518, 1039, 478, 479, 1003, |
| 527, 530, 540, 551, 571, 586, 592, 595, 600, 610, |
| 1039, 478, 479, 183, 461, 965, 966, 192, 185, 1087, |
| 463, 183, 484, 464, 499, 510, 183, 590, 965, 966, |
| 8, 445, 532, 1090, 553, 573, 634, 464, 597, 602, |
| 612, 182, 1109, 298, 183, 299, 1071, 1127, 635, 185, |
| 9, 10, 984, 383, 387, 458, 183, 185, 1176, 536, |
| 1057, 568, 185, 11, 11, 11, 11, 11, 11, 11, |
| 11, 11, 184, 183, 1151, 965, 966, 668, 1202, 637, |
| 185, 1203, 1211, 967, 11, 11, 11, 6, 346, 7, |
| 347, 591, 185, 114, 1205, 1214, 1150, 365, 516, 366, |
| 463, 1210, 368, 464, 369, 389, 1215, 390, 670, 185, |
| 1220, 1227, 657, 658, 704, 705, 336, 707, 978, 130, |
| 711, 712, 11, 200, 139, 307, 517, 313, 314, 315, |
| 385, 319, 320, 321, 323, 325, 326, 328, 330, 332, |
| 394, 338, 395, 1161, 11, 11, 191, 468, 483, 168, |
| 498, 509, 519, 446, 12, 13, 822, 528, 531, 541, |
| 552, 572, 587, 593, 596, 601, 611, 806, 999, 393, |
| 155, 155, 397, 155, 398, 11, 155, 155, 936, 1058, |
| 1067, 1073, 1050, 208, 548, 775, 1105, 1072, 1001, 1044, |
| 11, 1032, 1064, 1069, 1159, 1160, 11, 336, 556, 1059, |
| 1068, 1074, 557, 558, 1043, 636, 1048, 457, 422, 1049, |
| 458, 183, 559, 993, 11, 183, 1062, 560, 1077, 1063, |
| 563, 1078, 459, 400, 231, 401, 459, 564, 404, 505, |
| 405, 565, 478, 479, 669, 461, 850, 911, 480, 11, |
| 11, 155, 1136, 6, 506, 7, 1137, 185, 183, 114, |
| 407, 185, 408, 462, 410, 463, 411, 462, 464, 459, |
| 238, 465, -203, 10, 10, 950, 950, 135, 136, 137, |
| -178, 11, 11, 1047, 951, 951, 419, 175, 420, 949, |
| 177, 481, 179, 649, 185, 507, 169, 213, 213, 183, |
| 516, 965, 966, 807, 865, 808, 866, 1162, 870, 886, |
| 871, 887, 889, 913, 890, 914, 919, 909, 920, 180, |
| 181, 318, 213, 213, 1178, 1166, 1173, 1141, 1163, 922, |
| 925, 923, 926, 1140, 812, 185, 1153, 814, 201, 202, |
| 203, 204, 816, 817, 818, 1083, 1221, 1084, 270, 271, |
| 272, 273, 1093, 1096, 1094, 1097, 1102, 1106, 1103, 1107, |
| 263, 222, 1194, 952, 952, 1154, 1167, 1174, 377, 1155, |
| 836, 837, 838, 154, 183, 0, 0, 0, 0, 0, |
| 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, |
| 287, 288, 289, 290, 291, 292, 293, 0, 156, 159, |
| 156, 853, 854, 855, 856, 0, 857, 122, 0, 0, |
| 185, 1000, 859, 860, 378, 0, 0, 0, 862, 863, |
| 0, 0, 0, 1038, 0, 0, 458, 183, 10, 0, |
| 10, 0, 10, 10, 10, 0, 0, 0, 459, 0, |
| 0, 11, 213, 0, 379, 0, 544, 1039, 478, 479, |
| 0, 461, 10, 10, 10, 0, 0, 0, 0, 883, |
| 0, 569, 885, 185, 156, 156, 156, 156, 0, 10, |
| 10, 10, 10, 10, 0, 10, 10, 0, 10, 10, |
| 0, 1013, 0, 1019, 1021, 275, 0, 0, 1028, 183, |
| 0, 907, 0, 0, 0, 0, 0, 1040, 0, 10, |
| 459, 10, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 985, 0, 0, 0, 1079, 1080, 0, 0, 0, |
| 1125, 996, 0, 10, 11, 185, 0, 0, 0, 0, |
| 0, 462, 0, 0, 425, 765, 767, 155, 0, 155, |
| 155, 309, 0, 0, 155, 316, 11, 11, 11, 11, |
| 11, 11, 998, 783, 0, 334, 540, 1041, 0, 594, |
| 11, 1143, 11, 0, 1195, 1196, 0, 0, 0, 0, |
| 0, 155, 155, 0, 0, 11, 525, 0, 0, 0, |
| 0, 11, 11, 0, 457, 1204, 0, 1208, 183, 1209, |
| 0, 0, 1212, 1213, 0, 0, 0, 1218, 0, 459, |
| 0, 0, 1223, 0, 0, 0, 1226, 0, 460, 1228, |
| 1183, 0, 461, 615, 616, 617, 618, 619, 620, 621, |
| 622, 623, 0, 0, 185, 0, 0, 0, 1082, 0, |
| 462, 0, 0, 0, 627, 628, 629, 0, 465, 1099, |
| 1100, 0, 0, 0, 0, 457, 0, 0, 458, 183, |
| 0, 213, 1222, 0, 11, 11, 0, 1225, 529, 224, |
| 459, 1229, 0, 0, 0, 0, 0, 0, 986, 460, |
| 1115, 1116, 663, 461, 0, 0, 0, 0, 997, 0, |
| 538, 226, 0, 0, 227, 185, 183, 1184, 275, 0, |
| 0, 462, 213, 463, 677, 678, 464, 459, 10, 465, |
| 0, 0, 233, 234, 0, 235, 0, 1156, 0, 1164, |
| 1171, 0, 236, 541, 1042, 10, 10, 0, 0, 466, |
| 0, 0, 185, 0, 0, 687, 0, 0, 516, 0, |
| 0, 10, 10, 224, 239, 0, 465, 0, 0, 0, |
| 695, 213, 0, 155, 0, 0, 696, 0, 0, 0, |
| 0, 539, 0, 240, 0, 226, 457, 0, 227, 0, |
| 183, 0, 0, 0, 702, 0, 0, 0, 0, 231, |
| 11, 459, 0, 0, 0, 0, 233, 234, 11, 235, |
| 0, 0, 0, 213, 461, 11, 236, 0, 213, 733, |
| 734, 0, 213, 0, 569, 0, 185, 0, 0, 608, |
| 0, 0, 462, 0, 0, 238, 0, 1199, 239, 0, |
| 465, 1201, 0, 0, 0, 10, 930, 10, 0, 0, |
| 0, 758, 759, 0, 0, 539, 931, 240, 0, 0, |
| 570, 0, 0, 0, 799, 800, 0, 0, 932, 933, |
| 1031, 810, 0, 934, 0, 0, 935, 0, 0, 813, |
| 0, 0, -154, 815, 0, 0, 0, 0, 0, 819, |
| 0, 0, 0, 0, 1157, 0, 1165, 1172, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, |
| 156, 0, 156, 0, 334, 156, 156, 839, 0, 0, |
| 718, 722, 728, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 851, 0, 0, 0, 0, |
| 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 858, 0, 756, 0, 225, 0, |
| 0, 0, 0, 226, 0, 0, 227, 0, 0, 0, |
| 0, 0, 228, 229, 0, 230, 0, 231, 232, 0, |
| 156, 873, 0, 875, 233, 234, 0, 235, 0, 0, |
| 0, 0, 0, 0, 236, 334, 797, 0, 0, 803, |
| 0, 756, 0, 0, 0, 0, 0, 0, 0, 237, |
| 0, 878, 224, 238, 0, 894, 239, 0, 0, 0, |
| 0, 896, 0, 0, 897, 0, 820, 823, 899, 225, |
| 0, 0, 0, 0, 226, 240, 0, 227, 241, 0, |
| 0, 0, 0, 228, 229, 224, 230, 0, 231, 232, |
| 0, 840, 843, 0, 0, 233, 234, 0, 235, 0, |
| 0, 0, 0, 0, 0, 236, 538, 226, 457, 0, |
| 227, 458, 183, 0, 0, 0, 112, 0, 0, 0, |
| 237, 0, 0, 459, 238, 0, 0, 239, 233, 234, |
| 0, 235, 460, 0, 878, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 240, 0, 185, 261, |
| 0, 224, 0, 0, 462, 0, 972, 973, 974, 975, |
| 976, 977, 465, 0, 0, 0, 0, 0, 0, 0, |
| 980, 0, 982, 226, 0, 0, 227, 0, 183, 240, |
| 195, 196, 550, 0, 0, 1002, 0, 0, 0, 459, |
| 0, 1007, 1008, 0, 233, 234, 0, 235, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 1081, 0, 0, 223, 185, 1086, 0, 0, 0, 0, |
| 462, 0, 265, 0, 0, 1101, 239, 0, 465, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 240, 0, 0, 995, 295, |
| 0, 0, 0, 0, 0, 0, 1117, 0, 0, 0, |
| 0, 0, 0, 0, 1110, 1111, 0, 0, 0, 297, |
| 0, 0, 0, 302, 303, 0, 304, 0, 0, 1121, |
| 1122, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 1009, 156, 1014, 156, 156, |
| 1024, 0, 0, 156, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 1055, 1148, 1149, 0, 0, |
| 156, 156, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 388, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 413, |
| 414, 0, 416, 0, 0, 417, 0, 0, 418, 0, |
| 1179, 0, 0, 0, 1197, 0, 426, 0, 1180, 1198, |
| 0, 0, 0, 1200, 0, 1181, 428, 0, 0, 429, |
| 0, 430, 0, 0, 431, 0, 0, 432, 0, 224, |
| 433, 434, 0, 0, 435, 0, 0, 436, 0, 0, |
| 0, 0, 439, 0, 0, 0, 443, 0, 0, 0, |
| 444, 226, 457, 0, 227, 0, 183, 0, 0, 0, |
| 0, 0, 0, 797, 803, 231, 0, 459, 0, 0, |
| 0, 633, 233, 234, 0, 235, 0, 478, 479, 0, |
| 461, 0, 236, 480, 0, 0, 0, 0, 0, 0, |
| 0, 0, 185, 0, 0, 0, 0, 0, 462, 0, |
| 0, 238, 634, 0, 239, 0, 465, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 539, 0, 240, 0, 0, 0, 0, 0, 0, |
| 0, 0, 156, 1188, 1192, 15, 0, 0, 0, 16, |
| 0, 17, 333, 0, 0, 0, 0, 0, 664, 0, |
| 0, 18, 19, 20, 21, 22, 23, 24, 25, 26, |
| 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, |
| 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, |
| 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, |
| 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, |
| 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, |
| 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, |
| 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, |
| 697, 698, 699, 700, 701, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 713, 714, 715, 0, 0, 0, 730, 731, 732, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 743, 744, 745, 746, 0, 0, 749, 750, 751, 752, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 763, 764, 0, 0, 768, 769, 0, 770, |
| 771, 772, 773, 774, 0, 776, 777, 778, 779, 780, |
| 781, 782, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 827, 828, 829, 0, 830, 831, 832, 833, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 846, 847, 848, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 869, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 880, 881, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 898, 0, 0, 0, 0, 906, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 916, 0, 0, 917, 0, 918, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 956, |
| 957, 0, 0, 0, 0, 0, 961, 0, 0, 962, |
| 0, 0, 964, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 979, 0, |
| 0, 0, 981, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 1026, 0, 0, 0, 0, |
| 0, 0, 0, 0, 1033, 1034, 1035, 0, 1036, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 1112, 1113, 1114, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 1118, 0, 0, 0, 0, 1119, 0, 0, 1120, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 1123, 0, 1124, 0, 0, 0, 0, 0, 0, 0, |
| 1129, 15, 1130, 1131, 0, 0, 0, 17, 210, 1132, |
| 0, 0, 1133, 1134, 0, 1135, 0, 18, 19, 20, |
| 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, |
| 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, |
| 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, |
| 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, |
| 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, |
| 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, |
| 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, |
| 91, 92, 93, 94, 95, 96, 15, 0, 211, 0, |
| 0, 0, 17, 210, 0, 0, 0, 0, 0, 0, |
| 0, 0, 18, 19, 20, 21, 22, 23, 24, 25, |
| 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, |
| 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, |
| 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, |
| 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, |
| 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, |
| 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, |
| 96, 15, 0, 424, 0, 146, 147, 17, 148, 149, |
| 0, 0, 0, 150, 151, 152, 0, 18, 19, 20, |
| 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, |
| 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, |
| 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, |
| 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, |
| 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, |
| 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, |
| 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, |
| 91, 92, 93, 94, 95, 96, 15, 0, 0, 0, |
| 16, 147, 17, 148, 149, 0, 0, 0, 150, 151, |
| 152, 0, 18, 19, 20, 21, 22, 23, 24, 25, |
| 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, |
| 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, |
| 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, |
| 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, |
| 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, |
| 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, |
| 96, 15, 0, 0, 0, 16, 0, 17, 210, 0, |
| 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, |
| 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, |
| 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, |
| 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, |
| 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, |
| 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, |
| 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, |
| 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, |
| 91, 92, 93, 94, 95, 96, 15, 0, 0, 0, |
| 0, 0, 17, 210, 0, 0, 1090, 0, 0, 0, |
| 0, 0, 18, 19, 20, 21, 22, 23, 24, 25, |
| 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, |
| 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, |
| 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, |
| 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, |
| 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, |
| 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, |
| 96, 15, 0, 0, 0, 0, 0, 17, 210, 0, |
| 0, 1215, 0, 0, 0, 0, 0, 18, 19, 20, |
| 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, |
| 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, |
| 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, |
| 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, |
| 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, |
| 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, |
| 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, |
| 91, 92, 93, 94, 95, 96, 15, 1176, 0, 0, |
| 0, 0, 17, 210, 0, 0, 0, 0, 0, 0, |
| 0, 0, 18, 19, 20, 21, 22, 23, 24, 25, |
| 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, |
| 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, |
| 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, |
| 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, |
| 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, |
| 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, |
| 96, 15, 0, 0, 0, 16, 0, 17, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, |
| 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, |
| 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, |
| 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, |
| 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, |
| 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, |
| 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, |
| 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, |
| 91, 92, 93, 94, 95, 96, 15, 0, 0, 0, |
| 0, 0, 17, 210, 0, 0, 0, 0, 0, 0, |
| 0, 0, 18, 19, 20, 21, 22, 23, 24, 25, |
| 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, |
| 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, |
| 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, |
| 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, |
| 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, |
| 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, |
| 96 |
| }; |
| |
| static const yytype_int16 yycheck[] = |
| { |
| 4, 442, 352, 438, 8, 9, 193, 442, 11, 438, |
| 14, 452, 627, 442, 100, 437, 438, 8, 440, 758, |
| 759, 136, 8, 438, 621, 137, 448, 442, 0, 451, |
| 449, 17, 451, 20, 1123, 450, 455, 437, 438, 56, |
| 440, 441, 1131, 8, 31, 8, 8, 64, 448, 12, |
| 450, 451, 8, 5, 454, 7, 456, 437, 438, 11, |
| 4, 17, 18, 43, 44, 82, 23, 5, 448, 7, |
| 450, 451, 5, 495, 7, 100, 495, 133, 11, 135, |
| 67, 137, 26, 103, 104, 29, 73, 31, 297, 201, |
| 202, 203, 204, 8, 97, 495, 40, 495, 101, 103, |
| 495, 105, 8, 47, 48, 702, 50, 110, 94, 113, |
| 167, 168, 103, 57, 101, 495, 120, 121, 122, 123, |
| 99, 308, 8, 67, 524, 82, 88, 92, 131, 73, |
| 95, 93, 76, 8, 343, 79, 140, 193, 142, 878, |
| 143, 1004, 1005, 146, 524, 201, 202, 203, 204, 101, |
| 83, 154, 96, 23, 98, 8, 8, 101, 161, 163, |
| 164, 14, 100, 70, 102, 17, 170, 171, 172, 5, |
| 85, 7, 87, 176, 178, 90, 31, 292, 182, 183, |
| 184, 185, 88, 103, 104, 440, 441, 93, 99, 5, |
| 377, 7, 8, 197, 440, 441, 451, 22, 100, 451, |
| 455, 205, 88, 455, 100, 451, 31, 93, 212, 455, |
| 100, 214, 67, 88, 103, 100, 71, 42, 93, 4, |
| 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, |
| 234, 235, 236, 237, 238, 239, 240, 100, 241, 102, |
| 495, 26, 67, 495, 29, 1004, 101, 1006, 73, 495, |
| 12, 13, 308, 100, 5, 40, 7, 8, 261, 438, |
| 264, 31, 47, 48, 1004, 50, 1006, 167, 168, 448, |
| 55, 450, 451, 440, 100, 30, 101, 100, 31, 102, |
| 100, 4, 449, 21, 451, 100, 343, 344, 455, 42, |
| 294, 76, 296, 31, 79, 298, 299, 67, 301, 5, |
| 55, 7, 305, 26, 42, 11, 29, 101, 31, 312, |
| 63, 101, 101, 98, 67, 318, 495, 40, 100, 42, |
| 73, 377, 77, 78, 47, 48, 100, 50, 495, 67, |
| 68, 101, 55, 336, 337, 73, 340, 341, 342, 100, |
| 84, 345, 86, 81, 67, 89, 101, 91, 101, 353, |
| 73, 8, 101, 76, 358, 32, 79, 972, 64, 16, |
| 17, 18, 27, 101, 100, 30, 102, 75, 24, 373, |
| 374, 5, 31, 7, 378, 98, 27, 101, 101, 30, |
| 437, 438, 101, 440, 441, 442, 51, 52, 53, 101, |
| 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, |
| 51, 52, 53, 31, 55, 33, 34, 169, 67, 103, |
| 75, 31, 438, 78, 440, 441, 31, 37, 33, 34, |
| 54, 424, 448, 14, 450, 451, 77, 78, 454, 455, |
| 456, 28, 101, 100, 31, 102, 101, 103, 495, 67, |
| 74, 445, 101, 343, 344, 30, 31, 67, 5, 448, |
| 101, 450, 67, 457, 458, 459, 460, 461, 462, 463, |
| 464, 465, 59, 31, 104, 33, 34, 524, 105, 495, |
| 67, 106, 103, 101, 478, 479, 480, 5, 100, 7, |
| 102, 101, 67, 11, 85, 108, 101, 100, 73, 102, |
| 75, 107, 100, 78, 102, 100, 14, 102, 524, 67, |
| 103, 103, 505, 506, 616, 617, 621, 619, 937, 118, |
| 622, 623, 516, 181, 128, 277, 101, 279, 280, 281, |
| 344, 283, 284, 285, 286, 287, 288, 289, 290, 291, |
| 100, 293, 102, 101, 538, 539, 168, 437, 438, 139, |
| 440, 441, 442, 425, 8, 9, 733, 447, 448, 449, |
| 450, 451, 452, 453, 454, 455, 456, 708, 958, 909, |
| 616, 617, 100, 619, 102, 569, 622, 623, 901, 1004, |
| 1005, 1006, 994, 191, 993, 687, 1029, 1006, 958, 994, |
| 584, 983, 1004, 1005, 1144, 1144, 590, 702, 450, 1004, |
| 1005, 1006, 450, 450, 994, 495, 994, 27, 375, 994, |
| 30, 31, 450, 956, 608, 31, 1004, 450, 1006, 1004, |
| 450, 1006, 42, 100, 40, 102, 42, 450, 100, 45, |
| 102, 450, 52, 53, 524, 55, 766, 881, 58, 633, |
| 634, 687, 1110, 5, 60, 7, 1111, 67, 31, 11, |
| 100, 67, 102, 73, 100, 75, 102, 73, 78, 42, |
| 76, 81, 24, 657, 658, 910, 911, 121, 122, 123, |
| 32, 665, 666, 994, 910, 911, 100, 157, 102, 908, |
| 160, 101, 162, 495, 67, 101, 140, 733, 734, 31, |
| 73, 33, 34, 100, 100, 102, 102, 80, 100, 100, |
| 102, 102, 100, 100, 102, 102, 100, 879, 102, 163, |
| 164, 282, 758, 759, 1153, 1146, 1147, 1128, 101, 100, |
| 100, 102, 102, 1126, 717, 67, 1143, 720, 182, 183, |
| 184, 185, 725, 726, 727, 100, 1219, 102, 218, 219, |
| 220, 221, 100, 100, 102, 102, 100, 100, 102, 102, |
| 212, 205, 1181, 910, 911, 97, 1146, 1147, 340, 101, |
| 753, 754, 755, 133, 31, -1, -1, -1, -1, -1, |
| 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, |
| 234, 235, 236, 237, 238, 239, 240, -1, 135, 136, |
| 137, 784, 785, 786, 787, -1, 789, 64, -1, -1, |
| 67, 958, 795, 796, 71, -1, -1, -1, 801, 802, |
| -1, -1, -1, 27, -1, -1, 30, 31, 812, -1, |
| 814, -1, 816, 817, 818, -1, -1, -1, 42, -1, |
| -1, 825, 878, -1, 101, -1, 993, 51, 52, 53, |
| -1, 55, 836, 837, 838, -1, -1, -1, -1, 842, |
| -1, 65, 845, 67, 201, 202, 203, 204, -1, 853, |
| 854, 855, 856, 857, -1, 859, 860, -1, 862, 863, |
| -1, 973, -1, 975, 976, 222, -1, -1, 980, 31, |
| -1, 874, -1, -1, -1, -1, -1, 101, -1, 883, |
| 42, 885, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, 948, -1, -1, -1, 1007, 1008, -1, -1, -1, |
| 1087, 958, -1, 907, 908, 67, -1, -1, -1, -1, |
| -1, 73, -1, -1, 378, 677, 678, 973, -1, 975, |
| 976, 278, -1, -1, 980, 282, 930, 931, 932, 933, |
| 934, 935, 958, 695, -1, 292, 993, 994, -1, 101, |
| 944, 1128, 946, -1, 1182, 1183, -1, -1, -1, -1, |
| -1, 1007, 1008, -1, -1, 959, 446, -1, -1, -1, |
| -1, 965, 966, -1, 27, 1203, -1, 1205, 31, 1207, |
| -1, -1, 1210, 1211, -1, -1, -1, 1215, -1, 42, |
| -1, -1, 1220, -1, -1, -1, 1224, -1, 51, 1227, |
| 1177, -1, 55, 457, 458, 459, 460, 461, 462, 463, |
| 464, 465, -1, -1, 67, -1, -1, -1, 1011, -1, |
| 73, -1, -1, -1, 478, 479, 480, -1, 81, 1022, |
| 1023, -1, -1, -1, -1, 27, -1, -1, 30, 31, |
| -1, 1087, 1219, -1, 1038, 1039, -1, 1224, 101, 4, |
| 42, 1228, -1, -1, -1, -1, -1, -1, 948, 51, |
| 1053, 1054, 516, 55, -1, -1, -1, -1, 958, -1, |
| 25, 26, -1, -1, 29, 67, 31, 1179, 425, -1, |
| -1, 73, 1128, 75, 538, 539, 78, 42, 1082, 81, |
| -1, -1, 47, 48, -1, 50, -1, 1144, -1, 1146, |
| 1147, -1, 57, 993, 994, 1099, 1100, -1, -1, 101, |
| -1, -1, 67, -1, -1, 569, -1, -1, 73, -1, |
| -1, 1115, 1116, 4, 79, -1, 81, -1, -1, -1, |
| 584, 1177, -1, 1179, -1, -1, 590, -1, -1, -1, |
| -1, 96, -1, 98, -1, 26, 27, -1, 29, -1, |
| 31, -1, -1, -1, 608, -1, -1, -1, -1, 40, |
| 1154, 42, -1, -1, -1, -1, 47, 48, 1162, 50, |
| -1, -1, -1, 1219, 55, 1169, 57, -1, 1224, 633, |
| 634, -1, 1228, -1, 65, -1, 67, -1, -1, 22, |
| -1, -1, 73, -1, -1, 76, -1, 1190, 79, -1, |
| 81, 1194, -1, -1, -1, 1199, 39, 1201, -1, -1, |
| -1, 665, 666, -1, -1, 96, 49, 98, -1, -1, |
| 101, -1, -1, -1, 704, 705, -1, -1, 61, 62, |
| 982, 711, -1, 66, -1, -1, 69, -1, -1, 719, |
| -1, -1, 75, 723, -1, -1, -1, -1, -1, 729, |
| -1, -1, -1, -1, 1144, -1, 1146, 1147, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, 616, |
| 617, -1, 619, -1, 621, 622, 623, 757, -1, -1, |
| 627, 628, 629, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, 775, -1, -1, -1, -1, |
| -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, 794, -1, 663, -1, 21, -1, |
| -1, -1, -1, 26, -1, -1, 29, -1, -1, -1, |
| -1, -1, 35, 36, -1, 38, -1, 40, 41, -1, |
| 687, 821, -1, 823, 47, 48, -1, 50, -1, -1, |
| -1, -1, -1, -1, 57, 702, 703, -1, -1, 706, |
| -1, 708, -1, -1, -1, -1, -1, -1, -1, 72, |
| -1, 825, 4, 76, -1, 855, 79, -1, -1, -1, |
| -1, 861, -1, -1, 864, -1, 733, 734, 868, 21, |
| -1, -1, -1, -1, 26, 98, -1, 29, 101, -1, |
| -1, -1, -1, 35, 36, 4, 38, -1, 40, 41, |
| -1, 758, 759, -1, -1, 47, 48, -1, 50, -1, |
| -1, -1, -1, -1, -1, 57, 25, 26, 27, -1, |
| 29, 30, 31, -1, -1, -1, 109, -1, -1, -1, |
| 72, -1, -1, 42, 76, -1, -1, 79, 47, 48, |
| -1, 50, 51, -1, 908, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, 98, -1, 67, 101, |
| -1, 4, -1, -1, 73, -1, 930, 931, 932, 933, |
| 934, 935, 81, -1, -1, -1, -1, -1, -1, -1, |
| 944, -1, 946, 26, -1, -1, 29, -1, 31, 98, |
| 173, 174, 101, -1, -1, 959, -1, -1, -1, 42, |
| -1, 965, 966, -1, 47, 48, -1, 50, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| 1010, -1, -1, 206, 67, 1015, -1, -1, -1, -1, |
| 73, -1, 215, -1, -1, 1025, 79, -1, 81, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, 98, -1, -1, 101, 242, |
| -1, -1, -1, -1, -1, -1, 1056, -1, -1, -1, |
| -1, -1, -1, -1, 1038, 1039, -1, -1, -1, 262, |
| -1, -1, -1, 266, 267, -1, 269, -1, -1, 1079, |
| 1080, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, 972, 973, 974, 975, 976, |
| 977, -1, -1, 980, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, 1002, 1136, 1137, -1, -1, |
| 1007, 1008, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, 346, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, 362, |
| 363, -1, 365, -1, -1, 368, -1, -1, 371, -1, |
| 1154, -1, -1, -1, 1184, -1, 379, -1, 1162, 1189, |
| -1, -1, -1, 1193, -1, 1169, 389, -1, -1, 392, |
| -1, 394, -1, -1, 397, -1, -1, 400, -1, 4, |
| 403, 404, -1, -1, 407, -1, -1, 410, -1, -1, |
| -1, -1, 415, -1, -1, -1, 419, -1, -1, -1, |
| 423, 26, 27, -1, 29, -1, 31, -1, -1, -1, |
| -1, -1, -1, 1110, 1111, 40, -1, 42, -1, -1, |
| -1, 46, 47, 48, -1, 50, -1, 52, 53, -1, |
| 55, -1, 57, 58, -1, -1, -1, -1, -1, -1, |
| -1, -1, 67, -1, -1, -1, -1, -1, 73, -1, |
| -1, 76, 77, -1, 79, -1, 81, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, 96, -1, 98, -1, -1, -1, -1, -1, -1, |
| -1, -1, 1179, 1180, 1181, 4, -1, -1, -1, 8, |
| -1, 10, 11, -1, -1, -1, -1, -1, 521, -1, |
| -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, |
| 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, |
| 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, |
| 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, |
| 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, |
| 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, |
| 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, |
| 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, |
| 603, 604, 605, 606, 607, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, 624, 625, 626, -1, -1, -1, 630, 631, 632, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| 653, 654, 655, 656, -1, -1, 659, 660, 661, 662, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, 675, 676, -1, -1, 679, 680, -1, 682, |
| 683, 684, 685, 686, -1, 688, 689, 690, 691, 692, |
| 693, 694, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, 735, 736, 737, -1, 739, 740, 741, 742, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, 760, 761, 762, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, 807, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, 834, 835, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, 865, -1, -1, -1, -1, 870, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, 886, -1, -1, 889, -1, 891, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, 912, |
| 913, -1, -1, -1, -1, -1, 919, -1, -1, 922, |
| -1, -1, 925, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, 941, -1, |
| -1, -1, 945, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, 978, -1, -1, -1, -1, |
| -1, -1, -1, -1, 987, 988, 989, -1, 991, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, 1050, 1051, 1052, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| -1, 1064, -1, -1, -1, -1, 1069, -1, -1, 1072, |
| -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| 1083, -1, 1085, -1, -1, -1, -1, -1, -1, -1, |
| 1093, 4, 1095, 1096, -1, -1, -1, 10, 11, 1102, |
| -1, -1, 1105, 1106, -1, 1108, -1, 20, 21, 22, |
| 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, |
| 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, |
| 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, |
| 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, |
| 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, |
| 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, |
| 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, |
| 93, 94, 95, 96, 97, 98, 4, -1, 101, -1, |
| -1, -1, 10, 11, -1, -1, -1, -1, -1, -1, |
| -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, |
| 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, |
| 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, |
| 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, |
| 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, |
| 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, |
| 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, |
| 98, 4, -1, 101, -1, 8, 9, 10, 11, 12, |
| -1, -1, -1, 16, 17, 18, -1, 20, 21, 22, |
| 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, |
| 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, |
| 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, |
| 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, |
| 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, |
| 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, |
| 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, |
| 93, 94, 95, 96, 97, 98, 4, -1, -1, -1, |
| 8, 9, 10, 11, 12, -1, -1, -1, 16, 17, |
| 18, -1, 20, 21, 22, 23, 24, 25, 26, 27, |
| 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, |
| 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, |
| 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, |
| 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, |
| 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, |
| 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, |
| 98, 4, -1, -1, -1, 8, -1, 10, 11, -1, |
| -1, -1, -1, -1, -1, -1, -1, 20, 21, 22, |
| 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, |
| 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, |
| 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, |
| 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, |
| 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, |
| 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, |
| 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, |
| 93, 94, 95, 96, 97, 98, 4, -1, -1, -1, |
| -1, -1, 10, 11, -1, -1, 14, -1, -1, -1, |
| -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, |
| 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, |
| 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, |
| 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, |
| 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, |
| 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, |
| 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, |
| 98, 4, -1, -1, -1, -1, -1, 10, 11, -1, |
| -1, 14, -1, -1, -1, -1, -1, 20, 21, 22, |
| 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, |
| 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, |
| 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, |
| 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, |
| 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, |
| 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, |
| 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, |
| 93, 94, 95, 96, 97, 98, 4, 5, -1, -1, |
| -1, -1, 10, 11, -1, -1, -1, -1, -1, -1, |
| -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, |
| 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, |
| 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, |
| 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, |
| 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, |
| 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, |
| 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, |
| 98, 4, -1, -1, -1, 8, -1, 10, -1, -1, |
| -1, -1, -1, -1, -1, -1, -1, 20, 21, 22, |
| 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, |
| 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, |
| 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, |
| 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, |
| 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, |
| 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, |
| 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, |
| 93, 94, 95, 96, 97, 98, 4, -1, -1, -1, |
| -1, -1, 10, 11, -1, -1, -1, -1, -1, -1, |
| -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, |
| 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, |
| 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, |
| 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, |
| 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, |
| 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, |
| 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, |
| 98 |
| }; |
| |
| /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing |
| symbol of state STATE-NUM. */ |
| static const yytype_uint16 yystos[] = |
| { |
| 0, 110, 115, 119, 437, 0, 5, 7, 54, 74, |
| 436, 436, 438, 438, 437, 4, 8, 10, 20, 21, |
| 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, |
| 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, |
| 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, |
| 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, |
| 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, |
| 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, |
| 92, 93, 94, 95, 96, 97, 98, 111, 112, 422, |
| 443, 444, 422, 437, 116, 437, 120, 113, 100, 100, |
| 99, 426, 426, 437, 11, 118, 427, 436, 122, 8, |
| 428, 56, 64, 82, 117, 124, 125, 139, 121, 123, |
| 124, 114, 429, 430, 438, 438, 438, 438, 126, 126, |
| 23, 136, 437, 100, 102, 433, 8, 9, 11, 12, |
| 16, 17, 18, 431, 442, 443, 112, 440, 442, 112, |
| 421, 444, 440, 43, 44, 127, 131, 140, 140, 438, |
| 437, 437, 437, 100, 102, 425, 441, 425, 437, 425, |
| 438, 438, 28, 31, 59, 67, 141, 142, 143, 144, |
| 145, 145, 422, 434, 432, 426, 426, 437, 130, 422, |
| 130, 438, 438, 438, 438, 70, 146, 153, 153, 137, |
| 11, 101, 423, 443, 99, 101, 128, 132, 440, 440, |
| 440, 440, 438, 426, 4, 21, 26, 29, 35, 36, |
| 38, 40, 41, 47, 48, 50, 57, 72, 76, 79, |
| 98, 101, 154, 155, 169, 174, 180, 226, 230, 231, |
| 242, 249, 254, 265, 279, 281, 287, 303, 316, 335, |
| 342, 101, 100, 429, 437, 426, 100, 100, 102, 133, |
| 425, 425, 425, 425, 12, 112, 151, 438, 438, 438, |
| 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, |
| 438, 438, 438, 438, 437, 426, 437, 426, 100, 102, |
| 435, 8, 426, 426, 426, 152, 147, 422, 103, 112, |
| 312, 393, 394, 422, 422, 422, 112, 345, 394, 422, |
| 422, 422, 243, 422, 248, 422, 422, 334, 422, 315, |
| 422, 179, 422, 11, 112, 424, 444, 445, 422, 139, |
| 437, 437, 437, 129, 134, 437, 100, 102, 148, 280, |
| 423, 304, 395, 437, 266, 232, 156, 343, 437, 170, |
| 227, 175, 100, 100, 255, 100, 102, 336, 100, 102, |
| 317, 100, 288, 437, 437, 282, 138, 434, 71, 101, |
| 135, 139, 143, 144, 101, 135, 143, 144, 426, 100, |
| 102, 283, 100, 393, 100, 102, 267, 100, 102, 233, |
| 100, 102, 157, 100, 100, 102, 171, 100, 102, 228, |
| 100, 102, 176, 426, 426, 100, 426, 426, 426, 100, |
| 102, 289, 283, 101, 101, 438, 426, 149, 426, 426, |
| 426, 426, 426, 426, 426, 426, 426, 244, 250, 426, |
| 337, 318, 181, 426, 426, 437, 151, 150, 284, 306, |
| 268, 234, 158, 344, 172, 229, 177, 27, 30, 42, |
| 51, 55, 73, 75, 78, 81, 101, 143, 144, 165, |
| 173, 182, 224, 225, 362, 367, 372, 383, 52, 53, |
| 58, 101, 143, 144, 165, 173, 182, 224, 225, 362, |
| 367, 377, 379, 381, 383, 257, 101, 143, 144, 165, |
| 173, 180, 226, 230, 383, 45, 60, 101, 143, 144, |
| 165, 173, 180, 226, 323, 331, 73, 101, 143, 144, |
| 164, 182, 224, 225, 290, 425, 101, 143, 144, 101, |
| 143, 144, 165, 173, 362, 367, 372, 383, 25, 96, |
| 143, 144, 164, 173, 230, 273, 305, 314, 335, 362, |
| 101, 143, 144, 165, 173, 225, 231, 242, 249, 254, |
| 265, 271, 272, 273, 279, 281, 362, 367, 372, 65, |
| 101, 143, 144, 165, 173, 180, 226, 230, 314, 335, |
| 362, 367, 376, 383, 20, 101, 143, 144, 159, 164, |
| 37, 101, 143, 144, 101, 143, 144, 165, 173, 101, |
| 143, 144, 165, 180, 226, 230, 314, 335, 22, 101, |
| 143, 144, 165, 173, 178, 438, 438, 438, 438, 438, |
| 438, 438, 438, 438, 246, 245, 247, 438, 438, 438, |
| 252, 251, 253, 46, 77, 143, 144, 165, 173, 180, |
| 226, 230, 256, 314, 335, 362, 367, 377, 379, 381, |
| 383, 386, 389, 339, 340, 341, 338, 437, 437, 319, |
| 320, 321, 322, 438, 426, 21, 68, 101, 143, 144, |
| 165, 173, 294, 299, 362, 285, 286, 438, 438, 308, |
| 311, 101, 309, 310, 307, 270, 269, 438, 240, 237, |
| 241, 238, 239, 235, 236, 438, 438, 426, 426, 426, |
| 426, 426, 438, 368, 440, 440, 373, 440, 166, 183, |
| 424, 440, 440, 426, 426, 426, 17, 94, 112, 380, |
| 417, 18, 112, 378, 417, 418, 92, 95, 112, 382, |
| 426, 426, 426, 438, 438, 260, 261, 264, 101, 262, |
| 263, 258, 259, 426, 426, 426, 426, 324, 332, 426, |
| 426, 426, 426, 85, 87, 90, 112, 168, 438, 438, |
| 292, 293, 291, 426, 426, 422, 313, 422, 426, 426, |
| 426, 426, 426, 426, 426, 440, 426, 426, 426, 426, |
| 426, 426, 426, 422, 84, 86, 89, 91, 346, 347, |
| 348, 349, 353, 357, 424, 88, 93, 112, 370, 425, |
| 425, 88, 93, 112, 375, 384, 168, 100, 102, 184, |
| 425, 363, 437, 425, 437, 425, 437, 437, 437, 425, |
| 112, 390, 423, 112, 387, 396, 423, 426, 426, 426, |
| 426, 426, 426, 426, 100, 100, 437, 437, 437, 425, |
| 112, 302, 396, 112, 297, 396, 426, 426, 426, 274, |
| 317, 425, 160, 437, 437, 437, 437, 437, 425, 437, |
| 437, 369, 437, 437, 374, 100, 102, 385, 167, 426, |
| 100, 102, 364, 425, 391, 425, 388, 425, 438, 397, |
| 426, 426, 300, 437, 295, 437, 100, 102, 275, 100, |
| 102, 161, 350, 354, 425, 358, 425, 425, 426, 425, |
| 185, 186, 199, 200, 213, 214, 426, 437, 396, 395, |
| 326, 326, 100, 100, 102, 296, 426, 426, 426, 100, |
| 102, 351, 100, 102, 355, 100, 102, 360, 193, 101, |
| 39, 49, 61, 62, 66, 69, 178, 187, 188, 190, |
| 194, 208, 210, 211, 32, 202, 24, 216, 365, 388, |
| 180, 226, 230, 325, 383, 333, 426, 426, 276, 83, |
| 162, 426, 426, 359, 426, 33, 34, 101, 143, 144, |
| 222, 223, 438, 438, 438, 438, 438, 438, 182, 426, |
| 438, 426, 438, 215, 101, 143, 144, 328, 329, 330, |
| 101, 327, 101, 306, 298, 101, 143, 144, 165, 173, |
| 230, 362, 438, 101, 352, 356, 361, 438, 438, 112, |
| 189, 417, 191, 440, 112, 398, 399, 400, 195, 440, |
| 392, 440, 88, 93, 112, 212, 426, 203, 440, 201, |
| 217, 422, 216, 426, 426, 426, 426, 301, 27, 51, |
| 101, 143, 144, 173, 225, 366, 371, 376, 377, 379, |
| 383, 278, 277, 88, 93, 112, 163, 101, 224, 225, |
| 366, 371, 377, 379, 383, 386, 101, 224, 225, 383, |
| 386, 101, 182, 224, 225, 366, 371, 377, 379, 440, |
| 440, 425, 437, 100, 102, 192, 425, 103, 401, 402, |
| 14, 404, 405, 100, 102, 196, 100, 102, 209, 437, |
| 437, 425, 100, 102, 204, 202, 100, 102, 218, 101, |
| 438, 438, 426, 426, 426, 437, 437, 425, 426, 426, |
| 426, 425, 425, 426, 426, 423, 403, 103, 406, 426, |
| 426, 426, 426, 426, 426, 426, 370, 375, 193, 409, |
| 401, 405, 407, 423, 197, 193, 205, 219, 425, 425, |
| 101, 104, 408, 409, 97, 101, 143, 144, 198, 222, |
| 223, 101, 80, 101, 143, 144, 164, 173, 206, 63, |
| 101, 143, 144, 164, 173, 220, 5, 439, 402, 438, |
| 438, 438, 410, 423, 440, 16, 17, 18, 112, 207, |
| 419, 420, 112, 221, 418, 439, 439, 425, 425, 437, |
| 425, 437, 105, 106, 439, 85, 411, 416, 439, 439, |
| 107, 103, 439, 439, 108, 14, 412, 413, 439, 414, |
| 103, 413, 423, 439, 415, 423, 439, 103, 439, 423 |
| }; |
| |
| /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ |
| static const yytype_uint16 yyr1[] = |
| { |
| 0, 109, 110, 110, 111, 112, 113, 114, 113, 116, |
| 117, 115, 118, 118, 118, 118, 120, 121, 119, 122, |
| 122, 123, 122, 124, 125, 126, 126, 126, 128, 127, |
| 129, 129, 129, 129, 129, 130, 132, 131, 133, 133, |
| 134, 134, 134, 134, 135, 137, 138, 136, 139, 140, |
| 140, 140, 140, 140, 141, 142, 143, 144, 145, 145, |
| 147, 146, 148, 149, 148, 150, 150, 150, 152, 151, |
| 151, 153, 153, 154, 154, 154, 154, 154, 154, 154, |
| 154, 154, 154, 156, 155, 157, 157, 158, 158, 158, |
| 158, 158, 160, 159, 161, 161, 162, 163, 163, 163, |
| 164, 166, 167, 165, 168, 168, 168, 168, 170, 169, |
| 171, 171, 172, 172, 172, 172, 172, 173, 175, 174, |
| 176, 176, 177, 177, 177, 177, 177, 177, 178, 179, |
| 180, 181, 181, 181, 181, 181, 181, 181, 182, 183, |
| 184, 184, 185, 185, 185, 186, 186, 186, 186, 186, |
| 186, 186, 186, 186, 187, 188, 189, 189, 190, 191, |
| 192, 192, 193, 193, 193, 193, 193, 194, 195, 196, |
| 196, 197, 197, 197, 197, 197, 197, 198, 200, 199, |
| 201, 201, 202, 203, 204, 204, 205, 205, 205, 205, |
| 205, 205, 206, 207, 207, 208, 209, 209, 210, 211, |
| 212, 212, 212, 214, 213, 215, 215, 216, 217, 218, |
| 218, 219, 219, 219, 219, 219, 219, 220, 221, 221, |
| 222, 223, 224, 225, 227, 226, 228, 228, 229, 229, |
| 229, 229, 229, 229, 229, 229, 229, 230, 230, 230, |
| 230, 230, 230, 230, 230, 232, 231, 233, 233, 234, |
| 235, 234, 234, 236, 234, 234, 234, 234, 234, 234, |
| 237, 234, 238, 234, 239, 234, 240, 234, 241, 234, |
| 242, 243, 244, 245, 244, 244, 246, 244, 244, 247, |
| 244, 244, 244, 244, 244, 244, 244, 248, 249, 250, |
| 251, 250, 250, 252, 250, 250, 250, 253, 250, 250, |
| 250, 250, 250, 250, 250, 250, 255, 256, 254, 257, |
| 258, 257, 257, 259, 257, 257, 257, 257, 257, 257, |
| 257, 257, 257, 257, 260, 257, 261, 257, 262, 257, |
| 263, 257, 264, 257, 266, 265, 267, 267, 268, 269, |
| 268, 268, 268, 268, 268, 268, 268, 268, 270, 268, |
| 271, 271, 272, 272, 272, 272, 272, 272, 272, 274, |
| 273, 275, 275, 276, 277, 276, 276, 276, 276, 276, |
| 278, 276, 280, 279, 282, 281, 283, 283, 284, 285, |
| 284, 284, 286, 284, 284, 284, 284, 284, 284, 288, |
| 287, 289, 289, 290, 291, 290, 290, 290, 290, 290, |
| 292, 290, 293, 290, 295, 294, 296, 296, 297, 297, |
| 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, |
| 298, 300, 301, 299, 302, 302, 304, 305, 303, 306, |
| 307, 306, 306, 306, 306, 306, 308, 306, 309, 306, |
| 310, 306, 311, 306, 312, 312, 313, 314, 315, 316, |
| 317, 317, 318, 318, 318, 318, 318, 319, 318, 320, |
| 318, 321, 318, 322, 318, 324, 325, 323, 326, 327, |
| 326, 328, 326, 329, 326, 330, 326, 332, 333, 331, |
| 334, 335, 336, 336, 337, 338, 337, 337, 337, 337, |
| 337, 339, 337, 340, 337, 341, 337, 343, 342, 344, |
| 344, 344, 344, 345, 345, 346, 346, 347, 347, 347, |
| 348, 350, 349, 351, 351, 352, 352, 352, 352, 352, |
| 352, 352, 352, 352, 354, 353, 355, 355, 356, 356, |
| 356, 356, 356, 358, 357, 359, 360, 360, 361, 361, |
| 361, 361, 361, 361, 361, 361, 363, 362, 364, 364, |
| 365, 365, 365, 366, 368, 369, 367, 370, 370, 370, |
| 371, 373, 374, 372, 375, 375, 375, 376, 377, 378, |
| 378, 379, 380, 380, 380, 381, 382, 382, 382, 384, |
| 383, 385, 385, 386, 387, 387, 388, 388, 389, 391, |
| 390, 390, 392, 393, 394, 395, 395, 397, 396, 399, |
| 398, 400, 398, 398, 401, 402, 403, 403, 404, 405, |
| 406, 406, 407, 408, 408, 409, 409, 410, 411, 412, |
| 413, 414, 414, 415, 415, 416, 417, 418, 418, 419, |
| 419, 420, 420, 421, 421, 422, 422, 423, 423, 424, |
| 424, 424, 425, 425, 426, 426, 426, 428, 427, 429, |
| 430, 430, 431, 431, 431, 432, 432, 433, 433, 434, |
| 434, 435, 435, 436, 436, 437, 437, 438, 439, 439, |
| 441, 440, 440, 442, 442, 442, 442, 442, 442, 442, |
| 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, |
| 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, |
| 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, |
| 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, |
| 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, |
| 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, |
| 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, |
| 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, |
| 443, 444, 445 |
| }; |
| |
| /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ |
| static const yytype_uint8 yyr2[] = |
| { |
| 0, 2, 1, 1, 1, 3, 0, 0, 6, 0, |
| 0, 15, 0, 2, 2, 2, 0, 0, 15, 0, |
| 2, 0, 3, 4, 4, 0, 2, 2, 0, 9, |
| 0, 2, 2, 2, 2, 1, 0, 6, 1, 4, |
| 0, 2, 2, 2, 4, 0, 0, 10, 4, 0, |
| 2, 2, 2, 2, 4, 4, 4, 4, 0, 3, |
| 0, 5, 1, 0, 5, 0, 2, 2, 0, 3, |
| 1, 0, 3, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 0, 5, 1, 4, 0, 2, 2, |
| 2, 2, 0, 6, 1, 4, 4, 2, 2, 1, |
| 4, 0, 0, 6, 2, 2, 2, 1, 0, 5, |
| 1, 4, 0, 2, 2, 2, 2, 4, 0, 5, |
| 1, 4, 0, 2, 2, 2, 2, 2, 4, 1, |
| 7, 0, 3, 2, 2, 2, 2, 2, 4, 1, |
| 1, 4, 1, 1, 1, 0, 2, 2, 2, 2, |
| 2, 2, 3, 4, 0, 4, 2, 1, 5, 1, |
| 1, 4, 0, 2, 2, 2, 2, 5, 1, 1, |
| 4, 0, 2, 2, 2, 2, 2, 4, 0, 4, |
| 0, 3, 4, 1, 1, 4, 0, 2, 2, 2, |
| 2, 2, 4, 2, 1, 4, 1, 4, 4, 4, |
| 2, 2, 1, 0, 3, 0, 2, 5, 1, 1, |
| 4, 0, 2, 2, 2, 2, 2, 4, 2, 1, |
| 4, 4, 4, 4, 0, 5, 1, 4, 0, 2, |
| 2, 2, 3, 3, 3, 3, 3, 1, 1, 1, |
| 1, 1, 1, 1, 1, 0, 5, 1, 4, 0, |
| 0, 4, 2, 0, 4, 2, 2, 2, 2, 2, |
| 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, |
| 7, 1, 0, 0, 4, 2, 0, 4, 2, 0, |
| 4, 2, 2, 2, 2, 2, 2, 1, 7, 0, |
| 0, 4, 2, 0, 4, 2, 2, 0, 4, 2, |
| 2, 2, 2, 2, 2, 2, 0, 0, 9, 0, |
| 0, 4, 2, 0, 4, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 0, 4, 0, 4, 0, 4, |
| 0, 4, 0, 4, 0, 5, 1, 4, 0, 0, |
| 4, 2, 2, 2, 2, 2, 2, 2, 0, 4, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, |
| 5, 1, 4, 0, 0, 4, 2, 2, 2, 2, |
| 0, 4, 0, 5, 0, 5, 1, 4, 0, 0, |
| 4, 2, 0, 4, 2, 2, 2, 2, 2, 0, |
| 5, 1, 4, 0, 0, 4, 2, 2, 2, 2, |
| 0, 4, 0, 4, 0, 5, 1, 4, 2, 1, |
| 0, 3, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 0, 0, 9, 2, 1, 0, 0, 9, 0, |
| 0, 4, 2, 2, 2, 2, 0, 4, 0, 4, |
| 0, 4, 0, 4, 2, 1, 1, 4, 1, 4, |
| 1, 4, 0, 2, 2, 2, 2, 0, 4, 0, |
| 4, 0, 4, 0, 4, 0, 0, 8, 0, 0, |
| 4, 0, 4, 0, 4, 0, 4, 0, 0, 8, |
| 1, 4, 1, 4, 0, 0, 4, 2, 2, 2, |
| 2, 0, 4, 0, 4, 0, 4, 0, 8, 0, |
| 2, 2, 4, 2, 1, 1, 2, 1, 1, 1, |
| 3, 0, 4, 1, 4, 0, 2, 3, 2, 2, |
| 2, 2, 2, 2, 0, 4, 1, 4, 0, 2, |
| 3, 2, 2, 0, 4, 1, 1, 4, 0, 3, |
| 2, 2, 2, 2, 2, 2, 0, 5, 1, 4, |
| 0, 2, 2, 4, 0, 0, 6, 2, 2, 1, |
| 4, 0, 0, 6, 2, 2, 1, 4, 4, 2, |
| 1, 4, 2, 2, 1, 4, 2, 2, 1, 0, |
| 5, 1, 4, 3, 2, 2, 3, 1, 4, 0, |
| 3, 1, 1, 2, 2, 0, 2, 0, 3, 0, |
| 2, 0, 2, 1, 3, 2, 0, 2, 3, 2, |
| 0, 2, 2, 0, 2, 0, 6, 5, 5, 5, |
| 4, 0, 2, 0, 5, 5, 1, 1, 1, 1, |
| 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, |
| 2, 1, 2, 4, 0, 2, 2, 0, 4, 2, |
| 0, 1, 0, 2, 3, 0, 5, 1, 4, 0, |
| 4, 2, 5, 1, 1, 0, 2, 2, 0, 1, |
| 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1 |
| }; |
| |
| |
| #define yyerrok (yyerrstatus = 0) |
| #define yyclearin (yychar = YYEMPTY) |
| #define YYEMPTY (-2) |
| #define YYEOF 0 |
| |
| #define YYACCEPT goto yyacceptlab |
| #define YYABORT goto yyabortlab |
| #define YYERROR goto yyerrorlab |
| |
| |
| #define YYRECOVERING() (!!yyerrstatus) |
| |
| #define YYBACKUP(Token, Value) \ |
| do \ |
| if (yychar == YYEMPTY) \ |
| { \ |
| yychar = (Token); \ |
| yylval = (Value); \ |
| YYPOPSTACK (yylen); \ |
| yystate = *yyssp; \ |
| goto yybackup; \ |
| } \ |
| else \ |
| { \ |
| yyerror (&yylloc, scanner, module, submodule, unres, size_arrays, read_all, YY_("syntax error: cannot back up")); \ |
| YYERROR; \ |
| } \ |
| while (0) |
| |
| /* Error token number */ |
| #define YYTERROR 1 |
| #define YYERRCODE 256 |
| |
| |
| /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. |
| If N is 0, then set CURRENT to the empty location which ends |
| the previous symbol: RHS[0] (always defined). */ |
| |
| #ifndef YYLLOC_DEFAULT |
| # define YYLLOC_DEFAULT(Current, Rhs, N) \ |
| do \ |
| if (N) \ |
| { \ |
| (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ |
| (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ |
| (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ |
| (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ |
| } \ |
| else \ |
| { \ |
| (Current).first_line = (Current).last_line = \ |
| YYRHSLOC (Rhs, 0).last_line; \ |
| (Current).first_column = (Current).last_column = \ |
| YYRHSLOC (Rhs, 0).last_column; \ |
| } \ |
| while (0) |
| #endif |
| |
| #define YYRHSLOC(Rhs, K) ((Rhs)[K]) |
| |
| |
| /* Enable debugging if requested. */ |
| #if YYDEBUG |
| |
| # ifndef YYFPRINTF |
| # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ |
| # define YYFPRINTF fprintf |
| # endif |
| |
| # define YYDPRINTF(Args) \ |
| do { \ |
| if (yydebug) \ |
| YYFPRINTF Args; \ |
| } while (0) |
| |
| |
| /* YY_LOCATION_PRINT -- Print the location on the stream. |
| This macro was not mandated originally: define only if we know |
| we won't break user code: when these are the locations we know. */ |
| |
| #ifndef YY_LOCATION_PRINT |
| # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL |
| |
| /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ |
| |
| YY_ATTRIBUTE_UNUSED |
| static unsigned |
| yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) |
| { |
| unsigned res = 0; |
| int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; |
| if (0 <= yylocp->first_line) |
| { |
| res += YYFPRINTF (yyo, "%d", yylocp->first_line); |
| if (0 <= yylocp->first_column) |
| res += YYFPRINTF (yyo, ".%d", yylocp->first_column); |
| } |
| if (0 <= yylocp->last_line) |
| { |
| if (yylocp->first_line < yylocp->last_line) |
| { |
| res += YYFPRINTF (yyo, "-%d", yylocp->last_line); |
| if (0 <= end_col) |
| res += YYFPRINTF (yyo, ".%d", end_col); |
| } |
| else if (0 <= end_col && yylocp->first_column < end_col) |
| res += YYFPRINTF (yyo, "-%d", end_col); |
| } |
| return res; |
| } |
| |
| # define YY_LOCATION_PRINT(File, Loc) \ |
| yy_location_print_ (File, &(Loc)) |
| |
| # else |
| # define YY_LOCATION_PRINT(File, Loc) ((void) 0) |
| # endif |
| #endif |
| |
| |
| # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ |
| do { \ |
| if (yydebug) \ |
| { \ |
| YYFPRINTF (stderr, "%s ", Title); \ |
| yy_symbol_print (stderr, \ |
| Type, Value, Location, scanner, module, submodule, unres, size_arrays, read_all); \ |
| YYFPRINTF (stderr, "\n"); \ |
| } \ |
| } while (0) |
| |
| |
| /*----------------------------------------. |
| | Print this symbol's value on YYOUTPUT. | |
| `----------------------------------------*/ |
| |
| static void |
| yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, void *scanner, struct lys_module *module, struct lys_submodule *submodule, struct unres_schema *unres, struct lys_array_size *size_arrays, int read_all) |
| { |
| FILE *yyo = yyoutput; |
| YYUSE (yyo); |
| YYUSE (yylocationp); |
| YYUSE (scanner); |
| YYUSE (module); |
| YYUSE (submodule); |
| YYUSE (unres); |
| YYUSE (size_arrays); |
| YYUSE (read_all); |
| if (!yyvaluep) |
| return; |
| # ifdef YYPRINT |
| if (yytype < YYNTOKENS) |
| YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); |
| # endif |
| YYUSE (yytype); |
| } |
| |
| |
| /*--------------------------------. |
| | Print this symbol on YYOUTPUT. | |
| `--------------------------------*/ |
| |
| static void |
| yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, void *scanner, struct lys_module *module, struct lys_submodule *submodule, struct unres_schema *unres, struct lys_array_size *size_arrays, int read_all) |
| { |
| YYFPRINTF (yyoutput, "%s %s (", |
| yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); |
| |
| YY_LOCATION_PRINT (yyoutput, *yylocationp); |
| YYFPRINTF (yyoutput, ": "); |
| yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, scanner, module, submodule, unres, size_arrays, read_all); |
| YYFPRINTF (yyoutput, ")"); |
| } |
| |
| /*------------------------------------------------------------------. |
| | yy_stack_print -- Print the state stack from its BOTTOM up to its | |
| | TOP (included). | |
| `------------------------------------------------------------------*/ |
| |
| static void |
| yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) |
| { |
| YYFPRINTF (stderr, "Stack now"); |
| for (; yybottom <= yytop; yybottom++) |
| { |
| int yybot = *yybottom; |
| YYFPRINTF (stderr, " %d", yybot); |
| } |
| YYFPRINTF (stderr, "\n"); |
| } |
| |
| # define YY_STACK_PRINT(Bottom, Top) \ |
| do { \ |
| if (yydebug) \ |
| yy_stack_print ((Bottom), (Top)); \ |
| } while (0) |
| |
| |
| /*------------------------------------------------. |
| | Report that the YYRULE is going to be reduced. | |
| `------------------------------------------------*/ |
| |
| static void |
| yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, void *scanner, struct lys_module *module, struct lys_submodule *submodule, struct unres_schema *unres, struct lys_array_size *size_arrays, int read_all) |
| { |
| unsigned long int yylno = yyrline[yyrule]; |
| int yynrhs = yyr2[yyrule]; |
| int yyi; |
| YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", |
| yyrule - 1, yylno); |
| /* The symbols being reduced. */ |
| for (yyi = 0; yyi < yynrhs; yyi++) |
| { |
| YYFPRINTF (stderr, " $%d = ", yyi + 1); |
| yy_symbol_print (stderr, |
| yystos[yyssp[yyi + 1 - yynrhs]], |
| &(yyvsp[(yyi + 1) - (yynrhs)]) |
| , &(yylsp[(yyi + 1) - (yynrhs)]) , scanner, module, submodule, unres, size_arrays, read_all); |
| YYFPRINTF (stderr, "\n"); |
| } |
| } |
| |
| # define YY_REDUCE_PRINT(Rule) \ |
| do { \ |
| if (yydebug) \ |
| yy_reduce_print (yyssp, yyvsp, yylsp, Rule, scanner, module, submodule, unres, size_arrays, read_all); \ |
| } while (0) |
| |
| /* Nonzero means print parse trace. It is left uninitialized so that |
| multiple parsers can coexist. */ |
| int yydebug; |
| #else /* !YYDEBUG */ |
| # define YYDPRINTF(Args) |
| # define YY_SYMBOL_PRINT(Title, Type, Value, Location) |
| # define YY_STACK_PRINT(Bottom, Top) |
| # define YY_REDUCE_PRINT(Rule) |
| #endif /* !YYDEBUG */ |
| |
| |
| /* YYINITDEPTH -- initial size of the parser's stacks. */ |
| #ifndef YYINITDEPTH |
| # define YYINITDEPTH 200 |
| #endif |
| |
| /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only |
| if the built-in stack extension method is used). |
| |
| Do not make this value too large; the results are undefined if |
| YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) |
| evaluated with infinite-precision integer arithmetic. */ |
| |
| #ifndef YYMAXDEPTH |
| # define YYMAXDEPTH 10000 |
| #endif |
| |
| |
| #if YYERROR_VERBOSE |
| |
| # ifndef yystrlen |
| # if defined __GLIBC__ && defined _STRING_H |
| # define yystrlen strlen |
| # else |
| /* Return the length of YYSTR. */ |
| static YYSIZE_T |
| yystrlen (const char *yystr) |
| { |
| YYSIZE_T yylen; |
| for (yylen = 0; yystr[yylen]; yylen++) |
| continue; |
| return yylen; |
| } |
| # endif |
| # endif |
| |
| # ifndef yystpcpy |
| # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE |
| # define yystpcpy stpcpy |
| # else |
| /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in |
| YYDEST. */ |
| static char * |
| yystpcpy (char *yydest, const char *yysrc) |
| { |
| char *yyd = yydest; |
| const char *yys = yysrc; |
| |
| while ((*yyd++ = *yys++) != '\0') |
| continue; |
| |
| return yyd - 1; |
| } |
| # endif |
| # endif |
| |
| # ifndef yytnamerr |
| /* Copy to YYRES the contents of YYSTR after stripping away unnecessary |
| quotes and backslashes, so that it's suitable for yyerror. The |
| heuristic is that double-quoting is unnecessary unless the string |
| contains an apostrophe, a comma, or backslash (other than |
| backslash-backslash). YYSTR is taken from yytname. If YYRES is |
| null, do not copy; instead, return the length of what the result |
| would have been. */ |
| static YYSIZE_T |
| yytnamerr (char *yyres, const char *yystr) |
| { |
| if (*yystr == '"') |
| { |
| YYSIZE_T yyn = 0; |
| char const *yyp = yystr; |
| |
| for (;;) |
| switch (*++yyp) |
| { |
| case '\'': |
| case ',': |
| goto do_not_strip_quotes; |
| |
| case '\\': |
| if (*++yyp != '\\') |
| goto do_not_strip_quotes; |
| /* Fall through. */ |
| default: |
| if (yyres) |
| yyres[yyn] = *yyp; |
| yyn++; |
| break; |
| |
| case '"': |
| if (yyres) |
| yyres[yyn] = '\0'; |
| return yyn; |
| } |
| do_not_strip_quotes: ; |
| } |
| |
| if (! yyres) |
| return yystrlen (yystr); |
| |
| return yystpcpy (yyres, yystr) - yyres; |
| } |
| # endif |
| |
| /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message |
| about the unexpected token YYTOKEN for the state stack whose top is |
| YYSSP. |
| |
| Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is |
| not large enough to hold the message. In that case, also set |
| *YYMSG_ALLOC to the required number of bytes. Return 2 if the |
| required number of bytes is too large to store. */ |
| static int |
| yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, |
| yytype_int16 *yyssp, int yytoken) |
| { |
| YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); |
| YYSIZE_T yysize = yysize0; |
| enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; |
| /* Internationalized format string. */ |
| const char *yyformat = YY_NULLPTR; |
| /* Arguments of yyformat. */ |
| char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; |
| /* Number of reported tokens (one for the "unexpected", one per |
| "expected"). */ |
| int yycount = 0; |
| |
| /* There are many possibilities here to consider: |
| - If this state is a consistent state with a default action, then |
| the only way this function was invoked is if the default action |
| is an error action. In that case, don't check for expected |
| tokens because there are none. |
| - The only way there can be no lookahead present (in yychar) is if |
| this state is a consistent state with a default action. Thus, |
| detecting the absence of a lookahead is sufficient to determine |
| that there is no unexpected or expected token to report. In that |
| case, just report a simple "syntax error". |
| - Don't assume there isn't a lookahead just because this state is a |
| consistent state with a default action. There might have been a |
| previous inconsistent state, consistent state with a non-default |
| action, or user semantic action that manipulated yychar. |
| - Of course, the expected token list depends on states to have |
| correct lookahead information, and it depends on the parser not |
| to perform extra reductions after fetching a lookahead from the |
| scanner and before detecting a syntax error. Thus, state merging |
| (from LALR or IELR) and default reductions corrupt the expected |
| token list. However, the list is correct for canonical LR with |
| one exception: it will still contain any token that will not be |
| accepted due to an error action in a later state. |
| */ |
| if (yytoken != YYEMPTY) |
| { |
| int yyn = yypact[*yyssp]; |
| yyarg[yycount++] = yytname[yytoken]; |
| if (!yypact_value_is_default (yyn)) |
| { |
| /* Start YYX at -YYN if negative to avoid negative indexes in |
| YYCHECK. In other words, skip the first -YYN actions for |
| this state because they are default actions. */ |
| int yyxbegin = yyn < 0 ? -yyn : 0; |
| /* Stay within bounds of both yycheck and yytname. */ |
| int yychecklim = YYLAST - yyn + 1; |
| int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; |
| int yyx; |
| |
| for (yyx = yyxbegin; yyx < yyxend; ++yyx) |
| if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR |
| && !yytable_value_is_error (yytable[yyx + yyn])) |
| { |
| if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) |
| { |
| yycount = 1; |
| yysize = yysize0; |
| break; |
| } |
| yyarg[yycount++] = yytname[yyx]; |
| { |
| YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); |
| if (! (yysize <= yysize1 |
| && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) |
| return 2; |
| yysize = yysize1; |
| } |
| } |
| } |
| } |
| |
| switch (yycount) |
| { |
| # define YYCASE_(N, S) \ |
| case N: \ |
| yyformat = S; \ |
| break |
| YYCASE_(0, YY_("syntax error")); |
| YYCASE_(1, YY_("syntax error, unexpected %s")); |
| YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); |
| YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); |
| YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); |
| YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); |
| # undef YYCASE_ |
| } |
| |
| { |
| YYSIZE_T yysize1 = yysize + yystrlen (yyformat); |
| if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) |
| return 2; |
| yysize = yysize1; |
| } |
| |
| if (*yymsg_alloc < yysize) |
| { |
| *yymsg_alloc = 2 * yysize; |
| if (! (yysize <= *yymsg_alloc |
| && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) |
| *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; |
| return 1; |
| } |
| |
| /* Avoid sprintf, as that infringes on the user's name space. |
| Don't have undefined behavior even if the translation |
| produced a string with the wrong number of "%s"s. */ |
| { |
| char *yyp = *yymsg; |
| int yyi = 0; |
| while ((*yyp = *yyformat) != '\0') |
| if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) |
| { |
| yyp += yytnamerr (yyp, yyarg[yyi++]); |
| yyformat += 2; |
| } |
| else |
| { |
| yyp++; |
| yyformat++; |
| } |
| } |
| return 0; |
| } |
| #endif /* YYERROR_VERBOSE */ |
| |
| /*-----------------------------------------------. |
| | Release the memory associated to this symbol. | |
| `-----------------------------------------------*/ |
| |
| static void |
| yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, void *scanner, struct lys_module *module, struct lys_submodule *submodule, struct unres_schema *unres, struct lys_array_size *size_arrays, int read_all) |
| { |
| YYUSE (yyvaluep); |
| YYUSE (yylocationp); |
| YYUSE (scanner); |
| YYUSE (module); |
| YYUSE (submodule); |
| YYUSE (unres); |
| YYUSE (size_arrays); |
| YYUSE (read_all); |
| if (!yymsg) |
| yymsg = "Deleting"; |
| YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); |
| |
| YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN |
| switch (yytype) |
| { |
| case 111: /* tmp_string */ |
| |
| { free((((*yyvaluep).p_str)) ? *((*yyvaluep).p_str) : NULL); } |
| |
| break; |
| |
| case 130: /* tmp_identifier_arg_str */ |
| |
| { free(((*yyvaluep).str)); } |
| |
| break; |
| |
| case 179: /* typedef_arg_str */ |
| |
| { if (read_all) { |
| yang_delete_type(module, (struct yang_type *)((*yyvaluep).nodes).node.ptr_tpdf->type.der); |
| } |
| } |
| |
| break; |
| |
| case 195: /* pattern_arg_str */ |
| |
| { free(((*yyvaluep).str)); } |
| |
| break; |
| |
| case 243: /* leaf_arg_str */ |
| |
| { if (read_all) { |
| yang_delete_type(module, (struct yang_type *)((*yyvaluep).nodes).node.ptr_leaf->type.der); |
| } |
| } |
| |
| break; |
| |
| case 248: /* leaf_list_arg_str */ |
| |
| { if (read_all) { |
| yang_delete_type(module, (struct yang_type *)((*yyvaluep).nodes).node.ptr_leaf->type.der); |
| } |
| } |
| |
| break; |
| |
| case 344: /* deviation_opt_stmt */ |
| |
| { if (read_all) { |
| ly_set_free(((*yyvaluep).nodes).deviation->dflt_check); |
| free(((*yyvaluep).nodes).deviation); |
| } |
| } |
| |
| break; |
| |
| case 359: /* deviate_replace_stmtsep */ |
| |
| { if (read_all && ((*yyvaluep).nodes).deviation->deviate->type) { |
| yang_delete_type(module, (struct yang_type *)((*yyvaluep).nodes).deviation->deviate->type->der); |
| } |
| } |
| |
| break; |
| |
| |
| default: |
| break; |
| } |
| YY_IGNORE_MAYBE_UNINITIALIZED_END |
| } |
| |
| |
| |
| |
| /*----------. |
| | yyparse. | |
| `----------*/ |
| |
| int |
| yyparse (void *scanner, struct lys_module *module, struct lys_submodule *submodule, struct unres_schema *unres, struct lys_array_size *size_arrays, int read_all) |
| { |
| /* The lookahead symbol. */ |
| int yychar; |
| char *s = NULL, *tmp_s = NULL; |
| struct lys_include inc; |
| struct lys_module *trg = NULL; |
| struct lys_node *tpdf_parent = NULL, *data_node = NULL; |
| void *actual = NULL; |
| struct lys_node_uses *refine_parent = NULL; |
| int config_inherit = 0, actual_type = 0; |
| int64_t cnt_val; |
| int read_string = read_all; |
| void *yang_type = NULL; |
| |
| |
| /* The semantic value of the lookahead symbol. */ |
| /* Default value used for initialization, for pacifying older GCCs |
| or non-GCC compilers. */ |
| YY_INITIAL_VALUE (static YYSTYPE yyval_default;) |
| YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); |
| |
| /* Location data for the lookahead symbol. */ |
| static YYLTYPE yyloc_default |
| # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL |
| = { 1, 1, 1, 1 } |
| # endif |
| ; |
| YYLTYPE yylloc = yyloc_default; |
| |
| /* Number of syntax errors so far. */ |
| int yynerrs; |
| |
| int yystate; |
| /* Number of tokens to shift before error messages enabled. */ |
| int yyerrstatus; |
| |
| /* The stacks and their tools: |
| 'yyss': related to states. |
| 'yyvs': related to semantic values. |
| 'yyls': related to locations. |
| |
| Refer to the stacks through separate pointers, to allow yyoverflow |
| to reallocate them elsewhere. */ |
| |
| /* The state stack. */ |
| yytype_int16 yyssa[YYINITDEPTH]; |
| yytype_int16 *yyss; |
| yytype_int16 *yyssp; |
| |
| /* The semantic value stack. */ |
| YYSTYPE yyvsa[YYINITDEPTH]; |
| YYSTYPE *yyvs; |
| YYSTYPE *yyvsp; |
| |
| /* The location stack. */ |
| YYLTYPE yylsa[YYINITDEPTH]; |
| YYLTYPE *yyls; |
| YYLTYPE *yylsp; |
| |
| /* The locations where the error started and ended. */ |
| YYLTYPE yyerror_range[3]; |
| |
| YYSIZE_T yystacksize; |
| |
| int yyn; |
| int yyresult; |
| /* Lookahead token as an internal (translated) token number. */ |
| int yytoken = 0; |
| /* The variables used to return semantic value and location from the |
| action routines. */ |
| YYSTYPE yyval; |
| YYLTYPE yyloc; |
| |
| #if YYERROR_VERBOSE |
| /* Buffer for error messages, and its allocated size. */ |
| char yymsgbuf[128]; |
| char *yymsg = yymsgbuf; |
| YYSIZE_T yymsg_alloc = sizeof yymsgbuf; |
| #endif |
| |
| #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) |
| |
| /* The number of symbols on the RHS of the reduced rule. |
| Keep to zero when no symbol should be popped. */ |
| int yylen = 0; |
| |
| yyssp = yyss = yyssa; |
| yyvsp = yyvs = yyvsa; |
| yylsp = yyls = yylsa; |
| yystacksize = YYINITDEPTH; |
| |
| YYDPRINTF ((stderr, "Starting parse\n")); |
| |
| yystate = 0; |
| yyerrstatus = 0; |
| yynerrs = 0; |
| yychar = YYEMPTY; /* Cause a token to be read. */ |
| |
| /* User initialization code. */ |
| |
| { yylloc.last_column = 0; } |
| |
| |
| yylsp[0] = yylloc; |
| goto yysetstate; |
| |
| /*------------------------------------------------------------. |
| | yynewstate -- Push a new state, which is found in yystate. | |
| `------------------------------------------------------------*/ |
| 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: |
| *yyssp = yystate; |
| |
| if (yyss + yystacksize - 1 <= yyssp) |
| { |
| /* Get the current used size of the three stacks, in elements. */ |
| YYSIZE_T yysize = yyssp - yyss + 1; |
| |
| #ifdef yyoverflow |
| { |
| /* Give user a chance to reallocate the stack. Use copies of |
| these so that the &'s don't force the real ones into |
| memory. */ |
| YYSTYPE *yyvs1 = yyvs; |
| yytype_int16 *yyss1 = yyss; |
| YYLTYPE *yyls1 = yyls; |
| |
| /* Each stack pointer address is followed by the size of the |
| data in use in that stack, in bytes. This used to be a |
| conditional around just the two extra args, but that might |
| be undefined if yyoverflow is a macro. */ |
| yyoverflow (YY_("memory exhausted"), |
| &yyss1, yysize * sizeof (*yyssp), |
| &yyvs1, yysize * sizeof (*yyvsp), |
| &yyls1, yysize * sizeof (*yylsp), |
| &yystacksize); |
| |
| yyls = yyls1; |
| yyss = yyss1; |
| yyvs = yyvs1; |
| } |
| #else /* no yyoverflow */ |
| # ifndef YYSTACK_RELOCATE |
| goto yyexhaustedlab; |
| # else |
| /* Extend the stack our own way. */ |
| if (YYMAXDEPTH <= yystacksize) |
| goto yyexhaustedlab; |
| yystacksize *= 2; |
| if (YYMAXDEPTH < yystacksize) |
| yystacksize = YYMAXDEPTH; |
| |
| { |
| yytype_int16 *yyss1 = yyss; |
| union yyalloc *yyptr = |
| (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); |
| if (! yyptr) |
| goto yyexhaustedlab; |
| YYSTACK_RELOCATE (yyss_alloc, yyss); |
| YYSTACK_RELOCATE (yyvs_alloc, yyvs); |
| YYSTACK_RELOCATE (yyls_alloc, yyls); |
| # undef YYSTACK_RELOCATE |
| if (yyss1 != yyssa) |
| YYSTACK_FREE (yyss1); |
| } |
| # endif |
| #endif /* no yyoverflow */ |
| |
| yyssp = yyss + yysize - 1; |
| yyvsp = yyvs + yysize - 1; |
| yylsp = yyls + yysize - 1; |
| |
| YYDPRINTF ((stderr, "Stack size increased to %lu\n", |
| (unsigned long int) yystacksize)); |
| |
| if (yyss + yystacksize - 1 <= yyssp) |
| YYABORT; |
| } |
| |
| YYDPRINTF ((stderr, "Entering state %d\n", yystate)); |
| |
| 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. */ |
| |
| /* First try to decide what to do without reference to lookahead token. */ |
| yyn = yypact[yystate]; |
| if (yypact_value_is_default (yyn)) |
| goto yydefault; |
| |
| /* Not known => get a lookahead token if don't already have one. */ |
| |
| /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ |
| if (yychar == YYEMPTY) |
| { |
| YYDPRINTF ((stderr, "Reading a token: ")); |
| yychar = yylex (&yylval, &yylloc, scanner); |
| } |
| |
| if (yychar <= YYEOF) |
| { |
| yychar = yytoken = YYEOF; |
| YYDPRINTF ((stderr, "Now at end of input.\n")); |
| } |
| else |
| { |
| yytoken = YYTRANSLATE (yychar); |
| YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); |
| } |
| |
| /* If the proper action on seeing token YYTOKEN is to reduce or to |
| detect an error, take that action. */ |
| yyn += yytoken; |
| if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) |
| goto yydefault; |
| yyn = yytable[yyn]; |
| if (yyn <= 0) |
| { |
| if (yytable_value_is_error (yyn)) |
| goto yyerrlab; |
| yyn = -yyn; |
| goto yyreduce; |
| } |
| |
| /* Count tokens shifted since error; after three, turn off error |
| status. */ |
| if (yyerrstatus) |
| yyerrstatus--; |
| |
| /* Shift the lookahead token. */ |
| YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); |
| |
| /* Discard the shifted token. */ |
| yychar = YYEMPTY; |
| |
| yystate = yyn; |
| YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN |
| *++yyvsp = yylval; |
| YY_IGNORE_MAYBE_UNINITIALIZED_END |
| *++yylsp = yylloc; |
| goto yynewstate; |
| |
| |
| /*-----------------------------------------------------------. |
| | yydefault -- do the default action for the current state. | |
| `-----------------------------------------------------------*/ |
| yydefault: |
| yyn = yydefact[yystate]; |
| if (yyn == 0) |
| goto yyerrlab; |
| goto yyreduce; |
| |
| |
| /*-----------------------------. |
| | yyreduce -- Do a reduction. | |
| `-----------------------------*/ |
| yyreduce: |
| /* yyn is the number of a rule to reduce with. */ |
| yylen = yyr2[yyn]; |
| |
| /* If YYLEN is nonzero, implement the default value of the action: |
| '$$ = $1'. |
| |
| Otherwise, the following line sets YYVAL to garbage. |
| This behavior is undocumented and Bison |
| users should not rely upon it. Assigning to YYVAL |
| unconditionally makes the parser a bit smaller, and it avoids a |
| GCC warning that YYVAL may be used uninitialized. */ |
| yyval = yyvsp[1-yylen]; |
| |
| /* Default location. */ |
| YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); |
| YY_REDUCE_PRINT (yyn); |
| switch (yyn) |
| { |
| case 3: |
| |
| { if (!submodule) { |
| /* update the size of the array, it can be smaller due to possible duplicities |
| * found in submodules */ |
| if (module->inc_size) { |
| module->inc = ly_realloc(module->inc, module->inc_size * sizeof *module->inc); |
| if (!module->inc) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (module->imp_size) { |
| module->imp = ly_realloc(module->imp, module->imp_size * sizeof *module->imp); |
| if (!module->imp) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| } |
| |
| break; |
| |
| case 4: |
| |
| { if (read_string) { |
| if (yyget_text(scanner)[0] == '"') { |
| char *tmp; |
| |
| s = malloc(yyget_leng(scanner) - 1 + 7 * yylval.i); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| if (!(tmp = yang_read_string(yyget_text(scanner) + 1, s, yyget_leng(scanner) - 2, 0, yylloc.first_column, (trg) ? trg->version : 0))) { |
| YYABORT; |
| } |
| s = tmp; |
| } else { |
| s = calloc(1, yyget_leng(scanner) - 1); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| memcpy(s, yyget_text(scanner) + 1, yyget_leng(scanner) - 2); |
| } |
| (yyval.p_str) = &s; |
| } else { |
| (yyval.p_str) = NULL; |
| } |
| } |
| |
| break; |
| |
| case 7: |
| |
| { if (read_string && (yyget_leng(scanner) > 2)) { |
| int length_s = strlen(s), length_tmp = yyget_leng(scanner); |
| char *tmp; |
| |
| tmp = realloc(s, length_s + length_tmp - 1); |
| if (!tmp) { |
| LOGMEM; |
| YYABORT; |
| } |
| s = tmp; |
| if (yyget_text(scanner)[0] == '"') { |
| if (!(tmp = yang_read_string(yyget_text(scanner) + 1, s, length_tmp - 2, length_s, yylloc.first_column, (trg) ? trg->version : 0))) { |
| YYABORT; |
| } |
| s = tmp; |
| } else { |
| memcpy(s + length_s, yyget_text(scanner) + 1, length_tmp - 2); |
| s[length_s + length_tmp - 2] = '\0'; |
| } |
| } |
| } |
| |
| break; |
| |
| case 9: |
| |
| { if (read_all) { |
| if (submodule) { |
| free(s); |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "module"); |
| YYABORT; |
| } |
| trg = module; |
| yang_read_common(trg,s,MODULE_KEYWORD); |
| s = NULL; |
| config_inherit = CONFIG_INHERIT_ENABLE; |
| } |
| } |
| |
| break; |
| |
| case 10: |
| |
| { if (read_all && !module->ns) { LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "namespace", "module"); YYABORT; } |
| if (read_all && !module->prefix) { LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "prefix", "module"); YYABORT; } |
| } |
| |
| break; |
| |
| case 12: |
| |
| { (yyval.i) = 0; } |
| |
| break; |
| |
| case 13: |
| |
| { if (read_all) { |
| if (yang_check_version(module, submodule, s, (yyvsp[-1].i))) { |
| YYABORT; |
| } |
| (yyval.i) = 1; |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 14: |
| |
| { if (read_all && yang_read_common(module, s, NAMESPACE_KEYWORD)) {YYABORT;} s=NULL; } |
| |
| break; |
| |
| case 15: |
| |
| { if (read_all && yang_read_prefix(module, NULL, s)) {YYABORT;} s=NULL; } |
| |
| break; |
| |
| case 16: |
| |
| { if (read_all) { |
| if (!submodule) { |
| free(s); |
| LOGVAL(LYE_SUBMODULE, LY_VLOG_NONE, NULL); |
| YYABORT; |
| } |
| trg = (struct lys_module *)submodule; |
| yang_read_common(trg,s,MODULE_KEYWORD); |
| s = NULL; |
| config_inherit = CONFIG_INHERIT_ENABLE; |
| } |
| } |
| |
| break; |
| |
| case 17: |
| |
| { if (read_all && !submodule->prefix) { |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "belongs-to", "submodule"); |
| YYABORT; |
| } |
| } |
| |
| break; |
| |
| case 19: |
| |
| { (yyval.i) = 0; } |
| |
| break; |
| |
| case 20: |
| |
| { if (read_all) { |
| if (yang_check_version(module, submodule, s, (yyvsp[-1].i))) { |
| YYABORT; |
| } |
| (yyval.i) = 1; |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 21: |
| |
| { if (read_all) { |
| if (submodule->prefix) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "belongs-to", "submodule"); |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 25: |
| |
| { if (read_all) { |
| if (size_arrays->imp) { |
| size_t size = (size_arrays->imp * sizeof *trg->imp) + sizeof(void*); |
| trg->imp = calloc(1, size); |
| if (!trg->imp) { |
| LOGMEM; |
| YYABORT; |
| } |
| /* set stop block for possible realloc */ |
| trg->imp[size_arrays->imp].module = (void*)0x1; |
| } |
| if (size_arrays->inc) { |
| size_t size = (size_arrays->inc * sizeof *trg->inc) + sizeof(void*); |
| trg->inc = calloc(1, size); |
| if (!trg->inc) { |
| LOGMEM; |
| YYABORT; |
| } |
| /* set stop block for possible realloc */ |
| trg->inc[size_arrays->inc].submodule = (void*)0x1; |
| } |
| } |
| } |
| |
| break; |
| |
| case 28: |
| |
| { |
| if (!read_all) { |
| size_arrays->imp++; |
| } else { |
| actual = &trg->imp[trg->imp_size]; |
| actual_type=IMPORT_KEYWORD; |
| } |
| } |
| |
| break; |
| |
| case 29: |
| |
| { if (read_all) { |
| (yyval.inc) = trg; |
| if (yang_fill_import(trg, actual, (yyvsp[-6].str))) { |
| YYABORT; |
| } |
| trg = (yyval.inc); |
| config_inherit = CONFIG_INHERIT_ENABLE; |
| } |
| } |
| |
| break; |
| |
| case 30: |
| |
| { (yyval.i) = 0; } |
| |
| break; |
| |
| case 31: |
| |
| { if (read_all && yang_read_prefix(trg, actual, s)) { |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.i) = (yyvsp[-1].i); |
| } |
| |
| break; |
| |
| case 32: |
| |
| { if (read_all) { |
| if (trg->version != 2) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "description"); |
| } |
| if (yang_read_description(trg, actual, s, "import")) { |
| YYABORT; |
| } |
| } |
| s = NULL; |
| (yyval.i) = (yyvsp[-1].i); |
| } |
| |
| break; |
| |
| case 33: |
| |
| { if (read_all) { |
| if (trg->version != 2) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "reference"); |
| } |
| if (yang_read_reference(trg, actual, s, "import")) { |
| YYABORT; |
| } |
| } |
| s = NULL; |
| (yyval.i) = (yyvsp[-1].i); |
| } |
| |
| break; |
| |
| case 34: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].i)) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "revision-date", "import"); |
| YYABORT; |
| } |
| } |
| (yyval.i) = 1; |
| } |
| |
| break; |
| |
| case 35: |
| |
| { (yyval.str) = s; s = NULL; } |
| |
| break; |
| |
| case 36: |
| |
| { if (read_all) { |
| memset(&inc, 0, sizeof inc); |
| actual = &inc; |
| actual_type = INCLUDE_KEYWORD; |
| } |
| else { |
| size_arrays->inc++; |
| } |
| } |
| |
| break; |
| |
| case 37: |
| |
| { if (read_all) { |
| (yyval.inc) = trg; |
| int rc; |
| rc = yang_fill_include(module, submodule, (yyvsp[-3].str), actual, unres); |
| if (!rc) { |
| s = NULL; |
| trg = (yyval.inc); |
| config_inherit = CONFIG_INHERIT_ENABLE; |
| } else if (rc == -1) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 40: |
| |
| { (yyval.i) = 0; } |
| |
| break; |
| |
| case 41: |
| |
| { if (read_all) { |
| if (trg->version != 2) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "description"); |
| } |
| if (yang_read_description(trg, actual, s, "import")) { |
| YYABORT; |
| } |
| } |
| s = NULL; |
| (yyval.i) = (yyvsp[-1].i); |
| } |
| |
| break; |
| |
| case 42: |
| |
| { if (read_all) { |
| if (trg->version != 2) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "reference"); |
| } |
| if (yang_read_reference(trg, actual, s, "import")) { |
| YYABORT; |
| } |
| } |
| s = NULL; |
| (yyval.i) = (yyvsp[-1].i); |
| } |
| |
| break; |
| |
| case 43: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].i)) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "revision-date", "include"); |
| YYABORT; |
| } |
| } |
| (yyval.i) = 1; |
| } |
| |
| break; |
| |
| case 44: |
| |
| { if (read_all) { |
| if (actual_type==IMPORT_KEYWORD) { |
| memcpy(((struct lys_import *)actual)->rev, s, LY_REV_SIZE-1); |
| } else { // INCLUDE KEYWORD |
| memcpy(((struct lys_include *)actual)->rev, s, LY_REV_SIZE-1); |
| } |
| free(s); |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 45: |
| |
| { if (read_all) { |
| if (!ly_strequal(s, submodule->belongsto->name, 0)) { |
| LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "belongs-to"); |
| free(s); |
| YYABORT; |
| } |
| free(s); |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 46: |
| |
| { if (read_all) { |
| if (yang_read_prefix(trg, NULL, s)) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 50: |
| |
| { if (read_all && yang_read_common(trg, s, ORGANIZATION_KEYWORD)) {YYABORT;} s=NULL; } |
| |
| break; |
| |
| case 51: |
| |
| { if (read_all && yang_read_common(trg, s, CONTACT_KEYWORD)) {YYABORT;} s=NULL; } |
| |
| break; |
| |
| case 52: |
| |
| { if (read_all && yang_read_description(trg, NULL, s, NULL)) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 53: |
| |
| { if (read_all && yang_read_reference(trg, NULL, s, NULL)) { |
| YYABORT; |
| } |
| s=NULL; |
| } |
| |
| break; |
| |
| case 58: |
| |
| { if (read_all && size_arrays->rev) { |
| trg->rev = calloc(size_arrays->rev, sizeof *trg->rev); |
| if (!trg->rev) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 60: |
| |
| { if (read_all) { |
| if(!(actual=yang_read_revision(trg,s))) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->rev++; |
| } |
| } |
| |
| break; |
| |
| case 63: |
| |
| { actual_type = REVISION_KEYWORD; } |
| |
| break; |
| |
| case 66: |
| |
| { if (read_all && yang_read_description(trg, actual, s, "revision")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 67: |
| |
| { if (read_all && yang_read_reference(trg, actual, s, "revision")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 68: |
| |
| { if (read_all) { |
| s = strdup(yyget_text(scanner)); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 70: |
| |
| { if (read_all && lyp_check_date(s)) { |
| free(s); |
| YYABORT; |
| } |
| } |
| |
| break; |
| |
| case 71: |
| |
| { if (read_all) { |
| if (size_arrays->features) { |
| trg->features = calloc(size_arrays->features,sizeof *trg->features); |
| if (!trg->features) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->ident) { |
| trg->ident = calloc(size_arrays->ident,sizeof *trg->ident); |
| if (!trg->ident) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->augment) { |
| trg->augment = calloc(size_arrays->augment,sizeof *trg->augment); |
| if (!trg->augment) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->tpdf) { |
| trg->tpdf = calloc(size_arrays->tpdf, sizeof *trg->tpdf); |
| if (!trg->tpdf) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->deviation) { |
| trg->deviation = calloc(size_arrays->deviation, sizeof *trg->deviation); |
| if (!trg->deviation) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| actual = NULL; |
| } |
| } |
| |
| break; |
| |
| case 72: |
| |
| { actual = NULL; } |
| |
| break; |
| |
| case 76: |
| |
| { if (!read_all) { size_arrays->tpdf++; } } |
| |
| break; |
| |
| case 79: |
| |
| { if (!read_all) { |
| size_arrays->augment++; |
| } |
| } |
| |
| break; |
| |
| case 82: |
| |
| { if (!read_all) { size_arrays->deviation++; } } |
| |
| break; |
| |
| case 83: |
| |
| { if (read_all) { |
| /* we have the following supported (hardcoded) extensions: */ |
| /* ietf-netconf's get-filter-element-attributes */ |
| if (!strcmp(module->ns, LY_NSNC) && !strcmp(s, "get-filter-element-attributes")) { |
| LOGDBG("NETCONF filter extension found"); |
| /* NACM's default-deny-write and default-deny-all */ |
| } else if (!strcmp(module->ns, LY_NSNACM) && |
| (!strcmp(s, "default-deny-write") || !strcmp(s, "default-deny-all"))) { |
| LOGDBG("NACM extension found"); |
| /* other extensions are not supported, so inform about such an extension */ |
| } else { |
| LOGWRN("Not supported \"%s\" extension statement found, ignoring.", s); |
| } |
| free(s); |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 87: |
| |
| { (yyval.uint) = 0; } |
| |
| break; |
| |
| case 88: |
| |
| { if ((yyvsp[-1].uint) & EXTENSION_ARG) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "argument", "extension"); |
| YYABORT; |
| } |
| (yyvsp[-1].uint) |= EXTENSION_ARG; |
| (yyval.uint) = (yyvsp[-1].uint); |
| } |
| |
| break; |
| |
| case 89: |
| |
| { if ((yyvsp[-1].uint) & EXTENSION_STA) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "status", "extension"); |
| YYABORT; |
| } |
| (yyvsp[-1].uint) |= EXTENSION_STA; |
| (yyval.uint) = (yyvsp[-1].uint); |
| } |
| |
| break; |
| |
| case 90: |
| |
| { if (read_all) { |
| free(s); |
| s= NULL; |
| } |
| if ((yyvsp[-1].uint) & EXTENSION_DSC) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "description", "extension"); |
| YYABORT; |
| } |
| (yyvsp[-1].uint) |= EXTENSION_DSC; |
| (yyval.uint) = (yyvsp[-1].uint); |
| } |
| |
| break; |
| |
| case 91: |
| |
| { if (read_all) { |
| free(s); |
| s = NULL; |
| } |
| if ((yyvsp[-1].uint) & EXTENSION_REF) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "reference", "extension"); |
| YYABORT; |
| } |
| (yyvsp[-1].uint) |= EXTENSION_REF; |
| (yyval.uint) = (yyvsp[-1].uint); |
| } |
| |
| break; |
| |
| case 92: |
| |
| { free(s); s = NULL; } |
| |
| break; |
| |
| case 99: |
| |
| { if (read_all) { |
| if (strcmp(s, "true") && strcmp(s, "false")) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, s); |
| free(s); |
| YYABORT; |
| } |
| free(s); |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 100: |
| |
| { (yyval.i) = (yyvsp[-1].i); } |
| |
| break; |
| |
| case 101: |
| |
| { read_string = (read_string) ? LY_READ_ONLY_SIZE : LY_READ_ALL; } |
| |
| break; |
| |
| case 102: |
| |
| { read_string = (read_string) ? LY_READ_ONLY_SIZE : LY_READ_ALL; } |
| |
| break; |
| |
| case 103: |
| |
| { (yyval.i) = (yyvsp[-2].i); } |
| |
| break; |
| |
| case 104: |
| |
| { (yyval.i) = LYS_STATUS_CURR; } |
| |
| break; |
| |
| case 105: |
| |
| { (yyval.i) = LYS_STATUS_OBSLT; } |
| |
| break; |
| |
| case 106: |
| |
| { (yyval.i) = LYS_STATUS_DEPRC; } |
| |
| break; |
| |
| case 107: |
| |
| { if (read_string) { |
| if (!strcmp(s, "current")) { |
| (yyval.i) = LYS_STATUS_CURR; |
| } else if (!strcmp(s, "obsolete")) { |
| (yyval.i) = LYS_STATUS_OBSLT; |
| } else if (!strcmp(s, "deprecated")) { |
| (yyval.i) = LYS_STATUS_DEPRC; |
| } else { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, s); |
| free(s); |
| YYABORT; |
| } |
| free(s); |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 108: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_feature(trg, s))) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->features++; |
| } |
| } |
| |
| break; |
| |
| case 112: |
| |
| { if (read_all) { |
| if (size_arrays->node[size_arrays->next].if_features) { |
| ((struct lys_feature*)actual)->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, |
| sizeof *((struct lys_feature*)actual)->iffeature); |
| if (!((struct lys_feature*)actual)->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (store_flags((struct lys_node *)actual, size_arrays->node[size_arrays->next].flags, CONFIG_INHERIT_DISABLE)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.i) = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 113: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, actual, s, unres, FEATURE_KEYWORD)) {YYABORT;} |
| s=NULL; |
| /* check for circular dependencies */ |
| if (((struct lys_feature *)actual)->iffeature_size) { |
| if (unres_schema_add_node(module, unres, (struct lys_feature *)actual, UNRES_FEATURE, NULL) == -1) { |
| YYABORT; |
| } |
| } |
| } else { |
| size_arrays->node[(yyvsp[-1].i)].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 114: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].i)].flags, LYS_STATUS_MASK, "status", "feature", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 115: |
| |
| { if (read_all && yang_read_description(trg, actual, s, "feature")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 116: |
| |
| { if (read_all && yang_read_reference(trg, actual, s, "feature")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 118: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_identity(trg,s))) {YYABORT;} |
| s = NULL; |
| } else { |
| size_arrays->ident++; |
| } |
| } |
| |
| break; |
| |
| case 122: |
| |
| { if (read_all) { |
| struct lys_ident *ident = actual; |
| |
| if (size_arrays->node[size_arrays->next].base > 1 && (trg->version < 2)) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "base", "identity"); |
| YYABORT; |
| } |
| |
| if ((trg->version < 2) && size_arrays->node[size_arrays->next].if_features) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "if-feature", "identity"); |
| YYABORT; |
| } |
| |
| if (size_arrays->node[size_arrays->next].base) { |
| ident->base_size = 0; |
| ident->base = calloc(size_arrays->node[size_arrays->next].base, sizeof *ident->base); |
| if (!ident->base) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| |
| if (size_arrays->node[size_arrays->next].if_features) { |
| ident->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *ident->iffeature); |
| if (!ident->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| |
| ident->flags |= size_arrays->node[size_arrays->next].flags; |
| size_arrays->next++; |
| } else { |
| (yyval.i) = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 123: |
| |
| { if (read_all) { |
| if (yang_read_base(trg, actual, s, unres)) { |
| YYABORT; |
| } |
| s = NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].i)].base++; |
| } |
| } |
| |
| break; |
| |
| case 124: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, actual, s, unres, IDENTITY_KEYWORD)) { |
| YYABORT; |
| } |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].i)].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 125: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].i)].flags, LYS_STATUS_MASK, "status", "identity", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 126: |
| |
| { if (read_all && yang_read_description(trg, actual, s, "identity")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 127: |
| |
| { if (read_all && yang_read_reference(trg, actual, s, "identity")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 129: |
| |
| { if (read_all) { |
| tpdf_parent = actual; |
| if (!(actual = yang_read_typedef(trg, actual, s))) { |
| YYABORT; |
| } |
| s = NULL; |
| actual_type = TYPEDEF_KEYWORD; |
| (yyval.nodes).node.ptr_tpdf = actual; |
| } |
| } |
| |
| break; |
| |
| case 130: |
| |
| { if (read_all) { |
| if (!((yyvsp[-1].nodes).node.flag & LYS_TYPE_DEF)) { |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "type", "typedef"); |
| YYABORT; |
| } |
| if (unres_schema_add_node(trg, unres, &(yyvsp[-1].nodes).node.ptr_tpdf->type, UNRES_TYPE_DER_TPDF, tpdf_parent) == -1) { |
| lydict_remove(trg->ctx, ((struct yang_type *)(yyvsp[-1].nodes).node.ptr_tpdf->type.der)->name); |
| free((yyvsp[-1].nodes).node.ptr_tpdf->type.der); |
| (yyvsp[-1].nodes).node.ptr_tpdf->type.der = NULL; |
| YYABORT; |
| } |
| actual = tpdf_parent; |
| |
| /* check default value */ |
| if (unres_schema_add_node(trg, unres, &(yyvsp[-1].nodes).node.ptr_tpdf->type, UNRES_TYPE_DFLT, |
| (struct lys_node *)(&(yyvsp[-1].nodes).node.ptr_tpdf->dflt)) == -1) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 131: |
| |
| { (yyval.nodes).node.ptr_tpdf = actual; |
| (yyval.nodes).node.flag = 0; |
| } |
| |
| break; |
| |
| case 132: |
| |
| { if (read_all) { |
| actual = (yyvsp[-2].nodes).node.ptr_tpdf; |
| actual_type = TYPEDEF_KEYWORD; |
| (yyvsp[-2].nodes).node.flag |= LYS_TYPE_DEF; |
| (yyval.nodes) = (yyvsp[-2].nodes); |
| } |
| } |
| |
| break; |
| |
| case 133: |
| |
| { if (read_all && yang_read_units(trg, (yyvsp[-1].nodes).node.ptr_tpdf, s, TYPEDEF_KEYWORD)) {YYABORT;} s = NULL; } |
| |
| break; |
| |
| case 134: |
| |
| { if (read_all && yang_read_default(trg, (yyvsp[-1].nodes).node.ptr_tpdf, s, TYPEDEF_KEYWORD)) { |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| |
| break; |
| |
| case 135: |
| |
| { if (read_all) { |
| if (yang_check_flags((uint16_t*)&(yyvsp[-1].nodes).node.ptr_tpdf->flags, LYS_STATUS_MASK, "status", "typedef", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 136: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_tpdf, s, "typedef")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 137: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_tpdf, s, "typedef")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 139: |
| |
| { if (read_all) { |
| if(!(actual = yang_read_type(trg, actual, s, actual_type))) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 145: |
| |
| { if (read_all) { |
| if (size_arrays->node[size_arrays->next].uni && size_arrays->node[size_arrays->next].pattern) { |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid restriction in type \"%s\".", ((struct yang_type *)actual)->type->parent->name); |
| YYABORT; |
| } |
| if (size_arrays->node[size_arrays->next].pattern) { |
| ((struct yang_type *)actual)->type->info.str.patterns = calloc(size_arrays->node[size_arrays->next].pattern, sizeof(struct lys_restr)); |
| if (!((struct yang_type *)actual)->type->info.str.patterns) { |
| LOGMEM; |
| YYABORT; |
| } |
| ((struct yang_type *)actual)->base = LY_TYPE_STRING; |
| } |
| if (size_arrays->node[size_arrays->next].uni) { |
| if (strcmp(((struct yang_type *)actual)->name, "union")) { |
| /* type can be a substatement only in "union" type, not in derived types */ |
| LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, "type", "derived type"); |
| YYABORT; |
| } |
| ((struct yang_type *)actual)->type->info.uni.types = calloc(size_arrays->node[size_arrays->next].uni, sizeof(struct lys_type)); |
| if (!((struct yang_type *)actual)->type->info.uni.types) { |
| LOGMEM; |
| YYABORT; |
| } |
| ((struct yang_type *)actual)->base = LY_TYPE_UNION; |
| } |
| size_arrays->next++; |
| } else { |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| (yyval.uint) = size_arrays->size-1; |
| } |
| } |
| |
| break; |
| |
| case 146: |
| |
| { if (read_all && yang_read_require_instance(actual, (yyvsp[0].i))) { |
| YYABORT; |
| } |
| } |
| |
| break; |
| |
| case 147: |
| |
| { if (read_all) { |
| /* leafref_specification */ |
| if (yang_read_leafref_path(trg, actual, s)) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 148: |
| |
| { if (read_all) { |
| /* identityref_specification */ |
| if (yang_read_identyref(trg, actual, s , unres)) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 150: |
| |
| { if (!read_all) { |
| size_arrays->node[(yyvsp[-1].uint)].pattern++; /* count of pattern*/ |
| } |
| } |
| |
| break; |
| |
| case 153: |
| |
| { if (read_all) { |
| actual = (yyvsp[-2].v); |
| } else { |
| size_arrays->node[(yyvsp[-3].uint)].uni++; /* count of union*/ |
| } |
| } |
| |
| break; |
| |
| case 154: |
| |
| { if (read_all) { |
| struct yang_type *typ; |
| struct lys_type *type; |
| |
| typ = (struct yang_type *)actual; |
| (yyval.v) = actual; |
| type = &typ->type->info.uni.types[typ->type->info.uni.count++]; |
| type->parent = typ->type->parent; |
| actual = type; |
| actual_type = UNION_KEYWORD; |
| } |
| } |
| |
| break; |
| |
| case 155: |
| |
| { if (read_all && yang_read_fraction(actual, (yyvsp[-1].uint))) { |
| YYABORT; |
| } |
| } |
| |
| break; |
| |
| case 156: |
| |
| { (yyval.uint) = (yyvsp[-1].uint); } |
| |
| break; |
| |
| case 157: |
| |
| { if (read_all) { |
| char *endptr = NULL; |
| unsigned long val; |
| errno = 0; |
| |
| val = strtoul(s, &endptr, 10); |
| if (*endptr || s[0] == '-' || errno || val == 0 || val > UINT32_MAX) { |
| LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "fraction-digits"); |
| free(s); |
| s = NULL; |
| YYABORT; |
| } |
| (yyval.uint) = (uint32_t) val; |
| free(s); |
| s =NULL; |
| } |
| } |
| |
| break; |
| |
| case 158: |
| |
| { actual = (yyvsp[-2].v); |
| actual_type = TYPE_KEYWORD; |
| } |
| |
| break; |
| |
| case 159: |
| |
| { if (read_all) { |
| (yyval.v) = actual; |
| if (!(actual = yang_read_length(trg, actual, s))) { |
| YYABORT; |
| } |
| actual_type = LENGTH_KEYWORD; |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 162: |
| |
| { switch (actual_type) { |
| case MUST_KEYWORD: |
| (yyval.str) = "must"; |
| break; |
| case LENGTH_KEYWORD: |
| (yyval.str) = "length"; |
| break; |
| case RANGE_KEYWORD: |
| (yyval.str) = "range"; |
| break; |
| } |
| } |
| |
| break; |
| |
| case 163: |
| |
| { if (read_all && yang_read_message(trg, actual, s, (yyvsp[-1].str), ERROR_MESSAGE_KEYWORD)) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 164: |
| |
| { if (read_all && yang_read_message(trg, actual, s, (yyvsp[-1].str), ERROR_APP_TAG_KEYWORD)) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 165: |
| |
| { if (read_all && yang_read_description(trg, actual, s, (yyvsp[-1].str))) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 166: |
| |
| { if (read_all && yang_read_reference(trg, actual, s, (yyvsp[-1].str))) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 167: |
| |
| { if (read_all) { |
| if (yang_read_pattern(trg, actual, (yyvsp[-2].str), (yyvsp[-1].ch))) { |
| YYABORT; |
| } |
| actual = yang_type; |
| actual_type = TYPE_KEYWORD; |
| } |
| } |
| |
| break; |
| |
| case 168: |
| |
| { if (read_all) { |
| struct yang_type *tmp = (struct yang_type *)actual; |
| |
| yang_type = actual; |
| actual = &tmp->type->info.str.patterns[tmp->type->info.str.pat_count]; |
| tmp->type->info.str.pat_count++; |
| (yyval.str) = s; |
| s = NULL; |
| } else { |
| (yyval.str) = NULL; |
| } |
| } |
| |
| break; |
| |
| case 169: |
| |
| { (yyval.ch) = 0x06; } |
| |
| break; |
| |
| case 170: |
| |
| { (yyval.ch) = (yyvsp[-1].ch); } |
| |
| break; |
| |
| case 171: |
| |
| { (yyval.ch) = 0x06; /* ACK */ } |
| |
| break; |
| |
| case 172: |
| |
| { if (read_all) { |
| if (trg->version < 2) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "modifier"); |
| YYABORT; |
| } |
| if ((yyvsp[-1].ch) != 0x06) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "modifier", "pattern"); |
| YYABORT; |
| } |
| (yyval.ch) = (yyvsp[0].ch); |
| } |
| } |
| |
| break; |
| |
| case 173: |
| |
| { if (read_all && yang_read_message(trg, actual, s, "pattern", ERROR_MESSAGE_KEYWORD)) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 174: |
| |
| { if (read_all && yang_read_message(trg, actual, s, "pattern", ERROR_APP_TAG_KEYWORD)) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 175: |
| |
| { if (read_all && yang_read_description(trg, actual, s, "pattern")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 176: |
| |
| { if (read_all && yang_read_reference(trg, actual, s, "pattern")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 177: |
| |
| { if (read_all) { |
| if (!strcmp(s, "invert-match")) { |
| (yyval.ch) = 0x15; |
| free(s); |
| s = NULL; |
| } else { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, s); |
| free(s); |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 178: |
| |
| { if (read_all) { |
| if (size_arrays->node[size_arrays->next].enm) { |
| ((struct yang_type *)actual)->type->info.enums.enm = calloc(size_arrays->node[size_arrays->next++].enm, sizeof(struct lys_type_enum)); |
| if (!((struct yang_type *)actual)->type->info.enums.enm) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| ((struct yang_type *)actual)->base = LY_TYPE_ENUM; |
| cnt_val = 0; |
| } else { |
| cnt_val = size_arrays->size; /* hack store index of node array */ |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 182: |
| |
| { if (read_all) { |
| if (yang_check_enum(yang_type, actual, &cnt_val, actual_type)) { |
| YYABORT; |
| } |
| actual = yang_type; |
| actual_type = TYPE_KEYWORD; |
| } else { |
| size_arrays->node[cnt_val].enm++; /* count of enum*/ |
| } |
| } |
| |
| break; |
| |
| case 183: |
| |
| { if (read_all) { |
| yang_type = actual; |
| if (!(actual = yang_read_enum(trg, actual, s))) { |
| YYABORT; |
| } |
| s = NULL; |
| actual_type = 0; |
| } |
| } |
| |
| break; |
| |
| case 186: |
| |
| { if (read_all) { |
| if ((trg->version < 2) && size_arrays->node[size_arrays->next].if_features) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "if-feature", "enum"); |
| YYABORT; |
| } |
| |
| if (size_arrays->node[size_arrays->next].if_features) { |
| ((struct lys_type_enum *)actual)->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, |
| sizeof *((struct lys_type_enum *)actual)->iffeature); |
| if (!((struct lys_type_enum *)actual)->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| |
| size_arrays->next++; |
| } else { |
| (yyval.i) = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 187: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, yang_type, s, unres, ENUM_KEYWORD)) { |
| YYABORT; |
| } |
| s = NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].i)].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 188: |
| |
| { /* actual_type - it is used to check value of enum statement*/ |
| if (read_all) { |
| if (actual_type) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "value", "enum"); |
| YYABORT; |
| } |
| actual_type = 1; |
| } |
| } |
| |
| break; |
| |
| case 189: |
| |
| { if (read_all) { |
| if (yang_check_flags((uint16_t*)&((struct lys_type_enum *)actual)->flags, LYS_STATUS_MASK, "status", "enum", (yyvsp[0].i), 1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 190: |
| |
| { if (read_all && yang_read_description(trg, actual, s, "enum")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 191: |
| |
| { if (read_all && yang_read_reference(trg, actual, s, "enum")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 192: |
| |
| { if (read_all) { |
| ((struct lys_type_enum *)actual)->value = (yyvsp[-1].i); |
| |
| /* keep the highest enum value for automatic increment */ |
| if ((yyvsp[-1].i) >= cnt_val) { |
| cnt_val = (yyvsp[-1].i); |
| cnt_val++; |
| } |
| } |
| } |
| |
| break; |
| |
| case 193: |
| |
| { (yyval.i) = (yyvsp[-1].i); } |
| |
| break; |
| |
| case 194: |
| |
| { if (read_all) { |
| /* convert it to int32_t */ |
| int64_t val; |
| char *endptr; |
| |
| val = strtoll(s, &endptr, 10); |
| if (val < INT32_MIN || val > INT32_MAX || *endptr) { |
| LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "value"); |
| free(s); |
| YYABORT; |
| } |
| free(s); |
| s = NULL; |
| (yyval.i) = (int32_t) val; |
| } |
| } |
| |
| break; |
| |
| case 195: |
| |
| { actual = (yyvsp[-1].v); |
| actual_type = RANGE_KEYWORD; |
| } |
| |
| break; |
| |
| case 199: |
| |
| { (yyval.i) = (yyvsp[-1].i); } |
| |
| break; |
| |
| case 200: |
| |
| { (yyval.i) = 1; } |
| |
| break; |
| |
| case 201: |
| |
| { (yyval.i) = -1; } |
| |
| break; |
| |
| case 202: |
| |
| { if (read_all) { |
| if (!strcmp(s,"true")) { |
| (yyval.i) = 1; |
| } else if (!strcmp(s,"false")) { |
| (yyval.i) = -1; |
| } else { |
| LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "require-instance"); |
| free(s); |
| YYABORT; |
| } |
| free(s); |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 203: |
| |
| { if (read_all) { |
| if (size_arrays->node[size_arrays->next].bit) { |
| ((struct yang_type *)actual)->type->info.bits.bit = calloc(size_arrays->node[size_arrays->next++].bit, sizeof(struct lys_type_bit)); |
| if (!((struct yang_type *)actual)->type->info.bits.bit) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| ((struct yang_type *)actual)->base = LY_TYPE_BITS; |
| cnt_val = 0; |
| } else { |
| cnt_val = size_arrays->size; /* hack store index of node array */ |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 207: |
| |
| { if (read_all) { |
| if (yang_check_bit(yang_type, actual, &cnt_val, actual_type)) { |
| YYABORT; |
| } |
| actual = yang_type; |
| } else { |
| size_arrays->node[cnt_val].bit++; /* count of bit*/ |
| } |
| } |
| |
| break; |
| |
| case 208: |
| |
| { if (read_all) { |
| yang_type = actual; |
| if (!(actual = yang_read_bit(trg, actual, s))) { |
| YYABORT; |
| } |
| s = NULL; |
| actual_type = 0; |
| } |
| } |
| |
| break; |
| |
| case 211: |
| |
| { if (read_all) { |
| if ((trg->version < 2) && size_arrays->node[size_arrays->next].if_features) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "if-feature", "bit"); |
| YYABORT; |
| } |
| |
| if (size_arrays->node[size_arrays->next].if_features) { |
| ((struct lys_type_bit *)actual)->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, |
| sizeof *((struct lys_type_bit *)actual)->iffeature); |
| if (!((struct lys_type_bit *)actual)->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| |
| size_arrays->next++; |
| } else { |
| (yyval.i) = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 212: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, yang_type, s, unres, BIT_KEYWORD)) { |
| YYABORT; |
| } |
| s = NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].i)].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 213: |
| |
| { /* actual_type - it is used to check position of bit statement*/ |
| if (read_all) { |
| if (actual_type) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "position", "bit"); |
| YYABORT; |
| } |
| actual_type = 1; |
| } |
| } |
| |
| break; |
| |
| case 214: |
| |
| { if (read_all) { |
| if (yang_check_flags((uint16_t*)&((struct lys_type_bit *)actual)->flags, LYS_STATUS_MASK, "status", "bit", (yyvsp[0].i), 1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 215: |
| |
| { if (read_all && yang_read_description(trg, actual, s, "bit")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 216: |
| |
| { if (read_all && yang_read_reference(trg, actual, s, "bit")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 217: |
| |
| { if (read_all) { |
| ((struct lys_type_bit *)actual)->pos = (yyvsp[-1].uint); |
| |
| /* keep the highest position value for automatic increment */ |
| if ((yyvsp[-1].uint) >= cnt_val) { |
| cnt_val = (yyvsp[-1].uint); |
| cnt_val++; |
| } |
| } |
| } |
| |
| break; |
| |
| case 218: |
| |
| { (yyval.uint) = (yyvsp[-1].uint); } |
| |
| break; |
| |
| case 219: |
| |
| { if (read_all) { |
| /* convert it to uint32_t */ |
| unsigned long val; |
| char *endptr = NULL; |
| errno = 0; |
| |
| val = strtoul(s, &endptr, 10); |
| if (s[0] == '-' || *endptr || errno || val > UINT32_MAX) { |
| LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "position"); |
| free(s); |
| YYABORT; |
| } |
| free(s); |
| s = NULL; |
| (yyval.uint) = (uint32_t) val; |
| } |
| } |
| |
| break; |
| |
| case 224: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg,actual,s,LYS_GROUPING,sizeof(struct lys_node_grp)))) {YYABORT;} |
| s=NULL; |
| } |
| } |
| |
| break; |
| |
| case 226: |
| |
| { if (read_all) { |
| if (store_flags((struct lys_node *)actual, 0, config_inherit)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 228: |
| |
| { if (read_all) { |
| (yyval.nodes).grouping = actual; |
| actual_type = GROUPING_KEYWORD; |
| if (size_arrays->node[size_arrays->next].tpdf) { |
| (yyval.nodes).grouping->tpdf = calloc(size_arrays->node[size_arrays->next].tpdf, sizeof *(yyval.nodes).grouping->tpdf); |
| if (!(yyval.nodes).grouping->tpdf) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (store_flags((struct lys_node *)(yyval.nodes).grouping, size_arrays->node[size_arrays->next].flags, 0)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 229: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "grouping", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 230: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).grouping, s, "grouping")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 231: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).grouping, s, "grouping")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 232: |
| |
| { actual = (yyvsp[-2].nodes).grouping; actual_type = GROUPING_KEYWORD; } |
| |
| break; |
| |
| case 233: |
| |
| { if (read_all) { |
| actual = (yyvsp[-2].nodes).grouping; |
| actual_type = GROUPING_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-2].nodes).index].tpdf++; |
| } |
| } |
| |
| break; |
| |
| case 234: |
| |
| { actual = (yyvsp[-2].nodes).grouping; actual_type = GROUPING_KEYWORD; } |
| |
| break; |
| |
| case 235: |
| |
| { actual = (yyvsp[-2].nodes).grouping; actual_type = GROUPING_KEYWORD; } |
| |
| break; |
| |
| case 236: |
| |
| { if (read_all) { |
| actual = (yyvsp[-2].nodes).grouping; |
| actual_type = GROUPING_KEYWORD; |
| if (trg->version < 2) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "notification"); |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 245: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg,actual,s,LYS_CONTAINER,sizeof(struct lys_node_container)))) {YYABORT;} |
| data_node = actual; |
| s=NULL; |
| } |
| } |
| |
| break; |
| |
| case 247: |
| |
| { if (read_all) { |
| if (store_flags((struct lys_node *)actual, 0, config_inherit)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 248: |
| |
| { if (read_all) { |
| /* check XPath dependencies */ |
| if (((yyvsp[-1].nodes).container->when || (yyvsp[-1].nodes).container->must_size) && (unres_schema_add_node(trg, unres, (yyvsp[-1].nodes).container, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 249: |
| |
| { if (read_all) { |
| (yyval.nodes).container = actual; |
| actual_type = CONTAINER_KEYWORD; |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).container->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).container->iffeature); |
| if (!(yyval.nodes).container->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].must) { |
| (yyval.nodes).container->must = calloc(size_arrays->node[size_arrays->next].must, sizeof *(yyval.nodes).container->must); |
| if (!(yyval.nodes).container->must) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].tpdf) { |
| (yyval.nodes).container->tpdf = calloc(size_arrays->node[size_arrays->next].tpdf, sizeof *(yyval.nodes).container->tpdf); |
| if (!(yyval.nodes).container->tpdf) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (store_flags((struct lys_node *)(yyval.nodes).container, size_arrays->node[size_arrays->next].flags, config_inherit)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 250: |
| |
| { actual = (yyvsp[-1].nodes).container; actual_type = CONTAINER_KEYWORD; } |
| |
| break; |
| |
| case 252: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, (yyvsp[-1].nodes).container, s, unres, CONTAINER_KEYWORD)) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 253: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).container; |
| actual_type = CONTAINER_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].must++; |
| } |
| } |
| |
| break; |
| |
| case 255: |
| |
| { if (read_all && yang_read_presence(trg, (yyvsp[-1].nodes).container, s)) {YYABORT;} s=NULL; } |
| |
| break; |
| |
| case 256: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_CONFIG_MASK, "config", "container", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 257: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "container", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 258: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).container, s, "container")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 259: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).container, s, "container")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 260: |
| |
| { actual = (yyvsp[-1].nodes).container; |
| actual_type = CONTAINER_KEYWORD; |
| data_node = actual; |
| } |
| |
| break; |
| |
| case 262: |
| |
| { actual = (yyvsp[-1].nodes).container; |
| actual_type = CONTAINER_KEYWORD; |
| data_node = actual; |
| } |
| |
| break; |
| |
| case 264: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).container; |
| actual_type = CONTAINER_KEYWORD; |
| data_node = actual; |
| if (trg->version < 2) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "notification"); |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 266: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).container; |
| actual_type = CONTAINER_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].tpdf++; |
| } |
| } |
| |
| break; |
| |
| case 268: |
| |
| { actual = (yyvsp[-1].nodes).container; |
| actual_type = CONTAINER_KEYWORD; |
| data_node = actual; |
| } |
| |
| break; |
| |
| case 270: |
| |
| { if (read_all) { |
| if (!((yyvsp[-1].nodes).node.flag & LYS_TYPE_DEF)) { |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaf, "type", "leaf"); |
| YYABORT; |
| } |
| if (unres_schema_add_node(trg, unres, &(yyvsp[-1].nodes).node.ptr_leaf->type, UNRES_TYPE_DER,(struct lys_node *)(yyvsp[-1].nodes).node.ptr_leaf) == -1) { |
| lydict_remove(trg->ctx, ((struct yang_type *)(yyvsp[-1].nodes).node.ptr_leaf->type.der)->name); |
| free((yyvsp[-1].nodes).node.ptr_leaf->type.der); |
| (yyvsp[-1].nodes).node.ptr_leaf->type.der = NULL; |
| YYABORT; |
| } |
| if ((yyvsp[-1].nodes).node.ptr_leaf->dflt && ((yyvsp[-1].nodes).node.ptr_leaf->flags & LYS_MAND_TRUE)) { |
| /* RFC 6020, 7.6.4 - default statement must not with mandatory true */ |
| LOGVAL(LYE_INCHILDSTMT, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaf, "mandatory", "leaf"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "The \"mandatory\" statement is forbidden on leaf with \"default\"."); |
| YYABORT; |
| } |
| if (unres_schema_add_node(trg, unres, &(yyvsp[-1].nodes).node.ptr_leaf->type, UNRES_TYPE_DFLT, |
| (struct lys_node *)(&(yyvsp[-1].nodes).node.ptr_leaf->dflt)) == -1) { |
| YYABORT; |
| } |
| /* check XPath dependencies */ |
| if (((yyvsp[-1].nodes).node.ptr_leaf->when || (yyvsp[-1].nodes).node.ptr_leaf->must_size) && |
| (unres_schema_add_node(trg, unres, (yyvsp[-1].nodes).node.ptr_leaf, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 271: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg,actual,s,LYS_LEAF,sizeof(struct lys_node_leaf)))) {YYABORT;} |
| data_node = actual; |
| s=NULL; |
| (yyval.nodes).node.ptr_leaf = actual; |
| } |
| } |
| |
| break; |
| |
| case 272: |
| |
| { if (read_all) { |
| (yyval.nodes).node.ptr_leaf = actual; |
| (yyval.nodes).node.flag = 0; |
| actual_type = LEAF_KEYWORD; |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).node.ptr_leaf->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).node.ptr_leaf->iffeature); |
| if (!(yyval.nodes).node.ptr_leaf->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].must) { |
| (yyval.nodes).node.ptr_leaf->must = calloc(size_arrays->node[size_arrays->next].must, sizeof *(yyval.nodes).node.ptr_leaf->must); |
| if (!(yyval.nodes).node.ptr_leaf->must) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (store_flags((struct lys_node *)(yyval.nodes).node.ptr_leaf, size_arrays->node[size_arrays->next].flags, config_inherit)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 273: |
| |
| { actual = (yyvsp[-1].nodes).node.ptr_leaf; actual_type = LEAF_KEYWORD; } |
| |
| break; |
| |
| case 275: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, (yyvsp[-1].nodes).node.ptr_leaf, s, unres, LEAF_KEYWORD)) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 276: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_leaf; |
| actual_type = LEAF_KEYWORD; |
| (yyvsp[-1].nodes).node.flag |= LYS_TYPE_DEF; |
| } |
| } |
| |
| break; |
| |
| case 277: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes);} |
| |
| break; |
| |
| case 278: |
| |
| { if (read_all && yang_read_units(trg, (yyvsp[-1].nodes).node.ptr_leaf, s, LEAF_KEYWORD)) {YYABORT;} s = NULL; } |
| |
| break; |
| |
| case 279: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_leaf; |
| actual_type = LEAF_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].must++; |
| } |
| } |
| |
| break; |
| |
| case 281: |
| |
| { if (read_all && yang_read_default(trg, (yyvsp[-1].nodes).node.ptr_leaf, s, LEAF_KEYWORD)) {YYABORT;} |
| s = NULL; |
| } |
| |
| break; |
| |
| case 282: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_CONFIG_MASK, "config", "leaf", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 283: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_MAND_MASK, "mandatory", "leaf", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 284: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "leaf", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 285: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_leaf, s, "leaf")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 286: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_leaf, s, "leaf")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 287: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg,actual,s,LYS_LEAFLIST,sizeof(struct lys_node_leaflist)))) { |
| YYABORT; |
| } |
| data_node = actual; |
| s=NULL; |
| (yyval.nodes).node.ptr_leaflist = actual; |
| } |
| } |
| |
| break; |
| |
| case 288: |
| |
| { if (read_all) { |
| int i; |
| |
| if ((yyvsp[-1].nodes).node.ptr_leaflist->flags & LYS_CONFIG_R) { |
| /* RFC 6020, 7.7.5 - ignore ordering when the list represents state data |
| * ignore oredering MASK - 0x7F |
| */ |
| (yyvsp[-1].nodes).node.ptr_leaflist->flags &= 0x7F; |
| } |
| if (!((yyvsp[-1].nodes).node.flag & LYS_TYPE_DEF)) { |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "type", "leaf-list"); |
| YYABORT; |
| } |
| if (unres_schema_add_node(trg, unres, &(yyvsp[-1].nodes).node.ptr_leaflist->type, UNRES_TYPE_DER, (struct lys_node *)(yyvsp[-1].nodes).node.ptr_leaflist) == -1) { |
| lydict_remove(trg->ctx, ((struct yang_type *)(yyvsp[-1].nodes).node.ptr_leaflist->type.der)->name); |
| free((yyvsp[-1].nodes).node.ptr_leaflist->type.der); |
| (yyvsp[-1].nodes).node.ptr_leaflist->type.der = NULL; |
| YYABORT; |
| } |
| if ((yyvsp[-1].nodes).node.ptr_leaflist->dflt_size && (yyvsp[-1].nodes).node.ptr_leaflist->min) { |
| LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, "min-elements", "leaf-list"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, |
| "The \"min-elements\" statement with non-zero value is forbidden on leaf-lists with the \"default\" statement."); |
| YYABORT; |
| } |
| |
| /* check default value (if not defined, there still could be some restrictions |
| * that need to be checked against a default value from a derived type) */ |
| for (i = 0; i < (yyvsp[-1].nodes).node.ptr_leaflist->dflt_size; i++) { |
| if (unres_schema_add_node(module, unres, &(yyvsp[-1].nodes).node.ptr_leaflist->type, UNRES_TYPE_DFLT, |
| (struct lys_node *)(&(yyvsp[-1].nodes).node.ptr_leaflist->dflt[i])) == -1) { |
| YYABORT; |
| } |
| } |
| /* check XPath dependencies */ |
| if (((yyvsp[-1].nodes).node.ptr_leaflist->when || (yyvsp[-1].nodes).node.ptr_leaflist->must_size) && |
| (unres_schema_add_node(trg, unres, (yyvsp[-1].nodes).node.ptr_leaflist, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 289: |
| |
| { if (read_all) { |
| (yyval.nodes).node.ptr_leaflist = actual; |
| (yyval.nodes).node.flag = 0; |
| actual_type = LEAF_LIST_KEYWORD; |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).node.ptr_leaflist->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).node.ptr_leaflist->iffeature); |
| if (!(yyval.nodes).node.ptr_leaflist->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].must) { |
| (yyval.nodes).node.ptr_leaflist->must = calloc(size_arrays->node[size_arrays->next].must, sizeof *(yyval.nodes).node.ptr_leaflist->must); |
| if (!(yyval.nodes).node.ptr_leaflist->must) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].dflt) { |
| if (trg->version < 2) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default"); |
| YYABORT; |
| } |
| (yyval.nodes).node.ptr_leaflist->dflt = calloc(size_arrays->node[size_arrays->next].dflt, sizeof *(yyval.nodes).node.ptr_leaflist->dflt); |
| if (!(yyval.nodes).node.ptr_leaflist->dflt) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (store_flags((struct lys_node *)(yyval.nodes).node.ptr_leaflist, size_arrays->node[size_arrays->next].flags, config_inherit)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 290: |
| |
| { actual = (yyvsp[-1].nodes).node.ptr_leaflist; actual_type = LEAF_LIST_KEYWORD; } |
| |
| break; |
| |
| case 292: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, (yyvsp[-1].nodes).node.ptr_leaflist, s, unres, LEAF_LIST_KEYWORD)) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 293: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_leaflist; |
| actual_type = LEAF_LIST_KEYWORD; |
| (yyvsp[-1].nodes).node.flag |= LYS_TYPE_DEF; |
| } |
| } |
| |
| break; |
| |
| case 294: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes); } |
| |
| break; |
| |
| case 295: |
| |
| { if (read_all) { |
| int i; |
| |
| /* check for duplicity in case of configuration data, |
| * in case of status data duplicities are allowed */ |
| if ((yyvsp[-1].nodes).node.ptr_leaflist->flags & LYS_CONFIG_W) { |
| for (i = 0; i < (yyvsp[-1].nodes).node.ptr_leaflist->dflt_size; i++) { |
| if (ly_strequal((yyvsp[-1].nodes).node.ptr_leaflist->dflt[i], s, 0)) { |
| LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "default"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Duplicated default value \"%s\".", s); |
| free(s); |
| YYABORT; |
| } |
| } |
| } |
| (yyvsp[-1].nodes).node.ptr_leaflist->dflt[(yyvsp[-1].nodes).node.ptr_leaflist->dflt_size++] = lydict_insert_zc(module->ctx, s); |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].dflt++; |
| } |
| } |
| |
| break; |
| |
| case 296: |
| |
| { if (read_all && yang_read_units(trg, (yyvsp[-1].nodes).node.ptr_leaflist, s, LEAF_LIST_KEYWORD)) {YYABORT;} s = NULL; } |
| |
| break; |
| |
| case 297: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_leaflist; |
| actual_type = LEAF_LIST_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].must++; |
| } |
| } |
| |
| break; |
| |
| case 299: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_CONFIG_MASK, "config", "leaf-list", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 300: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).node.flag & LYS_MIN_ELEMENTS) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "min-elements", "leaf-list"); |
| YYABORT; |
| } |
| (yyvsp[-1].nodes).node.ptr_leaflist->min = (yyvsp[0].uint); |
| (yyvsp[-1].nodes).node.flag |= LYS_MIN_ELEMENTS; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| if ((yyvsp[-1].nodes).node.ptr_leaflist->max && ((yyvsp[-1].nodes).node.ptr_leaflist->min > (yyvsp[-1].nodes).node.ptr_leaflist->max)) { |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid value \"%d\" of \"%s\".", (yyvsp[0].uint), "min-elements"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "\"min-elements\" is bigger than \"max-elements\"."); |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 301: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).node.flag & LYS_MAX_ELEMENTS) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "max-elements", "leaf-list"); |
| YYABORT; |
| } |
| (yyvsp[-1].nodes).node.ptr_leaflist->max = (yyvsp[0].uint); |
| (yyvsp[-1].nodes).node.flag |= LYS_MAX_ELEMENTS; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| if ((yyvsp[-1].nodes).node.ptr_leaflist->min > (yyvsp[-1].nodes).node.ptr_leaflist->max) { |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid value \"%d\" of \"%s\".", (yyvsp[0].uint), "max-elements"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "\"max-elements\" is smaller than \"min-elements\"."); |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 302: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).node.flag & LYS_ORDERED_MASK) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "ordered by", "leaf-list"); |
| YYABORT; |
| } |
| if ((yyvsp[0].i) & LYS_USERORDERED) { |
| (yyvsp[-1].nodes).node.ptr_leaflist->flags |= LYS_USERORDERED; |
| } |
| (yyvsp[-1].nodes).node.flag |= (yyvsp[0].i); |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 303: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "leaf-list", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 304: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_leaflist, s, "leaf-list")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 305: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_leaflist, s, "leaf-list")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 306: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg,actual,s,LYS_LIST,sizeof(struct lys_node_list)))) {YYABORT;} |
| data_node = actual; |
| s=NULL; |
| } |
| } |
| |
| break; |
| |
| case 307: |
| |
| { if (read_all) { |
| struct lys_node *node; |
| |
| if ((yyvsp[0].nodes).node.ptr_list->flags & LYS_CONFIG_R) { |
| /* RFC 6020, 7.7.5 - ignore ordering when the list represents state data |
| * ignore oredering MASK - 0x7F |
| */ |
| (yyvsp[0].nodes).node.ptr_list->flags &= 0x7F; |
| } |
| /* check - if list is configuration, key statement is mandatory |
| * (but only if we are not in a grouping or augment, then the check is deferred) */ |
| for (node = (struct lys_node *)(yyvsp[0].nodes).node.ptr_list; node && !(node->nodetype & (LYS_GROUPING | LYS_AUGMENT)); node = node->parent); |
| if (!node && ((yyvsp[0].nodes).node.ptr_list->flags & LYS_CONFIG_W) && !(yyvsp[0].nodes).node.ptr_list->keys) { |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_LYS, (yyvsp[0].nodes).node.ptr_list, "key", "list"); |
| YYABORT; |
| } |
| if ((yyvsp[0].nodes).node.ptr_list->keys && yang_read_key(trg, (yyvsp[0].nodes).node.ptr_list, unres)) { |
| YYABORT; |
| } |
| if (yang_read_unique(trg, (yyvsp[0].nodes).node.ptr_list, unres)) { |
| YYABORT; |
| } |
| /* check XPath dependencies */ |
| if (((yyvsp[0].nodes).node.ptr_list->when || (yyvsp[0].nodes).node.ptr_list->must_size) && |
| (unres_schema_add_node(trg, unres, (yyvsp[0].nodes).node.ptr_list, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 309: |
| |
| { if (read_all) { |
| (yyval.nodes).node.ptr_list = actual; |
| (yyval.nodes).node.flag = 0; |
| actual_type = LIST_KEYWORD; |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).node.ptr_list->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).node.ptr_list->iffeature); |
| if (!(yyval.nodes).node.ptr_list->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].must) { |
| (yyval.nodes).node.ptr_list->must = calloc(size_arrays->node[size_arrays->next].must, sizeof *(yyval.nodes).node.ptr_list->must); |
| if (!(yyval.nodes).node.ptr_list->must) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].tpdf) { |
| (yyval.nodes).node.ptr_list->tpdf = calloc(size_arrays->node[size_arrays->next].tpdf, sizeof *(yyval.nodes).node.ptr_list->tpdf); |
| if (!(yyval.nodes).node.ptr_list->tpdf) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].unique) { |
| (yyval.nodes).node.ptr_list->unique = calloc(size_arrays->node[size_arrays->next].unique, sizeof *(yyval.nodes).node.ptr_list->unique); |
| if (!(yyval.nodes).node.ptr_list->unique) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| (yyval.nodes).node.ptr_list->keys_size = size_arrays->node[size_arrays->next].keys; |
| if (store_flags((struct lys_node *)(yyval.nodes).node.ptr_list, size_arrays->node[size_arrays->next].flags, config_inherit)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 310: |
| |
| { actual = (yyvsp[-1].nodes).node.ptr_list; actual_type = LIST_KEYWORD; } |
| |
| break; |
| |
| case 312: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, (yyvsp[-1].nodes).node.ptr_list, s, unres, LIST_KEYWORD)) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 313: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_list; |
| actual_type = LIST_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].must++; |
| } |
| } |
| |
| break; |
| |
| case 315: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).node.ptr_list->keys) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "key", "list"); |
| free(s); |
| YYABORT; |
| } |
| (yyvsp[-1].nodes).node.ptr_list->keys = (struct lys_node_leaf **)s; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| s=NULL; |
| } else { |
| /* list has keys */ |
| size_arrays->node[(yyvsp[-1].nodes).index].keys = 1; |
| } |
| } |
| |
| break; |
| |
| case 316: |
| |
| { if (read_all) { |
| (yyvsp[-1].nodes).node.ptr_list->unique[(yyvsp[-1].nodes).node.ptr_list->unique_size++].expr = (const char **)s; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| s = NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].unique++; |
| } |
| } |
| |
| break; |
| |
| case 317: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_CONFIG_MASK, "config", "list", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 318: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).node.flag & LYS_MIN_ELEMENTS) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "min-elements", "list"); |
| YYABORT; |
| } |
| (yyvsp[-1].nodes).node.ptr_list->min = (yyvsp[0].uint); |
| (yyvsp[-1].nodes).node.flag |= LYS_MIN_ELEMENTS; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| if ((yyvsp[-1].nodes).node.ptr_list->max && ((yyvsp[-1].nodes).node.ptr_list->min > (yyvsp[-1].nodes).node.ptr_list->max)) { |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid value \"%d\" of \"%s\".", (yyvsp[0].uint), "min-elements"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "\"min-elements\" is bigger than \"max-elements\"."); |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 319: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).node.flag & LYS_MAX_ELEMENTS) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "max-elements", "list"); |
| YYABORT; |
| } |
| (yyvsp[-1].nodes).node.ptr_list->max = (yyvsp[0].uint); |
| (yyvsp[-1].nodes).node.flag |= LYS_MAX_ELEMENTS; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| if ((yyvsp[-1].nodes).node.ptr_list->min > (yyvsp[-1].nodes).node.ptr_list->max) { |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid value \"%d\" of \"%s\".", (yyvsp[0].uint), "min-elements"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "\"max-elements\" is smaller than \"min-elements\"."); |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 320: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).node.flag & LYS_ORDERED_MASK) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "ordered by", "list"); |
| YYABORT; |
| } |
| if ((yyvsp[0].i) & LYS_USERORDERED) { |
| (yyvsp[-1].nodes).node.ptr_list->flags |= LYS_USERORDERED; |
| } |
| (yyvsp[-1].nodes).node.flag |= (yyvsp[0].i); |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 321: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "list", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 322: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_list, s, "list")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 323: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_list, s, "list")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 324: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_list; |
| actual_type = LIST_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].tpdf++; |
| } |
| } |
| |
| break; |
| |
| case 326: |
| |
| { actual = (yyvsp[-1].nodes).node.ptr_list; |
| actual_type = LIST_KEYWORD; |
| data_node = actual; |
| } |
| |
| break; |
| |
| case 328: |
| |
| { actual = (yyvsp[-1].nodes).node.ptr_list; |
| actual_type = LIST_KEYWORD; |
| data_node = actual; |
| } |
| |
| break; |
| |
| case 330: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_list; |
| actual_type = LIST_KEYWORD; |
| data_node = actual; |
| if (trg->version < 2) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "notification"); |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 332: |
| |
| { actual = (yyvsp[-1].nodes).node.ptr_list; |
| actual_type = LIST_KEYWORD; |
| (yyvsp[-1].nodes).node.flag |= LYS_DATADEF; |
| data_node = actual; |
| } |
| |
| break; |
| |
| case 333: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes); } |
| |
| break; |
| |
| case 334: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg,actual,s,LYS_CHOICE,sizeof(struct lys_node_choice)))) {YYABORT;} |
| data_node = actual; |
| if (data_node->parent && (data_node->parent->nodetype == LYS_GROUPING)) { |
| data_node = NULL; |
| } |
| s=NULL; |
| } |
| } |
| |
| break; |
| |
| case 336: |
| |
| { if (read_all) { |
| if (store_flags((struct lys_node *)actual, 0, config_inherit)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 337: |
| |
| { if (read_all) { |
| /* check XPath dependencies */ |
| if ((yyvsp[-1].nodes).node.ptr_choice->when && |
| (unres_schema_add_node(trg, unres, (yyvsp[-1].nodes).node.ptr_choice, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 338: |
| |
| { if (read_all) { |
| (yyval.nodes).node.ptr_choice = actual; |
| (yyval.nodes).node.flag = 0; |
| actual_type = CHOICE_KEYWORD; |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).node.ptr_choice->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).node.ptr_choice->iffeature); |
| if (!(yyval.nodes).node.ptr_choice->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (store_flags((struct lys_node *)(yyval.nodes).node.ptr_choice, size_arrays->node[size_arrays->next].flags, config_inherit)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 339: |
| |
| { actual = (yyvsp[-1].nodes).node.ptr_choice; actual_type = CHOICE_KEYWORD; } |
| |
| break; |
| |
| case 340: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes); } |
| |
| break; |
| |
| case 341: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, (yyvsp[-1].nodes).node.ptr_choice, s, unres, CHOICE_KEYWORD)) { |
| YYABORT; |
| } |
| s=NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 342: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).node.flag & LYS_CHOICE_DEFAULT) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_choice, "default", "choice"); |
| free(s); |
| YYABORT; |
| } |
| |
| if ((yyvsp[-1].nodes).node.ptr_choice->flags & LYS_MAND_TRUE) { |
| LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, "default", "choice"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "The \"default\" statement is forbidden on choices with \"mandatory\"."); |
| free(s); |
| YYABORT; |
| } |
| |
| if (unres_schema_add_str(trg, unres, (yyvsp[-1].nodes).node.ptr_choice, UNRES_CHOICE_DFLT, s) == -1) { |
| free(s); |
| YYABORT; |
| } |
| free(s); |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| (yyval.nodes).node.flag |= LYS_CHOICE_DEFAULT; |
| } |
| } |
| |
| break; |
| |
| case 343: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_CONFIG_MASK, "config", "choice", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } else { |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 344: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_MAND_MASK, "mandatory", "choice", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } else { |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 345: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "choice", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } else { |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 346: |
| |
| { if (read_all) { |
| if (yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_choice, s, "choice")) { |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 347: |
| |
| { if (read_all) { |
| if (yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_choice, s, "choice")) { |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 348: |
| |
| { actual = (yyvsp[-1].nodes).node.ptr_choice; |
| actual_type = CHOICE_KEYWORD; |
| data_node = actual; |
| if (read_all && data_node->parent && (data_node->parent->nodetype == LYS_GROUPING)) { |
| data_node = NULL; |
| } |
| } |
| |
| break; |
| |
| case 349: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes); } |
| |
| break; |
| |
| case 358: |
| |
| { if (read_all && trg->version < 2 ) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "choice"); |
| YYABORT; |
| } |
| } |
| |
| break; |
| |
| case 359: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg,actual,s,LYS_CASE,sizeof(struct lys_node_case)))) {YYABORT;} |
| data_node = actual; |
| s=NULL; |
| } |
| } |
| |
| break; |
| |
| case 361: |
| |
| { if (read_all) { |
| if (store_flags((struct lys_node *)actual, 0, config_inherit)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 362: |
| |
| { if (read_all) { |
| /* check XPath dependencies */ |
| if ((yyvsp[-1].nodes).cs->when && |
| (unres_schema_add_node(trg, unres, (yyvsp[-1].nodes).cs, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 363: |
| |
| { if (read_all) { |
| (yyval.nodes).cs = actual; |
| actual_type = CASE_KEYWORD; |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).cs->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).cs->iffeature); |
| if (!(yyval.nodes).cs->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (store_flags((struct lys_node *)(yyval.nodes).cs, size_arrays->node[size_arrays->next].flags, config_inherit)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 364: |
| |
| { actual = (yyvsp[-1].nodes).cs; actual_type = CASE_KEYWORD; } |
| |
| break; |
| |
| case 366: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, (yyvsp[-1].nodes).cs, s, unres, CASE_KEYWORD)) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 367: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "case", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 368: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).cs, s, "case")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 369: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).cs, s, "case")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 370: |
| |
| { actual = (yyvsp[-1].nodes).cs; |
| actual_type = CASE_KEYWORD; |
| data_node = actual; |
| } |
| |
| break; |
| |
| case 372: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg,actual,s,LYS_ANYXML,sizeof(struct lys_node_anydata)))) {YYABORT;} |
| data_node = actual; |
| if (data_node->parent && (data_node->parent->nodetype == LYS_GROUPING)) { |
| data_node = NULL; |
| } |
| s=NULL; |
| } |
| actual_type = ANYXML_KEYWORD; |
| } |
| |
| break; |
| |
| case 374: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg, actual, s, LYS_ANYDATA, sizeof(struct lys_node_anydata)))) {YYABORT;} |
| data_node = actual; |
| if (data_node->parent && (data_node->parent->nodetype == LYS_GROUPING)) { |
| data_node = NULL; |
| } |
| s = NULL; |
| } |
| actual_type = ANYDATA_KEYWORD; |
| } |
| |
| break; |
| |
| case 376: |
| |
| { if (read_all) { |
| if (store_flags((struct lys_node *)actual, 0, config_inherit)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 377: |
| |
| { if (read_all) { |
| /* check XPath dependencies */ |
| if (((yyvsp[-1].nodes).node.ptr_anydata->when || (yyvsp[-1].nodes).node.ptr_anydata->must_size) && |
| (unres_schema_add_node(trg, unres, (yyvsp[-1].nodes).node.ptr_anydata, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 378: |
| |
| { if (read_all) { |
| (yyval.nodes).node.ptr_anydata = actual; |
| (yyval.nodes).node.flag = actual_type; |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).node.ptr_anydata->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).node.ptr_anydata->iffeature); |
| if (!(yyval.nodes).node.ptr_anydata->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].must) { |
| (yyval.nodes).node.ptr_anydata->must = calloc(size_arrays->node[size_arrays->next].must, sizeof *(yyval.nodes).node.ptr_anydata->must); |
| if (!(yyval.nodes).node.ptr_anydata->must) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (store_flags((struct lys_node *)(yyval.nodes).node.ptr_anydata, size_arrays->node[size_arrays->next].flags, config_inherit)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 379: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_anydata; |
| actual_type = (yyvsp[-1].nodes).node.flag; |
| } |
| } |
| |
| break; |
| |
| case 381: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, (yyvsp[-1].nodes).node.ptr_anydata, s, unres, (yyvsp[-1].nodes).node.flag)) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 382: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_anydata; |
| actual_type = (yyvsp[-1].nodes).node.flag; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].must++; |
| } |
| } |
| |
| break; |
| |
| case 384: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_CONFIG_MASK, "config", |
| (actual_type == ANYXML_KEYWORD) ? "anyxml" : "anydata", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 385: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_MAND_MASK, "mandatory", |
| (actual_type == ANYXML_KEYWORD) ? "anyxml" : "anydata", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 386: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", |
| (actual_type == ANYXML_KEYWORD) ? "anyxml" : "anydata", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 387: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_anydata, s, ((yyvsp[-1].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 388: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_anydata, s, ((yyvsp[-1].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 389: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg,actual,s,LYS_USES,sizeof(struct lys_node_uses)))) {YYABORT;} |
| data_node = actual; |
| if (data_node->parent && (data_node->parent->nodetype == LYS_GROUPING)) { |
| data_node = NULL; |
| } |
| s=NULL; |
| } |
| } |
| |
| break; |
| |
| case 390: |
| |
| { if (read_all) { |
| if (unres_schema_add_node(trg, unres, actual, UNRES_USES, NULL) == -1) { |
| YYABORT; |
| } |
| /* check XPath dependencies */ |
| if (((struct lys_node_uses *)actual)->when && |
| (unres_schema_add_node(trg, unres, actual, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 393: |
| |
| { if (read_all) { |
| (yyval.nodes).uses = actual; |
| actual_type = USES_KEYWORD; |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).uses->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).uses->iffeature); |
| if (!(yyval.nodes).uses->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].refine) { |
| (yyval.nodes).uses->refine = calloc(size_arrays->node[size_arrays->next].refine, sizeof *(yyval.nodes).uses->refine); |
| if (!(yyval.nodes).uses->refine) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].augment) { |
| (yyval.nodes).uses->augment = calloc(size_arrays->node[size_arrays->next].augment, sizeof *(yyval.nodes).uses->augment); |
| if (!(yyval.nodes).uses->augment) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (store_flags((struct lys_node *)(yyval.nodes).uses, size_arrays->node[size_arrays->next].flags, CONFIG_INHERIT_DISABLE)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 394: |
| |
| { actual = (yyvsp[-1].nodes).uses; actual_type = USES_KEYWORD; } |
| |
| break; |
| |
| case 396: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, (yyvsp[-1].nodes).uses, s, unres, USES_KEYWORD)) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 397: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "uses", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 398: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).uses, s, "uses")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 399: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).uses, s, "uses")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 400: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).uses; |
| actual_type = USES_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].refine++; |
| } |
| } |
| |
| break; |
| |
| case 402: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).uses; |
| actual_type = USES_KEYWORD; |
| data_node = actual; |
| if (data_node->parent && (data_node->parent->nodetype == LYS_GROUPING)) { |
| data_node = NULL; |
| } |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].augment++; |
| } |
| } |
| |
| break; |
| |
| case 404: |
| |
| { if (read_all) { |
| refine_parent = actual; |
| if (!(actual = yang_read_refine(trg, actual, s))) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 410: |
| |
| { if (read_all) { |
| (yyval.nodes).refine = actual; |
| actual_type = REFINE_KEYWORD; |
| if (size_arrays->node[size_arrays->next].must) { |
| (yyval.nodes).refine->must = calloc(size_arrays->node[size_arrays->next].must, sizeof *(yyval.nodes).refine->must); |
| if (!(yyval.nodes).refine->must) { |
| LOGMEM; |
| YYABORT; |
| } |
| (yyval.nodes).refine->target_type = LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYXML; |
| } |
| if (size_arrays->node[size_arrays->next].dflt) { |
| (yyval.nodes).refine->dflt = calloc(size_arrays->node[size_arrays->next].dflt, sizeof *(yyval.nodes).refine->dflt); |
| if (!(yyval.nodes).refine->dflt) { |
| LOGMEM; |
| YYABORT; |
| } |
| if (size_arrays->node[size_arrays->next].dflt > 1) { |
| if (trg->version < 2) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "default", "refine"); |
| YYABORT; |
| } |
| (yyval.nodes).refine->target_type = LYS_LEAFLIST; |
| } else { |
| if ((yyval.nodes).refine->target_type) { |
| if (trg->version < 2) { |
| (yyval.nodes).refine->target_type &= (LYS_LEAF | LYS_CHOICE); |
| } else { |
| /* YANG 1.1 */ |
| (yyval.nodes).refine->target_type &= (LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE); |
| } |
| } else { |
| if (trg->version < 2) { |
| (yyval.nodes).refine->target_type = LYS_LEAF | LYS_CHOICE; |
| } else { |
| /* YANG 1.1 */ |
| (yyval.nodes).refine->target_type = LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE; |
| } |
| } |
| } |
| } |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).refine->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).refine->iffeature); |
| if (!(yyval.nodes).refine->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| if (trg->version < 2) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "if-feature"); |
| YYABORT; |
| } |
| /* leaf, leaf-list, list, container or anyxml */ |
| /* check possibility of statements combination */ |
| if ((yyval.nodes).refine->target_type) { |
| (yyval.nodes).refine->target_type &= (LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYDATA); |
| } else { |
| (yyval.nodes).refine->target_type = LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYDATA; |
| } |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 411: |
| |
| { if (read_all) { |
| actual = (yyvsp[-2].nodes).refine; |
| actual_type = REFINE_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-2].nodes).index].must++; |
| } |
| } |
| |
| break; |
| |
| case 412: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, refine_parent, s, unres, REFINE_KEYWORD)) { |
| YYABORT; |
| } |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 413: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).refine->target_type) { |
| if ((yyvsp[-1].nodes).refine->target_type & LYS_CONTAINER) { |
| if ((yyvsp[-1].nodes).refine->mod.presence) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "presence", "refine"); |
| free(s); |
| YYABORT; |
| } |
| (yyvsp[-1].nodes).refine->target_type = LYS_CONTAINER; |
| (yyvsp[-1].nodes).refine->mod.presence = lydict_insert_zc(trg->ctx, s); |
| } else { |
| free(s); |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "presence", "refine"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid refine target nodetype for the substatements."); |
| YYABORT; |
| } |
| } else { |
| (yyvsp[-1].nodes).refine->target_type = LYS_CONTAINER; |
| (yyvsp[-1].nodes).refine->mod.presence = lydict_insert_zc(trg->ctx, s); |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 414: |
| |
| { if (read_all) { |
| int i; |
| |
| (yyvsp[-1].nodes).refine->dflt[(yyvsp[-1].nodes).refine->dflt_size] = lydict_insert_zc(trg->ctx, s); |
| /* check for duplicity */ |
| for (i = 0; i < (yyvsp[-1].nodes).refine->dflt_size; ++i) { |
| if (ly_strequal((yyvsp[-1].nodes).refine->dflt[i], (yyvsp[-1].nodes).refine->dflt[(yyvsp[-1].nodes).refine->dflt_size], 1)) { |
| LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, (yyvsp[-1].nodes).refine->dflt[(yyvsp[-1].nodes).refine->dflt_size], "default"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Duplicated default value \"%s\".", (yyvsp[-1].nodes).refine->dflt[(yyvsp[-1].nodes).refine->dflt_size]); |
| (yyvsp[-1].nodes).refine->dflt_size++; |
| YYABORT; |
| } |
| } |
| (yyvsp[-1].nodes).refine->dflt_size++; |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].dflt++; |
| } |
| } |
| |
| break; |
| |
| case 415: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).refine->target_type) { |
| if ((yyvsp[-1].nodes).refine->target_type & (LYS_LEAF | LYS_CHOICE | LYS_LIST | LYS_CONTAINER | LYS_LEAFLIST)) { |
| (yyvsp[-1].nodes).refine->target_type &= (LYS_LEAF | LYS_CHOICE | LYS_LIST | LYS_CONTAINER | LYS_LEAFLIST); |
| if (yang_check_flags((uint16_t*)&(yyvsp[-1].nodes).refine->flags, LYS_CONFIG_MASK, "config", "refine", (yyvsp[0].i), 1)) { |
| YYABORT; |
| } |
| } else { |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "config", "refine"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid refine target nodetype for the substatements."); |
| YYABORT; |
| } |
| } else { |
| (yyvsp[-1].nodes).refine->target_type = LYS_LEAF | LYS_CHOICE | LYS_LIST | LYS_CONTAINER | LYS_LEAFLIST; |
| (yyvsp[-1].nodes).refine->flags |= (yyvsp[0].i); |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 416: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).refine->target_type) { |
| if ((yyvsp[-1].nodes).refine->target_type & (LYS_LEAF | LYS_CHOICE | LYS_ANYXML)) { |
| (yyvsp[-1].nodes).refine->target_type &= (LYS_LEAF | LYS_CHOICE | LYS_ANYXML); |
| if (yang_check_flags((uint16_t*)&(yyvsp[-1].nodes).refine->flags, LYS_MAND_MASK, "mandatory", "refine", (yyvsp[0].i), 1)) { |
| YYABORT; |
| } |
| } else { |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "mandatory", "refine"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid refine target nodetype for the substatements."); |
| YYABORT; |
| } |
| } else { |
| (yyvsp[-1].nodes).refine->target_type = LYS_LEAF | LYS_CHOICE | LYS_ANYXML; |
| (yyvsp[-1].nodes).refine->flags |= (yyvsp[0].i); |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 417: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).refine->target_type) { |
| if ((yyvsp[-1].nodes).refine->target_type & (LYS_LIST | LYS_LEAFLIST)) { |
| (yyvsp[-1].nodes).refine->target_type &= (LYS_LIST | LYS_LEAFLIST); |
| if ((yyvsp[-1].nodes).refine->flags & LYS_RFN_MINSET) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "min-elements", "refine"); |
| YYABORT; |
| } |
| (yyvsp[-1].nodes).refine->flags |= LYS_RFN_MINSET; |
| (yyvsp[-1].nodes).refine->mod.list.min = (yyvsp[0].uint); |
| } else { |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "min-elements", "refine"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid refine target nodetype for the substatements."); |
| YYABORT; |
| } |
| } else { |
| (yyvsp[-1].nodes).refine->target_type = LYS_LIST | LYS_LEAFLIST; |
| (yyvsp[-1].nodes).refine->flags |= LYS_RFN_MINSET; |
| (yyvsp[-1].nodes).refine->mod.list.min = (yyvsp[0].uint); |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 418: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).refine->target_type) { |
| if ((yyvsp[-1].nodes).refine->target_type & (LYS_LIST | LYS_LEAFLIST)) { |
| (yyvsp[-1].nodes).refine->target_type &= (LYS_LIST | LYS_LEAFLIST); |
| if ((yyvsp[-1].nodes).refine->flags & LYS_RFN_MAXSET) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "max-elements", "refine"); |
| YYABORT; |
| } |
| (yyvsp[-1].nodes).refine->flags |= LYS_RFN_MAXSET; |
| (yyvsp[-1].nodes).refine->mod.list.max = (yyvsp[0].uint); |
| } else { |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "max-elements", "refine"); |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid refine target nodetype for the substatements."); |
| YYABORT; |
| } |
| } else { |
| (yyvsp[-1].nodes).refine->target_type = LYS_LIST | LYS_LEAFLIST; |
| (yyvsp[-1].nodes).refine->flags |= LYS_RFN_MAXSET; |
| (yyvsp[-1].nodes).refine->mod.list.max = (yyvsp[0].uint); |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 419: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).refine, s, "refine")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 420: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).refine, s, "refine")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 421: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_augment(trg, actual, s))) { |
| YYABORT; |
| } |
| data_node = actual; |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 422: |
| |
| { if (read_all) { |
| if (!((yyvsp[0].nodes).node.flag & LYS_DATADEF)) { |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "data-def or case", "uses/augment"); |
| YYABORT; |
| } |
| config_inherit = (yyvsp[0].nodes).node.flag & CONFIG_MASK; |
| /* check XPath dependencies */ |
| if ((yyvsp[0].nodes).node.ptr_augment->when && |
| (unres_schema_add_node(trg, unres, (yyvsp[0].nodes).node.ptr_augment, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 426: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_augment(trg, NULL, s))) { |
| YYABORT; |
| } |
| data_node = actual; |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 427: |
| |
| { if (read_all) { |
| if (!((yyvsp[0].nodes).node.flag & LYS_DATADEF)){ |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "data-def or case", "augment"); |
| YYABORT; |
| } |
| if (unres_schema_add_node(trg, unres, actual, UNRES_AUGMENT, NULL) == -1) { |
| YYABORT; |
| } |
| config_inherit = (yyvsp[0].nodes).node.flag & CONFIG_MASK; |
| /* check XPath dependencies */ |
| if ((yyvsp[0].nodes).node.ptr_augment->when && |
| (unres_schema_add_node(trg, unres, (yyvsp[0].nodes).node.ptr_augment, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 429: |
| |
| { if (read_all) { |
| (yyval.nodes).node.ptr_augment = actual; |
| (yyval.nodes).node.flag = config_inherit; |
| config_inherit = CONFIG_INHERIT_ENABLE; |
| actual_type = AUGMENT_KEYWORD; |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).node.ptr_augment->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).node.ptr_augment->iffeature); |
| if (!(yyval.nodes).node.ptr_augment->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 430: |
| |
| { actual = (yyvsp[-1].nodes).node.ptr_augment; actual_type = AUGMENT_KEYWORD; } |
| |
| break; |
| |
| case 432: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, (yyvsp[-1].nodes).node.ptr_augment, s, unres, AUGMENT_KEYWORD)) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 433: |
| |
| { if (read_all) { |
| /* hack - flags is bit field, so its address is taken as a member after |
| * 3 const char pointers in the lys_node_augment structure */ |
| if (yang_check_flags((uint16_t*)((const char **)(yyvsp[-1].nodes).node.ptr_augment + 3), |
| LYS_STATUS_MASK, "status", "augment", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 434: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_augment, s, "augment")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 435: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_augment, s, "augment")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 436: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_augment; |
| actual_type = AUGMENT_KEYWORD; |
| (yyvsp[-1].nodes).node.flag |= LYS_DATADEF; |
| data_node = actual; |
| } |
| } |
| |
| break; |
| |
| case 437: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes); } |
| |
| break; |
| |
| case 438: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_augment; |
| actual_type = AUGMENT_KEYWORD; |
| (yyvsp[-1].nodes).node.flag |= LYS_DATADEF; |
| data_node = actual; |
| } |
| } |
| |
| break; |
| |
| case 439: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes); } |
| |
| break; |
| |
| case 440: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_augment; |
| actual_type = AUGMENT_KEYWORD; |
| (yyvsp[-1].nodes).node.flag |= LYS_DATADEF; |
| data_node = actual; |
| if (trg->version < 2) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "notification"); |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 441: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes); } |
| |
| break; |
| |
| case 442: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_augment; |
| actual_type = AUGMENT_KEYWORD; |
| (yyvsp[-1].nodes).node.flag |= LYS_DATADEF; |
| data_node = actual; |
| } |
| } |
| |
| break; |
| |
| case 443: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes); } |
| |
| break; |
| |
| case 446: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_action(trg, actual, s))) { |
| YYABORT; |
| } |
| data_node = actual; |
| s = NULL; |
| } |
| (yyval.i) = config_inherit; |
| config_inherit = CONFIG_IGNORE; |
| } |
| |
| break; |
| |
| case 447: |
| |
| { config_inherit = (yyvsp[-1].i); } |
| |
| break; |
| |
| case 448: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg, NULL, s, LYS_RPC, sizeof(struct lys_node_rpc_action)))) { |
| YYABORT; |
| } |
| data_node = actual; |
| s = NULL; |
| } |
| (yyval.i) = config_inherit; |
| config_inherit = CONFIG_IGNORE; |
| } |
| |
| break; |
| |
| case 449: |
| |
| { config_inherit = (yyvsp[-1].i); } |
| |
| break; |
| |
| case 452: |
| |
| { if (read_all) { |
| (yyval.nodes).node.ptr_rpc = actual; |
| (yyval.nodes).node.flag = 0; |
| actual_type = RPC_KEYWORD; |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).node.ptr_rpc->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).node.ptr_rpc->iffeature); |
| if (!(yyval.nodes).node.ptr_rpc->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].tpdf) { |
| (yyval.nodes).node.ptr_rpc->tpdf = calloc(size_arrays->node[size_arrays->next].tpdf, sizeof *(yyval.nodes).node.ptr_rpc->tpdf); |
| if (!(yyval.nodes).node.ptr_rpc->tpdf) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (store_flags((struct lys_node *)(yyval.nodes).node.ptr_rpc, size_arrays->node[size_arrays->next].flags, CONFIG_INHERIT_DISABLE)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 453: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, (yyvsp[-1].nodes).node.ptr_rpc, s, unres, RPC_KEYWORD)) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 454: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "rpc", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 455: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_rpc, s, "rpc")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 456: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_rpc, s, "rpc")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 457: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_rpc; |
| actual_type = RPC_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].tpdf++; |
| } |
| } |
| |
| break; |
| |
| case 459: |
| |
| { actual = (yyvsp[-1].nodes).node.ptr_rpc; |
| actual_type = RPC_KEYWORD; |
| data_node = actual; |
| } |
| |
| break; |
| |
| case 461: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).node.flag & LYS_RPC_INPUT) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_rpc, "input", "rpc"); |
| YYABORT; |
| } |
| (yyvsp[-1].nodes).node.flag |= LYS_RPC_INPUT; |
| actual = (yyvsp[-1].nodes).node.ptr_rpc; |
| actual_type = RPC_KEYWORD; |
| data_node = actual; |
| } |
| } |
| |
| break; |
| |
| case 462: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes); } |
| |
| break; |
| |
| case 463: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).node.flag & LYS_RPC_OUTPUT) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_rpc, "output", "rpc"); |
| YYABORT; |
| } |
| (yyvsp[-1].nodes).node.flag |= LYS_RPC_OUTPUT; |
| actual = (yyvsp[-1].nodes).node.ptr_rpc; |
| actual_type = RPC_KEYWORD; |
| data_node = actual; |
| } |
| } |
| |
| break; |
| |
| case 464: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes); } |
| |
| break; |
| |
| case 465: |
| |
| { if (read_all) { |
| s = strdup("input"); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| if (!(actual = yang_read_node(trg, actual, s, LYS_INPUT, sizeof(struct lys_node_inout)))) { |
| YYABORT; |
| } |
| data_node = actual; |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 466: |
| |
| { if (read_all) { |
| /* check XPath dependencies */ |
| if ((yyvsp[0].nodes).node.ptr_inout->must_size && |
| (unres_schema_add_node(trg, unres, (yyvsp[0].nodes).node.ptr_inout, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 468: |
| |
| { if (read_all) { |
| (yyval.nodes).node.ptr_inout = actual; |
| (yyval.nodes).node.flag = 0; |
| actual_type = INPUT_KEYWORD; |
| if (trg->version < 2 && size_arrays->node[size_arrays->next].must) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "must"); |
| YYABORT; |
| } |
| if (size_arrays->node[size_arrays->next].tpdf) { |
| (yyval.nodes).node.ptr_inout->tpdf = calloc(size_arrays->node[size_arrays->next].tpdf, sizeof *(yyval.nodes).node.ptr_inout->tpdf); |
| if (!(yyval.nodes).node.ptr_inout->tpdf) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].must) { |
| (yyval.nodes).node.ptr_inout->must = calloc(size_arrays->node[size_arrays->next].must, sizeof *(yyval.nodes).node.ptr_inout->must); |
| if (!(yyval.nodes).node.ptr_inout->must) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 469: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_inout; |
| actual_type = INPUT_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].must++; |
| } |
| } |
| |
| break; |
| |
| case 471: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_inout; |
| actual_type = INPUT_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].tpdf++; |
| } |
| } |
| |
| break; |
| |
| case 473: |
| |
| { actual = (yyvsp[-1].nodes).node.ptr_inout; |
| actual_type = INPUT_KEYWORD; |
| data_node = actual; |
| } |
| |
| break; |
| |
| case 475: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).node.ptr_inout; |
| actual_type = INPUT_KEYWORD; |
| (yyvsp[-1].nodes).node.flag |= LYS_DATADEF; |
| data_node = actual; |
| } |
| } |
| |
| break; |
| |
| case 476: |
| |
| { (yyval.nodes) = (yyvsp[-3].nodes); } |
| |
| break; |
| |
| case 477: |
| |
| { if (read_all) { |
| s = strdup("output"); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| if (!(actual = yang_read_node(trg, actual, s, LYS_OUTPUT, sizeof(struct lys_node_inout)))) { |
| YYABORT; |
| } |
| data_node = actual; |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 478: |
| |
| { if (read_all) { |
| /* check XPath dependencies */ |
| if ((yyvsp[0].nodes).node.ptr_inout->must_size && |
| (unres_schema_add_node(trg, unres, (yyvsp[0].nodes).node.ptr_inout, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 480: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_node(trg, actual, s, LYS_NOTIF, sizeof(struct lys_node_notif)))) { |
| YYABORT; |
| } |
| data_node = actual; |
| } |
| (yyval.i) = config_inherit; |
| config_inherit = CONFIG_INHERIT_DISABLE; |
| } |
| |
| break; |
| |
| case 481: |
| |
| { config_inherit = (yyvsp[-1].i); } |
| |
| break; |
| |
| case 483: |
| |
| { if (read_all) { |
| /* check XPath dependencies */ |
| if ((yyvsp[-1].nodes).notif->must_size && |
| (unres_schema_add_node(trg, unres, (yyvsp[-1].nodes).notif, UNRES_XPATH, NULL) == -1)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 484: |
| |
| { if (read_all) { |
| (yyval.nodes).notif = actual; |
| actual_type = NOTIFICATION_KEYWORD; |
| if (size_arrays->node[size_arrays->next].if_features) { |
| (yyval.nodes).notif->iffeature = calloc(size_arrays->node[size_arrays->next].if_features, sizeof *(yyval.nodes).notif->iffeature); |
| if (!(yyval.nodes).notif->iffeature) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].tpdf) { |
| (yyval.nodes).notif->tpdf = calloc(size_arrays->node[size_arrays->next].tpdf, sizeof *(yyval.nodes).notif->tpdf); |
| if (!(yyval.nodes).notif->tpdf) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (trg->version < 2 && size_arrays->node[size_arrays->next].must) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "must"); |
| YYABORT; |
| } |
| if (size_arrays->node[size_arrays->next].must) { |
| (yyval.nodes).notif->must = calloc(size_arrays->node[size_arrays->next].must, sizeof *(yyval.nodes).notif->must); |
| if (!(yyval.nodes).notif->must) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| if (store_flags((struct lys_node *)(yyval.nodes).notif, size_arrays->node[size_arrays->next].flags, CONFIG_INHERIT_DISABLE)) { |
| YYABORT; |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 485: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).notif; |
| actual_type = NOTIFICATION_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].must++; |
| } |
| } |
| |
| break; |
| |
| case 487: |
| |
| { if (read_all) { |
| if (yang_read_if_feature(trg, (yyvsp[-1].nodes).notif, s, unres, NOTIFICATION_KEYWORD)) {YYABORT;} |
| s=NULL; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].if_features++; |
| } |
| } |
| |
| break; |
| |
| case 488: |
| |
| { if (!read_all) { |
| if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "notification", (yyvsp[0].i), 0)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 489: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).notif, s, "notification")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 490: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).notif, s, "notification")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 491: |
| |
| { if (read_all) { |
| actual = (yyvsp[-1].nodes).notif; |
| actual_type = NOTIFICATION_KEYWORD; |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].tpdf++; |
| } |
| } |
| |
| break; |
| |
| case 493: |
| |
| { actual = (yyvsp[-1].nodes).notif; |
| actual_type = NOTIFICATION_KEYWORD; |
| data_node = actual; |
| } |
| |
| break; |
| |
| case 495: |
| |
| { actual = (yyvsp[-1].nodes).notif; |
| actual_type = NOTIFICATION_KEYWORD; |
| data_node = actual; |
| } |
| |
| break; |
| |
| case 497: |
| |
| { if (read_all) { |
| if (!(actual = yang_read_deviation(trg, s))) { |
| YYABORT; |
| } |
| s = NULL; |
| trg->deviation_size++; |
| } |
| } |
| |
| break; |
| |
| case 498: |
| |
| { if (read_all) { |
| struct lys_module *mod; |
| struct lys_node *parent; |
| |
| if (actual_type == DEVIATION_KEYWORD) { |
| LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "deviate", "deviation"); |
| ly_set_free((yyvsp[-1].nodes).deviation->dflt_check); |
| free((yyvsp[-1].nodes).deviation); |
| YYABORT; |
| } |
| if (yang_check_deviation(trg, (yyvsp[-1].nodes).deviation->dflt_check, unres)) { |
| ly_set_free((yyvsp[-1].nodes).deviation->dflt_check); |
| free((yyvsp[-1].nodes).deviation); |
| YYABORT; |
| } |
| /* mark all the affected modules as deviated and implemented */ |
| for(parent = (yyvsp[-1].nodes).deviation->target; parent; parent = lys_parent(parent)) { |
| mod = lys_node_module(parent); |
| if (module != mod) { |
| mod->deviated = 1; |
| lys_set_implemented(mod); |
| } |
| } |
| ly_set_free((yyvsp[-1].nodes).deviation->dflt_check); |
| free((yyvsp[-1].nodes).deviation); |
| } |
| } |
| |
| break; |
| |
| case 499: |
| |
| { if (read_all) { |
| (yyval.nodes).deviation = actual; |
| actual_type = DEVIATION_KEYWORD; |
| if (size_arrays->node[size_arrays->next].deviate) { |
| (yyval.nodes).deviation->deviation->deviate = calloc(size_arrays->node[size_arrays->next].deviate, sizeof *(yyval.nodes).deviation->deviation->deviate); |
| if (!(yyval.nodes).deviation->deviation->deviate) { |
| LOGMEM; |
| ly_set_free((yyval.nodes).deviation->dflt_check); |
| YYABORT; |
| } |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 500: |
| |
| { if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).deviation->deviation, s, "deviation")) { |
| ly_set_free((yyvsp[-1].nodes).deviation->dflt_check); |
| free((yyvsp[-1].nodes).deviation); |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| |
| break; |
| |
| case 501: |
| |
| { if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).deviation->deviation, s, "deviation")) { |
| ly_set_free((yyvsp[-1].nodes).deviation->dflt_check); |
| free((yyvsp[-1].nodes).deviation); |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| |
| break; |
| |
| case 502: |
| |
| { if (read_all) { |
| actual = (yyvsp[-3].nodes).deviation; |
| actual_type = DEVIATE_KEYWORD; |
| (yyval.nodes) = (yyvsp[-3].nodes); |
| } else { |
| /* count of deviate statemenet */ |
| size_arrays->node[(yyvsp[-3].nodes).index].deviate++; |
| } |
| } |
| |
| break; |
| |
| case 505: |
| |
| { if (read_all && yang_read_deviate_unsupported(actual)) { |
| YYABORT; |
| } |
| } |
| |
| break; |
| |
| case 511: |
| |
| { if (read_all && yang_read_deviate(actual, LY_DEVIATE_ADD)) { |
| YYABORT; |
| } |
| } |
| |
| break; |
| |
| case 514: |
| |
| { if (read_all) { |
| /* check XPath dependencies */ |
| if (((yyvsp[-1].nodes).deviation->trg_must_size && *(yyvsp[-1].nodes).deviation->trg_must_size) && |
| unres_schema_add_node(trg, unres, (yyvsp[-1].nodes).deviation->target, UNRES_XPATH, NULL)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 515: |
| |
| { if (read_all) { |
| (yyval.nodes).deviation = actual; |
| actual_type = ADD_KEYWORD; |
| if (size_arrays->node[size_arrays->next].must) { |
| if (yang_read_deviate_must(actual, size_arrays->node[size_arrays->next].must)) { |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].unique) { |
| if (yang_read_deviate_unique(actual, size_arrays->node[size_arrays->next].unique)) { |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].dflt) { |
| if (yang_read_deviate_default(trg, actual, size_arrays->node[size_arrays->next].dflt)) { |
| YYABORT; |
| } |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 516: |
| |
| { if (read_all) { |
| if (yang_read_deviate_units(trg->ctx, (yyvsp[-1].nodes).deviation, s)) { |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 517: |
| |
| { if (read_all) { |
| actual = (yyvsp[-2].nodes).deviation; |
| actual_type = ADD_KEYWORD; |
| (yyval.nodes) = (yyvsp[-2].nodes); |
| } else { |
| size_arrays->node[(yyvsp[-2].nodes).index].must++; |
| } |
| } |
| |
| break; |
| |
| case 518: |
| |
| { if (read_all) { |
| struct lys_node_list *list; |
| |
| list = (struct lys_node_list *)(yyvsp[-1].nodes).deviation->target; |
| if (yang_fill_unique(trg, list, &list->unique[list->unique_size], s, NULL)) { |
| list->unique_size++; |
| YYABORT; |
| } |
| list->unique_size++; |
| free(s); |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].unique++; |
| } |
| } |
| |
| break; |
| |
| case 519: |
| |
| { if (read_all) { |
| if (yang_fill_deviate_default(trg->ctx, (yyvsp[-1].nodes).deviation, s)) { |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].dflt++; |
| } |
| } |
| |
| break; |
| |
| case 520: |
| |
| { if (read_all) { |
| if (yang_read_deviate_config((yyvsp[-1].nodes).deviation, (yyvsp[0].i))) { |
| YYABORT; |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 521: |
| |
| { if (read_all) { |
| if (yang_read_deviate_mandatory((yyvsp[-1].nodes).deviation, (yyvsp[0].i))) { |
| YYABORT; |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 522: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).deviation->deviate->min_set) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "min-elements", "deviation"); |
| YYABORT; |
| } |
| if (yang_read_deviate_minmax((yyvsp[-1].nodes).deviation, (yyvsp[0].uint), 0)) { |
| YYABORT; |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 523: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).deviation->deviate->max_set) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "max-elements", "deviation"); |
| YYABORT; |
| } |
| if (yang_read_deviate_minmax((yyvsp[-1].nodes).deviation, (yyvsp[0].uint), 1)) { |
| YYABORT; |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 524: |
| |
| { if (read_all && yang_read_deviate(actual, LY_DEVIATE_DEL)) { |
| YYABORT; |
| } |
| } |
| |
| break; |
| |
| case 527: |
| |
| { if (read_all) { |
| struct lys_node_leaflist *llist; |
| int i,j; |
| |
| if ((yyvsp[-1].nodes).deviation->deviate->dflt_size && (yyvsp[-1].nodes).deviation->target->nodetype == LYS_LEAFLIST) { |
| /* consolidate the final list in the target after removing items from it */ |
| llist = (struct lys_node_leaflist *)(yyvsp[-1].nodes).deviation->target; |
| for (i = j = 0; j < llist->dflt_size; j++) { |
| llist->dflt[i] = llist->dflt[j]; |
| if (llist->dflt[i]) { |
| i++; |
| } |
| } |
| llist->dflt_size = i + 1; |
| } |
| /* check XPath dependencies */ |
| if (((yyvsp[-1].nodes).deviation->trg_must_size && *(yyvsp[-1].nodes).deviation->trg_must_size) && |
| unres_schema_add_node(trg, unres, (yyvsp[-1].nodes).deviation->target, UNRES_XPATH, NULL)) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 528: |
| |
| { if (read_all) { |
| (yyval.nodes).deviation = actual; |
| actual_type = DELETE_KEYWORD; |
| if (size_arrays->node[size_arrays->next].must) { |
| if (yang_read_deviate_must(actual, size_arrays->node[size_arrays->next].must)) { |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].unique) { |
| if (yang_read_deviate_unique(actual, size_arrays->node[size_arrays->next].unique)) { |
| YYABORT; |
| } |
| } |
| if (size_arrays->node[size_arrays->next].dflt) { |
| if (yang_read_deviate_default(trg, actual, size_arrays->node[size_arrays->next].dflt)) { |
| YYABORT; |
| } |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 529: |
| |
| { if (read_all) { |
| if (yang_read_deviate_units(trg->ctx, (yyvsp[-1].nodes).deviation, s)) { |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 530: |
| |
| { if (read_all) { |
| if (yang_check_deviate_must(trg->ctx, (yyvsp[-2].nodes).deviation)) { |
| YYABORT; |
| } |
| actual = (yyvsp[-2].nodes).deviation; |
| actual_type = DELETE_KEYWORD; |
| (yyval.nodes) = (yyvsp[-2].nodes); |
| } else { |
| size_arrays->node[(yyvsp[-2].nodes).index].must++; |
| } |
| } |
| |
| break; |
| |
| case 531: |
| |
| { if (read_all) { |
| if (yang_check_deviate_unique(trg, (yyvsp[-1].nodes).deviation, s)) { |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].unique++; |
| } |
| } |
| |
| break; |
| |
| case 532: |
| |
| { if (read_all) { |
| if (yang_fill_deviate_default(trg->ctx, (yyvsp[-1].nodes).deviation, s)) { |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].dflt++; |
| } |
| } |
| |
| break; |
| |
| case 533: |
| |
| { if (read_all && yang_read_deviate(actual, LY_DEVIATE_RPL)) { |
| YYABORT; |
| } |
| } |
| |
| break; |
| |
| case 535: |
| |
| { if (read_all) { |
| (yyval.nodes).deviation = actual; |
| } |
| } |
| |
| break; |
| |
| case 537: |
| |
| { if (read_all && (yyvsp[-1].nodes).deviation->deviate->type) { |
| if (unres_schema_add_node(trg, unres, (yyvsp[-1].nodes).deviation->deviate->type, UNRES_TYPE_DER, (yyvsp[-1].nodes).deviation->target) == -1) { |
| lydict_remove(trg->ctx, ((struct yang_type *)(yyvsp[-1].nodes).deviation->deviate->type->der)->name); |
| free((yyvsp[-1].nodes).deviation->deviate->type->der); |
| (yyvsp[-1].nodes).deviation->deviate->type->der = NULL; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 538: |
| |
| { if (read_all) { |
| (yyval.nodes).deviation = actual; |
| actual_type = REPLACE_KEYWORD; |
| if (size_arrays->node[size_arrays->next].dflt) { |
| if (yang_read_deviate_default(trg, actual, size_arrays->node[size_arrays->next].dflt)) { |
| YYABORT; |
| } |
| } |
| size_arrays->next++; |
| } else { |
| (yyval.nodes).index = size_arrays->size; |
| if (yang_add_elem(&size_arrays->node, &size_arrays->size)) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 539: |
| |
| { if (read_all) { |
| ly_set_add((yyvsp[-2].nodes).deviation->dflt_check, (yyvsp[-2].nodes).deviation->target, 0); |
| } |
| } |
| |
| break; |
| |
| case 540: |
| |
| { if (read_all) { |
| if (yang_read_deviate_units(trg->ctx, (yyvsp[-1].nodes).deviation, s)) { |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 541: |
| |
| { if (read_all) { |
| if (yang_fill_deviate_default(trg->ctx, (yyvsp[-1].nodes).deviation, s)) { |
| YYABORT; |
| } |
| s = NULL; |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } else { |
| size_arrays->node[(yyvsp[-1].nodes).index].dflt++; |
| } |
| } |
| |
| break; |
| |
| case 542: |
| |
| { if (read_all) { |
| if (yang_read_deviate_config((yyvsp[-1].nodes).deviation, (yyvsp[0].i))) { |
| YYABORT; |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 543: |
| |
| { if (read_all) { |
| if (yang_read_deviate_mandatory((yyvsp[-1].nodes).deviation, (yyvsp[0].i))) { |
| YYABORT; |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 544: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).deviation->deviate->min_set) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "min-elements", "deviate"); |
| YYABORT; |
| } |
| if (yang_read_deviate_minmax((yyvsp[-1].nodes).deviation, (yyvsp[0].uint), 0)) { |
| YYABORT; |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 545: |
| |
| { if (read_all) { |
| if ((yyvsp[-1].nodes).deviation->deviate->max_set) { |
| LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "max-elements", "deviate"); |
| YYABORT; |
| } |
| if (yang_read_deviate_minmax((yyvsp[-1].nodes).deviation, (yyvsp[0].uint), 1)) { |
| YYABORT; |
| } |
| (yyval.nodes) = (yyvsp[-1].nodes); |
| } |
| } |
| |
| break; |
| |
| case 546: |
| |
| { if (read_all && !(actual=yang_read_when(trg, actual, actual_type, s))) {YYABORT;} s=NULL; actual_type=WHEN_KEYWORD;} |
| |
| break; |
| |
| case 551: |
| |
| { if (read_all && yang_read_description(trg, actual, s, "when")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 552: |
| |
| { if (read_all && yang_read_reference(trg, actual, s, "when")) { |
| YYABORT; |
| } |
| s = NULL; |
| } |
| |
| break; |
| |
| case 553: |
| |
| { (yyval.i) = (yyvsp[-1].i); } |
| |
| break; |
| |
| case 554: |
| |
| { read_string = (read_string) ? LY_READ_ONLY_SIZE : LY_READ_ALL; } |
| |
| break; |
| |
| case 555: |
| |
| { read_string = (read_string) ? LY_READ_ONLY_SIZE : LY_READ_ALL; } |
| |
| break; |
| |
| case 556: |
| |
| { (yyval.i) = (yyvsp[-2].i); } |
| |
| break; |
| |
| case 557: |
| |
| { (yyval.i) = LYS_CONFIG_W | LYS_CONFIG_SET; } |
| |
| break; |
| |
| case 558: |
| |
| { (yyval.i) = LYS_CONFIG_R | LYS_CONFIG_SET; } |
| |
| break; |
| |
| case 559: |
| |
| { if (read_string) { |
| if (!strcmp(s, "true")) { |
| (yyval.i) = LYS_CONFIG_W | LYS_CONFIG_SET; |
| } else if (!strcmp(s, "false")) { |
| (yyval.i) = LYS_CONFIG_R | LYS_CONFIG_SET; |
| } else { |
| LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "config"); |
| free(s); |
| YYABORT; |
| } |
| free(s); |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 560: |
| |
| { (yyval.i) = (yyvsp[-1].i); } |
| |
| break; |
| |
| case 561: |
| |
| { read_string = (read_string) ? LY_READ_ONLY_SIZE : LY_READ_ALL; } |
| |
| break; |
| |
| case 562: |
| |
| { read_string = (read_string) ? LY_READ_ONLY_SIZE : LY_READ_ALL; } |
| |
| break; |
| |
| case 563: |
| |
| { (yyval.i) = (yyvsp[-2].i); } |
| |
| break; |
| |
| case 564: |
| |
| { (yyval.i) = LYS_MAND_TRUE; } |
| |
| break; |
| |
| case 565: |
| |
| { (yyval.i) = LYS_MAND_FALSE; } |
| |
| break; |
| |
| case 566: |
| |
| { if (read_string) { |
| if (!strcmp(s, "true")) { |
| (yyval.i) = LYS_MAND_TRUE; |
| } else if (!strcmp(s, "false")) { |
| (yyval.i) = LYS_MAND_FALSE; |
| } else { |
| LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "mandatory"); |
| free(s); |
| YYABORT; |
| } |
| free(s); |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 568: |
| |
| { (yyval.uint) = (yyvsp[-1].uint); } |
| |
| break; |
| |
| case 569: |
| |
| { (yyval.uint) = (yyvsp[-1].uint); } |
| |
| break; |
| |
| case 570: |
| |
| { if (read_all) { |
| if (strlen(s) == 1 && s[0] == '0') { |
| (yyval.uint) = 0; |
| } else { |
| /* convert it to uint32_t */ |
| uint64_t val; |
| char *endptr = NULL; |
| errno = 0; |
| |
| val = strtoul(s, &endptr, 10); |
| if (*endptr || s[0] == '-' || errno || val > UINT32_MAX) { |
| LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "min-elements"); |
| free(s); |
| YYABORT; |
| } |
| (yyval.uint) = (uint32_t) val; |
| } |
| free(s); |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 571: |
| |
| { (yyval.uint) = (yyvsp[-1].uint); } |
| |
| break; |
| |
| case 572: |
| |
| { (yyval.uint) = 0; } |
| |
| break; |
| |
| case 573: |
| |
| { (yyval.uint) = (yyvsp[-1].uint); } |
| |
| break; |
| |
| case 574: |
| |
| { if (read_all) { |
| if (!strcmp(s, "unbounded")) { |
| (yyval.uint) = 0; |
| } else { |
| /* convert it to uint32_t */ |
| uint64_t val; |
| char *endptr = NULL; |
| errno = 0; |
| |
| val = strtoul(s, &endptr, 10); |
| if (*endptr || s[0] == '-' || errno || val == 0 || val > UINT32_MAX) { |
| LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "max-elements"); |
| free(s); |
| YYABORT; |
| } |
| (yyval.uint) = (uint32_t) val; |
| } |
| free(s); |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 575: |
| |
| { (yyval.i) = (yyvsp[-1].i); } |
| |
| break; |
| |
| case 576: |
| |
| { (yyval.i) = LYS_USERORDERED; } |
| |
| break; |
| |
| case 577: |
| |
| { (yyval.i) = LYS_SYSTEMORDERED; } |
| |
| break; |
| |
| case 578: |
| |
| { if (read_all) { |
| if (!strcmp(s, "user")) { |
| (yyval.i) = LYS_USERORDERED; |
| } else if (!strcmp(s, "system")) { |
| (yyval.i) = LYS_SYSTEMORDERED; |
| } else { |
| free(s); |
| YYABORT; |
| } |
| free(s); |
| s=NULL; |
| } |
| } |
| |
| break; |
| |
| case 579: |
| |
| { if (read_all) { |
| if (!(actual=yang_read_must(trg, actual, s, actual_type))) {YYABORT;} |
| s=NULL; |
| actual_type=MUST_KEYWORD; |
| } |
| } |
| |
| break; |
| |
| case 589: |
| |
| { if (read_all){ |
| s = strdup(yyget_text(scanner)); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 592: |
| |
| { if (read_all) { |
| (yyval.v) = actual; |
| if (!(actual = yang_read_range(trg, actual, s))) { |
| YYABORT; |
| } |
| actual_type = RANGE_KEYWORD; |
| s = NULL; |
| } |
| } |
| |
| break; |
| |
| case 593: |
| |
| { if (read_all) { |
| if (s) { |
| s = ly_realloc(s,strlen(s) + yyget_leng(scanner) + 2); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| strcat(s,"/"); |
| strcat(s, yyget_text(scanner)); |
| } else { |
| s = malloc(yyget_leng(scanner) + 2); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| s[0]='/'; |
| memcpy(s + 1, yyget_text(scanner), yyget_leng(scanner) + 1); |
| } |
| } |
| } |
| |
| break; |
| |
| case 597: |
| |
| { if (read_all) { |
| if (s) { |
| s = ly_realloc(s,strlen(s) + yyget_leng(scanner) + 1); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| strcat(s, yyget_text(scanner)); |
| } else { |
| s = strdup(yyget_text(scanner)); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| } |
| |
| break; |
| |
| case 599: |
| |
| { tmp_s = yyget_text(scanner); } |
| |
| break; |
| |
| case 600: |
| |
| { if (read_all) { |
| s = strdup(tmp_s); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| s[strlen(s) - 1] = '\0'; |
| } |
| } |
| |
| break; |
| |
| case 601: |
| |
| { tmp_s = yyget_text(scanner); } |
| |
| break; |
| |
| case 602: |
| |
| { if (read_all) { |
| s = strdup(tmp_s); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| s[strlen(s) - 1] = '\0'; |
| } |
| } |
| |
| break; |
| |
| case 626: |
| |
| { /* convert it to uint32_t */ |
| unsigned long val; |
| |
| val = strtoul(yyget_text(scanner), NULL, 10); |
| if (val > UINT32_MAX) { |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Converted number is very long."); |
| YYABORT; |
| } |
| (yyval.uint) = (uint32_t) val; |
| } |
| |
| break; |
| |
| case 627: |
| |
| { (yyval.uint) = 0; } |
| |
| break; |
| |
| case 628: |
| |
| { (yyval.uint) = (yyvsp[0].uint); } |
| |
| break; |
| |
| case 629: |
| |
| { (yyval.i) = 0; } |
| |
| break; |
| |
| case 630: |
| |
| { /* convert it to int32_t */ |
| int64_t val; |
| |
| val = strtoll(yyget_text(scanner), NULL, 10); |
| if (val < INT32_MIN || val > INT32_MAX) { |
| LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "The number is not in the correct range (INT32_MIN..INT32_MAX): \"%d\"",val); |
| YYABORT; |
| } |
| (yyval.i) = (int32_t) val; |
| } |
| |
| break; |
| |
| case 636: |
| |
| { if (read_all && lyp_check_identifier(s, LY_IDENT_SIMPLE, trg, NULL)) { |
| free(s); |
| YYABORT; |
| } |
| } |
| |
| break; |
| |
| case 641: |
| |
| { if (read_all) { |
| char *tmp; |
| |
| if ((tmp = strchr(s, ':'))) { |
| *tmp = '\0'; |
| /* check prefix */ |
| if (lyp_check_identifier(s, LY_IDENT_SIMPLE, trg, NULL)) { |
| free(s); |
| YYABORT; |
| } |
| /* check identifier */ |
| if (lyp_check_identifier(tmp + 1, LY_IDENT_SIMPLE, trg, NULL)) { |
| free(s); |
| YYABORT; |
| } |
| *tmp = ':'; |
| } else { |
| /* check identifier */ |
| if (lyp_check_identifier(s, LY_IDENT_SIMPLE, trg, NULL)) { |
| free(s); |
| YYABORT; |
| } |
| } |
| } |
| } |
| |
| break; |
| |
| case 647: |
| |
| { if (read_all ) { |
| if (yang_use_extension(trg, data_node, actual, yyget_text(scanner))) { |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 670: |
| |
| { if (read_all){ |
| s = strdup(yyget_text(scanner)); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 761: |
| |
| { if (read_all) { |
| s = strdup(yyget_text(scanner)); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| case 762: |
| |
| { if (read_all) { |
| s = strdup(yyget_text(scanner)); |
| if (!s) { |
| LOGMEM; |
| YYABORT; |
| } |
| } |
| } |
| |
| break; |
| |
| |
| |
| default: break; |
| } |
| /* User semantic actions sometimes alter yychar, and that requires |
| that yytoken be updated with the new translation. We take the |
| approach of translating immediately before every use of yytoken. |
| One alternative is translating here after every semantic action, |
| but that translation would be missed if the semantic action invokes |
| YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or |
| if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an |
| incorrect destructor might then be invoked immediately. In the |
| case of YYERROR or YYBACKUP, subsequent parser actions might lead |
| to an incorrect destructor call or verbose syntax error message |
| before the lookahead is translated. */ |
| YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); |
| |
| YYPOPSTACK (yylen); |
| yylen = 0; |
| YY_STACK_PRINT (yyss, yyssp); |
| |
| *++yyvsp = yyval; |
| *++yylsp = yyloc; |
| |
| /* Now 'shift' the result of the reduction. Determine what state |
| that goes to, based on the state we popped back to and the rule |
| number reduced by. */ |
| |
| yyn = yyr1[yyn]; |
| |
| yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; |
| if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) |
| yystate = yytable[yystate]; |
| else |
| yystate = yydefgoto[yyn - YYNTOKENS]; |
| |
| goto yynewstate; |
| |
| |
| /*--------------------------------------. |
| | yyerrlab -- here on detecting error. | |
| `--------------------------------------*/ |
| yyerrlab: |
| /* Make sure we have latest lookahead translation. See comments at |
| user semantic actions for why this is necessary. */ |
| yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); |
| |
| /* If not already recovering from an error, report this error. */ |
| if (!yyerrstatus) |
| { |
| ++yynerrs; |
| #if ! YYERROR_VERBOSE |
| yyerror (&yylloc, scanner, module, submodule, unres, size_arrays, read_all, YY_("syntax error")); |
| #else |
| # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ |
| yyssp, yytoken) |
| { |
| char const *yymsgp = YY_("syntax error"); |
| int yysyntax_error_status; |
| yysyntax_error_status = YYSYNTAX_ERROR; |
| if (yysyntax_error_status == 0) |
| yymsgp = yymsg; |
| else if (yysyntax_error_status == 1) |
| { |
| if (yymsg != yymsgbuf) |
| YYSTACK_FREE (yymsg); |
| yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); |
| if (!yymsg) |
| { |
| yymsg = yymsgbuf; |
| yymsg_alloc = sizeof yymsgbuf; |
| yysyntax_error_status = 2; |
| } |
| else |
| { |
| yysyntax_error_status = YYSYNTAX_ERROR; |
| yymsgp = yymsg; |
| } |
| } |
| yyerror (&yylloc, scanner, module, submodule, unres, size_arrays, read_all, yymsgp); |
| if (yysyntax_error_status == 2) |
| goto yyexhaustedlab; |
| } |
| # undef YYSYNTAX_ERROR |
| #endif |
| } |
| |
| yyerror_range[1] = yylloc; |
| |
| if (yyerrstatus == 3) |
| { |
| /* If just tried and failed to reuse lookahead token after an |
| error, discard it. */ |
| |
| if (yychar <= YYEOF) |
| { |
| /* Return failure if at end of input. */ |
| if (yychar == YYEOF) |
| YYABORT; |
| } |
| else |
| { |
| yydestruct ("Error: discarding", |
| yytoken, &yylval, &yylloc, scanner, module, submodule, unres, size_arrays, read_all); |
| yychar = YYEMPTY; |
| } |
| } |
| |
| /* Else will try to reuse lookahead token after shifting the error |
| token. */ |
| goto yyerrlab1; |
| |
| |
| /*---------------------------------------------------. |
| | 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; |
| |
| yyerror_range[1] = yylsp[1-yylen]; |
| /* Do not reclaim the symbols of the rule whose action triggered |
| this YYERROR. */ |
| YYPOPSTACK (yylen); |
| yylen = 0; |
| YY_STACK_PRINT (yyss, yyssp); |
| yystate = *yyssp; |
| goto yyerrlab1; |
| |
| |
| /*-------------------------------------------------------------. |
| | yyerrlab1 -- common code for both syntax error and YYERROR. | |
| `-------------------------------------------------------------*/ |
| yyerrlab1: |
| yyerrstatus = 3; /* Each real token shifted decrements this. */ |
| |
| for (;;) |
| { |
| yyn = yypact[yystate]; |
| if (!yypact_value_is_default (yyn)) |
| { |
| yyn += YYTERROR; |
| if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) |
| { |
| yyn = yytable[yyn]; |
| if (0 < yyn) |
| break; |
| } |
| } |
| |
| /* Pop the current state because it cannot handle the error token. */ |
| if (yyssp == yyss) |
| YYABORT; |
| |
| yyerror_range[1] = *yylsp; |
| yydestruct ("Error: popping", |
| yystos[yystate], yyvsp, yylsp, scanner, module, submodule, unres, size_arrays, read_all); |
| YYPOPSTACK (1); |
| yystate = *yyssp; |
| YY_STACK_PRINT (yyss, yyssp); |
| } |
| |
| YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN |
| *++yyvsp = yylval; |
| YY_IGNORE_MAYBE_UNINITIALIZED_END |
| |
| yyerror_range[2] = yylloc; |
| /* Using YYLLOC is tempting, but would change the location of |
| the lookahead. YYLOC is available though. */ |
| YYLLOC_DEFAULT (yyloc, yyerror_range, 2); |
| *++yylsp = yyloc; |
| |
| /* Shift the error token. */ |
| YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); |
| |
| yystate = yyn; |
| goto yynewstate; |
| |
| |
| /*-------------------------------------. |
| | yyacceptlab -- YYACCEPT comes here. | |
| `-------------------------------------*/ |
| yyacceptlab: |
| yyresult = 0; |
| goto yyreturn; |
| |
| /*-----------------------------------. |
| | yyabortlab -- YYABORT comes here. | |
| `-----------------------------------*/ |
| yyabortlab: |
| yyresult = 1; |
| goto yyreturn; |
| |
| #if !defined yyoverflow || YYERROR_VERBOSE |
| /*-------------------------------------------------. |
| | yyexhaustedlab -- memory exhaustion comes here. | |
| `-------------------------------------------------*/ |
| yyexhaustedlab: |
| yyerror (&yylloc, scanner, module, submodule, unres, size_arrays, read_all, YY_("memory exhausted")); |
| yyresult = 2; |
| /* Fall through. */ |
| #endif |
| |
| yyreturn: |
| if (yychar != YYEMPTY) |
| { |
| /* Make sure we have latest lookahead translation. See comments at |
| user semantic actions for why this is necessary. */ |
| yytoken = YYTRANSLATE (yychar); |
| yydestruct ("Cleanup: discarding lookahead", |
| yytoken, &yylval, &yylloc, scanner, module, submodule, unres, size_arrays, read_all); |
| } |
| /* Do not reclaim the symbols of the rule whose action triggered |
| this YYABORT or YYACCEPT. */ |
| YYPOPSTACK (yylen); |
| YY_STACK_PRINT (yyss, yyssp); |
| while (yyssp != yyss) |
| { |
| yydestruct ("Cleanup: popping", |
| yystos[*yyssp], yyvsp, yylsp, scanner, module, submodule, unres, size_arrays, read_all); |
| YYPOPSTACK (1); |
| } |
| #ifndef yyoverflow |
| if (yyss != yyssa) |
| YYSTACK_FREE (yyss); |
| #endif |
| #if YYERROR_VERBOSE |
| if (yymsg != yymsgbuf) |
| YYSTACK_FREE (yymsg); |
| #endif |
| return yyresult; |
| } |
| |
| |
| |
| void yyerror(YYLTYPE *yylloc, void *scanner, ...){ |
| |
| if (yylloc->first_line != -1) { |
| LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, yyget_text(scanner)); |
| } |
| } |