parser CHANGE compile flag enabled_cache updated

Enables caching of some information, which
increases space complexity but improves time.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 13d1b9d..4c1a600 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,7 +14,15 @@
 set(LIBYANG_MICRO_VERSION 27)
 set(LIBYANG_VERSION ${LIBYANG_MAJOR_VERSION}.${LIBYANG_MINOR_VERSION}.${LIBYANG_MICRO_VERSION})
 set(LIBYANG_SOVERSION ${LIBYANG_MAJOR_VERSION}.${LIBYANG_MINOR_VERSION})
-configure_file(${PROJECT_SOURCE_DIR}/src/libyang.h.in ${PROJECT_SOURCE_DIR}/src/libyang.h)
+
+option(ENABLE_CACHE "Enable schema caching (time-efficient at the cost of increased space-complexity)" OFF)
+if(ENABLE_CACHE)
+    set(ENABLE_CACHE_MACRO "/**\n * @brief Cache of some temporary information will be used.\n */\n#define LY_ENABLED_CACHE")
+else()
+    set(ENABLE_CACHE_MACRO "/**\n * @brief Cache of some temporary information will not be used.\n */")
+endif()
+
+configure_file(${PROJECT_SOURCE_DIR}/src/libyang.h.in ${PROJECT_SOURCE_DIR}/src/libyang.h @ONLY)
 
 if(PLUGINS_DIR)
 	set(LIBYANG_EXT_PLUGINS_DIR ${PLUGINS_DIR})
@@ -133,13 +141,6 @@
 	option(ENABLE_VALGRIND_TESTS "Build tests with valgrind" OFF)
 endif()
 
-option(ENABLE_CACHE "Enable schema caching (time-efficient at the cost of increased space-complexity)" OFF)
-if(ENABLE_CACHE)
-    set(ENABLE_CACHE_MACRO "#define LY_ENABLED_CACHE")
-endif()
-
-configure_file("src/common.h.in" "src/common.h" @ONLY)
-
 set(libsrc
 	src/common.c
 	src/context.c
diff --git a/src/common.h.in b/src/common.h
similarity index 99%
rename from src/common.h.in
rename to src/common.h
index 7f17461..6106ab9 100644
--- a/src/common.h.in
+++ b/src/common.h
@@ -17,12 +17,10 @@
 
 #include <stdint.h>
 
-#include "dict_private.h"
 #include "libyang.h"
+#include "dict_private.h"
 #include "resolve.h"
 
-@ENABLE_CACHE_MACRO@
-
 #ifdef __GNUC__
 #  define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))
 #else
diff --git a/src/context.h b/src/context.h
index 698e979..8cc2549 100644
--- a/src/context.h
+++ b/src/context.h
@@ -15,9 +15,9 @@
 #ifndef LY_CONTEXT_H_
 #define LY_CONTEXT_H_
 
+#include "libyang.h"
 #include "dict_private.h"
 #include "tree_schema.h"
-#include "libyang.h"
 
 struct ly_modules_list {
     char **search_paths;
diff --git a/src/libyang.h.in b/src/libyang.h.in
index 923dcc3..e9fc41a 100644
--- a/src/libyang.h.in
+++ b/src/libyang.h.in
@@ -17,6 +17,8 @@
 
 #include <stdio.h>
 
+@ENABLE_CACHE_MACRO@
+
 #include "tree_schema.h"
 #include "tree_data.h"
 #include "xml.h"
diff --git a/src/parser.c b/src/parser.c
index 0a97f2c..5cb83f4 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -907,6 +907,9 @@
 validate_pattern(const char *val_str, struct lys_type *type, struct lyd_node *node)
 {
     int i, rc;
+#ifndef LY_ENABLED_CACHE
+    pcre *precomp;
+#endif
 
     assert(type->base == LY_TYPE_STRING);
 
@@ -918,9 +921,32 @@
         return EXIT_FAILURE;
     }
 
+#ifdef LY_ENABLED_CACHE
+    /* there is no cache, build it */
+    if (!type->info.str.patterns_pcre && type->info.str.pat_count) {
+        type->info.str.patterns_pcre = malloc(2 * type->info.str.pat_count * sizeof *type->info.str.patterns_pcre);
+        LY_CHECK_ERR_RETURN(!type->info.str.patterns_pcre, LOGMEM, -1);
+
+        for (i = 0; i < type->info.str.pat_count; ++i) {
+            if (lyp_precompile_pattern(&type->info.str.patterns[i].expr[1],
+                                       (pcre**)&type->info.str.patterns_pcre[i * 2],
+                                       (pcre_extra**)&type->info.str.patterns_pcre[i * 2 + 1])) {
+                return EXIT_FAILURE;
+            }
+        }
+    }
+#endif
+
     for (i = 0; i < type->info.str.pat_count; ++i) {
-        rc = pcre_exec((pcre*)type->info.str.patterns_pcre[2 * i], (pcre_extra*)type->info.str.patterns_pcre[2 * i + 1],
+#ifdef LY_ENABLED_CACHE
+        rc = pcre_exec((pcre *)type->info.str.patterns_pcre[2 * i], (pcre_extra *)type->info.str.patterns_pcre[2 * i + 1],
                        val_str, strlen(val_str), 0, 0, NULL, 0);
+#else
+        if (lyp_check_pattern(&type->info.str.patterns[i].expr[1], &precomp)) {
+            return EXIT_FAILURE;
+        }
+        rc = pcre_exec(precomp, NULL, val_str, strlen(val_str), 0, 0, NULL, 0);
+#endif
         if ((rc && type->info.str.patterns[i].expr[0] == 0x06) || (!rc && type->info.str.patterns[i].expr[0] == 0x15)) {
             LOGVAL(LYE_NOCONSTR, LY_VLOG_LYD, node, val_str, &type->info.str.patterns[i].expr[1]);
             if (type->info.str.patterns[i].emsg) {
diff --git a/src/parser_yang.h b/src/parser_yang.h
index 8fbb34c..3032c9f 100644
--- a/src/parser_yang.h
+++ b/src/parser_yang.h
@@ -18,9 +18,10 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "tree_schema.h"
+#include "libyang.h"
 #include "resolve.h"
 #include "common.h"
+#include "tree_schema.h"
 #include "context.h"
 
 #define LYS_SYSTEMORDERED 0x40
@@ -172,7 +173,7 @@
 int yang_check_ext_instance(struct lys_module *module, struct lys_ext_instance ***ext, uint size,
                             void *parent, struct unres_schema *unres);
 
-int yang_read_extcomplex_str(struct lys_module *module, struct lys_ext_instance_complex *ext, const char *arg_name, 
+int yang_read_extcomplex_str(struct lys_module *module, struct lys_ext_instance_complex *ext, const char *arg_name,
                              const char *parent_name, char *value, int parent_stmt, LY_STMT stmt);
 
 void **yang_getplace_for_extcomplex_struct(struct lys_ext_instance_complex *ext, int *index,
diff --git a/src/parser_yang_bis.c b/src/parser_yang_bis.c
index 7a18913..4dba793 100644
--- a/src/parser_yang_bis.c
+++ b/src/parser_yang_bis.c
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 3.0.4.  */
+/* A Bison parser, made by GNU Bison 2.7.  */
 
 /* Bison implementation for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
-
+   
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+   
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -26,7 +26,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.4"
+#define YYBISON_VERSION "2.7"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -68,9 +68,10 @@
 #include <stdarg.h>
 #include <string.h>
 #include <stdlib.h>
+#include "libyang.h"
+#include "common.h"
 #include "context.h"
 #include "resolve.h"
-#include "common.h"
 #include "parser_yang.h"
 #include "parser_yang_lex.h"
 #include "parser.h"
@@ -95,11 +96,11 @@
 
 
 
-# ifndef YY_NULLPTR
+# ifndef YY_NULL
 #  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
+#   define YY_NULL nullptr
 #  else
-#   define YY_NULLPTR 0
+#   define YY_NULL 0
 #  endif
 # endif
 
@@ -115,7 +116,7 @@
    by #include "parser_yang_bis.h".  */
 #ifndef YY_YY_PARSER_YANG_BIS_H_INCLUDED
 # define YY_YY_PARSER_YANG_BIS_H_INCLUDED
-/* Debug traces.  */
+/* Enabling traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
@@ -123,118 +124,118 @@
 extern int yydebug;
 #endif
 
-/* Token type.  */
+/* Tokens.  */
 #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,
-    NODE = 354,
-    NODE_PRINT = 355,
-    EXTENSION_INSTANCE = 356,
-    SUBMODULE_EXT_KEYWORD = 357
-  };
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   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,
+     NODE = 354,
+     NODE_PRINT = 355,
+     EXTENSION_INSTANCE = 356,
+     SUBMODULE_EXT_KEYWORD = 357
+   };
 #endif
 
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 
-union YYSTYPE
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
 {
 
 
@@ -271,30 +272,40 @@
   } revisions;
 
 
-};
 
-typedef union YYSTYPE YYSTYPE;
+} YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
-/* Location type.  */
 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
-typedef struct YYLTYPE YYLTYPE;
-struct YYLTYPE
+typedef struct YYLTYPE
 {
   int first_line;
   int first_column;
   int last_line;
   int last_column;
-};
+} YYLTYPE;
+# define yyltype YYLTYPE /* obsolescent; will be withdrawn */
 # define YYLTYPE_IS_DECLARED 1
 # define YYLTYPE_IS_TRIVIAL 1
 #endif
 
 
-
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
 int yyparse (void *scanner, struct yang_parameter *param);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
 #endif /* !YY_YY_PARSER_YANG_BIS_H_INCLUDED  */
 
@@ -314,8 +325,11 @@
 
 #ifdef YYTYPE_INT8
 typedef YYTYPE_INT8 yytype_int8;
-#else
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
 #endif
 
 #ifdef YYTYPE_UINT16
@@ -335,7 +349,8 @@
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
@@ -357,33 +372,6 @@
 # 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))
@@ -391,25 +379,23 @@
 # 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")
+/* Identity function, used to suppress warnings about constant conditions.  */
+#ifndef lint
+# define YYID(N) (N)
 #else
-# define YY_INITIAL_VALUE(Value) Value
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int yyi)
+#else
+static int
+YYID (yyi)
+    int yyi;
 #endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+{
+  return yyi;
+}
 #endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
 
 #if ! defined yyoverflow || YYERROR_VERBOSE
 
@@ -428,7 +414,8 @@
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
 #     ifndef EXIT_SUCCESS
@@ -440,8 +427,8 @@
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's 'empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+   /* Pacify GCC's `empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (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
@@ -457,7 +444,7 @@
 #  endif
 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined malloc) \
-             && (defined YYFREE || defined free)))
+	     && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 #   ifndef EXIT_SUCCESS
 #    define EXIT_SUCCESS 0
@@ -465,13 +452,15 @@
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS
+#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS
+#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
@@ -481,8 +470,8 @@
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-         || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
-             && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+	 || (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
@@ -508,16 +497,16 @@
    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)
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
+	Stack = &yyptr->Stack_alloc;					\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (YYID (0))
 
 #endif
 
@@ -536,7 +525,7 @@
           for (yyi = 0; yyi < (Count); yyi++)   \
             (Dst)[yyi] = (Src)[yyi];            \
         }                                       \
-      while (0)
+      while (YYID (0))
 #  endif
 # endif
 #endif /* !YYCOPY_NEEDED */
@@ -552,19 +541,17 @@
 #define YYNNTS  329
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  827
-/* YYNSTATES -- Number of states.  */
+/* YYNRULES -- Number of states.  */
 #define YYNSTATES  1320
 
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-   by yylex, with out-of-bounds checking.  */
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   357
 
-#define YYTRANSLATE(YYX)                                                \
+#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.  */
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -606,92 +593,429 @@
 };
 
 #if YYDEBUG
-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const yytype_uint16 yyprhs[] =
+{
+       0,     0,     3,     5,     7,     9,    11,    15,    16,    17,
+      24,    26,    40,    42,    43,    46,    49,    52,    54,    68,
+      70,    71,    74,    78,    80,    85,    87,    92,    93,    97,
+     101,   109,   111,   112,   115,   118,   121,   124,   126,   131,
+     133,   138,   139,   142,   145,   148,   150,   155,   157,   165,
+     167,   172,   173,   176,   179,   182,   185,   187,   192,   194,
+     199,   201,   206,   208,   213,   215,   217,   218,   222,   227,
+     229,   234,   235,   238,   241,   242,   246,   248,   250,   251,
+     255,   257,   259,   261,   263,   265,   267,   269,   271,   273,
+     275,   277,   282,   284,   289,   290,   294,   297,   300,   303,
+     305,   310,   312,   317,   319,   320,   325,   328,   331,   333,
+     335,   340,   343,   346,   349,   351,   353,   358,   360,   365,
+     366,   370,   373,   376,   379,   381,   386,   388,   392,   394,
+     399,   401,   406,   407,   410,   414,   417,   420,   423,   425,
+     430,   432,   440,   441,   445,   448,   451,   454,   457,   460,
+     465,   467,   469,   474,   476,   478,   480,   481,   484,   487,
+     490,   494,   498,   501,   505,   509,   512,   513,   515,   520,
+     523,   525,   530,   532,   534,   539,   540,   543,   546,   549,
+     552,   554,   559,   561,   563,   568,   569,   572,   575,   578,
+     581,   584,   586,   591,   595,   596,   600,   605,   607,   609,
+     614,   615,   619,   622,   625,   628,   631,   633,   638,   641,
+     643,   648,   650,   655,   657,   662,   664,   669,   672,   675,
+     677,   680,   681,   684,   690,   692,   694,   699,   700,   704,
+     707,   710,   713,   716,   718,   723,   726,   728,   730,   735,
+     737,   742,   744,   749,   751,   756,   758,   763,   765,   770,
+     771,   774,   777,   780,   784,   788,   792,   796,   800,   802,
+     804,   806,   808,   810,   812,   814,   816,   818,   823,   825,
+     830,   831,   835,   839,   843,   846,   849,   852,   855,   858,
+     862,   866,   870,   874,   878,   886,   888,   889,   893,   897,
+     901,   904,   908,   911,   914,   917,   920,   923,   926,   928,
+     936,   937,   941,   945,   949,   952,   955,   959,   962,   965,
+     968,   971,   974,   977,   980,   982,   990,   991,   995,   999,
+    1003,  1006,  1009,  1012,  1015,  1018,  1021,  1024,  1027,  1030,
+    1034,  1038,  1042,  1046,  1050,  1052,  1057,  1059,  1064,  1065,
+    1069,  1073,  1076,  1079,  1082,  1085,  1088,  1091,  1095,  1097,
+    1099,  1101,  1103,  1105,  1107,  1109,  1111,  1113,  1115,  1120,
+    1122,  1127,  1128,  1132,  1136,  1139,  1142,  1145,  1149,  1151,
+    1156,  1158,  1163,  1165,  1170,  1171,  1175,  1179,  1183,  1186,
+    1189,  1192,  1195,  1198,  1200,  1205,  1207,  1212,  1213,  1217,
+    1221,  1224,  1227,  1230,  1234,  1238,  1241,  1243,  1245,  1250,
+    1252,  1257,  1258,  1262,  1266,  1269,  1272,  1275,  1278,  1281,
+    1284,  1287,  1290,  1293,  1295,  1297,  1305,  1308,  1310,  1312,
+    1320,  1321,  1325,  1329,  1332,  1335,  1338,  1342,  1346,  1350,
+    1354,  1356,  1361,  1363,  1368,  1370,  1375,  1376,  1380,  1383,
+    1386,  1389,  1393,  1397,  1401,  1405,  1408,  1414,  1415,  1419,
+    1423,  1427,  1431,  1434,  1440,  1442,  1447,  1449,  1454,  1455,
+    1459,  1463,  1466,  1469,  1472,  1476,  1480,  1484,  1486,  1494,
+    1495,  1498,  1501,  1507,  1510,  1512,  1514,  1516,  1518,  1522,
+    1524,  1528,  1530,  1532,  1534,  1536,  1540,  1542,  1547,  1548,
+    1551,  1555,  1558,  1561,  1564,  1567,  1570,  1573,  1575,  1579,
+    1581,  1586,  1587,  1590,  1594,  1597,  1600,  1602,  1606,  1608,
+    1613,  1614,  1618,  1621,  1624,  1627,  1630,  1633,  1636,  1638,
+    1643,  1645,  1650,  1651,  1654,  1657,  1659,  1664,  1667,  1670,
+    1672,  1674,  1679,  1682,  1685,  1687,  1689,  1694,  1696,  1701,
+    1704,  1706,  1708,  1713,  1716,  1719,  1721,  1723,  1728,  1731,
+    1734,  1736,  1738,  1743,  1745,  1750,  1752,  1757,  1760,  1762,
+    1764,  1769,  1770,  1774,  1776,  1778,  1781,  1784,  1785,  1788,
+    1789,  1793,  1794,  1797,  1798,  1801,  1803,  1807,  1810,  1811,
+    1814,  1818,  1821,  1822,  1825,  1828,  1829,  1832,  1833,  1840,
+    1846,  1852,  1858,  1863,  1864,  1867,  1868,  1874,  1880,  1882,
+    1884,  1886,  1888,  1890,  1892,  1894,  1896,  1899,  1902,  1904,
+    1906,  1908,  1911,  1914,  1916,  1919,  1924,  1926,  1928,  1930,
+    1931,  1934,  1937,  1941,  1944,  1946,  1947,  1949,  1950,  1953,
+    1954,  1957,  1961,  1962,  1968,  1970,  1975,  1976,  1980,  1982,
+    1986,  1990,  1992,  1997,  1999,  2001,  2002,  2007,  2010,  2016,
+    2018,  2020,  2021,  2024,  2027,  2028,  2030,  2031,  2035,  2037,
+    2039,  2041,  2043,  2045,  2047,  2049,  2051,  2053,  2055,  2057,
+    2059,  2061,  2063,  2065,  2067,  2069,  2071,  2073,  2075,  2077,
+    2079,  2081,  2083,  2085,  2087,  2089,  2091,  2093,  2095,  2097,
+    2099,  2101,  2103,  2105,  2107,  2109,  2111,  2113,  2115,  2117,
+    2119,  2121,  2123,  2125,  2127,  2129,  2131,  2133,  2135,  2137,
+    2139,  2141,  2143,  2145,  2147,  2149,  2151,  2153,  2155,  2157,
+    2159,  2161,  2163,  2165,  2167,  2169,  2171,  2173,  2175,  2177,
+    2179,  2181,  2183,  2185,  2187,  2189,  2191,  2193,  2195,  2197,
+    2199,  2201,  2203,  2205,  2207,  2209,  2211,  2213,  2215,  2217,
+    2219,  2221,  2222,  2223,  2224,  2225,  2226,  2227,  2228,  2230,
+    2232,  2234,  2236,  2238,  2240,  2242,  2244,  2246,  2248,  2250,
+    2252,  2254,  2256,  2258,  2260,  2262,  2264,  2266,  2268,  2270,
+    2272,  2274,  2276,  2278,  2280,  2282,  2284,  2286,  2288,  2290,
+    2292,  2293,  2297,  2300,  2303,  2306,  2309,  2312,  2315,  2318,
+    2321,  2324,  2327,  2330,  2333,  2336,  2339,  2342,  2347,  2352,
+    2355,  2358,  2361,  2364,  2367,  2370,  2373,  2376,  2379,  2382,
+    2385,  2388,  2393,  2397,  2402,  2407,  2412,  2417
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int16 yyrhs[] =
+{
+     114,     0,    -1,   120,    -1,   124,    -1,   441,    -1,     8,
+      -1,   115,   419,   117,    -1,    -1,    -1,   117,   103,   419,
+       8,   118,   419,    -1,   395,    -1,   419,    54,   420,   119,
+     104,   402,   121,   131,   145,   154,   162,   105,   419,    -1,
+     122,    -1,    -1,   122,   128,    -1,   122,   130,    -1,   122,
+     144,    -1,   395,    -1,   419,    74,   420,   123,   104,   402,
+     125,   131,   145,   154,   162,   105,   419,    -1,   126,    -1,
+      -1,   126,   128,    -1,   126,   142,   402,    -1,   422,    -1,
+      82,   420,   127,   398,    -1,   422,    -1,    56,   420,   129,
+     398,    -1,    -1,   131,   132,   402,    -1,   131,   136,   402,
+      -1,    43,   420,   133,   104,   402,   134,   105,    -1,   395,
+      -1,    -1,   134,   144,    -1,   134,   151,    -1,   134,   153,
+      -1,   134,   140,    -1,   395,    -1,    44,   420,   135,   137,
+      -1,   106,    -1,   104,   402,   138,   105,    -1,    -1,   138,
+     151,    -1,   138,   153,    -1,   138,   140,    -1,   160,    -1,
+      71,   420,   139,   398,    -1,   395,    -1,    23,   420,   141,
+     104,   402,   144,   105,    -1,   394,    -1,    64,   420,   143,
+     398,    -1,    -1,   145,   147,    -1,   145,   149,    -1,   145,
+     151,    -1,   145,   153,    -1,   422,    -1,    59,   420,   146,
+     398,    -1,   422,    -1,    28,   420,   148,   398,    -1,   422,
+      -1,    31,   420,   150,   398,    -1,   422,    -1,    67,   420,
+     152,   398,    -1,   156,    -1,   160,    -1,    -1,   156,   157,
+     402,    -1,    70,   420,   155,   158,    -1,   106,    -1,   104,
+     402,   159,   105,    -1,    -1,   159,   151,    -1,   159,   153,
+      -1,    -1,    12,   161,   419,    -1,   116,    -1,   163,    -1,
+      -1,   163,   164,   402,    -1,   166,    -1,   179,    -1,   186,
+      -1,   192,    -1,   249,    -1,   252,    -1,   296,    -1,   301,
+      -1,   310,    -1,   314,    -1,   395,    -1,    35,   420,   165,
+     167,    -1,   106,    -1,   104,   402,   168,   105,    -1,    -1,
+     168,   170,   402,    -1,   168,   176,    -1,   168,   151,    -1,
+     168,   153,    -1,   395,    -1,    20,   420,   169,   171,    -1,
+     106,    -1,   104,   402,   173,   105,    -1,   174,    -1,    -1,
+      83,   420,   172,   398,    -1,    93,   419,    -1,    88,   419,
+      -1,   116,    -1,   177,    -1,    73,   420,   175,   398,    -1,
+      85,   419,    -1,    90,   419,    -1,    87,   419,    -1,   116,
+      -1,   395,    -1,    38,   420,   178,   180,    -1,   106,    -1,
+     104,   402,   181,   105,    -1,    -1,   181,   183,   402,    -1,
+     181,   176,    -1,   181,   151,    -1,   181,   153,    -1,   422,
+      -1,    42,   420,   182,   184,    -1,   106,    -1,   104,   402,
+     105,    -1,   395,    -1,    41,   420,   185,   187,    -1,   106,
+      -1,   104,   402,   188,   105,    -1,    -1,   188,   190,    -1,
+     188,   183,   402,    -1,   188,   176,    -1,   188,   151,    -1,
+     188,   153,    -1,   397,    -1,    22,   420,   189,   398,    -1,
+     395,    -1,    76,   420,   191,   104,   402,   193,   105,    -1,
+      -1,   193,   194,   402,    -1,   193,   245,    -1,   193,   247,
+      -1,   193,   176,    -1,   193,   151,    -1,   193,   153,    -1,
+      75,   420,   195,   196,    -1,   397,    -1,   106,    -1,   104,
+     402,   197,   105,    -1,   198,    -1,   215,    -1,   231,    -1,
+      -1,   198,   229,    -1,   198,   227,    -1,   198,   190,    -1,
+     198,   204,   402,    -1,   198,   209,   402,    -1,   198,   202,
+      -1,   198,   224,   402,    -1,   198,   199,   402,    -1,   200,
+     194,    -1,    -1,   203,    -1,    39,   420,   201,   398,    -1,
+     390,   419,    -1,   116,    -1,    49,   420,   205,   206,    -1,
+     422,    -1,   106,    -1,   104,   402,   207,   105,    -1,    -1,
+     207,   241,    -1,   207,   243,    -1,   207,   151,    -1,   207,
+     153,    -1,   420,    -1,    62,   208,   210,   211,    -1,   422,
+      -1,   106,    -1,   104,   402,   212,   105,    -1,    -1,   212,
+     214,    -1,   212,   241,    -1,   212,   243,    -1,   212,   151,
+      -1,   212,   153,    -1,   422,    -1,    97,   420,   213,   398,
+      -1,   217,   402,   216,    -1,    -1,   216,   217,   402,    -1,
+      32,   420,   218,   219,    -1,   422,    -1,   106,    -1,   104,
+     402,   220,   105,    -1,    -1,   220,   183,   402,    -1,   220,
+     222,    -1,   220,   176,    -1,   220,   151,    -1,   220,   153,
+      -1,   223,    -1,    80,   420,   221,   398,    -1,   392,   419,
+      -1,   116,    -1,    66,   420,   365,   225,    -1,   106,    -1,
+     104,   402,   207,   105,    -1,   371,    -1,    61,   420,   226,
+     398,    -1,   230,    -1,    69,   420,   228,   398,    -1,    93,
+     419,    -1,    88,   419,    -1,   116,    -1,   233,   232,    -1,
+      -1,   232,   233,    -1,    24,   420,   234,   235,   402,    -1,
+     395,    -1,   106,    -1,   104,   402,   236,   105,    -1,    -1,
+     236,   183,   402,    -1,   236,   238,    -1,   236,   176,    -1,
+     236,   151,    -1,   236,   153,    -1,   239,    -1,    63,   420,
+     237,   398,    -1,   391,   419,    -1,   116,    -1,   422,    -1,
+      34,   420,   240,   398,    -1,   422,    -1,    33,   420,   242,
+     398,    -1,   422,    -1,    78,   420,   244,   398,    -1,   422,
+      -1,    30,   420,   246,   398,    -1,   395,    -1,    40,   420,
+     248,   250,    -1,   106,    -1,   104,   402,   251,   105,    -1,
+      -1,   251,   176,    -1,   251,   151,    -1,   251,   153,    -1,
+     251,   249,   402,    -1,   251,   192,   402,    -1,   251,   252,
+     402,    -1,   251,   299,   402,    -1,   251,   310,   402,    -1,
+     254,    -1,   257,    -1,   261,    -1,   264,    -1,   267,    -1,
+     277,    -1,   279,    -1,   283,    -1,   395,    -1,    29,   420,
+     253,   255,    -1,   106,    -1,   104,   402,   256,   105,    -1,
+      -1,   256,   335,   402,    -1,   256,   183,   402,    -1,   256,
+     356,   402,    -1,   256,   345,    -1,   256,   339,    -1,   256,
+     176,    -1,   256,   151,    -1,   256,   153,    -1,   256,   249,
+     402,    -1,   256,   299,   402,    -1,   256,   310,   402,    -1,
+     256,   192,   402,    -1,   256,   252,   402,    -1,    47,   420,
+     258,   104,   402,   259,   105,    -1,   395,    -1,    -1,   259,
+     335,   402,    -1,   259,   183,   402,    -1,   259,   194,   402,
+      -1,   259,   245,    -1,   259,   356,   402,    -1,   259,   247,
+      -1,   259,   339,    -1,   259,   342,    -1,   259,   176,    -1,
+     259,   151,    -1,   259,   153,    -1,   395,    -1,    48,   420,
+     260,   104,   402,   262,   105,    -1,    -1,   262,   335,   402,
+      -1,   262,   183,   402,    -1,   262,   194,   402,    -1,   262,
+     247,    -1,   262,   245,    -1,   262,   356,   402,    -1,   262,
+     339,    -1,   262,   347,    -1,   262,   350,    -1,   262,   353,
+      -1,   262,   176,    -1,   262,   151,    -1,   262,   153,    -1,
+     395,    -1,    50,   420,   263,   104,   402,   265,   105,    -1,
+      -1,   265,   335,   402,    -1,   265,   183,   402,    -1,   265,
+     356,   402,    -1,   265,   362,    -1,   265,   359,    -1,   265,
+     339,    -1,   265,   347,    -1,   265,   350,    -1,   265,   353,
+      -1,   265,   176,    -1,   265,   151,    -1,   265,   153,    -1,
+     265,   192,   402,    -1,   265,   249,   402,    -1,   265,   299,
+     402,    -1,   265,   310,   402,    -1,   265,   252,   402,    -1,
+     395,    -1,    26,   420,   266,   268,    -1,   106,    -1,   104,
+     402,   269,   105,    -1,    -1,   269,   335,   402,    -1,   269,
+     183,   402,    -1,   269,   247,    -1,   269,   339,    -1,   269,
+     342,    -1,   269,   176,    -1,   269,   151,    -1,   269,   153,
+      -1,   269,   270,   402,    -1,   271,    -1,   273,    -1,   254,
+      -1,   257,    -1,   261,    -1,   264,    -1,   277,    -1,   279,
+      -1,   267,    -1,   395,    -1,    25,   420,   272,   274,    -1,
+     106,    -1,   104,   402,   275,   105,    -1,    -1,   275,   335,
+     402,    -1,   275,   183,   402,    -1,   275,   176,    -1,   275,
+     151,    -1,   275,   153,    -1,   275,   252,   402,    -1,   395,
+      -1,     4,   420,   276,   280,    -1,   395,    -1,    98,   420,
+     278,   280,    -1,   106,    -1,   104,   402,   281,   105,    -1,
+      -1,   281,   335,   402,    -1,   281,   183,   402,    -1,   281,
+     356,   402,    -1,   281,   339,    -1,   281,   342,    -1,   281,
+     176,    -1,   281,   151,    -1,   281,   153,    -1,   397,    -1,
+      79,   420,   282,   284,    -1,   106,    -1,   104,   402,   285,
+     105,    -1,    -1,   285,   335,   402,    -1,   285,   183,   402,
+      -1,   285,   176,    -1,   285,   151,    -1,   285,   153,    -1,
+     285,   288,   402,    -1,   285,   293,   402,    -1,   369,   419,
+      -1,   116,    -1,   286,    -1,    68,   420,   287,   289,    -1,
+     106,    -1,   104,   402,   290,   105,    -1,    -1,   290,   356,
+     402,    -1,   290,   183,   402,    -1,   290,   345,    -1,   290,
+     247,    -1,   290,   339,    -1,   290,   342,    -1,   290,   347,
+      -1,   290,   350,    -1,   290,   151,    -1,   290,   153,    -1,
+     369,   419,    -1,   116,    -1,   291,    -1,    21,   420,   292,
+     104,   402,   297,   105,    -1,   367,   419,    -1,   116,    -1,
+     294,    -1,    21,   420,   295,   104,   402,   297,   105,    -1,
+      -1,   297,   335,   402,    -1,   297,   183,   402,    -1,   297,
+     176,    -1,   297,   151,    -1,   297,   153,    -1,   297,   252,
+     402,    -1,   297,   299,   402,    -1,   297,   310,   402,    -1,
+     297,   273,   402,    -1,   395,    -1,    96,   420,   298,   302,
+      -1,   395,    -1,    72,   420,   300,   302,    -1,   106,    -1,
+     104,   402,   303,   105,    -1,    -1,   303,   183,   402,    -1,
+     303,   176,    -1,   303,   151,    -1,   303,   153,    -1,   303,
+     192,   402,    -1,   303,   249,   402,    -1,   303,   305,   402,
+      -1,   303,   308,   402,    -1,    45,   419,    -1,   304,   104,
+     402,   306,   105,    -1,    -1,   306,   356,   402,    -1,   306,
+     192,   402,    -1,   306,   249,   402,    -1,   306,   252,   402,
+      -1,    60,   419,    -1,   307,   104,   402,   306,   105,    -1,
+     395,    -1,    57,   420,   309,   311,    -1,   106,    -1,   104,
+     402,   312,   105,    -1,    -1,   312,   356,   402,    -1,   312,
+     183,   402,    -1,   312,   176,    -1,   312,   151,    -1,   312,
+     153,    -1,   312,   192,   402,    -1,   312,   249,   402,    -1,
+     312,   252,   402,    -1,   316,    -1,    36,   420,   313,   104,
+     402,   315,   105,    -1,    -1,   315,   151,    -1,   315,   153,
+      -1,   315,    37,   420,   317,   402,    -1,   367,   419,    -1,
+     116,    -1,   319,    -1,   321,    -1,    89,    -1,   318,   419,
+     320,    -1,   106,    -1,   104,   402,   105,    -1,   323,    -1,
+     331,    -1,   327,    -1,    84,    -1,   322,   419,   324,    -1,
+     106,    -1,   104,   402,   325,   105,    -1,    -1,   325,   245,
+      -1,   325,   356,   402,    -1,   325,   359,    -1,   325,   247,
+      -1,   325,   339,    -1,   325,   342,    -1,   325,   347,    -1,
+     325,   350,    -1,    86,    -1,   326,   419,   328,    -1,   106,
+      -1,   104,   402,   329,   105,    -1,    -1,   329,   245,    -1,
+     329,   356,   402,    -1,   329,   359,    -1,   329,   247,    -1,
+      91,    -1,   330,   419,   332,    -1,   106,    -1,   104,   402,
+     333,   105,    -1,    -1,   333,   194,   402,    -1,   333,   245,
+      -1,   333,   247,    -1,   333,   339,    -1,   333,   342,    -1,
+     333,   347,    -1,   333,   350,    -1,   422,    -1,    81,   420,
+     334,   336,    -1,   106,    -1,   104,   402,   337,   105,    -1,
+      -1,   337,   151,    -1,   337,   153,    -1,   340,    -1,    27,
+     420,   338,   398,    -1,    93,   419,    -1,    88,   419,    -1,
+     116,    -1,   343,    -1,    51,   420,   341,   398,    -1,    93,
+     419,    -1,    88,   419,    -1,   116,    -1,   422,    -1,    65,
+     420,   344,   398,    -1,   348,    -1,    53,   420,   346,   398,
+      -1,   391,   419,    -1,   116,    -1,   351,    -1,    52,   420,
+     349,   398,    -1,    94,   419,    -1,   390,   419,    -1,   116,
+      -1,   354,    -1,    58,   420,   352,   398,    -1,    95,   419,
+      -1,    92,   419,    -1,   116,    -1,   422,    -1,    55,   420,
+     355,   357,    -1,   106,    -1,   104,   402,   207,   105,    -1,
+     360,    -1,    77,   420,   358,   398,    -1,   369,   419,    -1,
+     116,    -1,   363,    -1,    46,   420,   361,   398,    -1,    -1,
+     396,   364,   419,    -1,   116,    -1,   422,    -1,   107,   396,
+      -1,   366,   368,    -1,    -1,   368,   366,    -1,    -1,   396,
+     370,   368,    -1,    -1,   372,   375,    -1,    -1,   373,   377,
+      -1,   116,    -1,   107,   396,   382,    -1,   374,   376,    -1,
+      -1,   376,   374,    -1,   378,   379,   380,    -1,    14,   107,
+      -1,    -1,   379,   378,    -1,   396,   381,    -1,    -1,   382,
+     375,    -1,    -1,   382,   108,   421,   383,   421,   109,    -1,
+     396,   421,   110,   421,   384,    -1,   389,   421,   107,   421,
+     385,    -1,   386,   387,   396,   388,   396,    -1,    14,   421,
+     107,   421,    -1,    -1,   387,   386,    -1,    -1,   388,   421,
+     107,   421,   396,    -1,    85,   421,   111,   421,   112,    -1,
+      17,    -1,    18,    -1,   390,    -1,    18,    -1,   393,    -1,
+      16,    -1,    17,    -1,   116,    -1,   428,   419,    -1,   428,
+     419,    -1,   116,    -1,   425,    -1,    11,    -1,   428,   419,
+      -1,   429,   419,    -1,   116,    -1,   399,   402,    -1,   401,
+     402,   400,   402,    -1,   106,    -1,   105,    -1,   104,    -1,
+      -1,   402,   418,    -1,   402,   403,    -1,   429,   404,   410,
+      -1,   405,   406,    -1,   419,    -1,    -1,   422,    -1,    -1,
+     420,   408,    -1,    -1,   424,   419,    -1,     8,   419,   409,
+      -1,    -1,   409,   103,   419,     8,   419,    -1,   106,    -1,
+     104,   419,   411,   105,    -1,    -1,   411,   412,   419,    -1,
+     403,    -1,   414,   407,   413,    -1,   415,   407,   413,    -1,
+     106,    -1,   104,   419,   416,   105,    -1,   427,    -1,    54,
+      -1,    -1,   416,   396,   407,   417,    -1,   106,   419,    -1,
+     104,   419,   416,   105,   419,    -1,     5,    -1,     7,    -1,
+      -1,   419,   418,    -1,   418,   419,    -1,    -1,     5,    -1,
+      -1,   424,   423,   419,    -1,   116,    -1,     9,    -1,    12,
+      -1,   425,    -1,    11,    -1,    18,    -1,    16,    -1,    17,
+      -1,    54,    -1,   426,    -1,   427,    -1,    10,    -1,    85,
+      -1,    87,    -1,    88,    -1,    89,    -1,    90,    -1,    92,
+      -1,    93,    -1,    94,    -1,    95,    -1,     4,    -1,    20,
+      -1,    21,    -1,    22,    -1,    23,    -1,    24,    -1,    25,
+      -1,    26,    -1,    27,    -1,    28,    -1,    29,    -1,    30,
+      -1,    31,    -1,    32,    -1,    33,    -1,    34,    -1,    35,
+      -1,    36,    -1,    37,    -1,    38,    -1,    39,    -1,    40,
+      -1,    41,    -1,    42,    -1,    43,    -1,    44,    -1,    45,
+      -1,    46,    -1,    47,    -1,    48,    -1,    49,    -1,    50,
+      -1,    51,    -1,    52,    -1,    53,    -1,    55,    -1,    56,
+      -1,    57,    -1,    58,    -1,    59,    -1,    60,    -1,    61,
+      -1,    62,    -1,    63,    -1,    64,    -1,    65,    -1,    66,
+      -1,    67,    -1,    68,    -1,    69,    -1,    70,    -1,    71,
+      -1,    72,    -1,    73,    -1,    74,    -1,    75,    -1,    76,
+      -1,    77,    -1,    78,    -1,    79,    -1,    80,    -1,    81,
+      -1,    82,    -1,    83,    -1,    84,    -1,    86,    -1,    91,
+      -1,    96,    -1,    97,    -1,    98,    -1,   425,    -1,    11,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   438,    -1,
+      82,    -1,    83,    -1,    24,    -1,    32,    -1,    21,    -1,
+      36,    -1,    37,    -1,    35,    -1,    38,    -1,    41,    -1,
+      43,    -1,    44,    -1,   102,    -1,   299,    -1,   279,    -1,
+     277,    -1,   273,    -1,   267,    -1,   254,    -1,   249,    -1,
+     305,    -1,   257,    -1,   261,    -1,   264,    -1,   310,    -1,
+     308,    -1,   283,    -1,   356,    -1,   209,    -1,   224,    -1,
+     204,    -1,    -1,   441,   142,   402,    -1,   441,   144,    -1,
+     441,   151,    -1,   441,   153,    -1,   441,   245,    -1,   441,
+     190,    -1,   441,   149,    -1,   441,   247,    -1,   441,   241,
+      -1,   441,   243,    -1,   441,   362,    -1,   441,   130,    -1,
+     441,   147,    -1,   441,   227,    -1,   441,   345,    -1,   441,
+     140,    -1,   441,   430,   194,   402,    -1,   441,   431,   192,
+     402,    -1,   441,   176,    -1,   441,   339,    -1,   441,   342,
+      -1,   441,   353,    -1,   441,   229,    -1,   441,   214,    -1,
+     441,   202,    -1,   441,   347,    -1,   441,   350,    -1,   441,
+     238,    -1,   441,   222,    -1,   441,   359,    -1,   441,   432,
+     183,   402,    -1,   441,   170,   402,    -1,   441,   433,   440,
+     402,    -1,   441,   434,   335,   402,    -1,   441,   435,   157,
+     402,    -1,   441,   436,   439,   402,    -1,   441,   437,   407,
+     417,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   333,   333,   334,   335,   337,   360,   363,   365,   364,
-     388,   399,   409,   419,   420,   426,   431,   437,   448,   458,
-     471,   472,   478,   480,   484,   486,   490,   492,   493,   494,
-     496,   504,   512,   513,   518,   529,   540,   551,   559,   564,
-     565,   569,   570,   581,   592,   603,   607,   609,   632,   649,
-     653,   655,   656,   661,   666,   671,   677,   681,   683,   687,
-     689,   693,   695,   699,   701,   714,   725,   726,   737,   741,
-     742,   746,   747,   752,   759,   759,   766,   772,   820,   839,
-     842,   843,   844,   845,   846,   847,   848,   849,   850,   851,
-     854,   869,   876,   877,   881,   882,   883,   889,   894,   900,
-     918,   920,   921,   925,   930,   931,   953,   954,   955,   968,
-     973,   975,   976,   977,   978,   993,  1007,  1012,  1013,  1028,
-    1029,  1030,  1036,  1041,  1047,  1104,  1109,  1110,  1112,  1128,
-    1133,  1134,  1159,  1160,  1174,  1175,  1181,  1186,  1192,  1196,
-    1198,  1251,  1262,  1265,  1268,  1273,  1278,  1284,  1289,  1295,
-    1300,  1309,  1310,  1314,  1359,  1360,  1362,  1363,  1367,  1373,
-    1386,  1387,  1388,  1392,  1393,  1395,  1399,  1417,  1422,  1424,
-    1425,  1441,  1446,  1455,  1456,  1460,  1476,  1481,  1486,  1491,
-    1497,  1501,  1515,  1530,  1531,  1535,  1536,  1546,  1551,  1556,
-    1561,  1567,  1571,  1582,  1594,  1595,  1598,  1606,  1617,  1618,
-    1633,  1634,  1635,  1647,  1653,  1658,  1664,  1669,  1671,  1672,
-    1687,  1692,  1693,  1698,  1702,  1704,  1709,  1711,  1712,  1713,
-    1726,  1738,  1739,  1741,  1749,  1761,  1762,  1777,  1778,  1779,
-    1791,  1797,  1802,  1808,  1813,  1815,  1816,  1832,  1836,  1838,
-    1842,  1844,  1848,  1850,  1854,  1856,  1866,  1873,  1874,  1878,
-    1879,  1885,  1890,  1895,  1896,  1897,  1898,  1899,  1905,  1906,
-    1907,  1908,  1909,  1910,  1911,  1912,  1915,  1925,  1932,  1933,
-    1956,  1957,  1958,  1959,  1960,  1965,  1971,  1977,  1982,  1987,
-    1988,  1989,  1994,  1995,  1997,  2037,  2047,  2050,  2051,  2052,
-    2055,  2060,  2061,  2066,  2072,  2078,  2084,  2089,  2095,  2105,
-    2160,  2163,  2164,  2165,  2168,  2179,  2184,  2185,  2191,  2204,
-    2217,  2227,  2233,  2238,  2244,  2254,  2301,  2304,  2305,  2306,
-    2307,  2316,  2322,  2328,  2341,  2354,  2364,  2370,  2375,  2380,
-    2381,  2382,  2383,  2388,  2390,  2400,  2407,  2408,  2428,  2431,
-    2432,  2433,  2443,  2450,  2457,  2464,  2470,  2476,  2478,  2479,
-    2481,  2482,  2483,  2484,  2485,  2486,  2487,  2493,  2503,  2510,
-    2511,  2525,  2526,  2527,  2528,  2534,  2539,  2544,  2547,  2557,
-    2564,  2574,  2581,  2582,  2605,  2608,  2609,  2610,  2611,  2618,
-    2625,  2632,  2637,  2643,  2653,  2660,  2661,  2693,  2694,  2695,
-    2696,  2702,  2707,  2712,  2713,  2715,  2716,  2718,  2731,  2736,
-    2737,  2769,  2772,  2786,  2802,  2824,  2875,  2894,  2913,  2934,
-    2955,  2960,  2966,  2967,  2970,  2985,  2994,  2995,  2997,  3008,
-    3017,  3018,  3019,  3020,  3026,  3031,  3036,  3037,  3038,  3043,
-    3045,  3060,  3067,  3077,  3084,  3085,  3109,  3112,  3113,  3119,
-    3124,  3129,  3130,  3131,  3138,  3146,  3161,  3191,  3192,  3193,
-    3194,  3195,  3197,  3212,  3242,  3251,  3258,  3259,  3291,  3292,
-    3293,  3294,  3300,  3305,  3310,  3311,  3312,  3314,  3326,  3346,
-    3347,  3353,  3359,  3361,  3362,  3364,  3365,  3368,  3376,  3381,
-    3382,  3384,  3385,  3386,  3388,  3396,  3401,  3402,  3434,  3435,
-    3441,  3442,  3448,  3454,  3461,  3468,  3476,  3485,  3493,  3498,
-    3499,  3531,  3532,  3538,  3539,  3545,  3552,  3560,  3565,  3566,
-    3580,  3581,  3582,  3588,  3594,  3601,  3608,  3616,  3625,  3634,
-    3639,  3640,  3644,  3645,  3650,  3656,  3661,  3663,  3664,  3665,
-    3678,  3683,  3685,  3686,  3687,  3700,  3704,  3706,  3711,  3713,
-    3714,  3734,  3739,  3741,  3742,  3743,  3763,  3768,  3770,  3771,
-    3772,  3784,  3853,  3858,  3859,  3863,  3867,  3869,  3870,  3872,
-    3876,  3878,  3878,  3885,  3888,  3897,  3916,  3918,  3919,  3922,
-    3922,  3939,  3939,  3946,  3946,  3953,  3956,  3958,  3960,  3961,
-    3963,  3965,  3967,  3968,  3970,  3972,  3973,  3975,  3976,  3978,
-    3980,  3983,  3987,  3989,  3990,  3992,  3993,  3995,  3997,  4008,
-    4009,  4012,  4013,  4024,  4025,  4027,  4028,  4030,  4031,  4037,
-    4038,  4041,  4042,  4043,  4067,  4068,  4071,  4077,  4081,  4086,
-    4087,  4088,  4091,  4096,  4106,  4108,  4109,  4111,  4112,  4114,
-    4115,  4116,  4118,  4119,  4121,  4122,  4124,  4125,  4129,  4130,
-    4157,  4195,  4196,  4198,  4200,  4202,  4203,  4205,  4206,  4208,
-    4209,  4212,  4213,  4216,  4218,  4219,  4222,  4222,  4229,  4231,
-    4232,  4233,  4234,  4235,  4236,  4237,  4239,  4240,  4241,  4243,
-    4244,  4245,  4246,  4247,  4248,  4249,  4250,  4251,  4252,  4255,
-    4256,  4257,  4258,  4259,  4260,  4261,  4262,  4263,  4264,  4265,
-    4266,  4267,  4268,  4269,  4270,  4271,  4272,  4273,  4274,  4275,
-    4276,  4277,  4278,  4279,  4280,  4281,  4282,  4283,  4284,  4285,
-    4286,  4287,  4288,  4289,  4290,  4291,  4292,  4293,  4294,  4295,
-    4296,  4297,  4298,  4299,  4300,  4301,  4302,  4303,  4304,  4305,
-    4306,  4307,  4308,  4309,  4310,  4311,  4312,  4313,  4314,  4315,
-    4316,  4317,  4318,  4319,  4320,  4321,  4322,  4323,  4324,  4326,
-    4333,  4340,  4360,  4378,  4394,  4421,  4428,  4446,  4486,  4488,
-    4489,  4490,  4491,  4492,  4493,  4494,  4495,  4496,  4497,  4498,
-    4499,  4500,  4502,  4503,  4504,  4505,  4506,  4507,  4508,  4509,
-    4510,  4511,  4512,  4513,  4514,  4515,  4517,  4518,  4519,  4520,
-    4522,  4530,  4531,  4536,  4541,  4546,  4551,  4556,  4561,  4566,
-    4571,  4576,  4581,  4586,  4591,  4596,  4601,  4606,  4620,  4640,
-    4645,  4650,  4655,  4668,  4673,  4677,  4687,  4702,  4717,  4732,
-    4747,  4767,  4782,  4783,  4789,  4796,  4811,  4814
+       0,   334,   334,   335,   336,   338,   361,   364,   366,   365,
+     389,   400,   410,   420,   421,   427,   432,   438,   449,   459,
+     472,   473,   479,   481,   485,   487,   491,   493,   494,   495,
+     497,   505,   513,   514,   519,   530,   541,   552,   560,   565,
+     566,   570,   571,   582,   593,   604,   608,   610,   633,   650,
+     654,   656,   657,   662,   667,   672,   678,   682,   684,   688,
+     690,   694,   696,   700,   702,   715,   726,   727,   738,   742,
+     743,   747,   748,   753,   760,   760,   767,   773,   821,   840,
+     843,   844,   845,   846,   847,   848,   849,   850,   851,   852,
+     855,   870,   877,   878,   882,   883,   884,   890,   895,   901,
+     919,   921,   922,   926,   931,   932,   954,   955,   956,   969,
+     974,   976,   977,   978,   979,   994,  1008,  1013,  1014,  1029,
+    1030,  1031,  1037,  1042,  1048,  1105,  1110,  1111,  1113,  1129,
+    1134,  1135,  1160,  1161,  1175,  1176,  1182,  1187,  1193,  1197,
+    1199,  1252,  1263,  1266,  1269,  1274,  1279,  1285,  1290,  1296,
+    1301,  1310,  1311,  1315,  1362,  1363,  1365,  1366,  1370,  1376,
+    1389,  1390,  1391,  1395,  1396,  1398,  1402,  1420,  1425,  1427,
+    1428,  1444,  1449,  1458,  1459,  1463,  1479,  1484,  1489,  1494,
+    1500,  1504,  1520,  1535,  1536,  1540,  1541,  1551,  1556,  1561,
+    1566,  1572,  1576,  1587,  1599,  1600,  1603,  1611,  1622,  1623,
+    1638,  1639,  1640,  1652,  1658,  1663,  1669,  1674,  1676,  1677,
+    1692,  1697,  1698,  1703,  1707,  1709,  1714,  1716,  1717,  1718,
+    1731,  1743,  1744,  1746,  1754,  1766,  1767,  1782,  1783,  1784,
+    1796,  1802,  1807,  1813,  1818,  1820,  1821,  1837,  1841,  1843,
+    1847,  1849,  1853,  1855,  1859,  1861,  1871,  1878,  1879,  1883,
+    1884,  1890,  1895,  1900,  1901,  1902,  1903,  1904,  1910,  1911,
+    1912,  1913,  1914,  1915,  1916,  1917,  1920,  1930,  1937,  1938,
+    1961,  1962,  1963,  1964,  1965,  1970,  1976,  1982,  1987,  1992,
+    1993,  1994,  1999,  2000,  2002,  2042,  2052,  2055,  2056,  2057,
+    2060,  2065,  2066,  2071,  2077,  2083,  2089,  2094,  2100,  2110,
+    2165,  2168,  2169,  2170,  2173,  2184,  2189,  2190,  2196,  2209,
+    2222,  2232,  2238,  2243,  2249,  2259,  2306,  2309,  2310,  2311,
+    2312,  2321,  2327,  2333,  2346,  2359,  2369,  2375,  2380,  2385,
+    2386,  2387,  2388,  2393,  2395,  2405,  2412,  2413,  2433,  2436,
+    2437,  2438,  2448,  2455,  2462,  2469,  2475,  2481,  2483,  2484,
+    2486,  2487,  2488,  2489,  2490,  2491,  2492,  2498,  2508,  2515,
+    2516,  2530,  2531,  2532,  2533,  2539,  2544,  2549,  2552,  2562,
+    2569,  2579,  2586,  2587,  2610,  2613,  2614,  2615,  2616,  2623,
+    2630,  2637,  2642,  2648,  2658,  2665,  2666,  2698,  2699,  2700,
+    2701,  2707,  2712,  2717,  2718,  2720,  2721,  2723,  2736,  2741,
+    2742,  2774,  2777,  2791,  2807,  2829,  2880,  2899,  2918,  2939,
+    2960,  2965,  2971,  2972,  2975,  2990,  2999,  3000,  3002,  3013,
+    3022,  3023,  3024,  3025,  3031,  3036,  3041,  3042,  3043,  3048,
+    3050,  3065,  3072,  3082,  3089,  3090,  3114,  3117,  3118,  3124,
+    3129,  3134,  3135,  3136,  3143,  3151,  3166,  3196,  3197,  3198,
+    3199,  3200,  3202,  3217,  3247,  3256,  3263,  3264,  3296,  3297,
+    3298,  3299,  3305,  3310,  3315,  3316,  3317,  3319,  3331,  3351,
+    3352,  3358,  3364,  3366,  3367,  3369,  3370,  3373,  3381,  3386,
+    3387,  3389,  3390,  3391,  3393,  3401,  3406,  3407,  3439,  3440,
+    3446,  3447,  3453,  3459,  3466,  3473,  3481,  3490,  3498,  3503,
+    3504,  3536,  3537,  3543,  3544,  3550,  3557,  3565,  3570,  3571,
+    3585,  3586,  3587,  3593,  3599,  3606,  3613,  3621,  3630,  3639,
+    3644,  3645,  3649,  3650,  3655,  3661,  3666,  3668,  3669,  3670,
+    3683,  3688,  3690,  3691,  3692,  3705,  3709,  3711,  3716,  3718,
+    3719,  3739,  3744,  3746,  3747,  3748,  3768,  3773,  3775,  3776,
+    3777,  3789,  3858,  3863,  3864,  3868,  3872,  3874,  3875,  3877,
+    3881,  3883,  3883,  3890,  3893,  3902,  3921,  3923,  3924,  3927,
+    3927,  3944,  3944,  3951,  3951,  3958,  3961,  3963,  3965,  3966,
+    3968,  3970,  3972,  3973,  3975,  3977,  3978,  3980,  3981,  3983,
+    3985,  3988,  3992,  3994,  3995,  3997,  3998,  4000,  4002,  4013,
+    4014,  4017,  4018,  4029,  4030,  4032,  4033,  4035,  4036,  4042,
+    4043,  4046,  4047,  4048,  4072,  4073,  4076,  4082,  4086,  4091,
+    4092,  4093,  4096,  4101,  4111,  4113,  4114,  4116,  4117,  4119,
+    4120,  4121,  4123,  4124,  4126,  4127,  4129,  4130,  4134,  4135,
+    4162,  4200,  4201,  4203,  4205,  4207,  4208,  4210,  4211,  4213,
+    4214,  4217,  4218,  4221,  4223,  4224,  4227,  4227,  4234,  4236,
+    4237,  4238,  4239,  4240,  4241,  4242,  4244,  4245,  4246,  4248,
+    4249,  4250,  4251,  4252,  4253,  4254,  4255,  4256,  4257,  4260,
+    4261,  4262,  4263,  4264,  4265,  4266,  4267,  4268,  4269,  4270,
+    4271,  4272,  4273,  4274,  4275,  4276,  4277,  4278,  4279,  4280,
+    4281,  4282,  4283,  4284,  4285,  4286,  4287,  4288,  4289,  4290,
+    4291,  4292,  4293,  4294,  4295,  4296,  4297,  4298,  4299,  4300,
+    4301,  4302,  4303,  4304,  4305,  4306,  4307,  4308,  4309,  4310,
+    4311,  4312,  4313,  4314,  4315,  4316,  4317,  4318,  4319,  4320,
+    4321,  4322,  4323,  4324,  4325,  4326,  4327,  4328,  4329,  4331,
+    4338,  4345,  4365,  4383,  4399,  4426,  4433,  4451,  4491,  4493,
+    4494,  4495,  4496,  4497,  4498,  4499,  4500,  4501,  4502,  4503,
+    4504,  4505,  4507,  4508,  4509,  4510,  4511,  4512,  4513,  4514,
+    4515,  4516,  4517,  4518,  4519,  4520,  4522,  4523,  4524,  4525,
+    4527,  4535,  4536,  4541,  4546,  4551,  4556,  4561,  4566,  4571,
+    4576,  4581,  4586,  4591,  4596,  4601,  4606,  4611,  4625,  4645,
+    4650,  4655,  4660,  4673,  4678,  4682,  4692,  4707,  4722,  4737,
+    4752,  4772,  4787,  4788,  4794,  4801,  4816,  4819
 };
 #endif
 
@@ -821,13 +1145,13 @@
   "iffeature_ext_alloc", "restriction_ext_alloc", "when_ext_alloc",
   "revision_ext_alloc", "datadef_ext_check", "not_supported_ext_check",
   "not_supported_ext", "datadef_ext_stmt", "restriction_ext_stmt",
-  "ext_substatements", YY_NULLPTR
+  "ext_substatements", YY_NULL
 };
 #endif
 
 # ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
-   (internal) symbol number NUM (which must be that of a token).  */
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
 static const yytype_uint16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
@@ -845,157 +1169,185 @@
 };
 # endif
 
-#define YYPACT_NINF -706
-
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-706)))
-
-#define YYTABLE_NINF -757
-
-#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[] =
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint16 yyr1[] =
 {
-     349,    27,  -706,  -706,   352,  1787,  -706,  -706,  -706,    53,
-      53,  -706,    53,  -706,    53,    53,  -706,    53,    53,    53,
-      53,  -706,    53,    53,  -706,  -706,  -706,  -706,    53,  -706,
-    -706,  -706,    53,    53,    53,    53,    53,    53,    53,    53,
-      53,    53,    53,    53,    53,    53,    53,    53,    53,    53,
-    -706,  -706,    53,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,    -5,    42,    96,   405,    65,    86,   372,
-      53,  -706,  -706,  3167,  3167,  3167,  2692,  3167,   147,  2446,
-    2446,  2446,  2446,  2446,   115,  2787,   151,   104,   417,  2446,
-     109,  2446,   164,   417,  3167,  2446,  2446,   181,   107,   185,
-    2787,  2446,   516,  2446,   373,   373,    53,  -706,    53,  -706,
-      53,  -706,    53,    53,    53,    53,  -706,  -706,  -706,  -706,
-    -706,    53,  -706,    53,  -706,    53,    53,    53,    53,    53,
-    -706,    53,    53,    53,    53,  -706,    53,    53,    53,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-      80,  -706,   132,  -706,  -706,  -706,   144,  2597,    53,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,   138,  -706,  -706,  -706,  -706,  -706,   178,
-    -706,   156,  -706,  -706,  -706,   244,  -706,  -706,  -706,   208,
-    -706,  -706,  -706,  -706,   244,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,   244,  -706,  -706,  -706,   244,  -706,   244,
-    -706,   244,  -706,   244,  -706,  -706,  -706,   244,  -706,  -706,
-    -706,  -706,   244,  -706,  -706,  -706,  -706,  -706,  -706,   244,
-    -706,  -706,  -706,   244,  -706,  -706,  -706,  -706,   244,  -706,
-    -706,  -706,   244,  -706,  -706,  -706,  -706,   244,  -706,   244,
-    -706,  -706,   244,  -706,   184,   285,  -706,   244,  -706,  -706,
-    -706,   244,  -706,  -706,   244,  -706,   244,  -706,  -706,  -706,
-    -706,   244,  -706,  -706,  -706,   244,  -706,  -706,  -706,  -706,
-    -706,   244,  -706,  -706,   244,  -706,  -706,  -706,   244,  -706,
-    -706,  -706,  -706,  -706,   244,  -706,  -706,  -706,   244,  -706,
-    -706,  -706,  -706,  2692,   373,  3167,   373,  2446,   373,  2446,
-    2446,  2446,  -706,  2446,   373,  2446,   373,   107,   373,  3167,
-    3167,  3167,  3167,  3167,    53,  3167,  3167,  3167,  3167,    53,
-    2692,  3167,  3167,  -706,  -706,   373,  -706,  -706,  -706,  -706,
-    -706,  -706,    53,  -706,    53,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,    53,    53,  -706,    53,    53,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,    53,  -706,  -706,
-      53,    53,  -706,    53,  -706,    53,  -706,    53,  -706,    53,
-      53,  -706,  -706,  -706,  3262,  -706,  -706,   209,  -706,  -706,
-    -706,    53,  -706,    53,  -706,  -706,    53,    53,  -706,  -706,
-    -706,    53,    53,    53,  -706,  -706,    53,  -706,  -706,  -706,
-      53,  -706,   261,  2446,    53,   281,  -706,   219,  -706,   290,
-    -706,   298,  -706,   358,  -706,   395,  -706,   412,  -706,   491,
-    -706,   497,  -706,   502,  -706,   503,  -706,   509,  -706,   510,
-    -706,   513,  -706,   226,  -706,   234,  -706,   262,  -706,   520,
-    -706,   533,  -706,   556,  -706,   502,  -706,   373,   373,    53,
-      53,    53,    53,   243,   373,   373,   129,   373,   175,   306,
-      53,    53,  -706,   184,  -706,  2882,    53,   283,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,   465,  1570,  2084,   305,
-    -706,  -706,   357,  -706,    34,    53,   309,  -706,  -706,   313,
-     316,  -706,  -706,  -706,   -15,  3262,  -706,    53,   572,   373,
-     176,   373,   373,   373,   373,   373,   373,   373,   373,   373,
-     373,   373,   373,   373,   373,   373,   373,   373,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,    53,  -706,   442,   299,    53,  -706,  -706,
-    -706,   299,  -706,  -706,   191,  -706,   373,  -706,   441,  -706,
-     121,  -706,  2179,    53,    53,   350,  1011,  -706,  -706,  -706,
-    -706,   500,  -706,   230,   476,   340,   505,   242,   288,   939,
-    1456,   874,  1851,  1986,  3334,  1388,  1486,  1107,   264,   900,
-     373,   373,   373,   373,    53,   144,   490,  -706,    53,    53,
-    -706,  -706,   447,  2446,   447,   373,  -706,  -706,  -706,   244,
-    -706,  -706,  3262,  -706,  -706,  -706,  -706,  -706,    53,    53,
-    -706,  3167,  2446,  -706,  -706,  -706,    -5,  -706,  -706,  -706,
-    -706,  -706,  -706,   373,   452,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,    53,    53,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  3167,  3167,   373,   373,  -706,  -706,
-    -706,  -706,  -706,    86,   244,  -706,  -706,    53,    53,  -706,
-     441,   441,    53,   568,   568,   571,  -706,   663,  -706,   373,
-    -706,   373,   373,   373,   448,  -706,   373,   373,   373,   373,
-     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
-     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
-     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
-     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
-    2787,  2787,   373,   373,   373,   373,   373,   373,   373,   373,
-     373,    53,    53,   380,  -706,   668,  -706,   388,  1714,  -706,
-    -706,   397,   399,   401,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,   413,  -706,  -706,
-    -706,   671,  -706,  -706,  -706,  -706,  -706,  -706,    53,    53,
-      53,    53,    53,    53,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,   373,  -706,  -706,   441,    53,
-     373,   373,   373,   373,  -706,    53,  -706,  -706,  -706,    53,
-     373,   373,    53,    13,  3167,    13,  3167,  3167,  3167,   373,
-      53,   444,  2278,   385,   518,   373,   373,   697,    20,  -706,
-    -706,   422,  -706,  -706,   679,  -706,  -706,   433,  -706,  -706,
-     682,  -706,   683,  -706,   556,  -706,   441,  -706,   441,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  1886,   729,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,   283,    53,  -706,  -706,  -706,  -706,
-      53,  -706,  -706,  -706,  -706,  -706,  -706,  -706,   429,   443,
-     373,   373,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,   373,   373,   373,   373,   373,   441,   441,
-     373,   373,   373,   373,   373,   373,   373,   373,  1946,   210,
-     154,   802,   369,   446,   540,  -706,  -706,  -706,  -706,  -706,
-    -706,    53,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,   441,  -706,  -706,
-     373,   250,   373,   373,   454,  2977,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-     441,  -706,  -706,   373,   128,   161,   162,   172,  -706,  3072,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,   469,   195,   373,   373,   373,   441,  -706,
-     274,   216,   746,  3262,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,   373,   373,   373
+       0,   113,   114,   114,   114,   115,   116,   117,   118,   117,
+     119,   120,   121,   122,   122,   122,   122,   123,   124,   125,
+     126,   126,   126,   127,   128,   129,   130,   131,   131,   131,
+     132,   133,   134,   134,   134,   134,   134,   135,   136,   137,
+     137,   138,   138,   138,   138,   139,   140,   141,   142,   143,
+     144,   145,   145,   145,   145,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   156,   157,   158,
+     158,   159,   159,   159,   161,   160,   160,   162,   163,   163,
+     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
+     165,   166,   167,   167,   168,   168,   168,   168,   168,   169,
+     170,   171,   171,   172,   173,   173,   174,   174,   174,   175,
+     176,   177,   177,   177,   177,   178,   179,   180,   180,   181,
+     181,   181,   181,   181,   182,   183,   184,   184,   185,   186,
+     187,   187,   188,   188,   188,   188,   188,   188,   189,   190,
+     191,   192,   193,   193,   193,   193,   193,   193,   193,   194,
+     195,   196,   196,   197,   197,   197,   198,   198,   198,   198,
+     198,   198,   198,   198,   198,   199,   200,   201,   202,   203,
+     203,   204,   205,   206,   206,   207,   207,   207,   207,   207,
+     208,   209,   210,   211,   211,   212,   212,   212,   212,   212,
+     212,   213,   214,   215,   216,   216,   217,   218,   219,   219,
+     220,   220,   220,   220,   220,   220,   221,   222,   223,   223,
+     224,   225,   225,   226,   227,   228,   229,   230,   230,   230,
+     231,   232,   232,   233,   234,   235,   235,   236,   236,   236,
+     236,   236,   236,   237,   238,   239,   239,   240,   241,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   250,   251,
+     251,   251,   251,   251,   251,   251,   251,   251,   252,   252,
+     252,   252,   252,   252,   252,   252,   253,   254,   255,   255,
+     256,   256,   256,   256,   256,   256,   256,   256,   256,   256,
+     256,   256,   256,   256,   257,   258,   259,   259,   259,   259,
+     259,   259,   259,   259,   259,   259,   259,   259,   260,   261,
+     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
+     262,   262,   262,   262,   263,   264,   265,   265,   265,   265,
+     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
+     265,   265,   265,   265,   266,   267,   268,   268,   269,   269,
+     269,   269,   269,   269,   269,   269,   269,   269,   270,   270,
+     271,   271,   271,   271,   271,   271,   271,   272,   273,   274,
+     274,   275,   275,   275,   275,   275,   275,   275,   276,   277,
+     278,   279,   280,   280,   281,   281,   281,   281,   281,   281,
+     281,   281,   281,   282,   283,   284,   284,   285,   285,   285,
+     285,   285,   285,   285,   285,   286,   286,   287,   288,   289,
+     289,   290,   290,   290,   290,   290,   290,   290,   290,   290,
+     290,   290,   291,   291,   292,   293,   294,   294,   295,   296,
+     297,   297,   297,   297,   297,   297,   297,   297,   297,   297,
+     298,   299,   300,   301,   302,   302,   303,   303,   303,   303,
+     303,   303,   303,   303,   303,   304,   305,   306,   306,   306,
+     306,   306,   307,   308,   309,   310,   311,   311,   312,   312,
+     312,   312,   312,   312,   312,   312,   312,   313,   314,   315,
+     315,   315,   315,   316,   316,   317,   317,   318,   319,   320,
+     320,   321,   321,   321,   322,   323,   324,   324,   325,   325,
+     325,   325,   325,   325,   325,   325,   325,   326,   327,   328,
+     328,   329,   329,   329,   329,   329,   330,   331,   332,   332,
+     333,   333,   333,   333,   333,   333,   333,   333,   334,   335,
+     336,   336,   337,   337,   337,   338,   339,   340,   340,   340,
+     341,   342,   343,   343,   343,   344,   345,   346,   347,   348,
+     348,   349,   350,   351,   351,   351,   352,   353,   354,   354,
+     354,   355,   356,   357,   357,   358,   359,   360,   360,   361,
+     362,   364,   363,   363,   365,   366,   367,   368,   368,   370,
+     369,   372,   371,   373,   371,   371,   374,   375,   376,   376,
+     377,   378,   379,   379,   380,   381,   381,   382,   382,   383,
+     384,   385,   386,   387,   387,   388,   388,   389,   390,   391,
+     391,   392,   392,   393,   393,   394,   394,   395,   395,   396,
+     396,   397,   397,   397,   398,   398,   399,   400,   401,   402,
+     402,   402,   403,   404,   405,   406,   406,   407,   407,   408,
+     408,   408,   409,   409,   410,   410,   411,   411,   412,   412,
+     412,   413,   413,   414,   415,   416,   416,   417,   417,   418,
+     418,   419,   419,   420,   421,   421,   423,   422,   422,   424,
+     424,   424,   424,   424,   424,   424,   425,   425,   425,   426,
+     426,   426,   426,   426,   426,   426,   426,   426,   426,   427,
+     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
+     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
+     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
+     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
+     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
+     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
+     427,   427,   427,   427,   427,   427,   427,   427,   427,   428,
+     429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
+     438,   438,   438,   438,   438,   438,   438,   438,   438,   438,
+     438,   438,   439,   439,   439,   439,   439,   439,   439,   439,
+     439,   439,   439,   439,   439,   439,   440,   440,   440,   440,
+     441,   441,   441,   441,   441,   441,   441,   441,   441,   441,
+     441,   441,   441,   441,   441,   441,   441,   441,   441,   441,
+     441,   441,   441,   441,   441,   441,   441,   441,   441,   441,
+     441,   441,   441,   441,   441,   441,   441,   441
 };
 
-  /* 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.  */
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     1,     1,     1,     1,     3,     0,     0,     6,
+       1,    13,     1,     0,     2,     2,     2,     1,    13,     1,
+       0,     2,     3,     1,     4,     1,     4,     0,     3,     3,
+       7,     1,     0,     2,     2,     2,     2,     1,     4,     1,
+       4,     0,     2,     2,     2,     1,     4,     1,     7,     1,
+       4,     0,     2,     2,     2,     2,     1,     4,     1,     4,
+       1,     4,     1,     4,     1,     1,     0,     3,     4,     1,
+       4,     0,     2,     2,     0,     3,     1,     1,     0,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     4,     1,     4,     0,     3,     2,     2,     2,     1,
+       4,     1,     4,     1,     0,     4,     2,     2,     1,     1,
+       4,     2,     2,     2,     1,     1,     4,     1,     4,     0,
+       3,     2,     2,     2,     1,     4,     1,     3,     1,     4,
+       1,     4,     0,     2,     3,     2,     2,     2,     1,     4,
+       1,     7,     0,     3,     2,     2,     2,     2,     2,     4,
+       1,     1,     4,     1,     1,     1,     0,     2,     2,     2,
+       3,     3,     2,     3,     3,     2,     0,     1,     4,     2,
+       1,     4,     1,     1,     4,     0,     2,     2,     2,     2,
+       1,     4,     1,     1,     4,     0,     2,     2,     2,     2,
+       2,     1,     4,     3,     0,     3,     4,     1,     1,     4,
+       0,     3,     2,     2,     2,     2,     1,     4,     2,     1,
+       4,     1,     4,     1,     4,     1,     4,     2,     2,     1,
+       2,     0,     2,     5,     1,     1,     4,     0,     3,     2,
+       2,     2,     2,     1,     4,     2,     1,     1,     4,     1,
+       4,     1,     4,     1,     4,     1,     4,     1,     4,     0,
+       2,     2,     2,     3,     3,     3,     3,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     4,     1,     4,
+       0,     3,     3,     3,     2,     2,     2,     2,     2,     3,
+       3,     3,     3,     3,     7,     1,     0,     3,     3,     3,
+       2,     3,     2,     2,     2,     2,     2,     2,     1,     7,
+       0,     3,     3,     3,     2,     2,     3,     2,     2,     2,
+       2,     2,     2,     2,     1,     7,     0,     3,     3,     3,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
+       3,     3,     3,     3,     1,     4,     1,     4,     0,     3,
+       3,     2,     2,     2,     2,     2,     2,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     4,     1,
+       4,     0,     3,     3,     2,     2,     2,     3,     1,     4,
+       1,     4,     1,     4,     0,     3,     3,     3,     2,     2,
+       2,     2,     2,     1,     4,     1,     4,     0,     3,     3,
+       2,     2,     2,     3,     3,     2,     1,     1,     4,     1,
+       4,     0,     3,     3,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     1,     1,     7,     2,     1,     1,     7,
+       0,     3,     3,     2,     2,     2,     3,     3,     3,     3,
+       1,     4,     1,     4,     1,     4,     0,     3,     2,     2,
+       2,     3,     3,     3,     3,     2,     5,     0,     3,     3,
+       3,     3,     2,     5,     1,     4,     1,     4,     0,     3,
+       3,     2,     2,     2,     3,     3,     3,     1,     7,     0,
+       2,     2,     5,     2,     1,     1,     1,     1,     3,     1,
+       3,     1,     1,     1,     1,     3,     1,     4,     0,     2,
+       3,     2,     2,     2,     2,     2,     2,     1,     3,     1,
+       4,     0,     2,     3,     2,     2,     1,     3,     1,     4,
+       0,     3,     2,     2,     2,     2,     2,     2,     1,     4,
+       1,     4,     0,     2,     2,     1,     4,     2,     2,     1,
+       1,     4,     2,     2,     1,     1,     4,     1,     4,     2,
+       1,     1,     4,     2,     2,     1,     1,     4,     2,     2,
+       1,     1,     4,     1,     4,     1,     4,     2,     1,     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,     1,     1,     1,     0,
+       2,     2,     3,     2,     1,     0,     1,     0,     2,     0,
+       2,     3,     0,     5,     1,     4,     0,     3,     1,     3,
+       3,     1,     4,     1,     1,     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,     1,
+       1,     0,     0,     0,     0,     0,     0,     0,     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,
+       0,     3,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     4,     4,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     4,     3,     4,     4,     4,     4,     4
+};
+
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
      790,     0,     2,     3,     0,   757,     1,   649,   650,     0,
@@ -1132,45 +1484,7 @@
      512,   513,   514,   515,   516,   517,   596,   490,   503,   511
 };
 
-  /* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
-{
-    -706,  -706,  -706,  1286,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,   -54,  -706,   -38,   -44,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -456,  -706,   -34,
-    -706,  -505,   -73,  -706,   616,  -706,   622,  -706,    -2,  -706,
-     168,   -98,  -706,  -706,  -287,  -706,  -706,   269,  -706,  -277,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -529,  -706,  -706,
-    -706,  -706,  -706,    84,  -706,  -706,  -706,  -706,  -706,  -706,
-     -33,  -706,  -706,  -706,  -706,  -706,  -706,  -684,  -706,   -59,
-    -706,  -549,  -706,  -706,  -706,  -706,  -706,  -706,  -706,   -22,
-    -706,     5,  -706,  -706,   -83,  -706,    35,  -706,  -706,  -706,
-    -706,    18,  -706,  -706,  -216,  -706,  -706,  -706,  -706,  -347,
-    -706,    52,  -706,  -706,    56,  -706,    57,  -706,  -706,  -706,
-       4,  -706,  -706,  -706,  -706,  -324,  -706,  -706,    -3,  -706,
-      -1,  -706,  -554,  -706,  -662,  -706,    24,  -706,  -706,  -469,
-    -706,   -88,  -706,  -706,   -66,  -706,  -706,  -706,   -63,  -706,
-    -706,   -43,  -706,  -706,   -39,  -706,  -706,  -706,  -706,  -706,
-     -36,  -706,  -706,  -706,   -23,  -706,   -16,   246,  -706,  -706,
-     704,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -379,  -706,   -69,  -706,  -706,  -308,
-    -706,  -706,    88,   271,  -706,    93,  -706,   -82,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
-    -706,  -706,   -18,  -706,  -706,  -706,  -561,  -706,  -706,  -472,
-    -706,  -706,  -705,  -706,  -670,  -706,  -706,  -658,  -706,  -706,
-     -60,  -706,  -706,   -77,  -706,  -706,  -679,  -706,  -706,    97,
-    -706,  -706,  -706,  -303,  -270,  -286,  -266,  -706,  -706,  -706,
-    -706,   265,   127,  -706,  -706,   266,  -706,  -706,  -706,   186,
-    -706,  -706,  -706,  -416,  -706,  -706,  -706,   -29,   722,  -706,
-    -706,  -706,   541,   -93,  -332,    21,  -706,  -706,  -706,   424,
-     134,  -706,  -706,  -706,  -532,  -706,  -706,  -706,  -706,  -706,
-    -117,  -706,  -706,  -241,   105,    -4,  1346,    62,  -695,   122,
-    -706,   662,   187,  -706,   139,   -31,   -32,  -706,  -706,  -706,
-    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706
-};
-
-  /* YYDEFGOTO[NTERM-NUM].  */
+/* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,     1,   261,   262,   553,   933,   263,     2,   631,   632,
@@ -1208,9 +1522,187 @@
       86,    87,    88,    89,    90,    91,   175,   140,     5
 };
 
-  /* 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.  */
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -706
+static const yytype_int16 yypact[] =
+{
+     349,    27,  -706,  -706,   352,  1787,  -706,  -706,  -706,    53,
+      53,  -706,    53,  -706,    53,    53,  -706,    53,    53,    53,
+      53,  -706,    53,    53,  -706,  -706,  -706,  -706,    53,  -706,
+    -706,  -706,    53,    53,    53,    53,    53,    53,    53,    53,
+      53,    53,    53,    53,    53,    53,    53,    53,    53,    53,
+    -706,  -706,    53,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,    -5,    42,    96,   405,    65,    86,   372,
+      53,  -706,  -706,  3167,  3167,  3167,  2692,  3167,   147,  2446,
+    2446,  2446,  2446,  2446,   115,  2787,   151,   104,   417,  2446,
+     109,  2446,   164,   417,  3167,  2446,  2446,   181,   107,   185,
+    2787,  2446,   516,  2446,   373,   373,    53,  -706,    53,  -706,
+      53,  -706,    53,    53,    53,    53,  -706,  -706,  -706,  -706,
+    -706,    53,  -706,    53,  -706,    53,    53,    53,    53,    53,
+    -706,    53,    53,    53,    53,  -706,    53,    53,    53,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+      80,  -706,   132,  -706,  -706,  -706,   144,  2597,    53,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,   138,  -706,  -706,  -706,  -706,  -706,   178,
+    -706,   156,  -706,  -706,  -706,   244,  -706,  -706,  -706,   208,
+    -706,  -706,  -706,  -706,   244,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,   244,  -706,  -706,  -706,   244,  -706,   244,
+    -706,   244,  -706,   244,  -706,  -706,  -706,   244,  -706,  -706,
+    -706,  -706,   244,  -706,  -706,  -706,  -706,  -706,  -706,   244,
+    -706,  -706,  -706,   244,  -706,  -706,  -706,  -706,   244,  -706,
+    -706,  -706,   244,  -706,  -706,  -706,  -706,   244,  -706,   244,
+    -706,  -706,   244,  -706,   184,   285,  -706,   244,  -706,  -706,
+    -706,   244,  -706,  -706,   244,  -706,   244,  -706,  -706,  -706,
+    -706,   244,  -706,  -706,  -706,   244,  -706,  -706,  -706,  -706,
+    -706,   244,  -706,  -706,   244,  -706,  -706,  -706,   244,  -706,
+    -706,  -706,  -706,  -706,   244,  -706,  -706,  -706,   244,  -706,
+    -706,  -706,  -706,  2692,   373,  3167,   373,  2446,   373,  2446,
+    2446,  2446,  -706,  2446,   373,  2446,   373,   107,   373,  3167,
+    3167,  3167,  3167,  3167,    53,  3167,  3167,  3167,  3167,    53,
+    2692,  3167,  3167,  -706,  -706,   373,  -706,  -706,  -706,  -706,
+    -706,  -706,    53,  -706,    53,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,    53,    53,  -706,    53,    53,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,    53,  -706,  -706,
+      53,    53,  -706,    53,  -706,    53,  -706,    53,  -706,    53,
+      53,  -706,  -706,  -706,  3262,  -706,  -706,   209,  -706,  -706,
+    -706,    53,  -706,    53,  -706,  -706,    53,    53,  -706,  -706,
+    -706,    53,    53,    53,  -706,  -706,    53,  -706,  -706,  -706,
+      53,  -706,   261,  2446,    53,   281,  -706,   219,  -706,   290,
+    -706,   298,  -706,   358,  -706,   395,  -706,   412,  -706,   491,
+    -706,   497,  -706,   502,  -706,   503,  -706,   509,  -706,   510,
+    -706,   513,  -706,   226,  -706,   234,  -706,   262,  -706,   520,
+    -706,   533,  -706,   556,  -706,   502,  -706,   373,   373,    53,
+      53,    53,    53,   243,   373,   373,   129,   373,   175,   306,
+      53,    53,  -706,   184,  -706,  2882,    53,   283,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,   465,  1570,  2084,   305,
+    -706,  -706,   357,  -706,    34,    53,   309,  -706,  -706,   313,
+     316,  -706,  -706,  -706,   -15,  3262,  -706,    53,   572,   373,
+     176,   373,   373,   373,   373,   373,   373,   373,   373,   373,
+     373,   373,   373,   373,   373,   373,   373,   373,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,    53,  -706,   442,   299,    53,  -706,  -706,
+    -706,   299,  -706,  -706,   191,  -706,   373,  -706,   441,  -706,
+     121,  -706,  2179,    53,    53,   350,  1011,  -706,  -706,  -706,
+    -706,   500,  -706,   230,   476,   340,   505,   242,   288,   939,
+    1456,   874,  1851,  1986,  3334,  1388,  1486,  1107,   264,   900,
+     373,   373,   373,   373,    53,   144,   490,  -706,    53,    53,
+    -706,  -706,   447,  2446,   447,   373,  -706,  -706,  -706,   244,
+    -706,  -706,  3262,  -706,  -706,  -706,  -706,  -706,    53,    53,
+    -706,  3167,  2446,  -706,  -706,  -706,    -5,  -706,  -706,  -706,
+    -706,  -706,  -706,   373,   452,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,    53,    53,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  3167,  3167,   373,   373,  -706,  -706,
+    -706,  -706,  -706,    86,   244,  -706,  -706,    53,    53,  -706,
+     441,   441,    53,   568,   568,   571,  -706,   663,  -706,   373,
+    -706,   373,   373,   373,   448,  -706,   373,   373,   373,   373,
+     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
+     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
+     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
+     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
+    2787,  2787,   373,   373,   373,   373,   373,   373,   373,   373,
+     373,    53,    53,   380,  -706,   668,  -706,   388,  1714,  -706,
+    -706,   397,   399,   401,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,   413,  -706,  -706,
+    -706,   671,  -706,  -706,  -706,  -706,  -706,  -706,    53,    53,
+      53,    53,    53,    53,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,   373,  -706,  -706,   441,    53,
+     373,   373,   373,   373,  -706,    53,  -706,  -706,  -706,    53,
+     373,   373,    53,    13,  3167,    13,  3167,  3167,  3167,   373,
+      53,   444,  2278,   385,   518,   373,   373,   697,    20,  -706,
+    -706,   422,  -706,  -706,   679,  -706,  -706,   433,  -706,  -706,
+     682,  -706,   683,  -706,   556,  -706,   441,  -706,   441,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  1886,   729,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,   283,    53,  -706,  -706,  -706,  -706,
+      53,  -706,  -706,  -706,  -706,  -706,  -706,  -706,   429,   443,
+     373,   373,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,   373,   373,   373,   373,   373,   441,   441,
+     373,   373,   373,   373,   373,   373,   373,   373,  1946,   210,
+     154,   802,   369,   446,   540,  -706,  -706,  -706,  -706,  -706,
+    -706,    53,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,   441,  -706,  -706,
+     373,   250,   373,   373,   454,  2977,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+     441,  -706,  -706,   373,   128,   161,   162,   172,  -706,  3072,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,   469,   195,   373,   373,   373,   441,  -706,
+     274,   216,   746,  3262,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,   373,   373,   373
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+    -706,  -706,  -706,  1286,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,   -54,  -706,   -38,   -44,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -456,  -706,   -34,
+    -706,  -505,   -73,  -706,   616,  -706,   622,  -706,    -2,  -706,
+     168,   -98,  -706,  -706,  -287,  -706,  -706,   269,  -706,  -277,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -529,  -706,  -706,
+    -706,  -706,  -706,    84,  -706,  -706,  -706,  -706,  -706,  -706,
+     -33,  -706,  -706,  -706,  -706,  -706,  -706,  -684,  -706,   -59,
+    -706,  -549,  -706,  -706,  -706,  -706,  -706,  -706,  -706,   -22,
+    -706,     5,  -706,  -706,   -83,  -706,    35,  -706,  -706,  -706,
+    -706,    18,  -706,  -706,  -216,  -706,  -706,  -706,  -706,  -347,
+    -706,    52,  -706,  -706,    56,  -706,    57,  -706,  -706,  -706,
+       4,  -706,  -706,  -706,  -706,  -324,  -706,  -706,    -3,  -706,
+      -1,  -706,  -554,  -706,  -662,  -706,    24,  -706,  -706,  -469,
+    -706,   -88,  -706,  -706,   -66,  -706,  -706,  -706,   -63,  -706,
+    -706,   -43,  -706,  -706,   -39,  -706,  -706,  -706,  -706,  -706,
+     -36,  -706,  -706,  -706,   -23,  -706,   -16,   246,  -706,  -706,
+     704,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -379,  -706,   -69,  -706,  -706,  -308,
+    -706,  -706,    88,   271,  -706,    93,  -706,   -82,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,
+    -706,  -706,   -18,  -706,  -706,  -706,  -561,  -706,  -706,  -472,
+    -706,  -706,  -705,  -706,  -670,  -706,  -706,  -658,  -706,  -706,
+     -60,  -706,  -706,   -77,  -706,  -706,  -679,  -706,  -706,    97,
+    -706,  -706,  -706,  -303,  -270,  -286,  -266,  -706,  -706,  -706,
+    -706,   265,   127,  -706,  -706,   266,  -706,  -706,  -706,   186,
+    -706,  -706,  -706,  -416,  -706,  -706,  -706,   -29,   722,  -706,
+    -706,  -706,   541,   -93,  -332,    21,  -706,  -706,  -706,   424,
+     134,  -706,  -706,  -706,  -532,  -706,  -706,  -706,  -706,  -706,
+    -117,  -706,  -706,  -241,   105,    -4,  1346,    62,  -695,   122,
+    -706,   662,   187,  -706,   139,   -31,   -32,  -706,  -706,  -706,
+    -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706,  -706
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -757
 static const yytype_int16 yytable[] =
 {
       11,   160,    71,    60,    72,    92,    92,   174,    92,   139,
@@ -1559,6 +2051,12 @@
        0,     0,     0,     0,     0,     0,     0,     0,     0,   859
 };
 
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-706)))
+
+#define yytable_value_is_error(Yytable_value) \
+  YYID (0)
+
 static const yytype_int16 yycheck[] =
 {
        4,    89,     5,     5,     5,     9,    10,    89,    12,    86,
@@ -1907,8 +2405,8 @@
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105
 };
 
-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-     symbol of state STATE-NUM.  */
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
        0,   114,   120,   124,   419,   441,     0,     5,     7,    54,
@@ -2045,192 +2543,30 @@
      245,   247,   339,   342,   347,   350,   396,   402,   402,   402
 };
 
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
-{
-       0,   113,   114,   114,   114,   115,   116,   117,   118,   117,
-     119,   120,   121,   122,   122,   122,   122,   123,   124,   125,
-     126,   126,   126,   127,   128,   129,   130,   131,   131,   131,
-     132,   133,   134,   134,   134,   134,   134,   135,   136,   137,
-     137,   138,   138,   138,   138,   139,   140,   141,   142,   143,
-     144,   145,   145,   145,   145,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   156,   157,   158,
-     158,   159,   159,   159,   161,   160,   160,   162,   163,   163,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     165,   166,   167,   167,   168,   168,   168,   168,   168,   169,
-     170,   171,   171,   172,   173,   173,   174,   174,   174,   175,
-     176,   177,   177,   177,   177,   178,   179,   180,   180,   181,
-     181,   181,   181,   181,   182,   183,   184,   184,   185,   186,
-     187,   187,   188,   188,   188,   188,   188,   188,   189,   190,
-     191,   192,   193,   193,   193,   193,   193,   193,   193,   194,
-     195,   196,   196,   197,   197,   197,   198,   198,   198,   198,
-     198,   198,   198,   198,   198,   199,   200,   201,   202,   203,
-     203,   204,   205,   206,   206,   207,   207,   207,   207,   207,
-     208,   209,   210,   211,   211,   212,   212,   212,   212,   212,
-     212,   213,   214,   215,   216,   216,   217,   218,   219,   219,
-     220,   220,   220,   220,   220,   220,   221,   222,   223,   223,
-     224,   225,   225,   226,   227,   228,   229,   230,   230,   230,
-     231,   232,   232,   233,   234,   235,   235,   236,   236,   236,
-     236,   236,   236,   237,   238,   239,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   248,   249,   250,   250,   251,
-     251,   251,   251,   251,   251,   251,   251,   251,   252,   252,
-     252,   252,   252,   252,   252,   252,   253,   254,   255,   255,
-     256,   256,   256,   256,   256,   256,   256,   256,   256,   256,
-     256,   256,   256,   256,   257,   258,   259,   259,   259,   259,
-     259,   259,   259,   259,   259,   259,   259,   259,   260,   261,
-     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
-     262,   262,   262,   262,   263,   264,   265,   265,   265,   265,
-     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
-     265,   265,   265,   265,   266,   267,   268,   268,   269,   269,
-     269,   269,   269,   269,   269,   269,   269,   269,   270,   270,
-     271,   271,   271,   271,   271,   271,   271,   272,   273,   274,
-     274,   275,   275,   275,   275,   275,   275,   275,   276,   277,
-     278,   279,   280,   280,   281,   281,   281,   281,   281,   281,
-     281,   281,   281,   282,   283,   284,   284,   285,   285,   285,
-     285,   285,   285,   285,   285,   286,   286,   287,   288,   289,
-     289,   290,   290,   290,   290,   290,   290,   290,   290,   290,
-     290,   290,   291,   291,   292,   293,   294,   294,   295,   296,
-     297,   297,   297,   297,   297,   297,   297,   297,   297,   297,
-     298,   299,   300,   301,   302,   302,   303,   303,   303,   303,
-     303,   303,   303,   303,   303,   304,   305,   306,   306,   306,
-     306,   306,   307,   308,   309,   310,   311,   311,   312,   312,
-     312,   312,   312,   312,   312,   312,   312,   313,   314,   315,
-     315,   315,   315,   316,   316,   317,   317,   318,   319,   320,
-     320,   321,   321,   321,   322,   323,   324,   324,   325,   325,
-     325,   325,   325,   325,   325,   325,   325,   326,   327,   328,
-     328,   329,   329,   329,   329,   329,   330,   331,   332,   332,
-     333,   333,   333,   333,   333,   333,   333,   333,   334,   335,
-     336,   336,   337,   337,   337,   338,   339,   340,   340,   340,
-     341,   342,   343,   343,   343,   344,   345,   346,   347,   348,
-     348,   349,   350,   351,   351,   351,   352,   353,   354,   354,
-     354,   355,   356,   357,   357,   358,   359,   360,   360,   361,
-     362,   364,   363,   363,   365,   366,   367,   368,   368,   370,
-     369,   372,   371,   373,   371,   371,   374,   375,   376,   376,
-     377,   378,   379,   379,   380,   381,   381,   382,   382,   383,
-     384,   385,   386,   387,   387,   388,   388,   389,   390,   391,
-     391,   392,   392,   393,   393,   394,   394,   395,   395,   396,
-     396,   397,   397,   397,   398,   398,   399,   400,   401,   402,
-     402,   402,   403,   404,   405,   406,   406,   407,   407,   408,
-     408,   408,   409,   409,   410,   410,   411,   411,   412,   412,
-     412,   413,   413,   414,   415,   416,   416,   417,   417,   418,
-     418,   419,   419,   420,   421,   421,   423,   422,   422,   424,
-     424,   424,   424,   424,   424,   424,   425,   425,   425,   426,
-     426,   426,   426,   426,   426,   426,   426,   426,   426,   427,
-     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
-     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
-     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
-     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
-     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
-     427,   427,   427,   427,   427,   427,   427,   427,   427,   427,
-     427,   427,   427,   427,   427,   427,   427,   427,   427,   428,
-     429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
-     438,   438,   438,   438,   438,   438,   438,   438,   438,   438,
-     438,   438,   439,   439,   439,   439,   439,   439,   439,   439,
-     439,   439,   439,   439,   439,   439,   440,   440,   440,   440,
-     441,   441,   441,   441,   441,   441,   441,   441,   441,   441,
-     441,   441,   441,   441,   441,   441,   441,   441,   441,   441,
-     441,   441,   441,   441,   441,   441,   441,   441,   441,   441,
-     441,   441,   441,   441,   441,   441,   441,   441
-};
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
 
-  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     1,     1,     1,     1,     3,     0,     0,     6,
-       1,    13,     1,     0,     2,     2,     2,     1,    13,     1,
-       0,     2,     3,     1,     4,     1,     4,     0,     3,     3,
-       7,     1,     0,     2,     2,     2,     2,     1,     4,     1,
-       4,     0,     2,     2,     2,     1,     4,     1,     7,     1,
-       4,     0,     2,     2,     2,     2,     1,     4,     1,     4,
-       1,     4,     1,     4,     1,     1,     0,     3,     4,     1,
-       4,     0,     2,     2,     0,     3,     1,     1,     0,     3,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     4,     1,     4,     0,     3,     2,     2,     2,     1,
-       4,     1,     4,     1,     0,     4,     2,     2,     1,     1,
-       4,     2,     2,     2,     1,     1,     4,     1,     4,     0,
-       3,     2,     2,     2,     1,     4,     1,     3,     1,     4,
-       1,     4,     0,     2,     3,     2,     2,     2,     1,     4,
-       1,     7,     0,     3,     2,     2,     2,     2,     2,     4,
-       1,     1,     4,     1,     1,     1,     0,     2,     2,     2,
-       3,     3,     2,     3,     3,     2,     0,     1,     4,     2,
-       1,     4,     1,     1,     4,     0,     2,     2,     2,     2,
-       1,     4,     1,     1,     4,     0,     2,     2,     2,     2,
-       2,     1,     4,     3,     0,     3,     4,     1,     1,     4,
-       0,     3,     2,     2,     2,     2,     1,     4,     2,     1,
-       4,     1,     4,     1,     4,     1,     4,     2,     2,     1,
-       2,     0,     2,     5,     1,     1,     4,     0,     3,     2,
-       2,     2,     2,     1,     4,     2,     1,     1,     4,     1,
-       4,     1,     4,     1,     4,     1,     4,     1,     4,     0,
-       2,     2,     2,     3,     3,     3,     3,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     4,     1,     4,
-       0,     3,     3,     3,     2,     2,     2,     2,     2,     3,
-       3,     3,     3,     3,     7,     1,     0,     3,     3,     3,
-       2,     3,     2,     2,     2,     2,     2,     2,     1,     7,
-       0,     3,     3,     3,     2,     2,     3,     2,     2,     2,
-       2,     2,     2,     2,     1,     7,     0,     3,     3,     3,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
-       3,     3,     3,     3,     1,     4,     1,     4,     0,     3,
-       3,     2,     2,     2,     2,     2,     2,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     4,     1,
-       4,     0,     3,     3,     2,     2,     2,     3,     1,     4,
-       1,     4,     1,     4,     0,     3,     3,     3,     2,     2,
-       2,     2,     2,     1,     4,     1,     4,     0,     3,     3,
-       2,     2,     2,     3,     3,     2,     1,     1,     4,     1,
-       4,     0,     3,     3,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     1,     1,     7,     2,     1,     1,     7,
-       0,     3,     3,     2,     2,     2,     3,     3,     3,     3,
-       1,     4,     1,     4,     1,     4,     0,     3,     2,     2,
-       2,     3,     3,     3,     3,     2,     5,     0,     3,     3,
-       3,     3,     2,     5,     1,     4,     1,     4,     0,     3,
-       3,     2,     2,     2,     3,     3,     3,     1,     7,     0,
-       2,     2,     5,     2,     1,     1,     1,     1,     3,     1,
-       3,     1,     1,     1,     1,     3,     1,     4,     0,     2,
-       3,     2,     2,     2,     2,     2,     2,     1,     3,     1,
-       4,     0,     2,     3,     2,     2,     1,     3,     1,     4,
-       0,     3,     2,     2,     2,     2,     2,     2,     1,     4,
-       1,     4,     0,     2,     2,     1,     4,     2,     2,     1,
-       1,     4,     2,     2,     1,     1,     4,     1,     4,     2,
-       1,     1,     4,     2,     2,     1,     1,     4,     2,     2,
-       1,     1,     4,     1,     4,     1,     4,     2,     1,     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,     1,     1,     1,     0,
-       2,     2,     3,     2,     1,     0,     1,     0,     2,     0,
-       2,     3,     0,     5,     1,     4,     0,     3,     1,     3,
-       3,     1,     4,     1,     1,     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,     1,
-       1,     0,     0,     0,     0,     0,     0,     0,     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,
-       0,     3,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     4,     4,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     4,     3,     4,     4,     4,     4,     4
-};
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
 
 
-#define yyerrok         (yyerrstatus = 0)
-#define yyclearin       (yychar = YYEMPTY)
-#define YYEMPTY         (-2)
-#define YYEOF           0
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
 
-#define YYACCEPT        goto yyacceptlab
-#define YYABORT         goto yyabortlab
-#define YYERROR         goto yyerrorlab
-
+#define YYFAIL		goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -2247,13 +2583,13 @@
   else                                                          \
     {                                                           \
       yyerror (&yylloc, scanner, param, YY_("syntax error: cannot back up")); \
-      YYERROR;                                                  \
-    }                                                           \
-while (0)
+      YYERROR;							\
+    }								\
+while (YYID (0))
 
 /* Error token number */
-#define YYTERROR        1
-#define YYERRCODE       256
+#define YYTERROR	1
+#define YYERRCODE	256
 
 
 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
@@ -2263,7 +2599,7 @@
 #ifndef YYLLOC_DEFAULT
 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
     do                                                                  \
-      if (N)                                                            \
+      if (YYID (N))                                                     \
         {                                                               \
           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
@@ -2277,27 +2613,12 @@
           (Current).first_column = (Current).last_column =              \
             YYRHSLOC (Rhs, 0).last_column;                              \
         }                                                               \
-    while (0)
+    while (YYID (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.  */
@@ -2307,28 +2628,36 @@
 
 /* Print *YYLOCP on YYO.  Private, do not rely on its existence. */
 
-YY_ATTRIBUTE_UNUSED
+__attribute__((__unused__))
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static unsigned
 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
+#else
+static unsigned
+yy_location_print_ (yyo, yylocp)
+    FILE *yyo;
+    YYLTYPE const * const yylocp;
+#endif
 {
   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);
+      res += fprintf (yyo, "%d", yylocp->first_line);
       if (0 <= yylocp->first_column)
-        res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
+        res += fprintf (yyo, ".%d", yylocp->first_column);
     }
   if (0 <= yylocp->last_line)
     {
       if (yylocp->first_line < yylocp->last_line)
         {
-          res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
+          res += fprintf (yyo, "-%d", yylocp->last_line);
           if (0 <= end_col)
-            res += YYFPRINTF (yyo, ".%d", end_col);
+            res += fprintf (yyo, ".%d", end_col);
         }
       else if (0 <= end_col && yylocp->first_column < end_col)
-        res += YYFPRINTF (yyo, "-%d", end_col);
+        res += fprintf (yyo, "-%d", end_col);
     }
   return res;
  }
@@ -2342,37 +2671,77 @@
 #endif
 
 
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
-do {                                                                      \
-  if (yydebug)                                                            \
-    {                                                                     \
-      YYFPRINTF (stderr, "%s ", Title);                                   \
-      yy_symbol_print (stderr,                                            \
-                  Type, Value, Location, scanner, param); \
-      YYFPRINTF (stderr, "\n");                                           \
-    }                                                                     \
-} while (0)
+/* YYLEX -- calling `yylex' with the right arguments.  */
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
+#else
+# define YYLEX yylex (&yylval, &yylloc, scanner)
+#endif
+
+/* 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 (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
+do {									  \
+  if (yydebug)								  \
+    {									  \
+      YYFPRINTF (stderr, "%s ", Title);					  \
+      yy_symbol_print (stderr,						  \
+		  Type, Value, Location, scanner, param); \
+      YYFPRINTF (stderr, "\n");						  \
+    }									  \
+} while (YYID (0))
 
 
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
 
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, void *scanner, struct yang_parameter *param)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, scanner, param)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+    YYLTYPE const * const yylocationp;
+    void *scanner;
+    struct yang_parameter *param;
+#endif
 {
   FILE *yyo = yyoutput;
   YYUSE (yyo);
+  if (!yyvaluep)
+    return;
   YYUSE (yylocationp);
   YYUSE (scanner);
   YYUSE (param);
-  if (!yyvaluep)
-    return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+  YYUSE (yyoutput);
 # endif
-  YYUSE (yytype);
+  switch (yytype)
+    {
+      default:
+        break;
+    }
 }
 
 
@@ -2380,11 +2749,25 @@
 | Print this symbol on YYOUTPUT.  |
 `--------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, void *scanner, struct yang_parameter *param)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, scanner, param)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+    YYLTYPE const * const yylocationp;
+    void *scanner;
+    struct yang_parameter *param;
+#endif
 {
-  YYFPRINTF (yyoutput, "%s %s (",
-             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
 
   YY_LOCATION_PRINT (yyoutput, *yylocationp);
   YYFPRINTF (yyoutput, ": ");
@@ -2397,8 +2780,16 @@
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+#else
+static void
+yy_stack_print (yybottom, yytop)
+    yytype_int16 *yybottom;
+    yytype_int16 *yytop;
+#endif
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -2409,42 +2800,52 @@
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)                            \
-do {                                                            \
-  if (yydebug)                                                  \
-    yy_stack_print ((Bottom), (Top));                           \
-} while (0)
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (YYID (0))
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, void *scanner, struct yang_parameter *param)
+yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, void *scanner, struct yang_parameter *param)
+#else
+static void
+yy_reduce_print (yyvsp, yylsp, yyrule, scanner, param)
+    YYSTYPE *yyvsp;
+    YYLTYPE *yylsp;
+    int yyrule;
+    void *scanner;
+    struct yang_parameter *param;
+#endif
 {
-  unsigned long int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
+  unsigned long int yylno = yyrline[yyrule];
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-             yyrule - 1, yylno);
+	     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, param);
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+		       &(yyvsp[(yyi + 1) - (yynrhs)])
+		       , &(yylsp[(yyi + 1) - (yynrhs)])		       , scanner, param);
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)          \
-do {                                    \
-  if (yydebug)                          \
-    yy_reduce_print (yyssp, yyvsp, yylsp, Rule, scanner, param); \
-} while (0)
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (yyvsp, yylsp, Rule, scanner, param); \
+} while (YYID (0))
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
@@ -2458,7 +2859,7 @@
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef YYINITDEPTH
+#ifndef	YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -2481,8 +2882,15 @@
 #   define yystrlen strlen
 #  else
 /* Return the length of YYSTR.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static YYSIZE_T
 yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+    const char *yystr;
+#endif
 {
   YYSIZE_T yylen;
   for (yylen = 0; yystr[yylen]; yylen++)
@@ -2498,8 +2906,16 @@
 #  else
 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    YYDEST.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static char *
 yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+    char *yydest;
+    const char *yysrc;
+#endif
 {
   char *yyd = yydest;
   const char *yys = yysrc;
@@ -2529,27 +2945,27 @@
       char const *yyp = yystr;
 
       for (;;)
-        switch (*++yyp)
-          {
-          case '\'':
-          case ',':
-            goto do_not_strip_quotes;
+	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 (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
 
-          case '"':
-            if (yyres)
-              yyres[yyn] = '\0';
-            return yyn;
-          }
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
     do_not_strip_quotes: ;
     }
 
@@ -2572,11 +2988,11 @@
 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                 yytype_int16 *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
   YYSIZE_T yysize = yysize0;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
-  const char *yyformat = YY_NULLPTR;
+  const char *yyformat = YY_NULL;
   /* Arguments of yyformat. */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
   /* Number of reported tokens (one for the "unexpected", one per
@@ -2584,6 +3000,10 @@
   int yycount = 0;
 
   /* There are many possibilities here to consider:
+     - Assume YYFAIL is not used.  It's too flawed to consider.  See
+       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+       for details.  YYERROR is fine as it does not invoke this
+       function.
      - 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
@@ -2633,7 +3053,7 @@
                   }
                 yyarg[yycount++] = yytname[yyx];
                 {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
                   if (! (yysize <= yysize1
                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
                     return 2;
@@ -2700,67 +3120,72 @@
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, void *scanner, struct yang_parameter *param)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep, yylocationp, scanner, param)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+    YYLTYPE *yylocationp;
+    void *scanner;
+    struct yang_parameter *param;
+#endif
 {
   YYUSE (yyvaluep);
   YYUSE (yylocationp);
   YYUSE (scanner);
   YYUSE (param);
+
   if (!yymsg)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   switch (yytype)
     {
-          case 115: /* tmp_string  */
+      case 115: /* tmp_string */
 
-      { free((((*yyvaluep).p_str)) ? *((*yyvaluep).p_str) : NULL); }
+        { free((((*yyvaluep).p_str)) ? *((*yyvaluep).p_str) : NULL); };
 
         break;
+      case 210: /* pattern_arg_str */
 
-    case 210: /* pattern_arg_str  */
-
-      { free(((*yyvaluep).str)); }
+        { free(((*yyvaluep).str)); };
 
         break;
+      case 399: /* semicolom */
 
-    case 399: /* semicolom  */
-
-      { free(((*yyvaluep).str)); }
+        { free(((*yyvaluep).str)); };
 
         break;
+      case 401: /* curly_bracket_open */
 
-    case 401: /* curly_bracket_open  */
-
-      { free(((*yyvaluep).str)); }
+        { free(((*yyvaluep).str)); };
 
         break;
+      case 405: /* string_opt_part1 */
 
-    case 405: /* string_opt_part1  */
-
-      { free(((*yyvaluep).str)); }
+        { free(((*yyvaluep).str)); };
 
         break;
+      case 430: /* type_ext_alloc */
 
-    case 430: /* type_ext_alloc  */
-
-      { yang_type_free(param->module->ctx, ((*yyvaluep).v)); }
+        { yang_type_free(param->module->ctx, ((*yyvaluep).v)); };
 
         break;
+      case 431: /* typedef_ext_alloc */
 
-    case 431: /* typedef_ext_alloc  */
-
-      { yang_type_free(param->module->ctx, &((struct lys_tpdf *)((*yyvaluep).v))->type); }
+        { yang_type_free(param->module->ctx, &((struct lys_tpdf *)((*yyvaluep).v))->type); };
 
         break;
 
-
       default:
         break;
     }
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
@@ -2770,8 +3195,28 @@
 | yyparse.  |
 `----------*/
 
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+    void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 int
 yyparse (void *scanner, struct yang_parameter *param)
+#else
+int
+yyparse (scanner, param)
+    void *scanner;
+    struct yang_parameter *param;
+#endif
+#endif
 {
 /* The lookahead symbol.  */
 int yychar;
@@ -2787,20 +3232,40 @@
 void *yang_type = NULL;
 
 
-/* The semantic value of the lookahead symbol.  */
+#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
 /* 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 YYSTYPE yyval_default;
+# define YY_INITIAL_VALUE(Value) = Value
+#endif
 static YYLTYPE yyloc_default
 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
   = { 1, 1, 1, 1 }
 # 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
+
+/* The semantic value of the lookahead symbol.  */
+YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
+
+/* Location data for the lookahead symbol.  */
 YYLTYPE yylloc = yyloc_default;
 
+
     /* Number of syntax errors so far.  */
     int yynerrs;
 
@@ -2809,9 +3274,9 @@
     int yyerrstatus;
 
     /* The stacks and their tools:
-       'yyss': related to states.
-       'yyvs': related to semantic values.
-       'yyls': related to locations.
+       `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.  */
@@ -2888,7 +3353,6 @@
                   trg = (param->submodule) ? (struct lys_module *)param->submodule : param->module;
                 }
 
-
   yylsp[0] = yylloc;
   goto yysetstate;
 
@@ -2910,26 +3374,26 @@
 
 #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;
+	/* 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);
+	/* 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;
+	yyls = yyls1;
+	yyss = yyss1;
+	yyvs = yyvs1;
       }
 #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE
@@ -2937,23 +3401,23 @@
 # else
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-        goto yyexhaustedlab;
+	goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-        yystacksize = YYMAXDEPTH;
+	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);
+	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);
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
       }
 # endif
 #endif /* no yyoverflow */
@@ -2963,10 +3427,10 @@
       yylsp = yyls + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+		  (unsigned long int) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
-        YYABORT;
+	YYABORT;
     }
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
@@ -2995,7 +3459,7 @@
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = yylex (&yylval, &yylloc, scanner);
+      yychar = YYLEX;
     }
 
   if (yychar <= YYEOF)
@@ -3060,7 +3524,7 @@
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     '$$ = $1'.
+     `$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -3098,7 +3562,6 @@
                     }
                     (yyval.p_str) = &s;
                   }
-
     break;
 
   case 8:
@@ -3124,7 +3587,6 @@
                 }
               }
             }
-
     break;
 
   case 10:
@@ -3139,7 +3601,6 @@
                                      s = NULL;
                                      actual_type = MODULE_KEYWORD;
                                    }
-
     break;
 
   case 12:
@@ -3153,24 +3614,21 @@
                                             YYABORT;
                                           }
                                         }
-
     break;
 
   case 13:
 
     { (yyval.i) = 0; }
-
     break;
 
   case 14:
 
-    { if (yang_check_version(param->module, param->submodule, s, (yyvsp[-1].i))) {
+    { if (yang_check_version(param->module, param->submodule, s, (yyvsp[(1) - (2)].i))) {
                                               YYABORT;
                                             }
                                             (yyval.i) = 1;
                                             s = NULL;
                                           }
-
     break;
 
   case 15:
@@ -3180,7 +3638,6 @@
                                          }
                                          s = NULL;
                                        }
-
     break;
 
   case 16:
@@ -3190,7 +3647,6 @@
                                       }
                                       s = NULL;
                                     }
-
     break;
 
   case 17:
@@ -3205,7 +3661,6 @@
                                         s = NULL;
                                         actual_type = SUBMODULE_KEYWORD;
                                       }
-
     break;
 
   case 19:
@@ -3214,7 +3669,7 @@
                                                   LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "belongs-to", "submodule");
                                                   YYABORT;
                                                 }
-                                                if (!(yyvsp[0].i)) {
+                                                if (!(yyvsp[(1) - (1)].i)) {
                                                   /* check version compatibility with the main module */
                                                   if (param->module->version > 1) {
                                                       LOGVAL(LYE_INVER, LY_VLOG_NONE, NULL);
@@ -3222,24 +3677,21 @@
                                                   }
                                                 }
                                               }
-
     break;
 
   case 20:
 
     { (yyval.i) = 0; }
-
     break;
 
   case 21:
 
-    { if (yang_check_version(param->module, param->submodule, s, (yyvsp[-1].i))) {
+    { if (yang_check_version(param->module, param->submodule, s, (yyvsp[(1) - (2)].i))) {
                                                  YYABORT;
                                                }
                                                (yyval.i) = 1;
                                                s = NULL;
                                              }
-
     break;
 
   case 23:
@@ -3247,7 +3699,6 @@
     { backup_type = actual_type;
                            actual_type = YANG_VERSION_KEYWORD;
                          }
-
     break;
 
   case 25:
@@ -3255,16 +3706,14 @@
     { backup_type = actual_type;
                             actual_type = NAMESPACE_KEYWORD;
                           }
-
     break;
 
   case 30:
 
-    { actual_type = (yyvsp[-4].token);
+    { actual_type = (yyvsp[(3) - (7)].token);
                    backup_type = NODE;
                    actual = NULL;
                  }
-
     break;
 
   case 31:
@@ -3276,13 +3725,11 @@
                                      (yyval.token) = actual_type;
                                      actual_type = IMPORT_KEYWORD;
                                    }
-
     break;
 
   case 32:
 
     { (yyval.i) = 0; }
-
     break;
 
   case 33:
@@ -3292,7 +3739,6 @@
                                    }
                                    s = NULL;
                                  }
-
     break;
 
   case 34:
@@ -3306,9 +3752,8 @@
                                           YYABORT;
                                         }
                                         s = NULL;
-                                        (yyval.i) = (yyvsp[-1].i);
+                                        (yyval.i) = (yyvsp[(1) - (2)].i);
                                       }
-
     break;
 
   case 35:
@@ -3322,14 +3767,13 @@
                                         YYABORT;
                                       }
                                       s = NULL;
-                                      (yyval.i) = (yyvsp[-1].i);
+                                      (yyval.i) = (yyvsp[(1) - (2)].i);
                                     }
-
     break;
 
   case 36:
 
-    { if ((yyvsp[-1].i)) {
+    { if ((yyvsp[(1) - (2)].i)) {
                                             LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "revision-date", "import");
                                             free(s);
                                             YYABORT;
@@ -3339,7 +3783,6 @@
                                           s = NULL;
                                           (yyval.i) = 1;
                                         }
-
     break;
 
   case 37:
@@ -3351,22 +3794,19 @@
                                      (yyval.token) = actual_type;
                                      actual_type = INCLUDE_KEYWORD;
                                    }
-
     break;
 
   case 38:
 
-    { actual_type = (yyvsp[-1].token);
+    { actual_type = (yyvsp[(3) - (4)].token);
                                                                 backup_type = NODE;
                                                                 actual = NULL;
                                                               }
-
     break;
 
   case 41:
 
     { (yyval.i) = 0; }
-
     break;
 
   case 42:
@@ -3380,9 +3820,8 @@
                                             YYABORT;
                                          }
                                          s = NULL;
-                                         (yyval.i) = (yyvsp[-1].i);
+                                         (yyval.i) = (yyvsp[(1) - (2)].i);
                                        }
-
     break;
 
   case 43:
@@ -3396,14 +3835,13 @@
                                          YYABORT;
                                        }
                                        s = NULL;
-                                       (yyval.i) = (yyvsp[-1].i);
+                                       (yyval.i) = (yyvsp[(1) - (2)].i);
                                      }
-
     break;
 
   case 44:
 
-    { if ((yyvsp[-1].i)) {
+    { if ((yyvsp[(1) - (2)].i)) {
                                              LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "revision-date", "include");
                                              free(s);
                                              YYABORT;
@@ -3413,7 +3851,6 @@
                                            s = NULL;
                                            (yyval.i) = 1;
                                          }
-
     break;
 
   case 45:
@@ -3421,7 +3858,6 @@
     { backup_type = actual_type;
                                   actual_type = REVISION_DATE_KEYWORD;
                                 }
-
     break;
 
   case 47:
@@ -3448,7 +3884,6 @@
                                          s = NULL;
                                          actual_type = BELONGS_TO_KEYWORD;
                                        }
-
     break;
 
   case 48:
@@ -3464,9 +3899,8 @@
                          }
                        }
                        s = NULL;
-                       actual_type = (yyvsp[-4].token);
+                       actual_type = (yyvsp[(3) - (7)].token);
                      }
-
     break;
 
   case 49:
@@ -3474,7 +3908,6 @@
     { backup_type = actual_type;
                              actual_type = PREFIX_KEYWORD;
                            }
-
     break;
 
   case 52:
@@ -3484,7 +3917,6 @@
                                     }
                                     s = NULL;
                                   }
-
     break;
 
   case 53:
@@ -3494,7 +3926,6 @@
                                }
                                s = NULL;
                              }
-
     break;
 
   case 54:
@@ -3504,7 +3935,6 @@
                                    }
                                    s = NULL;
                                  }
-
     break;
 
   case 55:
@@ -3514,7 +3944,6 @@
                                  }
                                  s=NULL;
                                }
-
     break;
 
   case 56:
@@ -3522,7 +3951,6 @@
     { backup_type = actual_type;
                            actual_type = ORGANIZATION_KEYWORD;
                          }
-
     break;
 
   case 58:
@@ -3530,7 +3958,6 @@
     { backup_type = actual_type;
                       actual_type = CONTACT_KEYWORD;
                     }
-
     break;
 
   case 60:
@@ -3538,7 +3965,6 @@
     { backup_type = actual_type;
                           actual_type = DESCRIPTION_KEYWORD;
                         }
-
     break;
 
   case 62:
@@ -3546,7 +3972,6 @@
     { backup_type = actual_type;
                         actual_type = REFERENCE_KEYWORD;
                       }
-
     break;
 
   case 64:
@@ -3562,7 +3987,6 @@
                                       trg->rev = tmp;
                                     }
                                   }
-
     break;
 
   case 65:
@@ -3577,7 +4001,6 @@
                                   s = NULL;
                                   actual_type = REVISION_KEYWORD;
                                 }
-
     break;
 
   case 67:
@@ -3592,15 +4015,13 @@
                                                   }
                                                 }
                                               }
-
     break;
 
   case 68:
 
-    { actual_type = (yyvsp[-1].backup_token).token;
-                                                                     actual = (yyvsp[-1].backup_token).actual;
+    { actual_type = (yyvsp[(3) - (4)].backup_token).token;
+                                                                     actual = (yyvsp[(3) - (4)].backup_token).actual;
                                                                    }
-
     break;
 
   case 72:
@@ -3610,7 +4031,6 @@
                                           }
                                           s = NULL;
                                         }
-
     break;
 
   case 73:
@@ -3620,7 +4040,6 @@
                                         }
                                         s = NULL;
                                       }
-
     break;
 
   case 74:
@@ -3631,7 +4050,6 @@
                                 YYABORT;
                               }
                             }
-
     break;
 
   case 76:
@@ -3641,7 +4059,6 @@
                    YYABORT;
                }
              }
-
     break;
 
   case 77:
@@ -3693,7 +4110,6 @@
                                trg->extensions = tmp;
                              }
                            }
-
     break;
 
   case 78:
@@ -3717,13 +4133,11 @@
                          }
                          actual = NULL;
                        }
-
     break;
 
   case 79:
 
     { actual = NULL; }
-
     break;
 
   case 90:
@@ -3742,17 +4156,15 @@
                                         s = NULL;
                                         actual_type = EXTENSION_KEYWORD;
                                       }
-
     break;
 
   case 91:
 
     { struct lys_ext *ext = actual;
                   ext->plugin = ext_get_plugin(ext->name, ext->module->name, ext->module->rev ? ext->module->rev[0].date : NULL);
-                  actual_type = (yyvsp[-1].backup_token).token;
-                  actual = (yyvsp[-1].backup_token).actual;
+                  actual_type = (yyvsp[(3) - (4)].backup_token).token;
+                  actual = (yyvsp[(3) - (4)].backup_token).actual;
                 }
-
     break;
 
   case 96:
@@ -3761,9 +4173,8 @@
                                         LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "status", "extension");
                                         YYABORT;
                                       }
-                                      ((struct lys_ext *)actual)->flags |= (yyvsp[0].i);
+                                      ((struct lys_ext *)actual)->flags |= (yyvsp[(2) - (2)].i);
                                     }
-
     break;
 
   case 97:
@@ -3773,7 +4184,6 @@
                                            }
                                            s = NULL;
                                          }
-
     break;
 
   case 98:
@@ -3783,7 +4193,6 @@
                                          }
                                          s = NULL;
                                        }
-
     break;
 
   case 99:
@@ -3805,22 +4214,19 @@
                                    s = NULL;
                                    actual_type = ARGUMENT_KEYWORD;
                                  }
-
     break;
 
   case 100:
 
-    { actual_type = (yyvsp[-1].token); }
-
+    { actual_type = (yyvsp[(3) - (4)].token); }
     break;
 
   case 103:
 
-    { (yyval.uint) = (yyvsp[0].uint);
+    { (yyval.uint) = (yyvsp[(1) - (1)].uint);
                                        backup_type = actual_type;
                                        actual_type = YIN_ELEMENT_KEYWORD;
                                      }
-
     break;
 
   case 105:
@@ -3840,24 +4246,21 @@
          } else {
            val = (uint8_t *)(p + 1);
          }
-         val[c] = ((yyvsp[-1].uint) == LYS_YINELEM) ? 1 : 2;
+         val[c] = ((yyvsp[(3) - (4)].uint) == LYS_YINELEM) ? 1 : 2;
        } else {
-         ((struct lys_ext *)actual)->flags |= (yyvsp[-1].uint);
+         ((struct lys_ext *)actual)->flags |= (yyvsp[(3) - (4)].uint);
        }
      }
-
     break;
 
   case 106:
 
     { (yyval.uint) = LYS_YINELEM; }
-
     break;
 
   case 107:
 
     { (yyval.uint) = 0; }
-
     break;
 
   case 108:
@@ -3874,40 +4277,34 @@
                free(s);
                s = NULL;
              }
-
     break;
 
   case 109:
 
-    { (yyval.i) = (yyvsp[0].i);
+    { (yyval.i) = (yyvsp[(1) - (1)].i);
                              backup_type = actual_type;
                              actual_type = STATUS_KEYWORD;
                            }
-
     break;
 
   case 110:
 
-    { (yyval.i) = (yyvsp[-1].i); }
-
+    { (yyval.i) = (yyvsp[(3) - (4)].i); }
     break;
 
   case 111:
 
     { (yyval.i) = LYS_STATUS_CURR; }
-
     break;
 
   case 112:
 
     { (yyval.i) = LYS_STATUS_OBSLT; }
-
     break;
 
   case 113:
 
     { (yyval.i) = LYS_STATUS_DEPRC; }
-
     break;
 
   case 114:
@@ -3926,7 +4323,6 @@
                free(s);
                s = NULL;
              }
-
     break;
 
   case 115:
@@ -3944,15 +4340,13 @@
                                       s = NULL;
                                       actual_type = FEATURE_KEYWORD;
                                     }
-
     break;
 
   case 116:
 
-    { actual = (yyvsp[-1].backup_token).actual;
-                actual_type = (yyvsp[-1].backup_token).token;
+    { actual = (yyvsp[(3) - (4)].backup_token).actual;
+                actual_type = (yyvsp[(3) - (4)].backup_token).token;
               }
-
     break;
 
   case 118:
@@ -3969,7 +4363,6 @@
             ((struct lys_feature *)actual)->iffeature = tmp;
           }
         }
-
     break;
 
   case 121:
@@ -3978,9 +4371,8 @@
                                       LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "status", "feature");
                                       YYABORT;
                                     }
-                                    ((struct lys_feature *)actual)->flags |= (yyvsp[0].i);
+                                    ((struct lys_feature *)actual)->flags |= (yyvsp[(2) - (2)].i);
                                   }
-
     break;
 
   case 122:
@@ -3990,7 +4382,6 @@
                                          }
                                          s = NULL;
                                        }
-
     break;
 
   case 123:
@@ -4000,7 +4391,6 @@
                                        }
                                        s = NULL;
                                      }
-
     break;
 
   case 124:
@@ -4061,15 +4451,13 @@
                          s = NULL;
                          actual_type = IF_FEATURE_KEYWORD;
                        }
-
     break;
 
   case 125:
 
-    { actual = (yyvsp[-1].backup_token).actual;
-                   actual_type = (yyvsp[-1].backup_token).token;
+    { actual = (yyvsp[(3) - (4)].backup_token).actual;
+                   actual_type = (yyvsp[(3) - (4)].backup_token).token;
                  }
-
     break;
 
   case 128:
@@ -4089,15 +4477,13 @@
                                        ((struct lys_ident *)actual)->module = trg;
                                        actual_type = IDENTITY_KEYWORD;
                                      }
-
     break;
 
   case 129:
 
-    { actual = (yyvsp[-1].backup_token).actual;
-                 actual_type = (yyvsp[-1].backup_token).token;
+    { actual = (yyvsp[(3) - (4)].backup_token).actual;
+                 actual_type = (yyvsp[(3) - (4)].backup_token).token;
                }
-
     break;
 
   case 131:
@@ -4124,7 +4510,6 @@
              ((struct lys_ident *)actual)->iffeature = tmp;
            }
          }
-
     break;
 
   case 133:
@@ -4143,7 +4528,6 @@
                                    s = NULL;
                                    actual = identity;
                                  }
-
     break;
 
   case 135:
@@ -4152,9 +4536,8 @@
                                        LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "status", "identity");
                                        YYABORT;
                                      }
-                                     ((struct lys_ident *)actual)->flags |= (yyvsp[0].i);
+                                     ((struct lys_ident *)actual)->flags |= (yyvsp[(2) - (2)].i);
                                    }
-
     break;
 
   case 136:
@@ -4164,7 +4547,6 @@
                                           }
                                           s = NULL;
                                         }
-
     break;
 
   case 137:
@@ -4174,7 +4556,6 @@
                                         }
                                         s = NULL;
                                       }
-
     break;
 
   case 138:
@@ -4182,7 +4563,6 @@
     { backup_type = actual_type;
                                    actual_type = BASE_KEYWORD;
                                  }
-
     break;
 
   case 140:
@@ -4239,19 +4619,17 @@
                                       s = NULL;
                                       actual_type = TYPEDEF_KEYWORD;
                                     }
-
     break;
 
   case 141:
 
-    { if (!((yyvsp[-1].nodes).node.flag & LYS_TYPE_DEF)) {
+    { if (!((yyvsp[(6) - (7)].nodes).node.flag & LYS_TYPE_DEF)) {
                       LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "type", "typedef");
                       YYABORT;
                     }
-                    actual_type = (yyvsp[-4].backup_token).token;
-                    actual = (yyvsp[-4].backup_token).actual;
+                    actual_type = (yyvsp[(3) - (7)].backup_token).token;
+                    actual = (yyvsp[(3) - (7)].backup_token).actual;
                   }
-
     break;
 
   case 142:
@@ -4259,74 +4637,66 @@
     { (yyval.nodes).node.ptr_tpdf = actual;
                             (yyval.nodes).node.flag = 0;
                           }
-
     break;
 
   case 143:
 
-    { (yyvsp[-2].nodes).node.flag |= LYS_TYPE_DEF;
-                                       (yyval.nodes) = (yyvsp[-2].nodes);
+    { (yyvsp[(1) - (3)].nodes).node.flag |= LYS_TYPE_DEF;
+                                       (yyval.nodes) = (yyvsp[(1) - (3)].nodes);
                                      }
-
     break;
 
   case 144:
 
-    { if (yang_read_units(trg, (yyvsp[-1].nodes).node.ptr_tpdf, s, TYPEDEF_KEYWORD)) {
+    { if (yang_read_units(trg, (yyvsp[(1) - (2)].nodes).node.ptr_tpdf, s, TYPEDEF_KEYWORD)) {
                                   YYABORT;
                                 }
                                 s = NULL;
                               }
-
     break;
 
   case 145:
 
-    { if (yang_read_default(trg, (yyvsp[-1].nodes).node.ptr_tpdf, s, TYPEDEF_KEYWORD)) {
+    { if (yang_read_default(trg, (yyvsp[(1) - (2)].nodes).node.ptr_tpdf, s, TYPEDEF_KEYWORD)) {
                                     YYABORT;
                                   }
                                   s = NULL;
                                 }
-
     break;
 
   case 146:
 
-    { if ((yyvsp[-1].nodes).node.ptr_tpdf->flags & LYS_STATUS_MASK) {
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_tpdf->flags & LYS_STATUS_MASK) {
                                    LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "status", "typedef");
                                    YYABORT;
                                  }
-                                 (yyvsp[-1].nodes).node.ptr_tpdf->flags |= (yyvsp[0].i);
+                                 (yyvsp[(1) - (2)].nodes).node.ptr_tpdf->flags |= (yyvsp[(2) - (2)].i);
                                }
-
     break;
 
   case 147:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_tpdf, s, "typedef", NODE)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).node.ptr_tpdf, s, "typedef", NODE)) {
                                         YYABORT;
                                       }
                                       s = NULL;
                                     }
-
     break;
 
   case 148:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_tpdf, s, "typedef", NODE)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).node.ptr_tpdf, s, "typedef", NODE)) {
                                       YYABORT;
                                     }
                                     s = NULL;
                                   }
-
     break;
 
   case 149:
 
-    { actual_type = (yyvsp[-1].backup_token).token;
-             actual = (yyvsp[-1].backup_token).actual;
+    { actual_type = (yyvsp[(3) - (4)].backup_token).token;
+             actual = (yyvsp[(3) - (4)].backup_token).actual;
            }
-
     break;
 
   case 150:
@@ -4339,7 +4709,6 @@
                                        s = NULL;
                                        actual_type = TYPE_KEYWORD;
                                      }
-
     break;
 
   case 153:
@@ -4355,8 +4724,9 @@
                                          YYABORT;
                                        }
                                        ((struct yang_type *)actual)->type->info.str.patterns = tmp;
-                                       
-                                       if (((struct yang_type *)actual)->type->info.str.patterns_pcre) {
+
+#ifdef LY_ENABLED_CACHE
+                                       if (!(trg->ctx->models.flags & LY_CTX_TRUSTED) && ((struct yang_type *)actual)->type->info.str.patterns_pcre) {
                                          tmp = realloc(((struct yang_type *)actual)->type->info.str.patterns_pcre,
                                                        2 * ((struct yang_type *)actual)->type->info.str.pat_count * sizeof *((struct yang_type *)actual)->type->info.str.patterns_pcre);
                                          if (!tmp) {
@@ -4365,6 +4735,7 @@
                                          }
                                          ((struct yang_type *)actual)->type->info.str.patterns_pcre = tmp;
                                        }
+#endif
                                      }
                                      if (((struct yang_type *)actual)->base == LY_TYPE_UNION) {
                                        struct lys_type *tmp;
@@ -4389,16 +4760,14 @@
                                        ((struct yang_type *)actual)->type->info.ident.ref = tmp;
                                      }
                                    }
-
     break;
 
   case 157:
 
-    { if (yang_read_require_instance(actual, (yyvsp[0].i))) {
+    { if (yang_read_require_instance(actual, (yyvsp[(2) - (2)].i))) {
                                                  YYABORT;
                                                }
                                              }
-
     break;
 
   case 158:
@@ -4409,7 +4778,6 @@
                                    }
                                    s = NULL;
                                  }
-
     break;
 
   case 159:
@@ -4427,24 +4795,21 @@
                                    actual = yang_type;
                                    s = NULL;
                                  }
-
     break;
 
   case 162:
 
-    { if (yang_read_fraction(actual, (yyvsp[0].uint))) {
+    { if (yang_read_fraction(actual, (yyvsp[(2) - (2)].uint))) {
                                                 YYABORT;
                                               }
                                             }
-
     break;
 
   case 165:
 
-    { actual_type = (yyvsp[-1].backup_token).token;
-                                   actual = (yyvsp[-1].backup_token).actual;
+    { actual_type = (yyvsp[(1) - (2)].backup_token).token;
+                                   actual = (yyvsp[(1) - (2)].backup_token).actual;
                                  }
-
     break;
 
   case 166:
@@ -4466,28 +4831,24 @@
                          YANG_ADDELEM(stype->type->info.uni.types, stype->type->info.uni.count)
                          actual_type = UNION_KEYWORD;
                        }
-
     break;
 
   case 167:
 
-    { (yyval.uint) = (yyvsp[0].uint);
+    { (yyval.uint) = (yyvsp[(1) - (1)].uint);
                                                backup_type = actual_type;
                                                actual_type = FRACTION_DIGITS_KEYWORD;
                                              }
-
     break;
 
   case 168:
 
-    { (yyval.uint) = (yyvsp[-1].uint); }
-
+    { (yyval.uint) = (yyvsp[(3) - (4)].uint); }
     break;
 
   case 169:
 
-    { (yyval.uint) = (yyvsp[-1].uint); }
-
+    { (yyval.uint) = (yyvsp[(1) - (2)].uint); }
     break;
 
   case 170:
@@ -4507,15 +4868,13 @@
                free(s);
                s =NULL;
              }
-
     break;
 
   case 171:
 
-    { actual = (yyvsp[-1].backup_token).actual;
-               actual_type = (yyvsp[-1].backup_token).token;
+    { actual = (yyvsp[(3) - (4)].backup_token).actual;
+               actual_type = (yyvsp[(3) - (4)].backup_token).token;
              }
-
     break;
 
   case 172:
@@ -4528,7 +4887,6 @@
                          actual_type = LENGTH_KEYWORD;
                          s = NULL;
                        }
-
     break;
 
   case 175:
@@ -4549,47 +4907,42 @@
                                  break;
                                }
                              }
-
     break;
 
   case 176:
 
-    { if (yang_read_message(trg, actual, s, (yyvsp[-1].str), ERROR_MESSAGE_KEYWORD)) {
+    { if (yang_read_message(trg, actual, s, (yyvsp[(1) - (2)].str), ERROR_MESSAGE_KEYWORD)) {
                                              YYABORT;
                                            }
                                            s = NULL;
                                          }
-
     break;
 
   case 177:
 
-    { if (yang_read_message(trg, actual, s, (yyvsp[-1].str), ERROR_APP_TAG_KEYWORD)) {
+    { if (yang_read_message(trg, actual, s, (yyvsp[(1) - (2)].str), ERROR_APP_TAG_KEYWORD)) {
                                              YYABORT;
                                            }
                                            s = NULL;
                                          }
-
     break;
 
   case 178:
 
-    { if (yang_read_description(trg, actual, s, (yyvsp[-1].str), NODE)) {
+    { if (yang_read_description(trg, actual, s, (yyvsp[(1) - (2)].str), NODE)) {
                                            YYABORT;
                                           }
                                           s = NULL;
                                         }
-
     break;
 
   case 179:
 
-    { if (yang_read_reference(trg, actual, s, (yyvsp[-1].str), NODE)) {
+    { if (yang_read_reference(trg, actual, s, (yyvsp[(1) - (2)].str), NODE)) {
                                          YYABORT;
                                        }
                                        s = NULL;
                                      }
-
     break;
 
   case 180:
@@ -4597,25 +4950,25 @@
     { (yyval.backup_token).token = actual_type;
                    (yyval.backup_token).actual = actual;
                  }
-
     break;
 
   case 181:
 
     {struct lys_restr *pattern = actual;
                                                                         actual = NULL;
-                                                                        if ((yyvsp[-2].backup_token).token != EXTENSION_INSTANCE &&
+#ifdef LY_ENABLED_CACHE
+                                                                        if ((yyvsp[(2) - (4)].backup_token).token != EXTENSION_INSTANCE &&
                                                                             !(data_node && data_node->nodetype != LYS_GROUPING && lys_ingrouping(data_node))) {
-                                                                          int c = 2 * (((struct yang_type *)(yyvsp[-2].backup_token).actual)->type->info.str.pat_count - 1);
-                                                                          YANG_ADDELEM(((struct yang_type *)(yyvsp[-2].backup_token).actual)->type->info.str.patterns_pcre, c);
+                                                                          int c = 2 * (((struct yang_type *)(yyvsp[(2) - (4)].backup_token).actual)->type->info.str.pat_count - 1);
+                                                                          YANG_ADDELEM(((struct yang_type *)(yyvsp[(2) - (4)].backup_token).actual)->type->info.str.patterns_pcre, c);
                                                                         }
-                                                                        if (yang_read_pattern(trg, pattern, actual, (yyvsp[-1].str), (yyvsp[0].ch))) {
+#endif
+                                                                        if (yang_read_pattern(trg, pattern, actual, (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].ch))) {
                                                                           YYABORT;
                                                                         }
-                                                                        actual_type = (yyvsp[-2].backup_token).token;
-                                                                        actual = (yyvsp[-2].backup_token).actual;
+                                                                        actual_type = (yyvsp[(2) - (4)].backup_token).token;
+                                                                        actual = (yyvsp[(2) - (4)].backup_token).actual;
                                                                       }
-
     break;
 
   case 182:
@@ -4634,25 +4987,21 @@
                           s = NULL;
                           actual_type = PATTERN_KEYWORD;
                         }
-
     break;
 
   case 183:
 
     { (yyval.ch) = 0x06; }
-
     break;
 
   case 184:
 
-    { (yyval.ch) = (yyvsp[-1].ch); }
-
+    { (yyval.ch) = (yyvsp[(3) - (4)].ch); }
     break;
 
   case 185:
 
     { (yyval.ch) = 0x06; /* ACK */ }
-
     break;
 
   case 186:
@@ -4661,13 +5010,12 @@
                                         LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "modifier");
                                         YYABORT;
                                       }
-                                      if ((yyvsp[-1].ch) != 0x06) {
+                                      if ((yyvsp[(1) - (2)].ch) != 0x06) {
                                         LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "modifier", "pattern");
                                         YYABORT;
                                       }
-                                      (yyval.ch) = (yyvsp[0].ch);
+                                      (yyval.ch) = (yyvsp[(2) - (2)].ch);
                                     }
-
     break;
 
   case 187:
@@ -4677,7 +5025,6 @@
                                            }
                                            s = NULL;
                                          }
-
     break;
 
   case 188:
@@ -4687,7 +5034,6 @@
                                            }
                                            s = NULL;
                                          }
-
     break;
 
   case 189:
@@ -4697,7 +5043,6 @@
                                           }
                                           s = NULL;
                                         }
-
     break;
 
   case 190:
@@ -4707,7 +5052,6 @@
                                        }
                                        s = NULL;
                                      }
-
     break;
 
   case 191:
@@ -4715,7 +5059,6 @@
     { backup_type = actual_type;
                        actual_type = MODIFIER_KEYWORD;
                      }
-
     break;
 
   case 192:
@@ -4730,7 +5073,6 @@
                                                              YYABORT;
                                                            }
                                                          }
-
     break;
 
   case 193:
@@ -4746,7 +5088,6 @@
                                                    }
                                                    ((struct yang_type *)actual)->type->info.enums.enm = tmp;
                                                  }
-
     break;
 
   case 196:
@@ -4754,10 +5095,9 @@
     { if (yang_check_enum(yang_type, actual, &cnt_val, is_value)) {
                YYABORT;
              }
-             actual = (yyvsp[-1].backup_token).actual;
-             actual_type = (yyvsp[-1].backup_token).token;
+             actual = (yyvsp[(3) - (4)].backup_token).actual;
+             actual_type = (yyvsp[(3) - (4)].backup_token).token;
            }
-
     break;
 
   case 197:
@@ -4772,7 +5112,6 @@
                        is_value = 0;
                        actual_type = ENUM_KEYWORD;
                      }
-
     break;
 
   case 199:
@@ -4789,7 +5128,6 @@
              ((struct lys_type_enum *)actual)->iffeature = tmp;
            }
          }
-
     break;
 
   case 202:
@@ -4798,15 +5136,14 @@
                                   LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "value", "enum");
                                   YYABORT;
                                 }
-                                ((struct lys_type_enum *)actual)->value = (yyvsp[0].i);
+                                ((struct lys_type_enum *)actual)->value = (yyvsp[(2) - (2)].i);
 
                                 /* keep the highest enum value for automatic increment */
-                                if ((yyvsp[0].i) >= cnt_val) {
-                                  cnt_val = (yyvsp[0].i) + 1;
+                                if ((yyvsp[(2) - (2)].i) >= cnt_val) {
+                                  cnt_val = (yyvsp[(2) - (2)].i) + 1;
                                 }
                                 is_value = 1;
                               }
-
     break;
 
   case 203:
@@ -4815,9 +5152,8 @@
                                    LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "status", "enum");
                                    YYABORT;
                                  }
-                                 ((struct lys_type_enum *)actual)->flags |= (yyvsp[0].i);
+                                 ((struct lys_type_enum *)actual)->flags |= (yyvsp[(2) - (2)].i);
                                }
-
     break;
 
   case 204:
@@ -4827,7 +5163,6 @@
                                       }
                                       s = NULL;
                                     }
-
     break;
 
   case 205:
@@ -4837,28 +5172,24 @@
                                     }
                                     s = NULL;
                                   }
-
     break;
 
   case 206:
 
-    { (yyval.i) = (yyvsp[0].i);
+    { (yyval.i) = (yyvsp[(1) - (1)].i);
                                    backup_type = actual_type;
                                    actual_type = VALUE_KEYWORD;
                                  }
-
     break;
 
   case 207:
 
-    { (yyval.i) = (yyvsp[-1].i); }
-
+    { (yyval.i) = (yyvsp[(3) - (4)].i); }
     break;
 
   case 208:
 
-    { (yyval.i) = (yyvsp[-1].i); }
-
+    { (yyval.i) = (yyvsp[(1) - (2)].i); }
     break;
 
   case 209:
@@ -4877,15 +5208,13 @@
                 s = NULL;
                 (yyval.i) = (int32_t) val;
              }
-
     break;
 
   case 210:
 
-    { actual_type = (yyvsp[-1].backup_token).token;
-                                                        actual = (yyvsp[-1].backup_token).actual;
+    { actual_type = (yyvsp[(3) - (4)].backup_token).token;
+                                                        actual = (yyvsp[(3) - (4)].backup_token).actual;
                                                       }
-
     break;
 
   case 213:
@@ -4893,34 +5222,29 @@
     { backup_type = actual_type;
                          actual_type = PATH_KEYWORD;
                        }
-
     break;
 
   case 215:
 
-    { (yyval.i) = (yyvsp[0].i);
+    { (yyval.i) = (yyvsp[(1) - (1)].i);
                                                  backup_type = actual_type;
                                                  actual_type = REQUIRE_INSTANCE_KEYWORD;
                                                }
-
     break;
 
   case 216:
 
-    { (yyval.i) = (yyvsp[-1].i); }
-
+    { (yyval.i) = (yyvsp[(3) - (4)].i); }
     break;
 
   case 217:
 
     { (yyval.i) = 1; }
-
     break;
 
   case 218:
 
     { (yyval.i) = -1; }
-
     break;
 
   case 219:
@@ -4937,7 +5261,6 @@
                 free(s);
                 s = NULL;
               }
-
     break;
 
   case 220:
@@ -4953,7 +5276,6 @@
                                          }
                                          ((struct yang_type *)actual)->type->info.bits.bit = tmp;
                                        }
-
     break;
 
   case 223:
@@ -4961,10 +5283,9 @@
     { if (yang_check_bit(yang_type, actual, &cnt_val, is_value)) {
                       YYABORT;
                     }
-                    actual = (yyvsp[-2].backup_token).actual;
-                    actual_type = (yyvsp[-2].backup_token).token;
+                    actual = (yyvsp[(3) - (5)].backup_token).actual;
+                    actual_type = (yyvsp[(3) - (5)].backup_token).token;
                   }
-
     break;
 
   case 224:
@@ -4980,7 +5301,6 @@
                                   is_value = 0;
                                   actual_type = BIT_KEYWORD;
                                 }
-
     break;
 
   case 226:
@@ -4997,7 +5317,6 @@
              ((struct lys_type_bit *)actual)->iffeature = tmp;
            }
          }
-
     break;
 
   case 229:
@@ -5006,15 +5325,14 @@
                                     LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "position", "bit");
                                     YYABORT;
                                   }
-                                  ((struct lys_type_bit *)actual)->pos = (yyvsp[0].uint);
+                                  ((struct lys_type_bit *)actual)->pos = (yyvsp[(2) - (2)].uint);
 
                                   /* keep the highest position value for automatic increment */
-                                  if ((yyvsp[0].uint) >= cnt_val) {
-                                    cnt_val = (yyvsp[0].uint) + 1;
+                                  if ((yyvsp[(2) - (2)].uint) >= cnt_val) {
+                                    cnt_val = (yyvsp[(2) - (2)].uint) + 1;
                                   }
                                   is_value = 1;
                                 }
-
     break;
 
   case 230:
@@ -5023,9 +5341,8 @@
                                    LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "status", "bit");
                                    YYABORT;
                                  }
-                                 ((struct lys_type_bit *)actual)->flags |= (yyvsp[0].i);
+                                 ((struct lys_type_bit *)actual)->flags |= (yyvsp[(2) - (2)].i);
                               }
-
     break;
 
   case 231:
@@ -5035,7 +5352,6 @@
                                      }
                                      s = NULL;
                                    }
-
     break;
 
   case 232:
@@ -5045,28 +5361,24 @@
                                    }
                                    s = NULL;
                                  }
-
     break;
 
   case 233:
 
-    { (yyval.uint) = (yyvsp[0].uint);
+    { (yyval.uint) = (yyvsp[(1) - (1)].uint);
                                              backup_type = actual_type;
                                              actual_type = POSITION_KEYWORD;
                                            }
-
     break;
 
   case 234:
 
-    { (yyval.uint) = (yyvsp[-1].uint); }
-
+    { (yyval.uint) = (yyvsp[(3) - (4)].uint); }
     break;
 
   case 235:
 
-    { (yyval.uint) = (yyvsp[-1].uint); }
-
+    { (yyval.uint) = (yyvsp[(1) - (2)].uint); }
     break;
 
   case 236:
@@ -5086,7 +5398,6 @@
                 s = NULL;
                 (yyval.uint) = (uint32_t) val;
               }
-
     break;
 
   case 237:
@@ -5094,7 +5405,6 @@
     { backup_type = actual_type;
                             actual_type = ERROR_MESSAGE_KEYWORD;
                           }
-
     break;
 
   case 239:
@@ -5102,7 +5412,6 @@
     { backup_type = actual_type;
                             actual_type = ERROR_APP_TAG_KEYWORD;
                           }
-
     break;
 
   case 241:
@@ -5110,7 +5419,6 @@
     { backup_type = actual_type;
                     actual_type = UNITS_KEYWORD;
                   }
-
     break;
 
   case 243:
@@ -5118,7 +5426,6 @@
     { backup_type = actual_type;
                       actual_type = DEFAULT_KEYWORD;
                     }
-
     break;
 
   case 245:
@@ -5132,64 +5439,57 @@
                                        data_node = actual;
                                        actual_type = GROUPING_KEYWORD;
                                      }
-
     break;
 
   case 246:
 
     { LOGDBG(LY_LDGYANG, "finished parsing grouping statement \"%s\"", data_node->name);
-                 actual_type = (yyvsp[-1].backup_token).token;
-                 actual = (yyvsp[-1].backup_token).actual;
-                 data_node = (yyvsp[-1].backup_token).actual;
+                 actual_type = (yyvsp[(3) - (4)].backup_token).token;
+                 actual = (yyvsp[(3) - (4)].backup_token).actual;
+                 data_node = (yyvsp[(3) - (4)].backup_token).actual;
                }
-
     break;
 
   case 249:
 
     { (yyval.nodes).grouping = actual; }
-
     break;
 
   case 250:
 
-    { if ((yyvsp[-1].nodes).grouping->flags & LYS_STATUS_MASK) {
-                                       LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).grouping, "status", "grouping");
+    { if ((yyvsp[(1) - (2)].nodes).grouping->flags & LYS_STATUS_MASK) {
+                                       LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).grouping, "status", "grouping");
                                        YYABORT;
                                      }
-                                     (yyvsp[-1].nodes).grouping->flags |= (yyvsp[0].i);
+                                     (yyvsp[(1) - (2)].nodes).grouping->flags |= (yyvsp[(2) - (2)].i);
                                    }
-
     break;
 
   case 251:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).grouping, s, "grouping", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).grouping, s, "grouping", NODE_PRINT)) {
                                             YYABORT;
                                           }
                                           s = NULL;
                                         }
-
     break;
 
   case 252:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).grouping, s, "grouping", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).grouping, s, "grouping", NODE_PRINT)) {
                                           YYABORT;
                                         }
                                         s = NULL;
                                       }
-
     break;
 
   case 257:
 
     { if (trg->version < 2) {
-                                                     LOGVAL(LYE_INSTMT, LY_VLOG_LYS, (yyvsp[-2].nodes).grouping, "notification");
+                                                     LOGVAL(LYE_INSTMT, LY_VLOG_LYS, (yyvsp[(1) - (3)].nodes).grouping, "notification");
                                                      YYABORT;
                                                    }
                                                  }
-
     break;
 
   case 266:
@@ -5203,151 +5503,140 @@
                                         s = NULL;
                                         actual_type = CONTAINER_KEYWORD;
                                       }
-
     break;
 
   case 267:
 
     { LOGDBG(LY_LDGYANG, "finished parsing container statement \"%s\"", data_node->name);
-                  actual_type = (yyvsp[-1].backup_token).token;
-                  actual = (yyvsp[-1].backup_token).actual;
-                  data_node = (yyvsp[-1].backup_token).actual;
+                  actual_type = (yyvsp[(3) - (4)].backup_token).token;
+                  actual = (yyvsp[(3) - (4)].backup_token).actual;
+                  data_node = (yyvsp[(3) - (4)].backup_token).actual;
                 }
-
     break;
 
   case 269:
 
     { void *tmp;
 
-            if ((yyvsp[-1].nodes).container->iffeature_size) {
-              tmp = realloc((yyvsp[-1].nodes).container->iffeature, (yyvsp[-1].nodes).container->iffeature_size * sizeof *(yyvsp[-1].nodes).container->iffeature);
+            if ((yyvsp[(3) - (4)].nodes).container->iffeature_size) {
+              tmp = realloc((yyvsp[(3) - (4)].nodes).container->iffeature, (yyvsp[(3) - (4)].nodes).container->iffeature_size * sizeof *(yyvsp[(3) - (4)].nodes).container->iffeature);
               if (!tmp) {
                 LOGMEM;
                 YYABORT;
               }
-              (yyvsp[-1].nodes).container->iffeature = tmp;
+              (yyvsp[(3) - (4)].nodes).container->iffeature = tmp;
             }
 
-            if ((yyvsp[-1].nodes).container->must_size) {
-              tmp = realloc((yyvsp[-1].nodes).container->must, (yyvsp[-1].nodes).container->must_size * sizeof *(yyvsp[-1].nodes).container->must);
+            if ((yyvsp[(3) - (4)].nodes).container->must_size) {
+              tmp = realloc((yyvsp[(3) - (4)].nodes).container->must, (yyvsp[(3) - (4)].nodes).container->must_size * sizeof *(yyvsp[(3) - (4)].nodes).container->must);
               if (!tmp) {
                 LOGMEM;
                 YYABORT;
               }
-              (yyvsp[-1].nodes).container->must = tmp;
+              (yyvsp[(3) - (4)].nodes).container->must = tmp;
             }
           }
-
     break;
 
   case 270:
 
     { (yyval.nodes).container = actual; }
-
     break;
 
   case 274:
 
-    { if (yang_read_presence(trg, (yyvsp[-1].nodes).container, s)) {
+    { if (yang_read_presence(trg, (yyvsp[(1) - (2)].nodes).container, s)) {
                                           YYABORT;
                                         }
                                         s = NULL;
                                       }
-
     break;
 
   case 275:
 
-    { if ((yyvsp[-1].nodes).container->flags & LYS_CONFIG_MASK) {
-                                        LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).container, "config", "container");
+    { if ((yyvsp[(1) - (2)].nodes).container->flags & LYS_CONFIG_MASK) {
+                                        LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).container, "config", "container");
                                         YYABORT;
                                       }
-                                      (yyvsp[-1].nodes).container->flags |= (yyvsp[0].i);
+                                      (yyvsp[(1) - (2)].nodes).container->flags |= (yyvsp[(2) - (2)].i);
                                     }
-
     break;
 
   case 276:
 
-    { if ((yyvsp[-1].nodes).container->flags & LYS_STATUS_MASK) {
-                                        LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).container, "status", "container");
+    { if ((yyvsp[(1) - (2)].nodes).container->flags & LYS_STATUS_MASK) {
+                                        LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).container, "status", "container");
                                         YYABORT;
                                       }
-                                      (yyvsp[-1].nodes).container->flags |= (yyvsp[0].i);
+                                      (yyvsp[(1) - (2)].nodes).container->flags |= (yyvsp[(2) - (2)].i);
                                     }
-
     break;
 
   case 277:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).container, s, "container", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).container, s, "container", NODE_PRINT)) {
                                              YYABORT;
                                            }
                                            s = NULL;
                                          }
-
     break;
 
   case 278:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).container, s, "container", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).container, s, "container", NODE_PRINT)) {
                                            YYABORT;
                                          }
                                          s = NULL;
                                        }
-
     break;
 
   case 281:
 
     { if (trg->version < 2) {
-                                                      LOGVAL(LYE_INSTMT, LY_VLOG_LYS, (yyvsp[-2].nodes).container, "notification");
+                                                      LOGVAL(LYE_INSTMT, LY_VLOG_LYS, (yyvsp[(1) - (3)].nodes).container, "notification");
                                                       YYABORT;
                                                     }
                                                   }
-
     break;
 
   case 284:
 
     { void *tmp;
 
-                  if (!((yyvsp[-1].nodes).node.flag & LYS_TYPE_DEF)) {
-                    LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaf, "type", "leaf");
+                  if (!((yyvsp[(6) - (7)].nodes).node.flag & LYS_TYPE_DEF)) {
+                    LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_LYS, (yyvsp[(6) - (7)].nodes).node.ptr_leaf, "type", "leaf");
                     YYABORT;
                   }
-                  if ((yyvsp[-1].nodes).node.ptr_leaf->dflt && ((yyvsp[-1].nodes).node.ptr_leaf->flags & LYS_MAND_TRUE)) {
+                  if ((yyvsp[(6) - (7)].nodes).node.ptr_leaf->dflt && ((yyvsp[(6) - (7)].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_LYS, (yyvsp[-1].nodes).node.ptr_leaf, "The \"mandatory\" statement is forbidden on leaf with \"default\".");
+                    LOGVAL(LYE_INCHILDSTMT, LY_VLOG_LYS, (yyvsp[(6) - (7)].nodes).node.ptr_leaf, "mandatory", "leaf");
+                    LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[(6) - (7)].nodes).node.ptr_leaf, "The \"mandatory\" statement is forbidden on leaf with \"default\".");
                     YYABORT;
                   }
 
-                  if ((yyvsp[-1].nodes).node.ptr_leaf->iffeature_size) {
-                    tmp = realloc((yyvsp[-1].nodes).node.ptr_leaf->iffeature, (yyvsp[-1].nodes).node.ptr_leaf->iffeature_size * sizeof *(yyvsp[-1].nodes).node.ptr_leaf->iffeature);
+                  if ((yyvsp[(6) - (7)].nodes).node.ptr_leaf->iffeature_size) {
+                    tmp = realloc((yyvsp[(6) - (7)].nodes).node.ptr_leaf->iffeature, (yyvsp[(6) - (7)].nodes).node.ptr_leaf->iffeature_size * sizeof *(yyvsp[(6) - (7)].nodes).node.ptr_leaf->iffeature);
                     if (!tmp) {
                       LOGMEM;
                       YYABORT;
                     }
-                    (yyvsp[-1].nodes).node.ptr_leaf->iffeature = tmp;
+                    (yyvsp[(6) - (7)].nodes).node.ptr_leaf->iffeature = tmp;
                   }
 
-                  if ((yyvsp[-1].nodes).node.ptr_leaf->must_size) {
-                    tmp = realloc((yyvsp[-1].nodes).node.ptr_leaf->must, (yyvsp[-1].nodes).node.ptr_leaf->must_size * sizeof *(yyvsp[-1].nodes).node.ptr_leaf->must);
+                  if ((yyvsp[(6) - (7)].nodes).node.ptr_leaf->must_size) {
+                    tmp = realloc((yyvsp[(6) - (7)].nodes).node.ptr_leaf->must, (yyvsp[(6) - (7)].nodes).node.ptr_leaf->must_size * sizeof *(yyvsp[(6) - (7)].nodes).node.ptr_leaf->must);
                     if (!tmp) {
                       LOGMEM;
                       YYABORT;
                     }
-                    (yyvsp[-1].nodes).node.ptr_leaf->must = tmp;
+                    (yyvsp[(6) - (7)].nodes).node.ptr_leaf->must = tmp;
                   }
 
                   LOGDBG(LY_LDGYANG, "finished parsing leaf statement \"%s\"", data_node->name);
-                  actual_type = (yyvsp[-4].backup_token).token;
-                  actual = (yyvsp[-4].backup_token).actual;
-                  data_node = (yyvsp[-4].backup_token).actual;
+                  actual_type = (yyvsp[(3) - (7)].backup_token).token;
+                  actual = (yyvsp[(3) - (7)].backup_token).actual;
+                  data_node = (yyvsp[(3) - (7)].backup_token).actual;
                 }
-
     break;
 
   case 285:
@@ -5361,7 +5650,6 @@
                                    s = NULL;
                                    actual_type = LEAF_KEYWORD;
                                  }
-
     break;
 
   case 286:
@@ -5369,88 +5657,79 @@
     { (yyval.nodes).node.ptr_leaf = actual;
                             (yyval.nodes).node.flag = 0;
                           }
-
     break;
 
   case 289:
 
-    { (yyvsp[-2].nodes).node.flag |= LYS_TYPE_DEF;
-                                       (yyval.nodes) = (yyvsp[-2].nodes);
+    { (yyvsp[(1) - (3)].nodes).node.flag |= LYS_TYPE_DEF;
+                                       (yyval.nodes) = (yyvsp[(1) - (3)].nodes);
                                      }
-
     break;
 
   case 290:
 
-    { if (yang_read_units(trg, (yyvsp[-1].nodes).node.ptr_leaf, s, LEAF_KEYWORD)) {
+    { if (yang_read_units(trg, (yyvsp[(1) - (2)].nodes).node.ptr_leaf, s, LEAF_KEYWORD)) {
                                   YYABORT;
                                 }
                                 s = NULL;
                               }
-
     break;
 
   case 292:
 
-    { if (yang_read_default(trg, (yyvsp[-1].nodes).node.ptr_leaf, s, LEAF_KEYWORD)) {
+    { if (yang_read_default(trg, (yyvsp[(1) - (2)].nodes).node.ptr_leaf, s, LEAF_KEYWORD)) {
                                     YYABORT;
                                   }
                                   s = NULL;
                                 }
-
     break;
 
   case 293:
 
-    { if ((yyvsp[-1].nodes).node.ptr_leaf->flags & LYS_CONFIG_MASK) {
-                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaf, "config", "leaf");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_leaf->flags & LYS_CONFIG_MASK) {
+                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_leaf, "config", "leaf");
                                    YYABORT;
                                  }
-                                 (yyvsp[-1].nodes).node.ptr_leaf->flags |= (yyvsp[0].i);
+                                 (yyvsp[(1) - (2)].nodes).node.ptr_leaf->flags |= (yyvsp[(2) - (2)].i);
                                }
-
     break;
 
   case 294:
 
-    { if ((yyvsp[-1].nodes).node.ptr_leaf->flags & LYS_MAND_MASK) {
-                                      LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaf, "mandatory", "leaf");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_leaf->flags & LYS_MAND_MASK) {
+                                      LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_leaf, "mandatory", "leaf");
                                       YYABORT;
                                     }
-                                    (yyvsp[-1].nodes).node.ptr_leaf->flags |= (yyvsp[0].i);
+                                    (yyvsp[(1) - (2)].nodes).node.ptr_leaf->flags |= (yyvsp[(2) - (2)].i);
                                   }
-
     break;
 
   case 295:
 
-    { if ((yyvsp[-1].nodes).node.ptr_leaf->flags & LYS_STATUS_MASK) {
-                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaf, "status", "leaf");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_leaf->flags & LYS_STATUS_MASK) {
+                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_leaf, "status", "leaf");
                                    YYABORT;
                                  }
-                                 (yyvsp[-1].nodes).node.ptr_leaf->flags |= (yyvsp[0].i);
+                                 (yyvsp[(1) - (2)].nodes).node.ptr_leaf->flags |= (yyvsp[(2) - (2)].i);
                                }
-
     break;
 
   case 296:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_leaf, s, "leaf", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).node.ptr_leaf, s, "leaf", NODE_PRINT)) {
                                         YYABORT;
                                       }
                                       s = NULL;
                                     }
-
     break;
 
   case 297:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_leaf, s, "leaf", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).node.ptr_leaf, s, "leaf", NODE_PRINT)) {
                                       YYABORT;
                                     }
                                     s = NULL;
                                   }
-
     break;
 
   case 298:
@@ -5464,63 +5743,61 @@
                                         s = NULL;
                                         actual_type = LEAF_LIST_KEYWORD;
                                       }
-
     break;
 
   case 299:
 
     { void *tmp;
 
-                        if ((yyvsp[-1].nodes).node.ptr_leaflist->flags & LYS_CONFIG_R) {
+                        if ((yyvsp[(6) - (7)].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;
+                          (yyvsp[(6) - (7)].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");
+                        if (!((yyvsp[(6) - (7)].nodes).node.flag & LYS_TYPE_DEF)) {
+                          LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_LYS, (yyvsp[(6) - (7)].nodes).node.ptr_leaflist, "type", "leaf-list");
                           YYABORT;
                         }
-                        if ((yyvsp[-1].nodes).node.ptr_leaflist->dflt_size && (yyvsp[-1].nodes).node.ptr_leaflist->min) {
-                          LOGVAL(LYE_INCHILDSTMT, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "min-elements", "leaf-list");
-                          LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaflist,
+                        if ((yyvsp[(6) - (7)].nodes).node.ptr_leaflist->dflt_size && (yyvsp[(6) - (7)].nodes).node.ptr_leaflist->min) {
+                          LOGVAL(LYE_INCHILDSTMT, LY_VLOG_LYS, (yyvsp[(6) - (7)].nodes).node.ptr_leaflist, "min-elements", "leaf-list");
+                          LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[(6) - (7)].nodes).node.ptr_leaflist,
                                  "The \"min-elements\" statement with non-zero value is forbidden on leaf-lists with the \"default\" statement.");
                           YYABORT;
                         }
 
-                        if ((yyvsp[-1].nodes).node.ptr_leaflist->iffeature_size) {
-                          tmp = realloc((yyvsp[-1].nodes).node.ptr_leaflist->iffeature, (yyvsp[-1].nodes).node.ptr_leaflist->iffeature_size * sizeof *(yyvsp[-1].nodes).node.ptr_leaflist->iffeature);
+                        if ((yyvsp[(6) - (7)].nodes).node.ptr_leaflist->iffeature_size) {
+                          tmp = realloc((yyvsp[(6) - (7)].nodes).node.ptr_leaflist->iffeature, (yyvsp[(6) - (7)].nodes).node.ptr_leaflist->iffeature_size * sizeof *(yyvsp[(6) - (7)].nodes).node.ptr_leaflist->iffeature);
                           if (!tmp) {
                             LOGMEM;
                             YYABORT;
                           }
-                          (yyvsp[-1].nodes).node.ptr_leaflist->iffeature = tmp;
+                          (yyvsp[(6) - (7)].nodes).node.ptr_leaflist->iffeature = tmp;
                         }
 
-                        if ((yyvsp[-1].nodes).node.ptr_leaflist->must_size) {
-                          tmp = realloc((yyvsp[-1].nodes).node.ptr_leaflist->must, (yyvsp[-1].nodes).node.ptr_leaflist->must_size * sizeof *(yyvsp[-1].nodes).node.ptr_leaflist->must);
+                        if ((yyvsp[(6) - (7)].nodes).node.ptr_leaflist->must_size) {
+                          tmp = realloc((yyvsp[(6) - (7)].nodes).node.ptr_leaflist->must, (yyvsp[(6) - (7)].nodes).node.ptr_leaflist->must_size * sizeof *(yyvsp[(6) - (7)].nodes).node.ptr_leaflist->must);
                           if (!tmp) {
                             LOGMEM;
                             YYABORT;
                           }
-                          (yyvsp[-1].nodes).node.ptr_leaflist->must = tmp;
+                          (yyvsp[(6) - (7)].nodes).node.ptr_leaflist->must = tmp;
                         }
 
-                        if ((yyvsp[-1].nodes).node.ptr_leaflist->dflt_size) {
-                          tmp = realloc((yyvsp[-1].nodes).node.ptr_leaflist->dflt, (yyvsp[-1].nodes).node.ptr_leaflist->dflt_size * sizeof *(yyvsp[-1].nodes).node.ptr_leaflist->dflt);
+                        if ((yyvsp[(6) - (7)].nodes).node.ptr_leaflist->dflt_size) {
+                          tmp = realloc((yyvsp[(6) - (7)].nodes).node.ptr_leaflist->dflt, (yyvsp[(6) - (7)].nodes).node.ptr_leaflist->dflt_size * sizeof *(yyvsp[(6) - (7)].nodes).node.ptr_leaflist->dflt);
                           if (!tmp) {
                             LOGMEM;
                             YYABORT;
                           }
-                          (yyvsp[-1].nodes).node.ptr_leaflist->dflt = tmp;
+                          (yyvsp[(6) - (7)].nodes).node.ptr_leaflist->dflt = tmp;
                         }
 
                         LOGDBG(LY_LDGYANG, "finished parsing leaf-list statement \"%s\"", data_node->name);
-                        actual_type = (yyvsp[-4].backup_token).token;
-                        actual = (yyvsp[-4].backup_token).actual;
-                        data_node = (yyvsp[-4].backup_token).actual;
+                        actual_type = (yyvsp[(3) - (7)].backup_token).token;
+                        actual = (yyvsp[(3) - (7)].backup_token).actual;
+                        data_node = (yyvsp[(3) - (7)].backup_token).actual;
                       }
-
     break;
 
   case 300:
@@ -5528,134 +5805,123 @@
     { (yyval.nodes).node.ptr_leaflist = actual;
                                  (yyval.nodes).node.flag = 0;
                                }
-
     break;
 
   case 303:
 
-    { (yyvsp[-2].nodes).node.flag |= LYS_TYPE_DEF;
-                                            (yyval.nodes) = (yyvsp[-2].nodes);
+    { (yyvsp[(1) - (3)].nodes).node.flag |= LYS_TYPE_DEF;
+                                            (yyval.nodes) = (yyvsp[(1) - (3)].nodes);
                                           }
-
     break;
 
   case 304:
 
     { if (trg->version < 2) {
                                          free(s);
-                                         LOGVAL(LYE_INSTMT, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "default");
+                                         LOGVAL(LYE_INSTMT, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_leaflist, "default");
                                          YYABORT;
                                        }
-                                       YANG_ADDELEM((yyvsp[-1].nodes).node.ptr_leaflist->dflt,
-                                                    (yyvsp[-1].nodes).node.ptr_leaflist->dflt_size);
+                                       YANG_ADDELEM((yyvsp[(1) - (2)].nodes).node.ptr_leaflist->dflt,
+                                                    (yyvsp[(1) - (2)].nodes).node.ptr_leaflist->dflt_size);
                                        (*(const char **)actual) = lydict_insert_zc(param->module->ctx, s);
                                        s = NULL;
-                                       actual = (yyvsp[-1].nodes).node.ptr_leaflist;
+                                       actual = (yyvsp[(1) - (2)].nodes).node.ptr_leaflist;
                                      }
-
     break;
 
   case 305:
 
-    { if (yang_read_units(trg, (yyvsp[-1].nodes).node.ptr_leaflist, s, LEAF_LIST_KEYWORD)) {
+    { if (yang_read_units(trg, (yyvsp[(1) - (2)].nodes).node.ptr_leaflist, s, LEAF_LIST_KEYWORD)) {
                                        YYABORT;
                                      }
                                      s = NULL;
                                    }
-
     break;
 
   case 307:
 
-    { if ((yyvsp[-1].nodes).node.ptr_leaflist->flags & LYS_CONFIG_MASK) {
-                                        LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "config", "leaf-list");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_leaflist->flags & LYS_CONFIG_MASK) {
+                                        LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_leaflist, "config", "leaf-list");
                                         YYABORT;
                                       }
-                                      (yyvsp[-1].nodes).node.ptr_leaflist->flags |= (yyvsp[0].i);
+                                      (yyvsp[(1) - (2)].nodes).node.ptr_leaflist->flags |= (yyvsp[(2) - (2)].i);
                                     }
-
     break;
 
   case 308:
 
-    { 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");
+    { if ((yyvsp[(1) - (2)].nodes).node.flag & LYS_MIN_ELEMENTS) {
+                                              LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].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_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "Invalid value \"%d\" of \"%s\".", (yyvsp[0].uint), "min-elements");
-                                              LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "\"min-elements\" is bigger than \"max-elements\".");
+                                            (yyvsp[(1) - (2)].nodes).node.ptr_leaflist->min = (yyvsp[(2) - (2)].uint);
+                                            (yyvsp[(1) - (2)].nodes).node.flag |= LYS_MIN_ELEMENTS;
+                                            (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
+                                            if ((yyvsp[(1) - (2)].nodes).node.ptr_leaflist->max && ((yyvsp[(1) - (2)].nodes).node.ptr_leaflist->min > (yyvsp[(1) - (2)].nodes).node.ptr_leaflist->max)) {
+                                              LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_leaflist, "Invalid value \"%d\" of \"%s\".", (yyvsp[(2) - (2)].uint), "min-elements");
+                                              LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_leaflist, "\"min-elements\" is bigger than \"max-elements\".");
                                               YYABORT;
                                             }
                                           }
-
     break;
 
   case 309:
 
-    { 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");
+    { if ((yyvsp[(1) - (2)].nodes).node.flag & LYS_MAX_ELEMENTS) {
+                                              LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].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_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "Invalid value \"%d\" of \"%s\".", (yyvsp[0].uint), "max-elements");
-                                              LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "\"max-elements\" is smaller than \"min-elements\".");
+                                            (yyvsp[(1) - (2)].nodes).node.ptr_leaflist->max = (yyvsp[(2) - (2)].uint);
+                                            (yyvsp[(1) - (2)].nodes).node.flag |= LYS_MAX_ELEMENTS;
+                                            (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
+                                            if ((yyvsp[(1) - (2)].nodes).node.ptr_leaflist->min > (yyvsp[(1) - (2)].nodes).node.ptr_leaflist->max) {
+                                              LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_leaflist, "Invalid value \"%d\" of \"%s\".", (yyvsp[(2) - (2)].uint), "max-elements");
+                                              LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_leaflist, "\"max-elements\" is smaller than \"min-elements\".");
                                               YYABORT;
                                             }
                                           }
-
     break;
 
   case 310:
 
-    { 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");
+    { if ((yyvsp[(1) - (2)].nodes).node.flag & LYS_ORDERED_MASK) {
+                                            LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_leaflist, "ordered by", "leaf-list");
                                             YYABORT;
                                           }
-                                          if ((yyvsp[0].i) & LYS_USERORDERED) {
-                                            (yyvsp[-1].nodes).node.ptr_leaflist->flags |= LYS_USERORDERED;
+                                          if ((yyvsp[(2) - (2)].i) & LYS_USERORDERED) {
+                                            (yyvsp[(1) - (2)].nodes).node.ptr_leaflist->flags |= LYS_USERORDERED;
                                           }
-                                          (yyvsp[-1].nodes).node.flag |= (yyvsp[0].i);
-                                          (yyval.nodes) = (yyvsp[-1].nodes);
+                                          (yyvsp[(1) - (2)].nodes).node.flag |= (yyvsp[(2) - (2)].i);
+                                          (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                         }
-
     break;
 
   case 311:
 
-    { if ((yyvsp[-1].nodes).node.ptr_leaflist->flags & LYS_STATUS_MASK) {
-                                        LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_leaflist, "status", "leaf-list");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_leaflist->flags & LYS_STATUS_MASK) {
+                                        LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_leaflist, "status", "leaf-list");
                                         YYABORT;
                                       }
-                                      (yyvsp[-1].nodes).node.ptr_leaflist->flags |= (yyvsp[0].i);
+                                      (yyvsp[(1) - (2)].nodes).node.ptr_leaflist->flags |= (yyvsp[(2) - (2)].i);
                                     }
-
     break;
 
   case 312:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_leaflist, s, "leaf-list", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).node.ptr_leaflist, s, "leaf-list", NODE_PRINT)) {
                                              YYABORT;
                                            }
                                            s = NULL;
                                          }
-
     break;
 
   case 313:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_leaflist, s, "leaf-list", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).node.ptr_leaflist, s, "leaf-list", NODE_PRINT)) {
                                            YYABORT;
                                          }
                                          s = NULL;
                                        }
-
     break;
 
   case 314:
@@ -5669,55 +5935,53 @@
                                    s = NULL;
                                    actual_type = LIST_KEYWORD;
                                  }
-
     break;
 
   case 315:
 
     { void *tmp;
 
-                  if ((yyvsp[-1].nodes).node.ptr_list->iffeature_size) {
-                    tmp = realloc((yyvsp[-1].nodes).node.ptr_list->iffeature, (yyvsp[-1].nodes).node.ptr_list->iffeature_size * sizeof *(yyvsp[-1].nodes).node.ptr_list->iffeature);
+                  if ((yyvsp[(6) - (7)].nodes).node.ptr_list->iffeature_size) {
+                    tmp = realloc((yyvsp[(6) - (7)].nodes).node.ptr_list->iffeature, (yyvsp[(6) - (7)].nodes).node.ptr_list->iffeature_size * sizeof *(yyvsp[(6) - (7)].nodes).node.ptr_list->iffeature);
                     if (!tmp) {
                       LOGMEM;
                       YYABORT;
                     }
-                    (yyvsp[-1].nodes).node.ptr_list->iffeature = tmp;
+                    (yyvsp[(6) - (7)].nodes).node.ptr_list->iffeature = tmp;
                   }
 
-                  if ((yyvsp[-1].nodes).node.ptr_list->must_size) {
-                    tmp = realloc((yyvsp[-1].nodes).node.ptr_list->must, (yyvsp[-1].nodes).node.ptr_list->must_size * sizeof *(yyvsp[-1].nodes).node.ptr_list->must);
+                  if ((yyvsp[(6) - (7)].nodes).node.ptr_list->must_size) {
+                    tmp = realloc((yyvsp[(6) - (7)].nodes).node.ptr_list->must, (yyvsp[(6) - (7)].nodes).node.ptr_list->must_size * sizeof *(yyvsp[(6) - (7)].nodes).node.ptr_list->must);
                     if (!tmp) {
                       LOGMEM;
                       YYABORT;
                     }
-                    (yyvsp[-1].nodes).node.ptr_list->must = tmp;
+                    (yyvsp[(6) - (7)].nodes).node.ptr_list->must = tmp;
                   }
 
-                  if ((yyvsp[-1].nodes).node.ptr_list->tpdf_size) {
-                    tmp = realloc((yyvsp[-1].nodes).node.ptr_list->tpdf, (yyvsp[-1].nodes).node.ptr_list->tpdf_size * sizeof *(yyvsp[-1].nodes).node.ptr_list->tpdf);
+                  if ((yyvsp[(6) - (7)].nodes).node.ptr_list->tpdf_size) {
+                    tmp = realloc((yyvsp[(6) - (7)].nodes).node.ptr_list->tpdf, (yyvsp[(6) - (7)].nodes).node.ptr_list->tpdf_size * sizeof *(yyvsp[(6) - (7)].nodes).node.ptr_list->tpdf);
                     if (!tmp) {
                       LOGMEM;
                       YYABORT;
                     }
-                    (yyvsp[-1].nodes).node.ptr_list->tpdf = tmp;
+                    (yyvsp[(6) - (7)].nodes).node.ptr_list->tpdf = tmp;
                   }
 
-                  if ((yyvsp[-1].nodes).node.ptr_list->unique_size) {
-                    tmp = realloc((yyvsp[-1].nodes).node.ptr_list->unique, (yyvsp[-1].nodes).node.ptr_list->unique_size * sizeof *(yyvsp[-1].nodes).node.ptr_list->unique);
+                  if ((yyvsp[(6) - (7)].nodes).node.ptr_list->unique_size) {
+                    tmp = realloc((yyvsp[(6) - (7)].nodes).node.ptr_list->unique, (yyvsp[(6) - (7)].nodes).node.ptr_list->unique_size * sizeof *(yyvsp[(6) - (7)].nodes).node.ptr_list->unique);
                     if (!tmp) {
                       LOGMEM;
                       YYABORT;
                     }
-                    (yyvsp[-1].nodes).node.ptr_list->unique = tmp;
+                    (yyvsp[(6) - (7)].nodes).node.ptr_list->unique = tmp;
                   }
 
                   LOGDBG(LY_LDGYANG, "finished parsing list statement \"%s\"", data_node->name);
-                  actual_type = (yyvsp[-4].backup_token).token;
-                  actual = (yyvsp[-4].backup_token).actual;
-                  data_node = (yyvsp[-4].backup_token).actual;
+                  actual_type = (yyvsp[(3) - (7)].backup_token).token;
+                  actual = (yyvsp[(3) - (7)].backup_token).actual;
+                  data_node = (yyvsp[(3) - (7)].backup_token).actual;
                 }
-
     break;
 
   case 316:
@@ -5725,135 +5989,124 @@
     { (yyval.nodes).node.ptr_list = actual;
                             (yyval.nodes).node.flag = 0;
                           }
-
     break;
 
   case 320:
 
-    { if ((yyvsp[-1].nodes).node.ptr_list->keys) {
-                                  LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "key", "list");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_list->keys) {
+                                  LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].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);
+                              (yyvsp[(1) - (2)].nodes).node.ptr_list->keys = (struct lys_node_leaf **)s;
+                              (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                               s = NULL;
                             }
-
     break;
 
   case 321:
 
-    { YANG_ADDELEM((yyvsp[-1].nodes).node.ptr_list->unique, (yyvsp[-1].nodes).node.ptr_list->unique_size);
+    { YANG_ADDELEM((yyvsp[(1) - (2)].nodes).node.ptr_list->unique, (yyvsp[(1) - (2)].nodes).node.ptr_list->unique_size);
                                  ((struct lys_unique *)actual)->expr = (const char **)s;
-                                 (yyval.nodes) = (yyvsp[-1].nodes);
+                                 (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                  s = NULL;
-                                 actual = (yyvsp[-1].nodes).node.ptr_list;
+                                 actual = (yyvsp[(1) - (2)].nodes).node.ptr_list;
                                }
-
     break;
 
   case 322:
 
-    { if ((yyvsp[-1].nodes).node.ptr_list->flags & LYS_CONFIG_MASK) {
-                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "config", "list");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_list->flags & LYS_CONFIG_MASK) {
+                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_list, "config", "list");
                                    YYABORT;
                                  }
-                                 (yyvsp[-1].nodes).node.ptr_list->flags |= (yyvsp[0].i);
+                                 (yyvsp[(1) - (2)].nodes).node.ptr_list->flags |= (yyvsp[(2) - (2)].i);
                                }
-
     break;
 
   case 323:
 
-    { if ((yyvsp[-1].nodes).node.flag & LYS_MIN_ELEMENTS) {
-                                         LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "min-elements", "list");
+    { if ((yyvsp[(1) - (2)].nodes).node.flag & LYS_MIN_ELEMENTS) {
+                                         LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].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_LYS, (yyvsp[-1].nodes).node.ptr_list, "Invalid value \"%d\" of \"%s\".", (yyvsp[0].uint), "min-elements");
-                                         LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "\"min-elements\" is bigger than \"max-elements\".");
+                                       (yyvsp[(1) - (2)].nodes).node.ptr_list->min = (yyvsp[(2) - (2)].uint);
+                                       (yyvsp[(1) - (2)].nodes).node.flag |= LYS_MIN_ELEMENTS;
+                                       (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
+                                       if ((yyvsp[(1) - (2)].nodes).node.ptr_list->max && ((yyvsp[(1) - (2)].nodes).node.ptr_list->min > (yyvsp[(1) - (2)].nodes).node.ptr_list->max)) {
+                                         LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_list, "Invalid value \"%d\" of \"%s\".", (yyvsp[(2) - (2)].uint), "min-elements");
+                                         LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_list, "\"min-elements\" is bigger than \"max-elements\".");
                                          YYABORT;
                                        }
                                      }
-
     break;
 
   case 324:
 
-    { if ((yyvsp[-1].nodes).node.flag & LYS_MAX_ELEMENTS) {
-                                         LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "max-elements", "list");
+    { if ((yyvsp[(1) - (2)].nodes).node.flag & LYS_MAX_ELEMENTS) {
+                                         LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].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_LYS, (yyvsp[-1].nodes).node.ptr_list, "Invalid value \"%d\" of \"%s\".", (yyvsp[0].uint), "min-elements");
-                                         LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "\"max-elements\" is smaller than \"min-elements\".");
+                                       (yyvsp[(1) - (2)].nodes).node.ptr_list->max = (yyvsp[(2) - (2)].uint);
+                                       (yyvsp[(1) - (2)].nodes).node.flag |= LYS_MAX_ELEMENTS;
+                                       (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
+                                       if ((yyvsp[(1) - (2)].nodes).node.ptr_list->min > (yyvsp[(1) - (2)].nodes).node.ptr_list->max) {
+                                         LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_list, "Invalid value \"%d\" of \"%s\".", (yyvsp[(2) - (2)].uint), "min-elements");
+                                         LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_list, "\"max-elements\" is smaller than \"min-elements\".");
                                          YYABORT;
                                        }
                                      }
-
     break;
 
   case 325:
 
-    { if ((yyvsp[-1].nodes).node.flag & LYS_ORDERED_MASK) {
-                                       LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "ordered by", "list");
+    { if ((yyvsp[(1) - (2)].nodes).node.flag & LYS_ORDERED_MASK) {
+                                       LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_list, "ordered by", "list");
                                        YYABORT;
                                      }
-                                     if ((yyvsp[0].i) & LYS_USERORDERED) {
-                                       (yyvsp[-1].nodes).node.ptr_list->flags |= LYS_USERORDERED;
+                                     if ((yyvsp[(2) - (2)].i) & LYS_USERORDERED) {
+                                       (yyvsp[(1) - (2)].nodes).node.ptr_list->flags |= LYS_USERORDERED;
                                      }
-                                     (yyvsp[-1].nodes).node.flag |= (yyvsp[0].i);
-                                     (yyval.nodes) = (yyvsp[-1].nodes);
+                                     (yyvsp[(1) - (2)].nodes).node.flag |= (yyvsp[(2) - (2)].i);
+                                     (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                    }
-
     break;
 
   case 326:
 
-    { if ((yyvsp[-1].nodes).node.ptr_list->flags & LYS_STATUS_MASK) {
-                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_list, "status", "list");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_list->flags & LYS_STATUS_MASK) {
+                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_list, "status", "list");
                                    YYABORT;
                                  }
-                                 (yyvsp[-1].nodes).node.ptr_list->flags |= (yyvsp[0].i);
+                                 (yyvsp[(1) - (2)].nodes).node.ptr_list->flags |= (yyvsp[(2) - (2)].i);
                                }
-
     break;
 
   case 327:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_list, s, "list", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).node.ptr_list, s, "list", NODE_PRINT)) {
                                         YYABORT;
                                       }
                                       s = NULL;
                                     }
-
     break;
 
   case 328:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_list, s, "list", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).node.ptr_list, s, "list", NODE_PRINT)) {
                                       YYABORT;
                                     }
                                     s = NULL;
                                   }
-
     break;
 
   case 332:
 
     { if (trg->version < 2) {
-                                                 LOGVAL(LYE_INSTMT, LY_VLOG_LYS, (yyvsp[-2].nodes).node.ptr_list, "notification");
+                                                 LOGVAL(LYE_INSTMT, LY_VLOG_LYS, (yyvsp[(1) - (3)].nodes).node.ptr_list, "notification");
                                                  YYABORT;
                                                }
                                              }
-
     break;
 
   case 334:
@@ -5867,39 +6120,36 @@
                                      s = NULL;
                                      actual_type = CHOICE_KEYWORD;
                                    }
-
     break;
 
   case 335:
 
     { LOGDBG(LY_LDGYANG, "finished parsing choice statement \"%s\"", data_node->name);
-               actual_type = (yyvsp[-1].backup_token).token;
-               actual = (yyvsp[-1].backup_token).actual;
-               data_node = (yyvsp[-1].backup_token).actual;
+               actual_type = (yyvsp[(3) - (4)].backup_token).token;
+               actual = (yyvsp[(3) - (4)].backup_token).actual;
+               data_node = (yyvsp[(3) - (4)].backup_token).actual;
              }
-
     break;
 
   case 337:
 
     { struct lys_iffeature *tmp;
 
-           if (((yyvsp[-1].nodes).node.ptr_choice->flags & LYS_MAND_TRUE) && (yyvsp[-1].nodes).node.ptr_choice->dflt) {
-              LOGVAL(LYE_INCHILDSTMT, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_choice, "default", "choice");
-              LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_choice, "The \"default\" statement is forbidden on choices with \"mandatory\".");
+           if (((yyvsp[(3) - (4)].nodes).node.ptr_choice->flags & LYS_MAND_TRUE) && (yyvsp[(3) - (4)].nodes).node.ptr_choice->dflt) {
+              LOGVAL(LYE_INCHILDSTMT, LY_VLOG_LYS, (yyvsp[(3) - (4)].nodes).node.ptr_choice, "default", "choice");
+              LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[(3) - (4)].nodes).node.ptr_choice, "The \"default\" statement is forbidden on choices with \"mandatory\".");
               YYABORT;
             }
 
-           if ((yyvsp[-1].nodes).node.ptr_choice->iffeature_size) {
-             tmp = realloc((yyvsp[-1].nodes).node.ptr_choice->iffeature, (yyvsp[-1].nodes).node.ptr_choice->iffeature_size * sizeof *tmp);
+           if ((yyvsp[(3) - (4)].nodes).node.ptr_choice->iffeature_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).node.ptr_choice->iffeature, (yyvsp[(3) - (4)].nodes).node.ptr_choice->iffeature_size * sizeof *tmp);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).node.ptr_choice->iffeature = tmp;
+             (yyvsp[(3) - (4)].nodes).node.ptr_choice->iffeature = tmp;
            }
          }
-
     break;
 
   case 338:
@@ -5907,80 +6157,73 @@
     { (yyval.nodes).node.ptr_choice = actual;
                               (yyval.nodes).node.flag = 0;
                             }
-
     break;
 
   case 341:
 
-    { if ((yyvsp[-1].nodes).node.flag & LYS_CHOICE_DEFAULT) {
-                                      LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_choice, "default", "choice");
+    { if ((yyvsp[(1) - (2)].nodes).node.flag & LYS_CHOICE_DEFAULT) {
+                                      LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_choice, "default", "choice");
                                       free(s);
                                       YYABORT;
                                     }
-                                    (yyvsp[-1].nodes).node.ptr_choice->dflt = (struct lys_node *) s;
+                                    (yyvsp[(1) - (2)].nodes).node.ptr_choice->dflt = (struct lys_node *) s;
                                     s = NULL;
-                                    (yyval.nodes) = (yyvsp[-1].nodes);
+                                    (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                     (yyval.nodes).node.flag |= LYS_CHOICE_DEFAULT;
                                   }
-
     break;
 
   case 342:
 
-    { if ((yyvsp[-1].nodes).node.ptr_choice->flags & LYS_CONFIG_MASK) {
-                                     LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_choice, "config", "choice");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_choice->flags & LYS_CONFIG_MASK) {
+                                     LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_choice, "config", "choice");
                                      YYABORT;
                                    }
-                                   (yyvsp[-1].nodes).node.ptr_choice->flags |= (yyvsp[0].i);
-                                   (yyval.nodes) = (yyvsp[-1].nodes);
+                                   (yyvsp[(1) - (2)].nodes).node.ptr_choice->flags |= (yyvsp[(2) - (2)].i);
+                                   (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                  }
-
     break;
 
   case 343:
 
-    { if ((yyvsp[-1].nodes).node.ptr_choice->flags & LYS_MAND_MASK) {
-                                      LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_choice, "mandatory", "choice");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_choice->flags & LYS_MAND_MASK) {
+                                      LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_choice, "mandatory", "choice");
                                       YYABORT;
                                     }
-                                    (yyvsp[-1].nodes).node.ptr_choice->flags |= (yyvsp[0].i);
-                                    (yyval.nodes) = (yyvsp[-1].nodes);
+                                    (yyvsp[(1) - (2)].nodes).node.ptr_choice->flags |= (yyvsp[(2) - (2)].i);
+                                    (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                   }
-
     break;
 
   case 344:
 
-    { if ((yyvsp[-1].nodes).node.ptr_choice->flags & LYS_STATUS_MASK) {
-                                     LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_choice, "status", "choice");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_choice->flags & LYS_STATUS_MASK) {
+                                     LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_choice, "status", "choice");
                                      YYABORT;
                                    }
-                                   (yyvsp[-1].nodes).node.ptr_choice->flags |= (yyvsp[0].i);
-                                   (yyval.nodes) = (yyvsp[-1].nodes);
+                                   (yyvsp[(1) - (2)].nodes).node.ptr_choice->flags |= (yyvsp[(2) - (2)].i);
+                                   (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                  }
-
     break;
 
   case 345:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_choice, s, "choice", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).node.ptr_choice, s, "choice", NODE_PRINT)) {
                                           YYABORT;
                                         }
                                         s = NULL;
-                                        (yyval.nodes) = (yyvsp[-1].nodes);
+                                        (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                       }
-
     break;
 
   case 346:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_choice, s, "choice", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).node.ptr_choice, s, "choice", NODE_PRINT)) {
                                         YYABORT;
                                       }
                                       s = NULL;
-                                      (yyval.nodes) = (yyvsp[-1].nodes);
+                                      (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                     }
-
     break;
 
   case 356:
@@ -5990,7 +6233,6 @@
                      YYABORT;
                    }
                  }
-
     break;
 
   case 357:
@@ -6004,70 +6246,63 @@
                                    s = NULL;
                                    actual_type = CASE_KEYWORD;
                                  }
-
     break;
 
   case 358:
 
     { LOGDBG(LY_LDGYANG, "finished parsing case statement \"%s\"", data_node->name);
-             actual_type = (yyvsp[-1].backup_token).token;
-             actual = (yyvsp[-1].backup_token).actual;
-             data_node = (yyvsp[-1].backup_token).actual;
+             actual_type = (yyvsp[(3) - (4)].backup_token).token;
+             actual = (yyvsp[(3) - (4)].backup_token).actual;
+             data_node = (yyvsp[(3) - (4)].backup_token).actual;
            }
-
     break;
 
   case 360:
 
     { struct lys_iffeature *tmp;
 
-           if ((yyvsp[-1].nodes).cs->iffeature_size) {
-             tmp = realloc((yyvsp[-1].nodes).cs->iffeature, (yyvsp[-1].nodes).cs->iffeature_size * sizeof *tmp);
+           if ((yyvsp[(3) - (4)].nodes).cs->iffeature_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).cs->iffeature, (yyvsp[(3) - (4)].nodes).cs->iffeature_size * sizeof *tmp);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).cs->iffeature = tmp;
+             (yyvsp[(3) - (4)].nodes).cs->iffeature = tmp;
            }
           }
-
     break;
 
   case 361:
 
     { (yyval.nodes).cs = actual; }
-
     break;
 
   case 364:
 
-    { if ((yyvsp[-1].nodes).cs->flags & LYS_STATUS_MASK) {
-                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).cs, "status", "case");
+    { if ((yyvsp[(1) - (2)].nodes).cs->flags & LYS_STATUS_MASK) {
+                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).cs, "status", "case");
                                    YYABORT;
                                  }
-                                 (yyvsp[-1].nodes).cs->flags |= (yyvsp[0].i);
+                                 (yyvsp[(1) - (2)].nodes).cs->flags |= (yyvsp[(2) - (2)].i);
                                }
-
     break;
 
   case 365:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).cs, s, "case", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).cs, s, "case", NODE_PRINT)) {
                                         YYABORT;
                                       }
                                       s = NULL;
                                     }
-
     break;
 
   case 366:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).cs, s, "case", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).cs, s, "case", NODE_PRINT)) {
                                       YYABORT;
                                     }
                                     s = NULL;
                                   }
-
     break;
 
   case 368:
@@ -6081,17 +6316,15 @@
                                      s = NULL;
                                      actual_type = ANYXML_KEYWORD;
                                    }
-
     break;
 
   case 369:
 
     { LOGDBG(LY_LDGYANG, "finished parsing anyxml statement \"%s\"", data_node->name);
-               actual_type = (yyvsp[-1].backup_token).token;
-               actual = (yyvsp[-1].backup_token).actual;
-               data_node = (yyvsp[-1].backup_token).actual;
+               actual_type = (yyvsp[(3) - (4)].backup_token).token;
+               actual = (yyvsp[(3) - (4)].backup_token).actual;
+               data_node = (yyvsp[(3) - (4)].backup_token).actual;
              }
-
     break;
 
   case 370:
@@ -6105,42 +6338,39 @@
                                       s = NULL;
                                       actual_type = ANYDATA_KEYWORD;
                                     }
-
     break;
 
   case 371:
 
     { LOGDBG(LY_LDGYANG, "finished parsing anydata statement \"%s\"", data_node->name);
-                actual_type = (yyvsp[-1].backup_token).token;
-                actual = (yyvsp[-1].backup_token).actual;
-                data_node = (yyvsp[-1].backup_token).actual;
+                actual_type = (yyvsp[(3) - (4)].backup_token).token;
+                actual = (yyvsp[(3) - (4)].backup_token).actual;
+                data_node = (yyvsp[(3) - (4)].backup_token).actual;
               }
-
     break;
 
   case 373:
 
     { void *tmp;
 
-           if ((yyvsp[-1].nodes).node.ptr_anydata->iffeature_size) {
-             tmp = realloc((yyvsp[-1].nodes).node.ptr_anydata->iffeature, (yyvsp[-1].nodes).node.ptr_anydata->iffeature_size * sizeof *(yyvsp[-1].nodes).node.ptr_anydata->iffeature);
+           if ((yyvsp[(3) - (4)].nodes).node.ptr_anydata->iffeature_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).node.ptr_anydata->iffeature, (yyvsp[(3) - (4)].nodes).node.ptr_anydata->iffeature_size * sizeof *(yyvsp[(3) - (4)].nodes).node.ptr_anydata->iffeature);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).node.ptr_anydata->iffeature = tmp;
+             (yyvsp[(3) - (4)].nodes).node.ptr_anydata->iffeature = tmp;
            }
 
-           if ((yyvsp[-1].nodes).node.ptr_anydata->must_size) {
-             tmp = realloc((yyvsp[-1].nodes).node.ptr_anydata->must, (yyvsp[-1].nodes).node.ptr_anydata->must_size * sizeof *(yyvsp[-1].nodes).node.ptr_anydata->must);
+           if ((yyvsp[(3) - (4)].nodes).node.ptr_anydata->must_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).node.ptr_anydata->must, (yyvsp[(3) - (4)].nodes).node.ptr_anydata->must_size * sizeof *(yyvsp[(3) - (4)].nodes).node.ptr_anydata->must);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).node.ptr_anydata->must = tmp;
+             (yyvsp[(3) - (4)].nodes).node.ptr_anydata->must = tmp;
            }
          }
-
     break;
 
   case 374:
@@ -6148,63 +6378,57 @@
     { (yyval.nodes).node.ptr_anydata = actual;
                               (yyval.nodes).node.flag = actual_type;
                             }
-
     break;
 
   case 378:
 
-    { if ((yyvsp[-1].nodes).node.ptr_anydata->flags & LYS_CONFIG_MASK) {
-                                     LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_anydata, "config",
-                                            ((yyvsp[-1].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_anydata->flags & LYS_CONFIG_MASK) {
+                                     LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_anydata, "config",
+                                            ((yyvsp[(1) - (2)].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata");
                                      YYABORT;
                                    }
-                                   (yyvsp[-1].nodes).node.ptr_anydata->flags |= (yyvsp[0].i);
+                                   (yyvsp[(1) - (2)].nodes).node.ptr_anydata->flags |= (yyvsp[(2) - (2)].i);
                                  }
-
     break;
 
   case 379:
 
-    { if ((yyvsp[-1].nodes).node.ptr_anydata->flags & LYS_MAND_MASK) {
-                                        LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_anydata, "mandatory",
-                                               ((yyvsp[-1].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_anydata->flags & LYS_MAND_MASK) {
+                                        LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_anydata, "mandatory",
+                                               ((yyvsp[(1) - (2)].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata");
                                         YYABORT;
                                       }
-                                      (yyvsp[-1].nodes).node.ptr_anydata->flags |= (yyvsp[0].i);
+                                      (yyvsp[(1) - (2)].nodes).node.ptr_anydata->flags |= (yyvsp[(2) - (2)].i);
                                     }
-
     break;
 
   case 380:
 
-    { if ((yyvsp[-1].nodes).node.ptr_anydata->flags & LYS_STATUS_MASK) {
-                                     LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_anydata, "status",
-                                            ((yyvsp[-1].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_anydata->flags & LYS_STATUS_MASK) {
+                                     LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_anydata, "status",
+                                            ((yyvsp[(1) - (2)].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata");
                                      YYABORT;
                                    }
-                                   (yyvsp[-1].nodes).node.ptr_anydata->flags |= (yyvsp[0].i);
+                                   (yyvsp[(1) - (2)].nodes).node.ptr_anydata->flags |= (yyvsp[(2) - (2)].i);
                                  }
-
     break;
 
   case 381:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_anydata, s, ((yyvsp[-1].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).node.ptr_anydata, s, ((yyvsp[(1) - (2)].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata", NODE_PRINT)) {
                                           YYABORT;
                                         }
                                         s = NULL;
                                       }
-
     break;
 
   case 382:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_anydata, s, ((yyvsp[-1].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).node.ptr_anydata, s, ((yyvsp[(1) - (2)].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata", NODE_PRINT)) {
                                         YYABORT;
                                       }
                                       s = NULL;
                                     }
-
     break;
 
   case 383:
@@ -6218,88 +6442,81 @@
                                        s = NULL;
                                        actual_type = USES_KEYWORD;
                                      }
-
     break;
 
   case 384:
 
     { LOGDBG(LY_LDGYANG, "finished parsing uses statement \"%s\"", data_node->name);
-             actual_type = (yyvsp[-1].backup_token).token;
-             actual = (yyvsp[-1].backup_token).actual;
-             data_node = (yyvsp[-1].backup_token).actual;
+             actual_type = (yyvsp[(3) - (4)].backup_token).token;
+             actual = (yyvsp[(3) - (4)].backup_token).actual;
+             data_node = (yyvsp[(3) - (4)].backup_token).actual;
            }
-
     break;
 
   case 386:
 
     { void *tmp;
 
-           if ((yyvsp[-1].nodes).uses->iffeature_size) {
-             tmp = realloc((yyvsp[-1].nodes).uses->iffeature, (yyvsp[-1].nodes).uses->iffeature_size * sizeof *(yyvsp[-1].nodes).uses->iffeature);
+           if ((yyvsp[(3) - (4)].nodes).uses->iffeature_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).uses->iffeature, (yyvsp[(3) - (4)].nodes).uses->iffeature_size * sizeof *(yyvsp[(3) - (4)].nodes).uses->iffeature);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).uses->iffeature = tmp;
+             (yyvsp[(3) - (4)].nodes).uses->iffeature = tmp;
            }
 
-           if ((yyvsp[-1].nodes).uses->refine_size) {
-             tmp = realloc((yyvsp[-1].nodes).uses->refine, (yyvsp[-1].nodes).uses->refine_size * sizeof *(yyvsp[-1].nodes).uses->refine);
+           if ((yyvsp[(3) - (4)].nodes).uses->refine_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).uses->refine, (yyvsp[(3) - (4)].nodes).uses->refine_size * sizeof *(yyvsp[(3) - (4)].nodes).uses->refine);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).uses->refine = tmp;
+             (yyvsp[(3) - (4)].nodes).uses->refine = tmp;
            }
 
-           if ((yyvsp[-1].nodes).uses->augment_size) {
-             tmp = realloc((yyvsp[-1].nodes).uses->augment, (yyvsp[-1].nodes).uses->augment_size * sizeof *(yyvsp[-1].nodes).uses->augment);
+           if ((yyvsp[(3) - (4)].nodes).uses->augment_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).uses->augment, (yyvsp[(3) - (4)].nodes).uses->augment_size * sizeof *(yyvsp[(3) - (4)].nodes).uses->augment);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).uses->augment = tmp;
+             (yyvsp[(3) - (4)].nodes).uses->augment = tmp;
            }
          }
-
     break;
 
   case 387:
 
     { (yyval.nodes).uses = actual; }
-
     break;
 
   case 390:
 
-    { if ((yyvsp[-1].nodes).uses->flags & LYS_STATUS_MASK) {
-                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).uses, "status", "uses");
+    { if ((yyvsp[(1) - (2)].nodes).uses->flags & LYS_STATUS_MASK) {
+                                   LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).uses, "status", "uses");
                                    YYABORT;
                                  }
-                                 (yyvsp[-1].nodes).uses->flags |= (yyvsp[0].i);
+                                 (yyvsp[(1) - (2)].nodes).uses->flags |= (yyvsp[(2) - (2)].i);
                                }
-
     break;
 
   case 391:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).uses, s, "uses", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).uses, s, "uses", NODE_PRINT)) {
                                         YYABORT;
                                       }
                                       s = NULL;
                                     }
-
     break;
 
   case 392:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).uses, s, "uses", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).uses, s, "uses", NODE_PRINT)) {
                                       YYABORT;
                                     }
                                     s = NULL;
                                   }
-
     break;
 
   case 397:
@@ -6316,49 +6533,46 @@
                                   }
                                   actual_type = REFINE_KEYWORD;
                                 }
-
     break;
 
   case 398:
 
-    { actual_type = (yyvsp[-1].backup_token).token;
-               actual = (yyvsp[-1].backup_token).actual;
+    { actual_type = (yyvsp[(3) - (4)].backup_token).token;
+               actual = (yyvsp[(3) - (4)].backup_token).actual;
              }
-
     break;
 
   case 400:
 
     { void *tmp;
 
-           if ((yyvsp[-1].nodes).refine->iffeature_size) {
-             tmp = realloc((yyvsp[-1].nodes).refine->iffeature, (yyvsp[-1].nodes).refine->iffeature_size * sizeof *(yyvsp[-1].nodes).refine->iffeature);
+           if ((yyvsp[(3) - (4)].nodes).refine->iffeature_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).refine->iffeature, (yyvsp[(3) - (4)].nodes).refine->iffeature_size * sizeof *(yyvsp[(3) - (4)].nodes).refine->iffeature);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).refine->iffeature = tmp;
+             (yyvsp[(3) - (4)].nodes).refine->iffeature = tmp;
            }
 
-           if ((yyvsp[-1].nodes).refine->must_size) {
-             tmp = realloc((yyvsp[-1].nodes).refine->must, (yyvsp[-1].nodes).refine->must_size * sizeof *(yyvsp[-1].nodes).refine->must);
+           if ((yyvsp[(3) - (4)].nodes).refine->must_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).refine->must, (yyvsp[(3) - (4)].nodes).refine->must_size * sizeof *(yyvsp[(3) - (4)].nodes).refine->must);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).refine->must = tmp;
+             (yyvsp[(3) - (4)].nodes).refine->must = tmp;
            }
 
-           if ((yyvsp[-1].nodes).refine->dflt_size) {
-             tmp = realloc((yyvsp[-1].nodes).refine->dflt, (yyvsp[-1].nodes).refine->dflt_size * sizeof *(yyvsp[-1].nodes).refine->dflt);
+           if ((yyvsp[(3) - (4)].nodes).refine->dflt_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).refine->dflt, (yyvsp[(3) - (4)].nodes).refine->dflt_size * sizeof *(yyvsp[(3) - (4)].nodes).refine->dflt);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).refine->dflt = tmp;
+             (yyvsp[(3) - (4)].nodes).refine->dflt = tmp;
            }
          }
-
     break;
 
   case 401:
@@ -6366,35 +6580,33 @@
     { (yyval.nodes).refine = actual;
                                     actual_type = REFINE_KEYWORD;
                                   }
-
     break;
 
   case 402:
 
-    { actual = (yyvsp[-2].nodes).refine;
+    { actual = (yyvsp[(1) - (3)].nodes).refine;
                                                actual_type = REFINE_KEYWORD;
-                                               if ((yyvsp[-2].nodes).refine->target_type) {
-                                                 if ((yyvsp[-2].nodes).refine->target_type & (LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYXML)) {
-                                                   (yyvsp[-2].nodes).refine->target_type &= (LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYXML);
+                                               if ((yyvsp[(1) - (3)].nodes).refine->target_type) {
+                                                 if ((yyvsp[(1) - (3)].nodes).refine->target_type & (LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYXML)) {
+                                                   (yyvsp[(1) - (3)].nodes).refine->target_type &= (LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYXML);
                                                  } else {
                                                    LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "must", "refine");
                                                    LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid refine target nodetype for the substatements.");
                                                    YYABORT;
                                                  }
                                                } else {
-                                                 (yyvsp[-2].nodes).refine->target_type = LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYXML;
+                                                 (yyvsp[(1) - (3)].nodes).refine->target_type = LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYXML;
                                                }
                                              }
-
     break;
 
   case 403:
 
     { /* leaf, leaf-list, list, container or anyxml */
                /* check possibility of statements combination */
-               if ((yyvsp[-2].nodes).refine->target_type) {
-                 if ((yyvsp[-2].nodes).refine->target_type & (LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYDATA)) {
-                   (yyvsp[-2].nodes).refine->target_type &= (LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYDATA);
+               if ((yyvsp[(1) - (3)].nodes).refine->target_type) {
+                 if ((yyvsp[(1) - (3)].nodes).refine->target_type & (LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYDATA)) {
+                   (yyvsp[(1) - (3)].nodes).refine->target_type &= (LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYDATA);
                  } else {
                    free(s);
                    LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "if-feature", "refine");
@@ -6402,23 +6614,22 @@
                    YYABORT;
                  }
                } else {
-                 (yyvsp[-2].nodes).refine->target_type = LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYDATA;
+                 (yyvsp[(1) - (3)].nodes).refine->target_type = LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYDATA;
                }
              }
-
     break;
 
   case 404:
 
-    { if ((yyvsp[-1].nodes).refine->target_type) {
-                                             if ((yyvsp[-1].nodes).refine->target_type & LYS_CONTAINER) {
-                                               if ((yyvsp[-1].nodes).refine->mod.presence) {
+    { if ((yyvsp[(1) - (2)].nodes).refine->target_type) {
+                                             if ((yyvsp[(1) - (2)].nodes).refine->target_type & LYS_CONTAINER) {
+                                               if ((yyvsp[(1) - (2)].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);
+                                               (yyvsp[(1) - (2)].nodes).refine->target_type = LYS_CONTAINER;
+                                               (yyvsp[(1) - (2)].nodes).refine->mod.presence = lydict_insert_zc(trg->ctx, s);
                                              } else {
                                                free(s);
                                                LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "presence", "refine");
@@ -6426,26 +6637,25 @@
                                                YYABORT;
                                              }
                                            } else {
-                                             (yyvsp[-1].nodes).refine->target_type = LYS_CONTAINER;
-                                             (yyvsp[-1].nodes).refine->mod.presence = lydict_insert_zc(trg->ctx, s);
+                                             (yyvsp[(1) - (2)].nodes).refine->target_type = LYS_CONTAINER;
+                                             (yyvsp[(1) - (2)].nodes).refine->mod.presence = lydict_insert_zc(trg->ctx, s);
                                            }
                                            s = NULL;
-                                           (yyval.nodes) = (yyvsp[-1].nodes);
+                                           (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                          }
-
     break;
 
   case 405:
 
     { int i;
 
-                                          if ((yyvsp[-1].nodes).refine->dflt_size) {
+                                          if ((yyvsp[(1) - (2)].nodes).refine->dflt_size) {
                                             if (trg->version < 2) {
                                               LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "default", "refine");
                                               YYABORT;
                                             }
-                                            if ((yyvsp[-1].nodes).refine->target_type & LYS_LEAFLIST) {
-                                              (yyvsp[-1].nodes).refine->target_type = LYS_LEAFLIST;
+                                            if ((yyvsp[(1) - (2)].nodes).refine->target_type & LYS_LEAFLIST) {
+                                              (yyvsp[(1) - (2)].nodes).refine->target_type = LYS_LEAFLIST;
                                             } else {
                                               free(s);
                                               LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "default", "refine");
@@ -6453,12 +6663,12 @@
                                               YYABORT;
                                             }
                                           } else {
-                                            if ((yyvsp[-1].nodes).refine->target_type) {
-                                              if (trg->version < 2 && ((yyvsp[-1].nodes).refine->target_type & (LYS_LEAF | LYS_CHOICE))) {
-                                                (yyvsp[-1].nodes).refine->target_type &= (LYS_LEAF | LYS_CHOICE);
-                                              } if (trg->version > 1 && ((yyvsp[-1].nodes).refine->target_type & (LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE))) {
+                                            if ((yyvsp[(1) - (2)].nodes).refine->target_type) {
+                                              if (trg->version < 2 && ((yyvsp[(1) - (2)].nodes).refine->target_type & (LYS_LEAF | LYS_CHOICE))) {
+                                                (yyvsp[(1) - (2)].nodes).refine->target_type &= (LYS_LEAF | LYS_CHOICE);
+                                              } if (trg->version > 1 && ((yyvsp[(1) - (2)].nodes).refine->target_type & (LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE))) {
                                                 /* YANG 1.1 */
-                                                (yyvsp[-1].nodes).refine->target_type &= (LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE);
+                                                (yyvsp[(1) - (2)].nodes).refine->target_type &= (LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE);
                                               } else {
                                                 free(s);
                                                 LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "default", "refine");
@@ -6467,148 +6677,141 @@
                                               }
                                             } else {
                                               if (trg->version < 2) {
-                                                (yyvsp[-1].nodes).refine->target_type = LYS_LEAF | LYS_CHOICE;
+                                                (yyvsp[(1) - (2)].nodes).refine->target_type = LYS_LEAF | LYS_CHOICE;
                                               } else {
                                                 /* YANG 1.1 */
-                                                (yyvsp[-1].nodes).refine->target_type = LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE;
+                                                (yyvsp[(1) - (2)].nodes).refine->target_type = LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE;
                                               }
                                             }
                                           }
                                           /* check for duplicity */
-                                          for (i = 0; i < (yyvsp[-1].nodes).refine->dflt_size; ++i) {
-                                              if (ly_strequal((yyvsp[-1].nodes).refine->dflt[i], s, 0)) {
+                                          for (i = 0; i < (yyvsp[(1) - (2)].nodes).refine->dflt_size; ++i) {
+                                              if (ly_strequal((yyvsp[(1) - (2)].nodes).refine->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);
                                                   YYABORT;
                                               }
                                           }
-                                          YANG_ADDELEM((yyvsp[-1].nodes).refine->dflt, (yyvsp[-1].nodes).refine->dflt_size);
+                                          YANG_ADDELEM((yyvsp[(1) - (2)].nodes).refine->dflt, (yyvsp[(1) - (2)].nodes).refine->dflt_size);
                                           *((const char **)actual) = lydict_insert_zc(trg->ctx, s);
-                                          actual = (yyvsp[-1].nodes).refine;
+                                          actual = (yyvsp[(1) - (2)].nodes).refine;
                                           s = NULL;
-                                          (yyval.nodes) = (yyvsp[-1].nodes);
+                                          (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                         }
-
     break;
 
   case 406:
 
-    { 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 ((yyvsp[-1].nodes).refine->flags & LYS_CONFIG_MASK) {
+    { if ((yyvsp[(1) - (2)].nodes).refine->target_type) {
+                                           if ((yyvsp[(1) - (2)].nodes).refine->target_type & (LYS_LEAF | LYS_CHOICE | LYS_LIST | LYS_CONTAINER | LYS_LEAFLIST)) {
+                                             (yyvsp[(1) - (2)].nodes).refine->target_type &= (LYS_LEAF | LYS_CHOICE | LYS_LIST | LYS_CONTAINER | LYS_LEAFLIST);
+                                             if ((yyvsp[(1) - (2)].nodes).refine->flags & LYS_CONFIG_MASK) {
                                                LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "config", "refine");
                                                YYABORT;
                                              }
-                                             (yyvsp[-1].nodes).refine->flags |= (yyvsp[0].i);
+                                             (yyvsp[(1) - (2)].nodes).refine->flags |= (yyvsp[(2) - (2)].i);
                                            } 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);
+                                           (yyvsp[(1) - (2)].nodes).refine->target_type = LYS_LEAF | LYS_CHOICE | LYS_LIST | LYS_CONTAINER | LYS_LEAFLIST;
+                                           (yyvsp[(1) - (2)].nodes).refine->flags |= (yyvsp[(2) - (2)].i);
                                          }
-                                         (yyval.nodes) = (yyvsp[-1].nodes);
+                                         (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                        }
-
     break;
 
   case 407:
 
-    { 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 ((yyvsp[-1].nodes).refine->flags & LYS_MAND_MASK) {
+    { if ((yyvsp[(1) - (2)].nodes).refine->target_type) {
+                                              if ((yyvsp[(1) - (2)].nodes).refine->target_type & (LYS_LEAF | LYS_CHOICE | LYS_ANYXML)) {
+                                                (yyvsp[(1) - (2)].nodes).refine->target_type &= (LYS_LEAF | LYS_CHOICE | LYS_ANYXML);
+                                                if ((yyvsp[(1) - (2)].nodes).refine->flags & LYS_MAND_MASK) {
                                                   LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "mandatory", "refine");
                                                   YYABORT;
                                                 }
-                                                (yyvsp[-1].nodes).refine->flags |= (yyvsp[0].i);
+                                                (yyvsp[(1) - (2)].nodes).refine->flags |= (yyvsp[(2) - (2)].i);
                                               } 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);
+                                              (yyvsp[(1) - (2)].nodes).refine->target_type = LYS_LEAF | LYS_CHOICE | LYS_ANYXML;
+                                              (yyvsp[(1) - (2)].nodes).refine->flags |= (yyvsp[(2) - (2)].i);
                                             }
-                                            (yyval.nodes) = (yyvsp[-1].nodes);
+                                            (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                           }
-
     break;
 
   case 408:
 
-    { 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) {
+    { if ((yyvsp[(1) - (2)].nodes).refine->target_type) {
+                                                 if ((yyvsp[(1) - (2)].nodes).refine->target_type & (LYS_LIST | LYS_LEAFLIST)) {
+                                                   (yyvsp[(1) - (2)].nodes).refine->target_type &= (LYS_LIST | LYS_LEAFLIST);
+                                                   if ((yyvsp[(1) - (2)].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);
+                                                   (yyvsp[(1) - (2)].nodes).refine->flags |= LYS_RFN_MINSET;
+                                                   (yyvsp[(1) - (2)].nodes).refine->mod.list.min = (yyvsp[(2) - (2)].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);
+                                                 (yyvsp[(1) - (2)].nodes).refine->target_type = LYS_LIST | LYS_LEAFLIST;
+                                                 (yyvsp[(1) - (2)].nodes).refine->flags |= LYS_RFN_MINSET;
+                                                 (yyvsp[(1) - (2)].nodes).refine->mod.list.min = (yyvsp[(2) - (2)].uint);
                                                }
-                                               (yyval.nodes) = (yyvsp[-1].nodes);
+                                               (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                              }
-
     break;
 
   case 409:
 
-    { 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) {
+    { if ((yyvsp[(1) - (2)].nodes).refine->target_type) {
+                                                 if ((yyvsp[(1) - (2)].nodes).refine->target_type & (LYS_LIST | LYS_LEAFLIST)) {
+                                                   (yyvsp[(1) - (2)].nodes).refine->target_type &= (LYS_LIST | LYS_LEAFLIST);
+                                                   if ((yyvsp[(1) - (2)].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);
+                                                   (yyvsp[(1) - (2)].nodes).refine->flags |= LYS_RFN_MAXSET;
+                                                   (yyvsp[(1) - (2)].nodes).refine->mod.list.max = (yyvsp[(2) - (2)].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);
+                                                 (yyvsp[(1) - (2)].nodes).refine->target_type = LYS_LIST | LYS_LEAFLIST;
+                                                 (yyvsp[(1) - (2)].nodes).refine->flags |= LYS_RFN_MAXSET;
+                                                 (yyvsp[(1) - (2)].nodes).refine->mod.list.max = (yyvsp[(2) - (2)].uint);
                                                }
-                                               (yyval.nodes) = (yyvsp[-1].nodes);
+                                               (yyval.nodes) = (yyvsp[(1) - (2)].nodes);
                                              }
-
     break;
 
   case 410:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).refine, s, "refine", NODE)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).refine, s, "refine", NODE)) {
                                                 YYABORT;
                                               }
                                               s = NULL;
                                             }
-
     break;
 
   case 411:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).refine, s, "refine", NODE)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).refine, s, "refine", NODE)) {
                                               YYABORT;
                                             }
                                             s = NULL;
                                           }
-
     break;
 
   case 414:
@@ -6627,17 +6830,15 @@
                                          s = NULL;
                                          actual_type = AUGMENT_KEYWORD;
                                        }
-
     break;
 
   case 415:
 
     { LOGDBG(LY_LDGYANG, "finished parsing augment statement \"%s\"", data_node->name);
-                         actual_type = (yyvsp[-4].backup_token).token;
-                         actual = (yyvsp[-4].backup_token).actual;
-                         data_node = (yyvsp[-4].backup_token).actual;
+                         actual_type = (yyvsp[(3) - (7)].backup_token).token;
+                         actual = (yyvsp[(3) - (7)].backup_token).actual;
+                         data_node = (yyvsp[(3) - (7)].backup_token).actual;
                        }
-
     break;
 
   case 418:
@@ -6652,64 +6853,57 @@
                                s = NULL;
                                actual_type = AUGMENT_KEYWORD;
                              }
-
     break;
 
   case 419:
 
     { LOGDBG(LY_LDGYANG, "finished parsing augment statement \"%s\"", data_node->name);
-                    actual_type = (yyvsp[-4].backup_token).token;
-                    actual = (yyvsp[-4].backup_token).actual;
-                    data_node = (yyvsp[-4].backup_token).actual;
+                    actual_type = (yyvsp[(3) - (7)].backup_token).token;
+                    actual = (yyvsp[(3) - (7)].backup_token).actual;
+                    data_node = (yyvsp[(3) - (7)].backup_token).actual;
                   }
-
     break;
 
   case 420:
 
     { (yyval.nodes).augment = actual; }
-
     break;
 
   case 423:
 
-    { if ((yyvsp[-1].nodes).augment->flags & LYS_STATUS_MASK) {
-                                      LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).augment, "status", "augment");
+    { if ((yyvsp[(1) - (2)].nodes).augment->flags & LYS_STATUS_MASK) {
+                                      LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).augment, "status", "augment");
                                       YYABORT;
                                     }
-                                    (yyvsp[-1].nodes).augment->flags |= (yyvsp[0].i);
+                                    (yyvsp[(1) - (2)].nodes).augment->flags |= (yyvsp[(2) - (2)].i);
                                   }
-
     break;
 
   case 424:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).augment, s, "augment", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).augment, s, "augment", NODE_PRINT)) {
                                            YYABORT;
                                          }
                                          s = NULL;
                                        }
-
     break;
 
   case 425:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).augment, s, "augment", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).augment, s, "augment", NODE_PRINT)) {
                                          YYABORT;
                                        }
                                        s = NULL;
                                      }
-
     break;
 
   case 428:
 
     { if (trg->version < 2) {
-                                                    LOGVAL(LYE_INSTMT, LY_VLOG_LYS, (yyvsp[-2].nodes).augment, "notification");
+                                                    LOGVAL(LYE_INSTMT, LY_VLOG_LYS, (yyvsp[(1) - (3)].nodes).augment, "notification");
                                                     YYABORT;
                                                   }
                                                 }
-
     break;
 
   case 430:
@@ -6728,17 +6922,15 @@
                                      s = NULL;
                                      actual_type = ACTION_KEYWORD;
                                    }
-
     break;
 
   case 431:
 
     { LOGDBG(LY_LDGYANG, "finished parsing action statement \"%s\"", data_node->name);
-               actual_type = (yyvsp[-1].backup_token).token;
-               actual = (yyvsp[-1].backup_token).actual;
-               data_node = (yyvsp[-1].backup_token).actual;
+               actual_type = (yyvsp[(3) - (4)].backup_token).token;
+               actual = (yyvsp[(3) - (4)].backup_token).actual;
+               data_node = (yyvsp[(3) - (4)].backup_token).actual;
              }
-
     break;
 
   case 432:
@@ -6752,42 +6944,39 @@
                                   s = NULL;
                                   actual_type = RPC_KEYWORD;
                                 }
-
     break;
 
   case 433:
 
     { LOGDBG(LY_LDGYANG, "finished parsing rpc statement \"%s\"", data_node->name);
-            actual_type = (yyvsp[-1].backup_token).token;
-            actual = (yyvsp[-1].backup_token).actual;
-            data_node = (yyvsp[-1].backup_token).actual;
+            actual_type = (yyvsp[(3) - (4)].backup_token).token;
+            actual = (yyvsp[(3) - (4)].backup_token).actual;
+            data_node = (yyvsp[(3) - (4)].backup_token).actual;
           }
-
     break;
 
   case 435:
 
     { void *tmp;
 
-            if ((yyvsp[-1].nodes).node.ptr_rpc->iffeature_size) {
-              tmp = realloc((yyvsp[-1].nodes).node.ptr_rpc->iffeature, (yyvsp[-1].nodes).node.ptr_rpc->iffeature_size * sizeof *(yyvsp[-1].nodes).node.ptr_rpc->iffeature);
+            if ((yyvsp[(3) - (4)].nodes).node.ptr_rpc->iffeature_size) {
+              tmp = realloc((yyvsp[(3) - (4)].nodes).node.ptr_rpc->iffeature, (yyvsp[(3) - (4)].nodes).node.ptr_rpc->iffeature_size * sizeof *(yyvsp[(3) - (4)].nodes).node.ptr_rpc->iffeature);
               if (!tmp) {
                 LOGMEM;
                 YYABORT;
               }
-              (yyvsp[-1].nodes).node.ptr_rpc->iffeature = tmp;
+              (yyvsp[(3) - (4)].nodes).node.ptr_rpc->iffeature = tmp;
             }
 
-            if ((yyvsp[-1].nodes).node.ptr_rpc->tpdf_size) {
-              tmp = realloc((yyvsp[-1].nodes).node.ptr_rpc->tpdf, (yyvsp[-1].nodes).node.ptr_rpc->tpdf_size * sizeof *(yyvsp[-1].nodes).node.ptr_rpc->tpdf);
+            if ((yyvsp[(3) - (4)].nodes).node.ptr_rpc->tpdf_size) {
+              tmp = realloc((yyvsp[(3) - (4)].nodes).node.ptr_rpc->tpdf, (yyvsp[(3) - (4)].nodes).node.ptr_rpc->tpdf_size * sizeof *(yyvsp[(3) - (4)].nodes).node.ptr_rpc->tpdf);
               if (!tmp) {
                 LOGMEM;
                 YYABORT;
               }
-              (yyvsp[-1].nodes).node.ptr_rpc->tpdf = tmp;
+              (yyvsp[(3) - (4)].nodes).node.ptr_rpc->tpdf = tmp;
             }
           }
-
     break;
 
   case 436:
@@ -6795,62 +6984,56 @@
     { (yyval.nodes).node.ptr_rpc = actual;
                            (yyval.nodes).node.flag = 0;
                          }
-
     break;
 
   case 438:
 
-    { if ((yyvsp[-1].nodes).node.ptr_rpc->flags & LYS_STATUS_MASK) {
-                                  LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).node.ptr_rpc, "status", "rpc");
+    { if ((yyvsp[(1) - (2)].nodes).node.ptr_rpc->flags & LYS_STATUS_MASK) {
+                                  LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).node.ptr_rpc, "status", "rpc");
                                   YYABORT;
                                 }
-                                (yyvsp[-1].nodes).node.ptr_rpc->flags |= (yyvsp[0].i);
+                                (yyvsp[(1) - (2)].nodes).node.ptr_rpc->flags |= (yyvsp[(2) - (2)].i);
                              }
-
     break;
 
   case 439:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_rpc, s, "rpc", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).node.ptr_rpc, s, "rpc", NODE_PRINT)) {
                                        YYABORT;
                                      }
                                      s = NULL;
                                    }
-
     break;
 
   case 440:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_rpc, s, "rpc", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).node.ptr_rpc, s, "rpc", NODE_PRINT)) {
                                      YYABORT;
                                    }
                                    s = NULL;
                                  }
-
     break;
 
   case 443:
 
-    { if ((yyvsp[-2].nodes).node.flag & LYS_RPC_INPUT) {
-                                         LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-2].nodes).node.ptr_rpc, "input", "rpc");
+    { if ((yyvsp[(1) - (3)].nodes).node.flag & LYS_RPC_INPUT) {
+                                         LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (3)].nodes).node.ptr_rpc, "input", "rpc");
                                          YYABORT;
                                        }
-                                       (yyvsp[-2].nodes).node.flag |= LYS_RPC_INPUT;
-                                       (yyval.nodes) = (yyvsp[-2].nodes);
+                                       (yyvsp[(1) - (3)].nodes).node.flag |= LYS_RPC_INPUT;
+                                       (yyval.nodes) = (yyvsp[(1) - (3)].nodes);
                                      }
-
     break;
 
   case 444:
 
-    { if ((yyvsp[-2].nodes).node.flag & LYS_RPC_OUTPUT) {
-                                          LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-2].nodes).node.ptr_rpc, "output", "rpc");
+    { if ((yyvsp[(1) - (3)].nodes).node.flag & LYS_RPC_OUTPUT) {
+                                          LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (3)].nodes).node.ptr_rpc, "output", "rpc");
                                           YYABORT;
                                         }
-                                        (yyvsp[-2].nodes).node.flag |= LYS_RPC_OUTPUT;
-                                        (yyval.nodes) = (yyvsp[-2].nodes);
+                                        (yyvsp[(1) - (3)].nodes).node.flag |= LYS_RPC_OUTPUT;
+                                        (yyval.nodes) = (yyvsp[(1) - (3)].nodes);
                                       }
-
     break;
 
   case 445:
@@ -6869,7 +7052,6 @@
                                   s = NULL;
                                   actual_type = INPUT_KEYWORD;
                                 }
-
     break;
 
   case 446:
@@ -6896,11 +7078,10 @@
                   }
 
                   LOGDBG(LY_LDGYANG, "finished parsing input statement \"%s\"", data_node->name);
-                  actual_type = (yyvsp[-4].backup_token).token;
-                  actual = (yyvsp[-4].backup_token).actual;
-                  data_node = (yyvsp[-4].backup_token).actual;
+                  actual_type = (yyvsp[(1) - (5)].backup_token).token;
+                  actual = (yyvsp[(1) - (5)].backup_token).actual;
+                  data_node = (yyvsp[(1) - (5)].backup_token).actual;
                 }
-
     break;
 
   case 452:
@@ -6919,7 +7100,6 @@
                                     s = NULL;
                                     actual_type = OUTPUT_KEYWORD;
                                   }
-
     break;
 
   case 453:
@@ -6946,11 +7126,10 @@
                    }
 
                    LOGDBG(LY_LDGYANG, "finished parsing output statement \"%s\"", data_node->name);
-                   actual_type = (yyvsp[-4].backup_token).token;
-                   actual = (yyvsp[-4].backup_token).actual;
-                   data_node = (yyvsp[-4].backup_token).actual;
+                   actual_type = (yyvsp[(1) - (5)].backup_token).token;
+                   actual = (yyvsp[(1) - (5)].backup_token).actual;
+                   data_node = (yyvsp[(1) - (5)].backup_token).actual;
                  }
-
     break;
 
   case 454:
@@ -6963,88 +7142,81 @@
                                            data_node = actual;
                                            actual_type = NOTIFICATION_KEYWORD;
                                          }
-
     break;
 
   case 455:
 
     { LOGDBG(LY_LDGYANG, "finished parsing notification statement \"%s\"", data_node->name);
-                     actual_type = (yyvsp[-1].backup_token).token;
-                     actual = (yyvsp[-1].backup_token).actual;
-                     data_node = (yyvsp[-1].backup_token).actual;
+                     actual_type = (yyvsp[(3) - (4)].backup_token).token;
+                     actual = (yyvsp[(3) - (4)].backup_token).actual;
+                     data_node = (yyvsp[(3) - (4)].backup_token).actual;
                    }
-
     break;
 
   case 457:
 
     { void *tmp;
 
-            if ((yyvsp[-1].nodes).notif->must_size) {
-              tmp = realloc((yyvsp[-1].nodes).notif->must, (yyvsp[-1].nodes).notif->must_size * sizeof *(yyvsp[-1].nodes).notif->must);
+            if ((yyvsp[(3) - (4)].nodes).notif->must_size) {
+              tmp = realloc((yyvsp[(3) - (4)].nodes).notif->must, (yyvsp[(3) - (4)].nodes).notif->must_size * sizeof *(yyvsp[(3) - (4)].nodes).notif->must);
               if (!tmp) {
                 LOGMEM;
                 YYABORT;
               }
-              (yyvsp[-1].nodes).notif->must = tmp;
+              (yyvsp[(3) - (4)].nodes).notif->must = tmp;
             }
 
-           if ((yyvsp[-1].nodes).notif->iffeature_size) {
-             tmp = realloc((yyvsp[-1].nodes).notif->iffeature, (yyvsp[-1].nodes).notif->iffeature_size * sizeof *(yyvsp[-1].nodes).notif->iffeature);
+           if ((yyvsp[(3) - (4)].nodes).notif->iffeature_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).notif->iffeature, (yyvsp[(3) - (4)].nodes).notif->iffeature_size * sizeof *(yyvsp[(3) - (4)].nodes).notif->iffeature);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).notif->iffeature = tmp;
+             (yyvsp[(3) - (4)].nodes).notif->iffeature = tmp;
            }
 
-           if ((yyvsp[-1].nodes).notif->tpdf_size) {
-             tmp = realloc((yyvsp[-1].nodes).notif->tpdf, (yyvsp[-1].nodes).notif->tpdf_size * sizeof *(yyvsp[-1].nodes).notif->tpdf);
+           if ((yyvsp[(3) - (4)].nodes).notif->tpdf_size) {
+             tmp = realloc((yyvsp[(3) - (4)].nodes).notif->tpdf, (yyvsp[(3) - (4)].nodes).notif->tpdf_size * sizeof *(yyvsp[(3) - (4)].nodes).notif->tpdf);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].nodes).notif->tpdf = tmp;
+             (yyvsp[(3) - (4)].nodes).notif->tpdf = tmp;
            }
           }
-
     break;
 
   case 458:
 
     { (yyval.nodes).notif = actual; }
-
     break;
 
   case 461:
 
-    { if ((yyvsp[-1].nodes).notif->flags & LYS_STATUS_MASK) {
-                                           LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[-1].nodes).notif, "status", "notification");
+    { if ((yyvsp[(1) - (2)].nodes).notif->flags & LYS_STATUS_MASK) {
+                                           LOGVAL(LYE_TOOMANY, LY_VLOG_LYS, (yyvsp[(1) - (2)].nodes).notif, "status", "notification");
                                            YYABORT;
                                          }
-                                         (yyvsp[-1].nodes).notif->flags |= (yyvsp[0].i);
+                                         (yyvsp[(1) - (2)].nodes).notif->flags |= (yyvsp[(2) - (2)].i);
                                        }
-
     break;
 
   case 462:
 
-    { if (yang_read_description(trg, (yyvsp[-1].nodes).notif, s, "notification", NODE_PRINT)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].nodes).notif, s, "notification", NODE_PRINT)) {
                                                 YYABORT;
                                               }
                                               s = NULL;
                                             }
-
     break;
 
   case 463:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].nodes).notif, s, "notification", NODE_PRINT)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].nodes).notif, s, "notification", NODE_PRINT)) {
                                               YYABORT;
                                             }
                                             s = NULL;
                                           }
-
     break;
 
   case 467:
@@ -7060,56 +7232,51 @@
                                    s = NULL;
                                    actual_type = DEVIATION_KEYWORD;
                                  }
-
     break;
 
   case 468:
 
     { void *tmp;
 
-                      if ((yyvsp[-1].dev)->deviate_size) {
-                        tmp = realloc((yyvsp[-1].dev)->deviate, (yyvsp[-1].dev)->deviate_size * sizeof *(yyvsp[-1].dev)->deviate);
+                      if ((yyvsp[(6) - (7)].dev)->deviate_size) {
+                        tmp = realloc((yyvsp[(6) - (7)].dev)->deviate, (yyvsp[(6) - (7)].dev)->deviate_size * sizeof *(yyvsp[(6) - (7)].dev)->deviate);
                         if (!tmp) {
                           LOGINT;
                           YYABORT;
                         }
-                        (yyvsp[-1].dev)->deviate = tmp;
+                        (yyvsp[(6) - (7)].dev)->deviate = tmp;
                       } else {
                         LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "deviate", "deviation");
                         YYABORT;
                       }
-                      actual_type = (yyvsp[-4].backup_token).token;
-                      actual = (yyvsp[-4].backup_token).actual;
+                      actual_type = (yyvsp[(3) - (7)].backup_token).token;
+                      actual = (yyvsp[(3) - (7)].backup_token).actual;
                     }
-
     break;
 
   case 469:
 
     { (yyval.dev) = actual; }
-
     break;
 
   case 470:
 
-    { if (yang_read_description(trg, (yyvsp[-1].dev), s, "deviation", NODE)) {
+    { if (yang_read_description(trg, (yyvsp[(1) - (2)].dev), s, "deviation", NODE)) {
                                              YYABORT;
                                            }
                                            s = NULL;
-                                           (yyval.dev) = (yyvsp[-1].dev);
+                                           (yyval.dev) = (yyvsp[(1) - (2)].dev);
                                          }
-
     break;
 
   case 471:
 
-    { if (yang_read_reference(trg, (yyvsp[-1].dev), s, "deviation", NODE)) {
+    { if (yang_read_reference(trg, (yyvsp[(1) - (2)].dev), s, "deviation", NODE)) {
                                            YYABORT;
                                          }
                                          s = NULL;
-                                         (yyval.dev) = (yyvsp[-1].dev);
+                                         (yyval.dev) = (yyvsp[(1) - (2)].dev);
                                        }
-
     break;
 
   case 477:
@@ -7121,15 +7288,13 @@
                                                }
                                                actual_type = NOT_SUPPORTED_KEYWORD;
                                              }
-
     break;
 
   case 478:
 
-    { actual_type = (yyvsp[-2].backup_token).token;
-                              actual = (yyvsp[-2].backup_token).actual;
+    { actual_type = (yyvsp[(1) - (3)].backup_token).token;
+                              actual = (yyvsp[(1) - (3)].backup_token).actual;
                             }
-
     break;
 
   case 484:
@@ -7141,55 +7306,51 @@
                            }
                            actual_type = ADD_KEYWORD;
                          }
-
     break;
 
   case 485:
 
-    { actual_type = (yyvsp[-2].backup_token).token;
-                    actual = (yyvsp[-2].backup_token).actual;
+    { actual_type = (yyvsp[(1) - (3)].backup_token).token;
+                    actual = (yyvsp[(1) - (3)].backup_token).actual;
                   }
-
     break;
 
   case 487:
 
     { void *tmp;
 
-           if ((yyvsp[-1].deviate)->must_size) {
-             tmp = realloc((yyvsp[-1].deviate)->must, (yyvsp[-1].deviate)->must_size * sizeof *(yyvsp[-1].deviate)->must);
+           if ((yyvsp[(3) - (4)].deviate)->must_size) {
+             tmp = realloc((yyvsp[(3) - (4)].deviate)->must, (yyvsp[(3) - (4)].deviate)->must_size * sizeof *(yyvsp[(3) - (4)].deviate)->must);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].deviate)->must = tmp;
+             (yyvsp[(3) - (4)].deviate)->must = tmp;
            }
 
-           if ((yyvsp[-1].deviate)->unique_size) {
-             tmp = realloc((yyvsp[-1].deviate)->unique, (yyvsp[-1].deviate)->unique_size * sizeof *(yyvsp[-1].deviate)->unique);
+           if ((yyvsp[(3) - (4)].deviate)->unique_size) {
+             tmp = realloc((yyvsp[(3) - (4)].deviate)->unique, (yyvsp[(3) - (4)].deviate)->unique_size * sizeof *(yyvsp[(3) - (4)].deviate)->unique);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].deviate)->unique = tmp;
+             (yyvsp[(3) - (4)].deviate)->unique = tmp;
            }
 
-           if ((yyvsp[-1].deviate)->dflt_size) {
-             tmp = realloc((yyvsp[-1].deviate)->dflt, (yyvsp[-1].deviate)->dflt_size * sizeof *(yyvsp[-1].deviate)->dflt);
+           if ((yyvsp[(3) - (4)].deviate)->dflt_size) {
+             tmp = realloc((yyvsp[(3) - (4)].deviate)->dflt, (yyvsp[(3) - (4)].deviate)->dflt_size * sizeof *(yyvsp[(3) - (4)].deviate)->dflt);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].deviate)->dflt = tmp;
+             (yyvsp[(3) - (4)].deviate)->dflt = tmp;
            }
          }
-
     break;
 
   case 488:
 
     { (yyval.deviate) = actual; }
-
     break;
 
   case 489:
@@ -7198,81 +7359,74 @@
                                          YYABORT;
                                        }
                                        s = NULL;
-                                       (yyval.deviate) = (yyvsp[-1].deviate);
+                                       (yyval.deviate) = (yyvsp[(1) - (2)].deviate);
                                      }
-
     break;
 
   case 491:
 
-    { YANG_ADDELEM((yyvsp[-1].deviate)->unique, (yyvsp[-1].deviate)->unique_size);
+    { YANG_ADDELEM((yyvsp[(1) - (2)].deviate)->unique, (yyvsp[(1) - (2)].deviate)->unique_size);
                                         ((struct lys_unique *)actual)->expr = (const char **)s;
                                         s = NULL;
-                                        actual = (yyvsp[-1].deviate);
-                                        (yyval.deviate)= (yyvsp[-1].deviate);
+                                        actual = (yyvsp[(1) - (2)].deviate);
+                                        (yyval.deviate)= (yyvsp[(1) - (2)].deviate);
                                       }
-
     break;
 
   case 492:
 
-    { YANG_ADDELEM((yyvsp[-1].deviate)->dflt, (yyvsp[-1].deviate)->dflt_size);
+    { YANG_ADDELEM((yyvsp[(1) - (2)].deviate)->dflt, (yyvsp[(1) - (2)].deviate)->dflt_size);
                                          *((const char **)actual) = lydict_insert_zc(trg->ctx, s);
                                          s = NULL;
-                                         actual = (yyvsp[-1].deviate);
-                                         (yyval.deviate) = (yyvsp[-1].deviate);
+                                         actual = (yyvsp[(1) - (2)].deviate);
+                                         (yyval.deviate) = (yyvsp[(1) - (2)].deviate);
                                        }
-
     break;
 
   case 493:
 
-    { if ((yyvsp[-1].deviate)->flags & LYS_CONFIG_MASK) {
+    { if ((yyvsp[(1) - (2)].deviate)->flags & LYS_CONFIG_MASK) {
                                           LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "config", "deviate");
                                           YYABORT;
                                         }
-                                        (yyvsp[-1].deviate)->flags = (yyvsp[0].i);
-                                        (yyval.deviate) = (yyvsp[-1].deviate);
+                                        (yyvsp[(1) - (2)].deviate)->flags = (yyvsp[(2) - (2)].i);
+                                        (yyval.deviate) = (yyvsp[(1) - (2)].deviate);
                                       }
-
     break;
 
   case 494:
 
-    { if ((yyvsp[-1].deviate)->flags & LYS_MAND_MASK) {
+    { if ((yyvsp[(1) - (2)].deviate)->flags & LYS_MAND_MASK) {
                                              LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "mandatory", "deviate");
                                              YYABORT;
                                            }
-                                           (yyvsp[-1].deviate)->flags = (yyvsp[0].i);
-                                           (yyval.deviate) = (yyvsp[-1].deviate);
+                                           (yyvsp[(1) - (2)].deviate)->flags = (yyvsp[(2) - (2)].i);
+                                           (yyval.deviate) = (yyvsp[(1) - (2)].deviate);
                                          }
-
     break;
 
   case 495:
 
-    { if ((yyvsp[-1].deviate)->min_set) {
+    { if ((yyvsp[(1) - (2)].deviate)->min_set) {
                                                 LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "min-elements", "deviation");
                                                 YYABORT;
                                               }
-                                              (yyvsp[-1].deviate)->min = (yyvsp[0].uint);
-                                              (yyvsp[-1].deviate)->min_set = 1;
-                                              (yyval.deviate) =  (yyvsp[-1].deviate);
+                                              (yyvsp[(1) - (2)].deviate)->min = (yyvsp[(2) - (2)].uint);
+                                              (yyvsp[(1) - (2)].deviate)->min_set = 1;
+                                              (yyval.deviate) =  (yyvsp[(1) - (2)].deviate);
                                             }
-
     break;
 
   case 496:
 
-    { if ((yyvsp[-1].deviate)->max_set) {
+    { if ((yyvsp[(1) - (2)].deviate)->max_set) {
                                                 LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "max-elements", "deviation");
                                                 YYABORT;
                                               }
-                                              (yyvsp[-1].deviate)->max = (yyvsp[0].uint);
-                                              (yyvsp[-1].deviate)->max_set = 1;
-                                              (yyval.deviate) =  (yyvsp[-1].deviate);
+                                              (yyvsp[(1) - (2)].deviate)->max = (yyvsp[(2) - (2)].uint);
+                                              (yyvsp[(1) - (2)].deviate)->max_set = 1;
+                                              (yyval.deviate) =  (yyvsp[(1) - (2)].deviate);
                                             }
-
     break;
 
   case 497:
@@ -7284,55 +7438,51 @@
                                  }
                                  actual_type = DELETE_KEYWORD;
                                }
-
     break;
 
   case 498:
 
-    { actual_type = (yyvsp[-2].backup_token).token;
-                       actual = (yyvsp[-2].backup_token).actual;
+    { actual_type = (yyvsp[(1) - (3)].backup_token).token;
+                       actual = (yyvsp[(1) - (3)].backup_token).actual;
                      }
-
     break;
 
   case 500:
 
     { void *tmp;
 
-            if ((yyvsp[-1].deviate)->must_size) {
-              tmp = realloc((yyvsp[-1].deviate)->must, (yyvsp[-1].deviate)->must_size * sizeof *(yyvsp[-1].deviate)->must);
+            if ((yyvsp[(3) - (4)].deviate)->must_size) {
+              tmp = realloc((yyvsp[(3) - (4)].deviate)->must, (yyvsp[(3) - (4)].deviate)->must_size * sizeof *(yyvsp[(3) - (4)].deviate)->must);
               if (!tmp) {
                 LOGMEM;
                 YYABORT;
               }
-              (yyvsp[-1].deviate)->must = tmp;
+              (yyvsp[(3) - (4)].deviate)->must = tmp;
             }
 
-            if ((yyvsp[-1].deviate)->unique_size) {
-              tmp = realloc((yyvsp[-1].deviate)->unique, (yyvsp[-1].deviate)->unique_size * sizeof *(yyvsp[-1].deviate)->unique);
+            if ((yyvsp[(3) - (4)].deviate)->unique_size) {
+              tmp = realloc((yyvsp[(3) - (4)].deviate)->unique, (yyvsp[(3) - (4)].deviate)->unique_size * sizeof *(yyvsp[(3) - (4)].deviate)->unique);
               if (!tmp) {
                 LOGMEM;
                 YYABORT;
               }
-              (yyvsp[-1].deviate)->unique = tmp;
+              (yyvsp[(3) - (4)].deviate)->unique = tmp;
             }
 
-            if ((yyvsp[-1].deviate)->dflt_size) {
-              tmp = realloc((yyvsp[-1].deviate)->dflt, (yyvsp[-1].deviate)->dflt_size * sizeof *(yyvsp[-1].deviate)->dflt);
+            if ((yyvsp[(3) - (4)].deviate)->dflt_size) {
+              tmp = realloc((yyvsp[(3) - (4)].deviate)->dflt, (yyvsp[(3) - (4)].deviate)->dflt_size * sizeof *(yyvsp[(3) - (4)].deviate)->dflt);
               if (!tmp) {
                 LOGMEM;
                 YYABORT;
               }
-              (yyvsp[-1].deviate)->dflt = tmp;
+              (yyvsp[(3) - (4)].deviate)->dflt = tmp;
             }
           }
-
     break;
 
   case 501:
 
     { (yyval.deviate) = actual; }
-
     break;
 
   case 502:
@@ -7341,31 +7491,28 @@
                                             YYABORT;
                                           }
                                           s = NULL;
-                                          (yyval.deviate) = (yyvsp[-1].deviate);
+                                          (yyval.deviate) = (yyvsp[(1) - (2)].deviate);
                                         }
-
     break;
 
   case 504:
 
-    { YANG_ADDELEM((yyvsp[-1].deviate)->unique, (yyvsp[-1].deviate)->unique_size);
+    { YANG_ADDELEM((yyvsp[(1) - (2)].deviate)->unique, (yyvsp[(1) - (2)].deviate)->unique_size);
                                            ((struct lys_unique *)actual)->expr = (const char **)s;
                                            s = NULL;
-                                           actual = (yyvsp[-1].deviate);
-                                           (yyval.deviate) = (yyvsp[-1].deviate);
+                                           actual = (yyvsp[(1) - (2)].deviate);
+                                           (yyval.deviate) = (yyvsp[(1) - (2)].deviate);
                                          }
-
     break;
 
   case 505:
 
-    { YANG_ADDELEM((yyvsp[-1].deviate)->dflt, (yyvsp[-1].deviate)->dflt_size);
+    { YANG_ADDELEM((yyvsp[(1) - (2)].deviate)->dflt, (yyvsp[(1) - (2)].deviate)->dflt_size);
                                             *((const char **)actual) = lydict_insert_zc(trg->ctx, s);
                                             s = NULL;
-                                            actual = (yyvsp[-1].deviate);
-                                            (yyval.deviate) = (yyvsp[-1].deviate);
+                                            actual = (yyvsp[(1) - (2)].deviate);
+                                            (yyval.deviate) = (yyvsp[(1) - (2)].deviate);
                                           }
-
     break;
 
   case 506:
@@ -7377,37 +7524,33 @@
                                    }
                                    actual_type = REPLACE_KEYWORD;
                                  }
-
     break;
 
   case 507:
 
-    { actual_type = (yyvsp[-2].backup_token).token;
-                        actual = (yyvsp[-2].backup_token).actual;
+    { actual_type = (yyvsp[(1) - (3)].backup_token).token;
+                        actual = (yyvsp[(1) - (3)].backup_token).actual;
                       }
-
     break;
 
   case 509:
 
     { void *tmp;
 
-           if ((yyvsp[-1].deviate)->dflt_size) {
-             tmp = realloc((yyvsp[-1].deviate)->dflt, (yyvsp[-1].deviate)->dflt_size * sizeof *(yyvsp[-1].deviate)->dflt);
+           if ((yyvsp[(3) - (4)].deviate)->dflt_size) {
+             tmp = realloc((yyvsp[(3) - (4)].deviate)->dflt, (yyvsp[(3) - (4)].deviate)->dflt_size * sizeof *(yyvsp[(3) - (4)].deviate)->dflt);
              if (!tmp) {
                LOGMEM;
                YYABORT;
              }
-             (yyvsp[-1].deviate)->dflt = tmp;
+             (yyvsp[(3) - (4)].deviate)->dflt = tmp;
            }
          }
-
     break;
 
   case 510:
 
     { (yyval.deviate) = actual; }
-
     break;
 
   case 512:
@@ -7416,70 +7559,64 @@
                                              YYABORT;
                                            }
                                            s = NULL;
-                                           (yyval.deviate) = (yyvsp[-1].deviate);
+                                           (yyval.deviate) = (yyvsp[(1) - (2)].deviate);
                                          }
-
     break;
 
   case 513:
 
-    { YANG_ADDELEM((yyvsp[-1].deviate)->dflt, (yyvsp[-1].deviate)->dflt_size);
+    { YANG_ADDELEM((yyvsp[(1) - (2)].deviate)->dflt, (yyvsp[(1) - (2)].deviate)->dflt_size);
                                              *((const char **)actual) = lydict_insert_zc(trg->ctx, s);
                                              s = NULL;
-                                             actual = (yyvsp[-1].deviate);
-                                             (yyval.deviate) = (yyvsp[-1].deviate);
+                                             actual = (yyvsp[(1) - (2)].deviate);
+                                             (yyval.deviate) = (yyvsp[(1) - (2)].deviate);
                                            }
-
     break;
 
   case 514:
 
-    { if ((yyvsp[-1].deviate)->flags & LYS_CONFIG_MASK) {
+    { if ((yyvsp[(1) - (2)].deviate)->flags & LYS_CONFIG_MASK) {
                                               LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "config", "deviate");
                                               YYABORT;
                                             }
-                                            (yyvsp[-1].deviate)->flags = (yyvsp[0].i);
-                                            (yyval.deviate) = (yyvsp[-1].deviate);
+                                            (yyvsp[(1) - (2)].deviate)->flags = (yyvsp[(2) - (2)].i);
+                                            (yyval.deviate) = (yyvsp[(1) - (2)].deviate);
                                           }
-
     break;
 
   case 515:
 
-    { if ((yyvsp[-1].deviate)->flags & LYS_MAND_MASK) {
+    { if ((yyvsp[(1) - (2)].deviate)->flags & LYS_MAND_MASK) {
                                                  LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "mandatory", "deviate");
                                                  YYABORT;
                                                }
-                                               (yyvsp[-1].deviate)->flags = (yyvsp[0].i);
-                                               (yyval.deviate) = (yyvsp[-1].deviate);
+                                               (yyvsp[(1) - (2)].deviate)->flags = (yyvsp[(2) - (2)].i);
+                                               (yyval.deviate) = (yyvsp[(1) - (2)].deviate);
                                              }
-
     break;
 
   case 516:
 
-    { if ((yyvsp[-1].deviate)->min_set) {
+    { if ((yyvsp[(1) - (2)].deviate)->min_set) {
                                                     LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "min-elements", "deviation");
                                                     YYABORT;
                                                   }
-                                                  (yyvsp[-1].deviate)->min = (yyvsp[0].uint);
-                                                  (yyvsp[-1].deviate)->min_set = 1;
-                                                  (yyval.deviate) =  (yyvsp[-1].deviate);
+                                                  (yyvsp[(1) - (2)].deviate)->min = (yyvsp[(2) - (2)].uint);
+                                                  (yyvsp[(1) - (2)].deviate)->min_set = 1;
+                                                  (yyval.deviate) =  (yyvsp[(1) - (2)].deviate);
                                                 }
-
     break;
 
   case 517:
 
-    { if ((yyvsp[-1].deviate)->max_set) {
+    { if ((yyvsp[(1) - (2)].deviate)->max_set) {
                                                     LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "max-elements", "deviation");
                                                     YYABORT;
                                                   }
-                                                  (yyvsp[-1].deviate)->max = (yyvsp[0].uint);
-                                                  (yyvsp[-1].deviate)->max_set = 1;
-                                                  (yyval.deviate) =  (yyvsp[-1].deviate);
+                                                  (yyvsp[(1) - (2)].deviate)->max = (yyvsp[(2) - (2)].uint);
+                                                  (yyvsp[(1) - (2)].deviate)->max_set = 1;
+                                                  (yyval.deviate) =  (yyvsp[(1) - (2)].deviate);
                                                 }
-
     break;
 
   case 518:
@@ -7492,15 +7629,13 @@
                         s = NULL;
                         actual_type = WHEN_KEYWORD;
                       }
-
     break;
 
   case 519:
 
-    { actual_type = (yyvsp[-1].backup_token).token;
-             actual = (yyvsp[-1].backup_token).actual;
+    { actual_type = (yyvsp[(3) - (4)].backup_token).token;
+             actual = (yyvsp[(3) - (4)].backup_token).actual;
            }
-
     break;
 
   case 523:
@@ -7510,7 +7645,6 @@
                                       }
                                       s = NULL;
                                     }
-
     break;
 
   case 524:
@@ -7520,34 +7654,29 @@
                                     }
                                     s = NULL;
                                   }
-
     break;
 
   case 525:
 
-    { (yyval.i) = (yyvsp[0].i);
+    { (yyval.i) = (yyvsp[(1) - (1)].i);
                              backup_type = actual_type;
                              actual_type = CONFIG_KEYWORD;
                            }
-
     break;
 
   case 526:
 
-    { (yyval.i) = (yyvsp[-1].i); }
-
+    { (yyval.i) = (yyvsp[(3) - (4)].i); }
     break;
 
   case 527:
 
     { (yyval.i) = LYS_CONFIG_W | LYS_CONFIG_SET; }
-
     break;
 
   case 528:
 
     { (yyval.i) = LYS_CONFIG_R | LYS_CONFIG_SET; }
-
     break;
 
   case 529:
@@ -7564,34 +7693,29 @@
                 free(s);
                 s = NULL;
               }
-
     break;
 
   case 530:
 
-    { (yyval.i) = (yyvsp[0].i);
+    { (yyval.i) = (yyvsp[(1) - (1)].i);
                                    backup_type = actual_type;
                                    actual_type = MANDATORY_KEYWORD;
                                  }
-
     break;
 
   case 531:
 
-    { (yyval.i) = (yyvsp[-1].i); }
-
+    { (yyval.i) = (yyvsp[(3) - (4)].i); }
     break;
 
   case 532:
 
     { (yyval.i) = LYS_MAND_TRUE; }
-
     break;
 
   case 533:
 
     { (yyval.i) = LYS_MAND_FALSE; }
-
     break;
 
   case 534:
@@ -7608,7 +7732,6 @@
                 free(s);
                 s = NULL;
               }
-
     break;
 
   case 535:
@@ -7616,28 +7739,24 @@
     { backup_type = actual_type;
                        actual_type = PRESENCE_KEYWORD;
                      }
-
     break;
 
   case 537:
 
-    { (yyval.uint) = (yyvsp[0].uint);
+    { (yyval.uint) = (yyvsp[(1) - (1)].uint);
                                    backup_type = actual_type;
                                    actual_type = MIN_ELEMENTS_KEYWORD;
                                  }
-
     break;
 
   case 538:
 
-    { (yyval.uint) = (yyvsp[-1].uint); }
-
+    { (yyval.uint) = (yyvsp[(3) - (4)].uint); }
     break;
 
   case 539:
 
-    { (yyval.uint) = (yyvsp[-1].uint); }
-
+    { (yyval.uint) = (yyvsp[(1) - (2)].uint); }
     break;
 
   case 540:
@@ -7661,34 +7780,29 @@
                 free(s);
                 s = NULL;
               }
-
     break;
 
   case 541:
 
-    { (yyval.uint) = (yyvsp[0].uint);
+    { (yyval.uint) = (yyvsp[(1) - (1)].uint);
                                    backup_type = actual_type;
                                    actual_type = MAX_ELEMENTS_KEYWORD;
                                  }
-
     break;
 
   case 542:
 
-    { (yyval.uint) = (yyvsp[-1].uint); }
-
+    { (yyval.uint) = (yyvsp[(3) - (4)].uint); }
     break;
 
   case 543:
 
     { (yyval.uint) = 0; }
-
     break;
 
   case 544:
 
-    { (yyval.uint) = (yyvsp[-1].uint); }
-
+    { (yyval.uint) = (yyvsp[(1) - (2)].uint); }
     break;
 
   case 545:
@@ -7712,34 +7826,29 @@
                 free(s);
                 s = NULL;
               }
-
     break;
 
   case 546:
 
-    { (yyval.i) = (yyvsp[0].i);
+    { (yyval.i) = (yyvsp[(1) - (1)].i);
                                      backup_type = actual_type;
                                      actual_type = ORDERED_BY_KEYWORD;
                                    }
-
     break;
 
   case 547:
 
-    { (yyval.i) = (yyvsp[-1].i); }
-
+    { (yyval.i) = (yyvsp[(3) - (4)].i); }
     break;
 
   case 548:
 
     { (yyval.i) = LYS_USERORDERED; }
-
     break;
 
   case 549:
 
     { (yyval.i) = LYS_SYSTEMORDERED; }
-
     break;
 
   case 550:
@@ -7755,7 +7864,6 @@
                 free(s);
                 s=NULL;
               }
-
     break;
 
   case 551:
@@ -7828,15 +7936,13 @@
                        s = NULL;
                        actual_type = MUST_KEYWORD;
                      }
-
     break;
 
   case 552:
 
-    { actual_type = (yyvsp[-1].backup_token).token;
-             actual = (yyvsp[-1].backup_token).actual;
+    { actual_type = (yyvsp[(3) - (4)].backup_token).token;
+             actual = (yyvsp[(3) - (4)].backup_token).actual;
            }
-
     break;
 
   case 555:
@@ -7844,7 +7950,6 @@
     { backup_type = actual_type;
                              actual_type = UNIQUE_KEYWORD;
                            }
-
     break;
 
   case 559:
@@ -7852,7 +7957,6 @@
     { backup_type = actual_type;
                        actual_type = KEY_KEYWORD;
                      }
-
     break;
 
   case 561:
@@ -7863,7 +7967,6 @@
                                  YYABORT;
                                }
                              }
-
     break;
 
   case 564:
@@ -7876,7 +7979,6 @@
                         actual_type = RANGE_KEYWORD;
                         s = NULL;
                       }
-
     break;
 
   case 565:
@@ -7899,7 +8001,6 @@
                                                 memcpy(s + 1, yyget_text(scanner), yyget_leng(scanner) + 1);
                                               }
                                             }
-
     break;
 
   case 569:
@@ -7919,13 +8020,11 @@
                                               }
                                             }
                                           }
-
     break;
 
   case 571:
 
     { tmp_s = yyget_text(scanner); }
-
     break;
 
   case 572:
@@ -7937,13 +8036,11 @@
                                                                 }
                                                                 s[strlen(s) - 1] = '\0';
                                                              }
-
     break;
 
   case 573:
 
     { tmp_s = yyget_text(scanner); }
-
     break;
 
   case 574:
@@ -7955,7 +8052,6 @@
                                                       }
                                                       s[strlen(s) - 1] = '\0';
                                                     }
-
     break;
 
   case 598:
@@ -7970,25 +8066,21 @@
                                                 }
                                                 (yyval.uint) = (uint32_t) val;
                                              }
-
     break;
 
   case 599:
 
     { (yyval.uint) = 0; }
-
     break;
 
   case 600:
 
-    { (yyval.uint) = (yyvsp[0].uint); }
-
+    { (yyval.uint) = (yyvsp[(1) - (1)].uint); }
     break;
 
   case 601:
 
     { (yyval.i) = 0; }
-
     break;
 
   case 602:
@@ -8003,7 +8095,6 @@
                              }
                              (yyval.i) = (int32_t) val;
                            }
-
     break;
 
   case 608:
@@ -8013,7 +8104,6 @@
                     YYABORT;
                 }
               }
-
     break;
 
   case 613:
@@ -8041,19 +8131,16 @@
                  }
                }
              }
-
     break;
 
   case 614:
 
-    { s = (yyvsp[-1].str); }
-
+    { s = (yyvsp[(1) - (2)].str); }
     break;
 
   case 615:
 
-    { s = (yyvsp[-3].str); }
-
+    { s = (yyvsp[(1) - (4)].str); }
     break;
 
   case 616:
@@ -8063,7 +8150,6 @@
                  (yyval.str) = s;
                  s = NULL;
                }
-
     break;
 
   case 617:
@@ -8071,7 +8157,6 @@
     { actual_type = backup_type;
                            backup_type = NODE;
                          }
-
     break;
 
   case 618:
@@ -8079,35 +8164,31 @@
     { (yyval.str) = s;
                           s = NULL;
                         }
-
     break;
 
   case 622:
 
-    { actual_type = (yyvsp[-1].backup_token).token;
-                     actual = (yyvsp[-1].backup_token).actual;
+    { actual_type = (yyvsp[(2) - (3)].backup_token).token;
+                     actual = (yyvsp[(2) - (3)].backup_token).actual;
                    }
-
     break;
 
   case 623:
 
     { (yyval.backup_token).token = actual_type;
                                                 (yyval.backup_token).actual = actual;
-                                                if (!(actual = yang_read_ext(trg, (actual) ? actual : trg, (yyvsp[-1].str), s,
+                                                if (!(actual = yang_read_ext(trg, (actual) ? actual : trg, (yyvsp[(1) - (2)].str), s,
                                                                              actual_type, backup_type, is_ext_instance))) {
                                                   YYABORT;
                                                 }
                                                 s = NULL;
                                                 actual_type = EXTENSION_INSTANCE;
                                               }
-
     break;
 
   case 624:
 
     { (yyval.str) = s; s = NULL; }
-
     break;
 
   case 639:
@@ -8124,7 +8205,7 @@
           }
           ((struct lys_ext_instance *)actual)->parent = substmt;
         }
-        length = strlen((yyvsp[-2].str));
+        length = strlen((yyvsp[(1) - (3)].str));
         old_length = (substmt->ext_substmt) ? strlen(substmt->ext_substmt) + 2 : 2;
         tmp_value = realloc(substmt->ext_substmt, old_length + length + 1);
         if (!tmp_value) {
@@ -8133,12 +8214,11 @@
         }
         substmt->ext_substmt = tmp_value;
         tmp_value += old_length - 2;
-        memcpy(tmp_value, (yyvsp[-2].str), length);
+        memcpy(tmp_value, (yyvsp[(1) - (3)].str), length);
         tmp_value[length] = ' ';
         tmp_value[length + 1] = '\0';
         tmp_value[length + 2] = '\0';
       }
-
     break;
 
   case 640:
@@ -8156,7 +8236,7 @@
           }
           ((struct lys_ext_instance *)actual)->parent = substmt;
         }
-        length = strlen((yyvsp[-2].str));
+        length = strlen((yyvsp[(1) - (3)].str));
         if (!substmt->ext_modules) {
           array = malloc(2 * sizeof *substmt->ext_modules);
         } else {
@@ -8175,23 +8255,20 @@
           YYABORT;
         }
         array[i] = tmp_value;
-        memcpy(tmp_value, (yyvsp[-2].str), length);
+        memcpy(tmp_value, (yyvsp[(1) - (3)].str), length);
         tmp_value[length] = '\0';
         tmp_value[length + 1] = '\0';
       }
-
     break;
 
   case 643:
 
     { (yyval.str) = yyget_text(scanner); }
-
     break;
 
   case 644:
 
     { (yyval.str) = yyget_text(scanner); }
-
     break;
 
   case 656:
@@ -8202,7 +8279,6 @@
                     YYABORT;
                   }
                 }
-
     break;
 
   case 749:
@@ -8213,7 +8289,6 @@
                             YYABORT;
                           }
                         }
-
     break;
 
   case 750:
@@ -8224,7 +8299,6 @@
                                       YYABORT;
                                     }
                                   }
-
     break;
 
   case 751:
@@ -8248,7 +8322,6 @@
                              (yyval.v) = actual = *type;
                              is_ext_instance = 0;
                             }
-
     break;
 
   case 752:
@@ -8266,11 +8339,10 @@
                                   LOGMEM;
                                   YYABORT;
                                 }
-                                
+
                                 (yyval.v) = actual = *tpdf;
                                 is_ext_instance = 0;
                               }
-
     break;
 
   case 753:
@@ -8290,7 +8362,6 @@
                                  }
                                  (yyval.v) = actual = *iffeature;
                                }
-
     break;
 
   case 754:
@@ -8321,7 +8392,6 @@
                                     (yyval.v) = actual = *restr;
                                     s = NULL;
                                   }
-
     break;
 
   case 755:
@@ -8332,7 +8402,6 @@
                              }
                              (yyval.v) = actual;
                            }
-
     break;
 
   case 756:
@@ -8354,7 +8423,6 @@
                                  (yyval.revisions).revision = rev;
                                  (yyval.revisions).index = i;
                                }
-
     break;
 
   case 757:
@@ -8398,13 +8466,11 @@
                                 s = NULL;
                                 is_ext_instance = 0;
                               }
-
     break;
 
   case 758:
 
     { LOGERR(LY_SUCCESS, "Extension's substatement \"%s\" not supported.", yyget_text(scanner)); }
-
     break;
 
   case 790:
@@ -8417,7 +8483,6 @@
                                 }
                                 (yyval.i) = 0;
                               }
-
     break;
 
   case 792:
@@ -8427,7 +8492,6 @@
                                        YYABORT;
                                      }
                                    }
-
     break;
 
   case 793:
@@ -8437,7 +8501,6 @@
                                             YYABORT;
                                           }
                                         }
-
     break;
 
   case 794:
@@ -8447,7 +8510,6 @@
                                           YYABORT;
                                         }
                                       }
-
     break;
 
   case 795:
@@ -8457,7 +8519,6 @@
                                       YYABORT;
                                     }
                                   }
-
     break;
 
   case 796:
@@ -8467,7 +8528,6 @@
                                      YYABORT;
                                    }
                                  }
-
     break;
 
   case 797:
@@ -8477,7 +8537,6 @@
                                         YYABORT;
                                       }
                                     }
-
     break;
 
   case 798:
@@ -8487,7 +8546,6 @@
                                         YYABORT;
                                       }
                                     }
-
     break;
 
   case 799:
@@ -8497,7 +8555,6 @@
                                               YYABORT;
                                             }
                                           }
-
     break;
 
   case 800:
@@ -8507,7 +8564,6 @@
                                               YYABORT;
                                             }
                                           }
-
     break;
 
   case 801:
@@ -8517,7 +8573,6 @@
                                     YYABORT;
                                   }
                                 }
-
     break;
 
   case 802:
@@ -8527,7 +8582,6 @@
                                           YYABORT;
                                         }
                                       }
-
     break;
 
   case 803:
@@ -8537,7 +8591,6 @@
                                              YYABORT;
                                            }
                                          }
-
     break;
 
   case 804:
@@ -8547,7 +8600,6 @@
                                      YYABORT;
                                    }
                                  }
-
     break;
 
   case 805:
@@ -8557,7 +8609,6 @@
                                          YYABORT;
                                        }
                                      }
-
     break;
 
   case 806:
@@ -8567,12 +8618,11 @@
                                               YYABORT;
                                             }
                                           }
-
     break;
 
   case 807:
 
-    { struct lys_type *type = (yyvsp[-2].v);
+    { struct lys_type *type = (yyvsp[(2) - (4)].v);
 
        if (yang_fill_type(trg, type, (struct yang_type *)type->der, ext_instance, param->unres)) {
          yang_type_free(trg->ctx, type);
@@ -8585,12 +8635,11 @@
        actual = ext_instance;
        is_ext_instance = 1;
      }
-
     break;
 
   case 808:
 
-    { struct lys_tpdf *tpdf = (yyvsp[-2].v);
+    { struct lys_tpdf *tpdf = (yyvsp[(2) - (4)].v);
 
        if (yang_fill_type(trg, &tpdf->type, (struct yang_type *)tpdf->type.der, tpdf, param->unres)) {
          yang_type_free(trg->ctx, &tpdf->type);
@@ -8609,65 +8658,59 @@
        actual = ext_instance;
        is_ext_instance = 1;
      }
-
     break;
 
   case 809:
 
     { if (yang_fill_extcomplex_flags(ext_instance, ext_name, "status", LY_STMT_STATUS,
-                                                                    (yyvsp[0].i), LYS_STATUS_MASK)) {
+                                                                    (yyvsp[(2) - (2)].i), LYS_STATUS_MASK)) {
                                        YYABORT;
                                      }
                                    }
-
     break;
 
   case 810:
 
     { if (yang_fill_extcomplex_flags(ext_instance, ext_name, "config", LY_STMT_CONFIG,
-                                                                    (yyvsp[0].i), LYS_CONFIG_MASK)) {
+                                                                    (yyvsp[(2) - (2)].i), LYS_CONFIG_MASK)) {
                                        YYABORT;
                                      }
                                    }
-
     break;
 
   case 811:
 
     { if (yang_fill_extcomplex_flags(ext_instance, ext_name, "mandatory", LY_STMT_MANDATORY,
-                                                                       (yyvsp[0].i), LYS_MAND_MASK)) {
+                                                                       (yyvsp[(2) - (2)].i), LYS_MAND_MASK)) {
                                           YYABORT;
                                         }
                                       }
-
     break;
 
   case 812:
 
-    { if ((yyvsp[-1].i) & LYS_ORDERED_MASK) {
+    { if ((yyvsp[(1) - (2)].i) & LYS_ORDERED_MASK) {
                                             LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "ordered by", ext_name);
                                             YYABORT;
                                          }
-                                         if ((yyvsp[0].i) & LYS_USERORDERED) {
+                                         if ((yyvsp[(2) - (2)].i) & LYS_USERORDERED) {
                                            if (yang_fill_extcomplex_flags(ext_instance, ext_name, "ordered-by", LY_STMT_ORDEREDBY,
-                                                                          (yyvsp[0].i), LYS_USERORDERED)) {
+                                                                          (yyvsp[(2) - (2)].i), LYS_USERORDERED)) {
                                              YYABORT;
                                            }
                                          }
-                                         (yyvsp[-1].i) |= (yyvsp[0].i);
-                                         (yyval.i) = (yyvsp[-1].i);
+                                         (yyvsp[(1) - (2)].i) |= (yyvsp[(2) - (2)].i);
+                                         (yyval.i) = (yyvsp[(1) - (2)].i);
                                        }
-
     break;
 
   case 813:
 
     { if (yang_fill_extcomplex_uint8(ext_instance, ext_name, "require-instance",
-                                                                              LY_STMT_REQINSTANCE, (yyvsp[0].i))) {
+                                                                              LY_STMT_REQINSTANCE, (yyvsp[(2) - (2)].i))) {
                                                  YYABORT;
                                                }
                                              }
-
     break;
 
   case 814:
@@ -8676,21 +8719,19 @@
                                          YYABORT;
                                        }
                                      }
-
     break;
 
   case 815:
 
     { /* range check */
-       if ((yyvsp[0].uint) < 1 || (yyvsp[0].uint) > 18) {
-         LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid value \"%d\" of \"%s\".", (yyvsp[0].uint), "fraction-digits");
+       if ((yyvsp[(2) - (2)].uint) < 1 || (yyvsp[(2) - (2)].uint) > 18) {
+         LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid value \"%d\" of \"%s\".", (yyvsp[(2) - (2)].uint), "fraction-digits");
          YYABORT;
        }
-       if (yang_fill_extcomplex_uint8(ext_instance, ext_name, "fraction-digits", LY_STMT_DIGITS, (yyvsp[0].uint))) {
+       if (yang_fill_extcomplex_uint8(ext_instance, ext_name, "fraction-digits", LY_STMT_DIGITS, (yyvsp[(2) - (2)].uint))) {
          YYABORT;
        }
      }
-
     break;
 
   case 816:
@@ -8708,9 +8749,8 @@
                                              LOGMEM;
                                              YYABORT;
                                            }
-                                           **val = (yyvsp[0].uint);
+                                           **val = (yyvsp[(2) - (2)].uint);
                                          }
-
     break;
 
   case 817:
@@ -8728,9 +8768,8 @@
                                              LOGMEM;
                                              YYABORT;
                                            }
-                                           **val = (yyvsp[0].uint);
+                                           **val = (yyvsp[(2) - (2)].uint);
                                          }
-
     break;
 
   case 818:
@@ -8748,9 +8787,8 @@
                                          LOGMEM;
                                          YYABORT;
                                        }
-                                       **val = (yyvsp[0].uint);
+                                       **val = (yyvsp[(2) - (2)].uint);
                                      }
-
     break;
 
   case 819:
@@ -8768,9 +8806,8 @@
                                       LOGMEM;
                                       YYABORT;
                                     }
-                                    **val = (yyvsp[0].i);
+                                    **val = (yyvsp[(2) - (2)].i);
                                   }
-
     break;
 
   case 820:
@@ -8795,14 +8832,13 @@
                                        YYABORT;
                                      }
                                    }
-
     break;
 
   case 821:
 
     { struct lys_iffeature *iffeature;
 
-       iffeature = (yyvsp[-2].v);
+       iffeature = (yyvsp[(2) - (4)].v);
        s = (char *)iffeature->features;
        iffeature->features = NULL;
        if (yang_fill_iffeature(trg, iffeature, ext_instance, s, param->unres, 0)) {
@@ -8814,47 +8850,43 @@
        s = NULL;
        actual = ext_instance;
      }
-
     break;
 
   case 823:
 
-    { if (yang_check_ext_instance(trg, &((struct lys_restr *)(yyvsp[-2].v))->ext, ((struct lys_restr *)(yyvsp[-2].v))->ext_size, (yyvsp[-2].v), param->unres)) {
+    { if (yang_check_ext_instance(trg, &((struct lys_restr *)(yyvsp[(2) - (4)].v))->ext, ((struct lys_restr *)(yyvsp[(2) - (4)].v))->ext_size, (yyvsp[(2) - (4)].v), param->unres)) {
          YYABORT;
        }
        actual = ext_instance;
      }
-
     break;
 
   case 824:
 
-    { if (yang_check_ext_instance(trg, &(*(struct lys_when **)(yyvsp[-2].v))->ext, (*(struct lys_when **)(yyvsp[-2].v))->ext_size,
-                                   *(struct lys_when **)(yyvsp[-2].v), param->unres)) {
+    { if (yang_check_ext_instance(trg, &(*(struct lys_when **)(yyvsp[(2) - (4)].v))->ext, (*(struct lys_when **)(yyvsp[(2) - (4)].v))->ext_size,
+                                   *(struct lys_when **)(yyvsp[(2) - (4)].v), param->unres)) {
          YYABORT;
        }
        actual = ext_instance;
      }
-
     break;
 
   case 825:
 
     { int i;
 
-       for (i = 0; i < (yyvsp[-2].revisions).index; ++i) {
-         if (!strcmp((yyvsp[-2].revisions).revision[i]->date, (yyvsp[-2].revisions).revision[(yyvsp[-2].revisions).index]->date)) {
-           LOGWRN("Module's revisions are not unique (%s).", (yyvsp[-2].revisions).revision[i]->date);
+       for (i = 0; i < (yyvsp[(2) - (4)].revisions).index; ++i) {
+         if (!strcmp((yyvsp[(2) - (4)].revisions).revision[i]->date, (yyvsp[(2) - (4)].revisions).revision[(yyvsp[(2) - (4)].revisions).index]->date)) {
+           LOGWRN("Module's revisions are not unique (%s).", (yyvsp[(2) - (4)].revisions).revision[i]->date);
            break;
          }
        }
-       if (yang_check_ext_instance(trg, &(yyvsp[-2].revisions).revision[(yyvsp[-2].revisions).index]->ext, (yyvsp[-2].revisions).revision[(yyvsp[-2].revisions).index]->ext_size,
-                                   &(yyvsp[-2].revisions).revision[(yyvsp[-2].revisions).index], param->unres)) {
+       if (yang_check_ext_instance(trg, &(yyvsp[(2) - (4)].revisions).revision[(yyvsp[(2) - (4)].revisions).index]->ext, (yyvsp[(2) - (4)].revisions).revision[(yyvsp[(2) - (4)].revisions).index]->ext_size,
+                                   &(yyvsp[(2) - (4)].revisions).revision[(yyvsp[(2) - (4)].revisions).index], param->unres)) {
          YYABORT;
        }
        actual = ext_instance;
      }
-
     break;
 
   case 826:
@@ -8862,7 +8894,6 @@
     { actual = ext_instance;
                                                                     is_ext_instance = 1;
                                                                   }
-
     break;
 
 
@@ -8889,7 +8920,7 @@
   *++yyvsp = yyval;
   *++yylsp = yyloc;
 
-  /* Now 'shift' the result of the reduction.  Determine what state
+  /* 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.  */
 
@@ -8904,9 +8935,9 @@
   goto yynewstate;
 
 
-/*--------------------------------------.
-| yyerrlab -- here on detecting error.  |
-`--------------------------------------*/
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
 yyerrlab:
   /* Make sure we have latest lookahead translation.  See comments at
      user semantic actions for why this is necessary.  */
@@ -8957,20 +8988,20 @@
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-         error, discard it.  */
+	 error, discard it.  */
 
       if (yychar <= YYEOF)
-        {
-          /* Return failure if at end of input.  */
-          if (yychar == YYEOF)
-            YYABORT;
-        }
+	{
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+	}
       else
-        {
-          yydestruct ("Error: discarding",
-                      yytoken, &yylval, &yylloc, scanner, param);
-          yychar = YYEMPTY;
-        }
+	{
+	  yydestruct ("Error: discarding",
+		      yytoken, &yylval, &yylloc, scanner, param);
+	  yychar = YYEMPTY;
+	}
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -8990,7 +9021,7 @@
      goto yyerrorlab;
 
   yyerror_range[1] = yylsp[1-yylen];
-  /* Do not reclaim the symbols of the rule whose action triggered
+  /* Do not reclaim the symbols of the rule which action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -9003,29 +9034,29 @@
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
+  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;
-            }
-        }
+	{
+	  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;
+	YYABORT;
 
       yyerror_range[1] = *yylsp;
       yydestruct ("Error: popping",
-                  yystos[yystate], yyvsp, yylsp, scanner, param);
+		  yystos[yystate], yyvsp, yylsp, scanner, param);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
@@ -9081,14 +9112,14 @@
       yydestruct ("Cleanup: discarding lookahead",
                   yytoken, &yylval, &yylloc, scanner, param);
     }
-  /* Do not reclaim the symbols of the rule whose action triggered
+  /* Do not reclaim the symbols of the rule which action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp, yylsp, scanner, param);
+		  yystos[*yyssp], yyvsp, yylsp, scanner, param);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
@@ -9099,11 +9130,14 @@
   if (yymsg != yymsgbuf)
     YYSTACK_FREE (yymsg);
 #endif
-  return yyresult;
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
 }
 
 
 
+
+
 void yyerror(YYLTYPE *yylloc, void *scanner, struct yang_parameter *param, ...){
 
   free(*param->value);
diff --git a/src/parser_yang_bis.h b/src/parser_yang_bis.h
index b6915d0..3ca4659 100644
--- a/src/parser_yang_bis.h
+++ b/src/parser_yang_bis.h
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 3.0.4.  */
+/* A Bison parser, made by GNU Bison 2.7.  */
 
 /* Bison interface for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
-
+   
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+   
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -26,13 +26,13 @@
    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.  */
 
 #ifndef YY_YY_PARSER_YANG_BIS_H_INCLUDED
 # define YY_YY_PARSER_YANG_BIS_H_INCLUDED
-/* Debug traces.  */
+/* Enabling traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
@@ -40,118 +40,118 @@
 extern int yydebug;
 #endif
 
-/* Token type.  */
+/* Tokens.  */
 #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,
-    NODE = 354,
-    NODE_PRINT = 355,
-    EXTENSION_INSTANCE = 356,
-    SUBMODULE_EXT_KEYWORD = 357
-  };
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   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,
+     NODE = 354,
+     NODE_PRINT = 355,
+     EXTENSION_INSTANCE = 356,
+     SUBMODULE_EXT_KEYWORD = 357
+   };
 #endif
 
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 
-union YYSTYPE
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
 {
 
 
@@ -188,29 +188,39 @@
   } revisions;
 
 
-};
 
-typedef union YYSTYPE YYSTYPE;
+} YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
-/* Location type.  */
 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
-typedef struct YYLTYPE YYLTYPE;
-struct YYLTYPE
+typedef struct YYLTYPE
 {
   int first_line;
   int first_column;
   int last_line;
   int last_column;
-};
+} YYLTYPE;
+# define yyltype YYLTYPE /* obsolescent; will be withdrawn */
 # define YYLTYPE_IS_DECLARED 1
 # define YYLTYPE_IS_TRIVIAL 1
 #endif
 
 
-
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
 int yyparse (void *scanner, struct yang_parameter *param);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
 #endif /* !YY_YY_PARSER_YANG_BIS_H_INCLUDED  */
diff --git a/src/parser_yang_lex.c b/src/parser_yang_lex.c
index a786ba5..dc9a004 100644
--- a/src/parser_yang_lex.c
+++ b/src/parser_yang_lex.c
@@ -1,12 +1,14 @@
 
+#line 3 "parser_yang_lex.c"
+
 #define  YY_INT_ALIGNED short int
 
 /* A lexical scanner generated by flex */
 
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 37
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -85,22 +87,36 @@
 
 #endif /* ! FLEXINT_H */
 
-/* TODO: this is always defined, so inline it */
-#define yyconst const
+#ifdef __cplusplus
 
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define yynoreturn __attribute__((__noreturn__))
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
 #else
-#define yynoreturn
+#define yyconst
 #endif
 
 /* Returned upon end-of-file. */
 #define YY_NULL 0
 
-/* Promotes a possibly negative, possibly signed char to an
- *   integer in range [0..255] for use as an array index.
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
  */
-#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
 
 /* An opaque pointer. */
 #ifndef YY_TYPEDEF_YY_SCANNER_T
@@ -124,29 +140,25 @@
  * definition of BEGIN.
  */
 #define BEGIN yyg->yy_start = 1 + 2 *
+
 /* Translate the current start state into a value that can be later handed
  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  * compatibility.
  */
 #define YY_START ((yyg->yy_start - 1) / 2)
 #define YYSTATE YY_START
+
 /* Action number for EOF rule of a given start state. */
 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
 /* Special action meaning "start processing a new file". */
 #define YY_NEW_FILE yyrestart(yyin ,yyscanner )
+
 #define YY_END_OF_BUFFER_CHAR 0
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -166,9 +178,8 @@
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
-    
+
     #define YY_LESS_LINENO(n)
-    #define YY_LINENO_REWIND_TO(ptr)
     
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
@@ -183,6 +194,7 @@
 		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
 		} \
 	while ( 0 )
+
 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
@@ -259,33 +271,36 @@
 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
                           : NULL)
+
 /* Same as previous macro, but useful when we know that the buffer stack is not
  * NULL or when we need an lvalue. For internal use only.
  */
 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
 
-void yyrestart ( FILE *input_file , yyscan_t yyscanner );
-void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
-YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
-void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
-void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
-void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
-void yypop_buffer_state ( yyscan_t yyscanner );
+void yyrestart (FILE *input_file ,yyscan_t yyscanner );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
+void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+void yypop_buffer_state (yyscan_t yyscanner );
 
-static void yyensure_buffer_stack ( yyscan_t yyscanner );
-static void yy_load_buffer_state ( yyscan_t yyscanner );
-static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
+static void yyensure_buffer_stack (yyscan_t yyscanner );
+static void yy_load_buffer_state (yyscan_t yyscanner );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
+
 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
 
-YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
 
-void *yyalloc ( yy_size_t , yyscan_t yyscanner );
-void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
-void yyfree ( void * , yyscan_t yyscanner );
+void *yyalloc (yy_size_t ,yyscan_t yyscanner );
+void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
+void yyfree (void * ,yyscan_t yyscanner );
 
 #define yy_new_buffer yy_create_buffer
+
 #define yy_set_interactive(is_interactive) \
 	{ \
 	if ( ! YY_CURRENT_BUFFER ){ \
@@ -295,6 +310,7 @@
 	} \
 	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
 	}
+
 #define yy_set_bol(at_bol) \
 	{ \
 	if ( ! YY_CURRENT_BUFFER ){\
@@ -304,22 +320,24 @@
 	} \
 	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
 	}
+
 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
 /* Begin user sect3 */
 
-#define yywrap(yyscanner) (/*CONSTCOND*/1)
+#define yywrap(yyscanner) 1
 #define YY_SKIP_YYWRAP
-typedef flex_uint8_t YY_CHAR;
+
+typedef unsigned char YY_CHAR;
 
 typedef int yy_state_type;
 
 #define yytext_ptr yytext_r
 
-static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
-static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  , yyscan_t yyscanner);
-static int yy_get_next_buffer ( yyscan_t yyscanner );
-static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
+static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
+static int yy_get_next_buffer (yyscan_t yyscanner );
+static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
 
 /* Done after the current pattern has been matched and before the
  * corresponding action - sets up yytext.
@@ -330,6 +348,7 @@
 	yyg->yy_hold_char = *yy_cp; \
 	*yy_cp = '\0'; \
 	yyg->yy_c_buf_p = yy_cp;
+
 #define YY_NUM_RULES 132
 #define YY_END_OF_BUFFER 133
 /* This struct is not used in this scanner,
@@ -339,7 +358,7 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static const flex_int16_t yy_accept[672] =
+static yyconst flex_int16_t yy_accept[672] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,  133,  131,  130,  128,  131,  127,   92,  100,
@@ -417,7 +436,7 @@
         0
     } ;
 
-static const YY_CHAR yy_ec[256] =
+static yyconst flex_int32_t yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
@@ -449,7 +468,7 @@
        55,   55,   55,   55,   55
     } ;
 
-static const YY_CHAR yy_meta[64] =
+static yyconst flex_int32_t yy_meta[64] =
     {   0,
         1,    2,    2,    2,    2,    3,    2,    2,    3,    3,
         3,    3,    4,    4,    3,    4,    4,    5,    2,    3,
@@ -460,7 +479,7 @@
         3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[682] =
+static yyconst flex_int16_t yy_base[682] =
     {   0,
         0,    0,   61,  122,   62,   63,  185,    0,  248,  311,
       374,  437,  504, 4800,   65, 4800,  474,   19, 4800, 4800,
@@ -539,7 +558,7 @@
      4793
     } ;
 
-static const flex_int16_t yy_def[682] =
+static yyconst flex_int16_t yy_def[682] =
     {   0,
       671,    1,  672,  672,    4,    4,  671,    7,  673,  673,
       674,  674,  671,  671,  671,  671,  671,  675,  671,  671,
@@ -618,7 +637,7 @@
       671
     } ;
 
-static const flex_int16_t yy_nxt[4864] =
+static yyconst flex_int16_t yy_nxt[4864] =
     {   0,
        14,   15,   16,   17,   15,   18,   19,   20,   18,   18,
        18,   21,   22,   18,   23,   24,   25,   18,   26,   18,
@@ -1157,7 +1176,7 @@
       671,  671,  671
     } ;
 
-static const flex_int16_t yy_chk[4864] =
+static yyconst flex_int16_t yy_chk[4864] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1756,7 +1775,7 @@
     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
     char yy_hold_char;
     int yy_n_chars;
-    int yyleng_r;
+    yy_size_t yyleng_r;
     char *yy_c_buf_p;
     int yy_init;
     int yy_start;
@@ -1780,7 +1799,7 @@
 
     }; /* end struct yyguts_t */
 
-static int yy_init_globals ( yyscan_t yyscanner );
+static int yy_init_globals (yyscan_t yyscanner );
 
     /* This must go here because YYSTYPE and YYLTYPE are included
      * from bison output in section 1.*/
@@ -1790,48 +1809,48 @@
     
 int yylex_init (yyscan_t* scanner);
 
-int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
+int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
 
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int yylex_destroy ( yyscan_t yyscanner );
+int yylex_destroy (yyscan_t yyscanner );
 
-int yyget_debug ( yyscan_t yyscanner );
+int yyget_debug (yyscan_t yyscanner );
 
-void yyset_debug ( int debug_flag , yyscan_t yyscanner );
+void yyset_debug (int debug_flag ,yyscan_t yyscanner );
 
-YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
+YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
 
-void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
+void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
 
-FILE *yyget_in ( yyscan_t yyscanner );
+FILE *yyget_in (yyscan_t yyscanner );
 
-void yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
+void yyset_in  (FILE * in_str ,yyscan_t yyscanner );
 
-FILE *yyget_out ( yyscan_t yyscanner );
+FILE *yyget_out (yyscan_t yyscanner );
 
-void yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
+void yyset_out  (FILE * out_str ,yyscan_t yyscanner );
 
-			int yyget_leng ( yyscan_t yyscanner );
+yy_size_t yyget_leng (yyscan_t yyscanner );
 
-char *yyget_text ( yyscan_t yyscanner );
+char *yyget_text (yyscan_t yyscanner );
 
-int yyget_lineno ( yyscan_t yyscanner );
+int yyget_lineno (yyscan_t yyscanner );
 
-void yyset_lineno ( int _line_number , yyscan_t yyscanner );
+void yyset_lineno (int line_number ,yyscan_t yyscanner );
 
-int yyget_column  ( yyscan_t yyscanner );
+int yyget_column  (yyscan_t yyscanner );
 
-void yyset_column ( int _column_no , yyscan_t yyscanner );
+void yyset_column (int column_no ,yyscan_t yyscanner );
 
-YYSTYPE * yyget_lval ( yyscan_t yyscanner );
+YYSTYPE * yyget_lval (yyscan_t yyscanner );
 
-void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
+void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
 
-       YYLTYPE *yyget_lloc ( yyscan_t yyscanner );
+       YYLTYPE *yyget_lloc (yyscan_t yyscanner );
     
-        void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
+        void yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
     
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1839,41 +1858,33 @@
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int yywrap ( yyscan_t yyscanner );
+extern "C" int yywrap (yyscan_t yyscanner );
 #else
-extern int yywrap ( yyscan_t yyscanner );
+extern int yywrap (yyscan_t yyscanner );
 #endif
 #endif
 
-#ifndef YY_NO_UNPUT
-    
-#endif
-
 #ifndef yytext_ptr
-static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
+static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
+static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
 #endif
 
 #ifndef YY_NO_INPUT
+
 #ifdef __cplusplus
-static int yyinput ( yyscan_t yyscanner );
+static int yyinput (yyscan_t yyscanner );
 #else
-static int input ( yyscan_t yyscanner );
+static int input (yyscan_t yyscanner );
 #endif
 
 #endif
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -1881,7 +1892,7 @@
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
+#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1892,7 +1903,7 @@
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		int n; \
+		size_t n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
@@ -1905,7 +1916,7 @@
 	else \
 		{ \
 		errno=0; \
-		while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
+		while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
 			{ \
 			if( errno != EINTR) \
 				{ \
@@ -1947,7 +1958,7 @@
 #define YY_DECL_IS_OURS 1
 
 extern int yylex \
-               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner);
+               (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
 
 #define YY_DECL int yylex \
                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
@@ -1962,7 +1973,7 @@
 
 /* Code executed at the end of each rule. */
 #ifndef YY_BREAK
-#define YY_BREAK /*LINTED*/break;
+#define YY_BREAK break;
 #endif
 
 #define YY_RULE_SETUP \
@@ -1972,11 +1983,19 @@
  */
 YY_DECL
 {
-	yy_state_type yy_current_state;
-	char *yy_cp, *yy_bp;
-	int yy_act;
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
+ int tab_count = 0;

+ int size_str = 0;

+ int column = 0;

+ char *str = NULL;

+ int _state = YY_START;

+ int i;

+ uint32_t value;

+

     yylval = yylval_param;
 
     yylloc = yylloc_param;
@@ -2007,17 +2026,7 @@
 		yy_load_buffer_state(yyscanner );
 		}
 
-	{
-
- int tab_count = 0;

- int size_str = 0;

- int column = 0;

- char *str = NULL;

- int _state = YY_START;

- int i;

- uint32_t value;

-

-	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
+	while ( 1 )		/* loops until end-of-file is reached */
 		{
 		yy_cp = yyg->yy_c_buf_p;
 
@@ -2033,7 +2042,7 @@
 yy_match:
 		do
 			{
-			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
 			if ( yy_accept[yy_current_state] )
 				{
 				yyg->yy_last_accepting_state = yy_current_state;
@@ -2043,9 +2052,9 @@
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
 				if ( yy_current_state >= 672 )
-					yy_c = yy_meta[yy_c];
+					yy_c = yy_meta[(unsigned int) yy_c];
 				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
 			++yy_cp;
 			}
 		while ( yy_base[yy_current_state] != 4800 );
@@ -2826,7 +2835,6 @@
 			"fatal flex scanner internal error--no action found" );
 	} /* end of action switch */
 		} /* end of scanning one token */
-	} /* end of user's declarations */
 } /* end of yylex */
 
 /* yy_get_next_buffer - try to read in a new buffer
@@ -2839,9 +2847,9 @@
 static int yy_get_next_buffer (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-	char *source = yyg->yytext_ptr;
-	int number_to_move, i;
+	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = yyg->yytext_ptr;
+	register int number_to_move, i;
 	int ret_val;
 
 	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
@@ -2870,7 +2878,7 @@
 	/* Try to read more data. */
 
 	/* First move last chars to start of buffer. */
-	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
+	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
 
 	for ( i = 0; i < number_to_move; ++i )
 		*(dest++) = *(source++);
@@ -2897,7 +2905,7 @@
 
 			if ( b->yy_is_our_buffer )
 				{
-				int new_size = b->yy_buf_size * 2;
+				yy_size_t new_size = b->yy_buf_size * 2;
 
 				if ( new_size <= 0 )
 					b->yy_buf_size += b->yy_buf_size / 8;
@@ -2906,11 +2914,11 @@
 
 				b->yy_ch_buf = (char *)
 					/* Include room in for 2 EOB chars. */
-					yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ,yyscanner );
+					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
 				}
 			else
 				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = NULL;
+				b->yy_ch_buf = 0;
 
 			if ( ! b->yy_ch_buf )
 				YY_FATAL_ERROR(
@@ -2918,7 +2926,7 @@
 
 			yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
 
-			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+			num_to_read = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
 						number_to_move - 1;
 
 			}
@@ -2952,10 +2960,10 @@
 	else
 		ret_val = EOB_ACT_CONTINUE_SCAN;
 
-	if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+	if ((int) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
 		/* Extend the array by 50%, plus the number we really need. */
 		int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
-		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ,yyscanner );
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
 	}
@@ -2973,15 +2981,15 @@
 
     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
 {
-	yy_state_type yy_current_state;
-	char *yy_cp;
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
 	yy_current_state = yyg->yy_start;
 
 	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
 		{
-		YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
 		if ( yy_accept[yy_current_state] )
 			{
 			yyg->yy_last_accepting_state = yy_current_state;
@@ -2991,9 +2999,9 @@
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
 			if ( yy_current_state >= 672 )
-				yy_c = yy_meta[yy_c];
+				yy_c = yy_meta[(unsigned int) yy_c];
 			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
 		}
 
 	return yy_current_state;
@@ -3006,11 +3014,11 @@
  */
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
 {
-	int yy_is_jam;
+	register int yy_is_jam;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
-	char *yy_cp = yyg->yy_c_buf_p;
+	register char *yy_cp = yyg->yy_c_buf_p;
 
-	YY_CHAR yy_c = 1;
+	register YY_CHAR yy_c = 1;
 	if ( yy_accept[yy_current_state] )
 		{
 		yyg->yy_last_accepting_state = yy_current_state;
@@ -3020,19 +3028,15 @@
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
 		if ( yy_current_state >= 672 )
-			yy_c = yy_meta[yy_c];
+			yy_c = yy_meta[(unsigned int) yy_c];
 		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
 	yy_is_jam = (yy_current_state == 671);
 
 	(void)yyg;
 	return yy_is_jam ? 0 : yy_current_state;
 }
 
-#ifndef YY_NO_UNPUT
-
-#endif
-
 #ifndef YY_NO_INPUT
 #ifdef __cplusplus
     static int yyinput (yyscan_t yyscanner)
@@ -3058,7 +3062,7 @@
 
 		else
 			{ /* need more input */
-			int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
+			yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
 			++yyg->yy_c_buf_p;
 
 			switch ( yy_get_next_buffer( yyscanner ) )
@@ -3082,7 +3086,7 @@
 				case EOB_ACT_END_OF_FILE:
 					{
 					if ( yywrap(yyscanner ) )
-						return 0;
+						return EOF;
 
 					if ( ! yyg->yy_did_buffer_switch_on_eof )
 						YY_NEW_FILE;
@@ -3191,7 +3195,7 @@
 	/* yy_ch_buf has to be 2 characters longer than the size given because
 	 * we need to put in 2 end-of-buffer characters.
 	 */
-	b->yy_ch_buf = (char *) yyalloc((yy_size_t) (b->yy_buf_size + 2) ,yyscanner );
+	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ,yyscanner );
 	if ( ! b->yy_ch_buf )
 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
@@ -3347,7 +3351,7 @@
 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
 		 * immediate realloc on the next call.
          */
-      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
+		num_to_alloc = 1;
 		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
 								(num_to_alloc * sizeof(struct yy_buffer_state*)
 								, yyscanner);
@@ -3364,7 +3368,7 @@
 	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
 
 		/* Increase the buffer to prepare for a possible push. */
-		yy_size_t grow_size = 8 /* arbitrary grow size */;
+		int grow_size = 8 /* arbitrary grow size */;
 
 		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
 		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
@@ -3394,16 +3398,16 @@
 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
 		/* They forgot to leave room for the EOB's. */
-		return NULL;
+		return 0;
 
 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
 	if ( ! b )
 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
 
-	b->yy_buf_size = (int) (size - 2);	/* "- 2" to take care of EOB's */
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
 	b->yy_buf_pos = b->yy_ch_buf = base;
 	b->yy_is_our_buffer = 0;
-	b->yy_input_file = NULL;
+	b->yy_input_file = 0;
 	b->yy_n_chars = b->yy_buf_size;
 	b->yy_is_interactive = 0;
 	b->yy_at_bol = 1;
@@ -3423,7 +3427,7 @@
  * @note If you want to scan bytes that may contain NUL values, then use
  *       yy_scan_bytes() instead.
  */
-YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
 {
     
 	return yy_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner);
@@ -3436,7 +3440,7 @@
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len , yyscan_t yyscanner)
 {
 	YY_BUFFER_STATE b;
 	char *buf;
@@ -3444,7 +3448,7 @@
 	int i;
     
 	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = (yy_size_t) (_yybytes_len + 2);
+	n = (yy_size_t) _yybytes_len + 2;
 	buf = (char *) yyalloc(n ,yyscanner );
 	if ( ! buf )
 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
@@ -3470,11 +3474,9 @@
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
+static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
 {
-	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-	(void)yyg;
-	(void) fprintf( stderr, "%s\n", msg );
+    	(void) fprintf( stderr, "%s\n", msg );
 	exit( YY_EXIT_FAILURE );
 }
 
@@ -3553,7 +3555,7 @@
 /** Get the length of the current token.
  * @param yyscanner The scanner object.
  */
-int yyget_leng  (yyscan_t yyscanner)
+yy_size_t yyget_leng  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yyleng;
@@ -3580,10 +3582,10 @@
 }
 
 /** Set the current line number.
- * @param _line_number line number
+ * @param line_number
  * @param yyscanner The scanner object.
  */
-void yyset_lineno (int  _line_number , yyscan_t yyscanner)
+void yyset_lineno (int  line_number , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
@@ -3591,14 +3593,14 @@
         if (! YY_CURRENT_BUFFER )
            YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
     
-    yylineno = _line_number;
+    yylineno = line_number;
 }
 
 /** Set the current column.
- * @param _column_no column number
+ * @param line_number
  * @param yyscanner The scanner object.
  */
-void yyset_column (int  _column_no , yyscan_t yyscanner)
+void yyset_column (int  column_no , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
@@ -3606,25 +3608,25 @@
         if (! YY_CURRENT_BUFFER )
            YY_FATAL_ERROR( "yyset_column called with no buffer" );
     
-    yycolumn = _column_no;
+    yycolumn = column_no;
 }
 
 /** Set the input stream. This does not discard the current
  * input buffer.
- * @param _in_str A readable stream.
+ * @param in_str A readable stream.
  * @param yyscanner The scanner object.
  * @see yy_switch_to_buffer
  */
-void yyset_in (FILE *  _in_str , yyscan_t yyscanner)
+void yyset_in (FILE *  in_str , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    yyin = _in_str ;
+    yyin = in_str ;
 }
 
-void yyset_out (FILE *  _out_str , yyscan_t yyscanner)
+void yyset_out (FILE *  out_str , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    yyout = _out_str ;
+    yyout = out_str ;
 }
 
 int yyget_debug  (yyscan_t yyscanner)
@@ -3633,10 +3635,10 @@
     return yy_flex_debug;
 }
 
-void yyset_debug (int  _bdebug , yyscan_t yyscanner)
+void yyset_debug (int  bdebug , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    yy_flex_debug = _bdebug ;
+    yy_flex_debug = bdebug ;
 }
 
 /* Accessor methods for yylval and yylloc */
@@ -3671,7 +3673,9 @@
  * the ONLY reentrant function that doesn't take the scanner as the last argument.
  * That's why we explicitly handle the declaration, instead of using our macros.
  */
+
 int yylex_init(yyscan_t* ptr_yy_globals)
+
 {
     if (ptr_yy_globals == NULL){
         errno = EINVAL;
@@ -3698,7 +3702,9 @@
  * The user defined value in the first argument will be available to yyalloc in
  * the yyextra field.
  */
+
 int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
+
 {
     struct yyguts_t dummy_yyguts;
 
@@ -3732,10 +3738,10 @@
      * This function is called from yylex_destroy(), so don't allocate here.
      */
 
-    yyg->yy_buffer_stack = NULL;
+    yyg->yy_buffer_stack = 0;
     yyg->yy_buffer_stack_top = 0;
     yyg->yy_buffer_stack_max = 0;
-    yyg->yy_c_buf_p = NULL;
+    yyg->yy_c_buf_p = (char *) 0;
     yyg->yy_init = 0;
     yyg->yy_start = 0;
 
@@ -3748,8 +3754,8 @@
     yyin = stdin;
     yyout = stdout;
 #else
-    yyin = NULL;
-    yyout = NULL;
+    yyin = (FILE *) 0;
+    yyout = (FILE *) 0;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
@@ -3793,21 +3799,18 @@
  */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
 {
-	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-	(void)yyg;
-
-	int i;
+	register int i;
 	for ( i = 0; i < n; ++i )
 		s1[i] = s2[i];
 }
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
+static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
 {
-	int n;
+	register int n;
 	for ( n = 0; s[n]; ++n )
 		;
 
@@ -3817,16 +3820,11 @@
 
 void *yyalloc (yy_size_t  size , yyscan_t yyscanner)
 {
-	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-	(void)yyg;
-	return malloc(size);
+	return (void *) malloc( size );
 }
 
 void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
 {
-	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-	(void)yyg;
-
 	/* The cast to (char *) in the following accommodates both
 	 * implementations that use char* generic pointers, and those
 	 * that use void* generic pointers.  It works with the latter
@@ -3834,13 +3832,11 @@
 	 * any pointer type to void*, and deal with argument conversions
 	 * as though doing an assignment.
 	 */
-	return realloc(ptr, size);
+	return (void *) realloc( (char *) ptr, size );
 }
 
 void yyfree (void * ptr , yyscan_t yyscanner)
 {
-	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-	(void)yyg;
 	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
 }
 
diff --git a/src/parser_yang_lex.h b/src/parser_yang_lex.h
index c4b47bf..a9257d6 100644
--- a/src/parser_yang_lex.h
+++ b/src/parser_yang_lex.h
@@ -2,14 +2,16 @@
 #define yyHEADER_H 1
 #define yyIN_HEADER 1
 
+#line 6 "parser_yang_lex.h"
+
 #define  YY_INT_ALIGNED short int
 
 /* A lexical scanner generated by flex */
 
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 37
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -88,13 +90,25 @@
 
 #endif /* ! FLEXINT_H */
 
-/* TODO: this is always defined, so inline it */
-#define yyconst const
+#ifdef __cplusplus
 
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define yynoreturn __attribute__((__noreturn__))
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
 #else
-#define yynoreturn
+#define yyconst
 #endif
 
 /* An opaque pointer. */
@@ -116,15 +130,7 @@
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
@@ -188,25 +194,25 @@
 	};
 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
 
-void yyrestart ( FILE *input_file , yyscan_t yyscanner );
-void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
-YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
-void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
-void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
-void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
-void yypop_buffer_state ( yyscan_t yyscanner );
+void yyrestart (FILE *input_file ,yyscan_t yyscanner );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
+void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+void yypop_buffer_state (yyscan_t yyscanner );
 
-YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
 
-void *yyalloc ( yy_size_t , yyscan_t yyscanner );
-void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
-void yyfree ( void * , yyscan_t yyscanner );
+void *yyalloc (yy_size_t ,yyscan_t yyscanner );
+void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
+void yyfree (void * ,yyscan_t yyscanner );
 
 /* Begin user sect3 */
 
-#define yywrap(yyscanner) (/*CONSTCOND*/1)
+#define yywrap(yyscanner) 1
 #define YY_SKIP_YYWRAP
 
 #define yytext_ptr yytext_r
@@ -235,48 +241,48 @@
 
 int yylex_init (yyscan_t* scanner);
 
-int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
+int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
 
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int yylex_destroy ( yyscan_t yyscanner );
+int yylex_destroy (yyscan_t yyscanner );
 
-int yyget_debug ( yyscan_t yyscanner );
+int yyget_debug (yyscan_t yyscanner );
 
-void yyset_debug ( int debug_flag , yyscan_t yyscanner );
+void yyset_debug (int debug_flag ,yyscan_t yyscanner );
 
-YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
+YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
 
-void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
+void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
 
-FILE *yyget_in ( yyscan_t yyscanner );
+FILE *yyget_in (yyscan_t yyscanner );
 
-void yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
+void yyset_in  (FILE * in_str ,yyscan_t yyscanner );
 
-FILE *yyget_out ( yyscan_t yyscanner );
+FILE *yyget_out (yyscan_t yyscanner );
 
-void yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
+void yyset_out  (FILE * out_str ,yyscan_t yyscanner );
 
-			int yyget_leng ( yyscan_t yyscanner );
+yy_size_t yyget_leng (yyscan_t yyscanner );
 
-char *yyget_text ( yyscan_t yyscanner );
+char *yyget_text (yyscan_t yyscanner );
 
-int yyget_lineno ( yyscan_t yyscanner );
+int yyget_lineno (yyscan_t yyscanner );
 
-void yyset_lineno ( int _line_number , yyscan_t yyscanner );
+void yyset_lineno (int line_number ,yyscan_t yyscanner );
 
-int yyget_column  ( yyscan_t yyscanner );
+int yyget_column  (yyscan_t yyscanner );
 
-void yyset_column ( int _column_no , yyscan_t yyscanner );
+void yyset_column (int column_no ,yyscan_t yyscanner );
 
-YYSTYPE * yyget_lval ( yyscan_t yyscanner );
+YYSTYPE * yyget_lval (yyscan_t yyscanner );
 
-void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
+void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
 
-       YYLTYPE *yyget_lloc ( yyscan_t yyscanner );
+       YYLTYPE *yyget_lloc (yyscan_t yyscanner );
     
-        void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
+        void yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
     
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -284,18 +290,18 @@
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int yywrap ( yyscan_t yyscanner );
+extern "C" int yywrap (yyscan_t yyscanner );
 #else
-extern int yywrap ( yyscan_t yyscanner );
+extern int yywrap (yyscan_t yyscanner );
 #endif
 #endif
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
+static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
+static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
 #endif
 
 #ifndef YY_NO_INPUT
@@ -304,12 +310,7 @@
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Number of entries by which start-condition stack grows. */
@@ -324,7 +325,7 @@
 #define YY_DECL_IS_OURS 1
 
 extern int yylex \
-               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner);
+               (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
 
 #define YY_DECL int yylex \
                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
@@ -344,6 +345,6 @@
 #undef YY_DECL
 #endif
 
-#line 347 "parser_yang_lex.h"
+#line 349 "parser_yang_lex.h"
 #undef yyIN_HEADER
 #endif /* yyHEADER_H */
diff --git a/src/parser_yin.c b/src/parser_yin.c
index 9a8a6de..a326d62 100644
--- a/src/parser_yin.c
+++ b/src/parser_yin.c
@@ -1322,26 +1322,34 @@
                 in_grp = 1;
             }
             type->info.str.patterns = calloc(i, sizeof *type->info.str.patterns);
+            LY_CHECK_ERR_GOTO(!type->info.str.patterns, LOGMEM, error);
+#ifdef LY_ENABLED_CACHE
             if (!in_grp) {
                 /* do not compile patterns in groupings */
                 type->info.str.patterns_pcre = malloc(2 * i * sizeof *type->info.str.patterns_pcre);
+                LY_CHECK_ERR_GOTO(!type->info.str.patterns_pcre, LOGMEM, error);
             }
-            LY_CHECK_ERR_GOTO(!type->info.str.patterns || (!in_grp && !type->info.str.patterns_pcre), LOGMEM, error);
+#endif
             LY_TREE_FOR(yin->child, node) {
                 GETVAL(value, node, "value");
 
-                if (in_grp) {
-                    /* in grouping, just check the pattern syntax */
-                    if (lyp_check_pattern(value, NULL)) {
-                        goto error;
+                if (!(module->ctx->models.flags & LY_CTX_TRUSTED)) {
+                    if (in_grp) {
+                        /* in grouping, just check the pattern syntax */
+                        if (lyp_check_pattern(value, NULL)) {
+                            goto error;
+                        }
                     }
-                } else {
-                    /* outside grouping, check syntax and precompile pattern for later use by libpcre */
-                    if (lyp_precompile_pattern(value,
-                                               (pcre**)&type->info.str.patterns_pcre[type->info.str.pat_count * 2],
-                                               (pcre_extra**)&type->info.str.patterns_pcre[type->info.str.pat_count * 2 + 1])) {
-                        goto error;
+#ifdef LY_ENABLED_CACHE
+                    else {
+                        /* outside grouping, check syntax and precompile pattern for later use by libpcre */
+                        if (lyp_precompile_pattern(value,
+                                (pcre**)&type->info.str.patterns_pcre[type->info.str.pat_count * 2],
+                                (pcre_extra**)&type->info.str.patterns_pcre[type->info.str.pat_count * 2 + 1])) {
+                            goto error;
+                        }
                     }
+#endif
                 }
                 restr = &type->info.str.patterns[type->info.str.pat_count]; /* shortcut */
                 type->info.str.pat_count++;
diff --git a/src/tree_data.h b/src/tree_data.h
index 9519108..fdf208a 100644
--- a/src/tree_data.h
+++ b/src/tree_data.h
@@ -18,6 +18,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include "libyang.h"
 #include "tree_schema.h"
 #include "xml.h"
 
diff --git a/src/tree_internal.h b/src/tree_internal.h
index adee5b6..d195ee3 100644
--- a/src/tree_internal.h
+++ b/src/tree_internal.h
@@ -16,6 +16,7 @@
 #ifndef LY_TREE_INTERNAL_H_
 #define LY_TREE_INTERNAL_H_
 
+#include "libyang.h"
 #include "tree_schema.h"
 #include "tree_data.h"
 #include "resolve.h"
diff --git a/src/tree_schema.c b/src/tree_schema.c
index a81bf3e..ed445e2 100644
--- a/src/tree_schema.c
+++ b/src/tree_schema.c
@@ -1460,6 +1460,7 @@
         if (old->info.str.pat_count) {
             new->info.str.patterns = lys_restr_dup(mod, old->info.str.patterns, old->info.str.pat_count, shallow, unres);
             new->info.str.pat_count = old->info.str.pat_count;
+#ifdef LY_ENABLED_CACHE
             if (!in_grp) {
                 new->info.str.patterns_pcre = malloc(new->info.str.pat_count * 2 * sizeof *new->info.str.patterns_pcre);
                 LY_CHECK_ERR_RETURN(!new->info.str.patterns_pcre, LOGMEM, -1);
@@ -1473,6 +1474,7 @@
                     }
                 }
             }
+#endif
         }
         break;
 
@@ -2003,13 +2005,17 @@
         free(type->info.str.length);
         for (i = 0; i < type->info.str.pat_count; i++) {
             lys_restr_free(ctx, &type->info.str.patterns[i], private_destructor);
+#ifdef LY_ENABLED_CACHE
             if (type->info.str.patterns_pcre) {
                 pcre_free((pcre*)type->info.str.patterns_pcre[2 * i]);
                 pcre_free_study((pcre_extra*)type->info.str.patterns_pcre[2 * i + 1]);
             }
+#endif
         }
         free(type->info.str.patterns);
+#ifdef LY_ENABLED_CACHE
         free(type->info.str.patterns_pcre);
+#endif
         break;
 
     case LY_TYPE_UNION:
diff --git a/src/tree_schema.h b/src/tree_schema.h
index f5a83be..b483863 100644
--- a/src/tree_schema.h
+++ b/src/tree_schema.h
@@ -867,9 +867,11 @@
                                   - 0x06 (ACK) for match
                                   - 0x15 (NACK) for invert-match
                                   So the expression itself always starts at expr[1] */
+#ifdef LY_ENABLED_CACHE
     void **patterns_pcre;    /**< array of compiled patterns to optimize its evaluation, represented as
                                   array of pointers to results of pcre_compile() and pcre_study().
                                   For internal use only. */
+#endif
     int pat_count;           /**< number of pattern definitions in the patterns array */
 };
 
diff --git a/src/xpath.h b/src/xpath.h
index f7f1adb..4cf863a 100644
--- a/src/xpath.h
+++ b/src/xpath.h
@@ -17,6 +17,7 @@
 
 #include <stdint.h>
 
+#include "libyang.h"
 #include "tree_schema.h"
 #include "tree_data.h"
 
diff --git a/src/yang.y.in b/src/yang.y.in
index 657d1a0..a06ca88 100644
--- a/src/yang.y.in
+++ b/src/yang.y.in
@@ -25,9 +25,10 @@
 #include <stdarg.h>
 #include <string.h>
 #include <stdlib.h>
+#include "libyang.h"
+#include "common.h"
 #include "context.h"
 #include "resolve.h"
-#include "common.h"
 #include "parser_yang.h"
 #include "parser_yang_lex.h"
 #include "parser.h"
@@ -1322,8 +1323,9 @@
                                          YYABORT;
                                        }
                                        ((struct yang_type *)actual)->type->info.str.patterns = tmp;
-                                       
-                                       if (((struct yang_type *)actual)->type->info.str.patterns_pcre) {
+
+#ifdef LY_ENABLED_CACHE
+                                       if (!(trg->ctx->models.flags & LY_CTX_TRUSTED) && ((struct yang_type *)actual)->type->info.str.patterns_pcre) {
                                          tmp = realloc(((struct yang_type *)actual)->type->info.str.patterns_pcre,
                                                        2 * ((struct yang_type *)actual)->type->info.str.pat_count * sizeof *((struct yang_type *)actual)->type->info.str.patterns_pcre);
                                          if (!tmp) {
@@ -1332,6 +1334,7 @@
                                          }
                                          ((struct yang_type *)actual)->type->info.str.patterns_pcre = tmp;
                                        }
+#endif
                                      }
                                      if (((struct yang_type *)actual)->base == LY_TYPE_UNION) {
                                        struct lys_type *tmp;
@@ -1500,11 +1503,13 @@
 
 pattern_stmt: PATTERN_KEYWORD pattern_sep pattern_arg_str pattern_end  {struct lys_restr *pattern = actual;
                                                                         actual = NULL;
+#ifdef LY_ENABLED_CACHE
                                                                         if ($2.token != EXTENSION_INSTANCE &&
                                                                             !(data_node && data_node->nodetype != LYS_GROUPING && lys_ingrouping(data_node))) {
                                                                           int c = 2 * (((struct yang_type *)$2.actual)->type->info.str.pat_count - 1);
                                                                           YANG_ADDELEM(((struct yang_type *)$2.actual)->type->info.str.patterns_pcre, c);
                                                                         }
+#endif
                                                                         if (yang_read_pattern(trg, pattern, actual, $3, $4)) {
                                                                           YYABORT;
                                                                         }
@@ -4370,7 +4375,7 @@
                                   LOGMEM;
                                   YYABORT;
                                 }
-                                
+
                                 $$ = actual = *tpdf;
                                 is_ext_instance = 0;
                               }
diff --git a/tests/schema/test_typedef.c b/tests/schema/test_typedef.c
index b5fd12d..c3643c5 100644
--- a/tests/schema/test_typedef.c
+++ b/tests/schema/test_typedef.c
@@ -1154,7 +1154,9 @@
     assert_ptr_not_equal(mod->tpdf, NULL);
     assert_int_equal(mod->tpdf[0].type.base, LY_TYPE_STRING);
     assert_int_equal(mod->tpdf[0].type.info.str.pat_count, 1);
+#ifdef LY_ENABLED_CACHE
     assert_ptr_not_equal(mod->tpdf[0].type.info.str.patterns_pcre, NULL);
+#endif
 
     /* 2. grouping's typedef has PCRE data */
     LY_TREE_FOR(mod->data, iter) {
@@ -1168,7 +1170,9 @@
     assert_ptr_not_equal(grp->tpdf, NULL);
     assert_int_equal(grp->tpdf[0].type.base, LY_TYPE_STRING);
     assert_int_equal(grp->tpdf[0].type.info.str.pat_count, 1);
+#ifdef LY_ENABLED_CACHE
     assert_ptr_not_equal(grp->tpdf[0].type.info.str.patterns_pcre, NULL);
+#endif
 
     /* 3. grouping's leaf does not have PCRE data */
     LY_TREE_FOR(mod->data, iter) {
@@ -1180,7 +1184,9 @@
     assert_ptr_not_equal(leaf, NULL);
     assert_int_equal(leaf->type.base, LY_TYPE_STRING);
     assert_int_equal(leaf->type.info.str.pat_count, 1);
+#ifdef LY_ENABLED_CACHE
     assert_ptr_equal(leaf->type.info.str.patterns_pcre, NULL);
+#endif
     leaf = NULL;
 
     /* 4. but it's instantiated copy does have PCRE data */
@@ -1193,7 +1199,9 @@
     assert_ptr_not_equal(leaf, NULL);
     assert_int_equal(leaf->type.base, LY_TYPE_STRING);
     assert_int_equal(leaf->type.info.str.pat_count, 1);
+#ifdef LY_ENABLED_CACHE
     assert_ptr_not_equal(leaf->type.info.str.patterns_pcre, NULL);
+#endif
 
     /* check data */
     data = lyd_parse_mem(st->ctx, valid, LYD_XML, LYD_OPT_CONFIG);