extensions CHANGE base for substatements support in extension instances

Proof of concept on Metadata annotation implementation. So far just some
of the structures, function stubs and the process framework. functions to
convert extension's substatements to lysp structures are still missing.
diff --git a/src/tree_schema_helpers.c b/src/tree_schema_helpers.c
index 46d7801..1cc11c2 100644
--- a/src/tree_schema_helpers.c
+++ b/src/tree_schema_helpers.c
@@ -1410,7 +1410,7 @@
     return NULL;
 }
 
-enum yang_keyword
+enum ly_stmt
 lysp_match_kw(struct lys_parser_ctx *ctx, const char **data)
 {
 /**
@@ -1424,183 +1424,183 @@
 #define IF_KW_PREFIX(STR, LEN) if (!strncmp(*(data), STR, LEN)) {MOVE_IN(ctx, data, LEN);
 #define IF_KW_PREFIX_END }
 
-    enum yang_keyword result = YANG_NONE;
-    enum yang_keyword *kw = &result;
+    enum ly_stmt result = LY_STMT_NONE;
+    enum ly_stmt *kw = &result;
     /* read the keyword itself */
     switch (**data) {
     case 'a':
         MOVE_IN(ctx, data, 1);
-        IF_KW("rgument", 7, YANG_ARGUMENT)
-        else IF_KW("ugment", 6, YANG_AUGMENT)
-        else IF_KW("ction", 5, YANG_ACTION)
+        IF_KW("rgument", 7, LY_STMT_ARGUMENT)
+        else IF_KW("ugment", 6, LY_STMT_AUGMENT)
+        else IF_KW("ction", 5, LY_STMT_ACTION)
         else IF_KW_PREFIX("ny", 2)
-            IF_KW("data", 4, YANG_ANYDATA)
-            else IF_KW("xml", 3, YANG_ANYXML)
+            IF_KW("data", 4, LY_STMT_ANYDATA)
+            else IF_KW("xml", 3, LY_STMT_ANYXML)
         IF_KW_PREFIX_END
         break;
     case 'b':
         MOVE_IN(ctx, data, 1);
-        IF_KW("ase", 3, YANG_BASE)
-        else IF_KW("elongs-to", 9, YANG_BELONGS_TO)
-        else IF_KW("it", 2, YANG_BIT)
+        IF_KW("ase", 3, LY_STMT_BASE)
+        else IF_KW("elongs-to", 9, LY_STMT_BELONGS_TO)
+        else IF_KW("it", 2, LY_STMT_BIT)
         break;
     case 'c':
         MOVE_IN(ctx, data, 1);
-        IF_KW("ase", 3, YANG_CASE)
-        else IF_KW("hoice", 5, YANG_CHOICE)
+        IF_KW("ase", 3, LY_STMT_CASE)
+        else IF_KW("hoice", 5, LY_STMT_CHOICE)
         else IF_KW_PREFIX("on", 2)
-            IF_KW("fig", 3, YANG_CONFIG)
+            IF_KW("fig", 3, LY_STMT_CONFIG)
             else IF_KW_PREFIX("ta", 2)
-                IF_KW("ct", 2, YANG_CONTACT)
-                else IF_KW("iner", 4, YANG_CONTAINER)
+                IF_KW("ct", 2, LY_STMT_CONTACT)
+                else IF_KW("iner", 4, LY_STMT_CONTAINER)
             IF_KW_PREFIX_END
         IF_KW_PREFIX_END
         break;
     case 'd':
         MOVE_IN(ctx, data, 1);
         IF_KW_PREFIX("e", 1)
-            IF_KW("fault", 5, YANG_DEFAULT)
-            else IF_KW("scription", 9, YANG_DESCRIPTION)
+            IF_KW("fault", 5, LY_STMT_DEFAULT)
+            else IF_KW("scription", 9, LY_STMT_DESCRIPTION)
             else IF_KW_PREFIX("viat", 4)
-                IF_KW("e", 1, YANG_DEVIATE)
-                else IF_KW("ion", 3, YANG_DEVIATION)
+                IF_KW("e", 1, LY_STMT_DEVIATE)
+                else IF_KW("ion", 3, LY_STMT_DEVIATION)
             IF_KW_PREFIX_END
         IF_KW_PREFIX_END
         break;
     case 'e':
         MOVE_IN(ctx, data, 1);
-        IF_KW("num", 3, YANG_ENUM)
+        IF_KW("num", 3, LY_STMT_ENUM)
         else IF_KW_PREFIX("rror-", 5)
-            IF_KW("app-tag", 7, YANG_ERROR_APP_TAG)
-            else IF_KW("message", 7, YANG_ERROR_MESSAGE)
+            IF_KW("app-tag", 7, LY_STMT_ERROR_APP_TAG)
+            else IF_KW("message", 7, LY_STMT_ERROR_MESSAGE)
         IF_KW_PREFIX_END
-        else IF_KW("xtension", 8, YANG_EXTENSION)
+        else IF_KW("xtension", 8, LY_STMT_EXTENSION)
         break;
     case 'f':
         MOVE_IN(ctx, data, 1);
-        IF_KW("eature", 6, YANG_FEATURE)
-        else IF_KW("raction-digits", 14, YANG_FRACTION_DIGITS)
+        IF_KW("eature", 6, LY_STMT_FEATURE)
+        else IF_KW("raction-digits", 14, LY_STMT_FRACTION_DIGITS)
         break;
     case 'g':
         MOVE_IN(ctx, data, 1);
-        IF_KW("rouping", 7, YANG_GROUPING)
+        IF_KW("rouping", 7, LY_STMT_GROUPING)
         break;
     case 'i':
         MOVE_IN(ctx, data, 1);
-        IF_KW("dentity", 7, YANG_IDENTITY)
-        else IF_KW("f-feature", 9, YANG_IF_FEATURE)
-        else IF_KW("mport", 5, YANG_IMPORT)
+        IF_KW("dentity", 7, LY_STMT_IDENTITY)
+        else IF_KW("f-feature", 9, LY_STMT_IF_FEATURE)
+        else IF_KW("mport", 5, LY_STMT_IMPORT)
         else IF_KW_PREFIX("n", 1)
-            IF_KW("clude", 5, YANG_INCLUDE)
-            else IF_KW("put", 3, YANG_INPUT)
+            IF_KW("clude", 5, LY_STMT_INCLUDE)
+            else IF_KW("put", 3, LY_STMT_INPUT)
         IF_KW_PREFIX_END
         break;
     case 'k':
         MOVE_IN(ctx, data, 1);
-        IF_KW("ey", 2, YANG_KEY)
+        IF_KW("ey", 2, LY_STMT_KEY)
         break;
     case 'l':
         MOVE_IN(ctx, data, 1);
         IF_KW_PREFIX("e", 1)
-            IF_KW("af-list", 7, YANG_LEAF_LIST)
-            else IF_KW("af", 2, YANG_LEAF)
-            else IF_KW("ngth", 4, YANG_LENGTH)
+            IF_KW("af-list", 7, LY_STMT_LEAF_LIST)
+            else IF_KW("af", 2, LY_STMT_LEAF)
+            else IF_KW("ngth", 4, LY_STMT_LENGTH)
         IF_KW_PREFIX_END
-        else IF_KW("ist", 3, YANG_LIST)
+        else IF_KW("ist", 3, LY_STMT_LIST)
         break;
     case 'm':
         MOVE_IN(ctx, data, 1);
         IF_KW_PREFIX("a", 1)
-            IF_KW("ndatory", 7, YANG_MANDATORY)
-            else IF_KW("x-elements", 10, YANG_MAX_ELEMENTS)
+            IF_KW("ndatory", 7, LY_STMT_MANDATORY)
+            else IF_KW("x-elements", 10, LY_STMT_MAX_ELEMENTS)
         IF_KW_PREFIX_END
-        else IF_KW("in-elements", 11, YANG_MIN_ELEMENTS)
-        else IF_KW("ust", 3, YANG_MUST)
+        else IF_KW("in-elements", 11, LY_STMT_MIN_ELEMENTS)
+        else IF_KW("ust", 3, LY_STMT_MUST)
         else IF_KW_PREFIX("od", 2)
-            IF_KW("ule", 3, YANG_MODULE)
-            else IF_KW("ifier", 5, YANG_MODIFIER)
+            IF_KW("ule", 3, LY_STMT_MODULE)
+            else IF_KW("ifier", 5, LY_STMT_MODIFIER)
         IF_KW_PREFIX_END
         break;
     case 'n':
         MOVE_IN(ctx, data, 1);
-        IF_KW("amespace", 8, YANG_NAMESPACE)
-        else IF_KW("otification", 11, YANG_NOTIFICATION)
+        IF_KW("amespace", 8, LY_STMT_NAMESPACE)
+        else IF_KW("otification", 11, LY_STMT_NOTIFICATION)
         break;
     case 'o':
         MOVE_IN(ctx, data, 1);
         IF_KW_PREFIX("r", 1)
-            IF_KW("dered-by", 8, YANG_ORDERED_BY)
-            else IF_KW("ganization", 10, YANG_ORGANIZATION)
+            IF_KW("dered-by", 8, LY_STMT_ORDERED_BY)
+            else IF_KW("ganization", 10, LY_STMT_ORGANIZATION)
         IF_KW_PREFIX_END
-        else IF_KW("utput", 5, YANG_OUTPUT)
+        else IF_KW("utput", 5, LY_STMT_OUTPUT)
         break;
     case 'p':
         MOVE_IN(ctx, data, 1);
-        IF_KW("ath", 3, YANG_PATH)
-        else IF_KW("attern", 6, YANG_PATTERN)
-        else IF_KW("osition", 7, YANG_POSITION)
+        IF_KW("ath", 3, LY_STMT_PATH)
+        else IF_KW("attern", 6, LY_STMT_PATTERN)
+        else IF_KW("osition", 7, LY_STMT_POSITION)
         else IF_KW_PREFIX("re", 2)
-            IF_KW("fix", 3, YANG_PREFIX)
-            else IF_KW("sence", 5, YANG_PRESENCE)
+            IF_KW("fix", 3, LY_STMT_PREFIX)
+            else IF_KW("sence", 5, LY_STMT_PRESENCE)
         IF_KW_PREFIX_END
         break;
     case 'r':
         MOVE_IN(ctx, data, 1);
-        IF_KW("ange", 4, YANG_RANGE)
+        IF_KW("ange", 4, LY_STMT_RANGE)
         else IF_KW_PREFIX("e", 1)
             IF_KW_PREFIX("f", 1)
-                IF_KW("erence", 6, YANG_REFERENCE)
-                else IF_KW("ine", 3, YANG_REFINE)
+                IF_KW("erence", 6, LY_STMT_REFERENCE)
+                else IF_KW("ine", 3, LY_STMT_REFINE)
             IF_KW_PREFIX_END
-            else IF_KW("quire-instance", 14, YANG_REQUIRE_INSTANCE)
-            else IF_KW("vision-date", 11, YANG_REVISION_DATE)
-            else IF_KW("vision", 6, YANG_REVISION)
+            else IF_KW("quire-instance", 14, LY_STMT_REQUIRE_INSTANCE)
+            else IF_KW("vision-date", 11, LY_STMT_REVISION_DATE)
+            else IF_KW("vision", 6, LY_STMT_REVISION)
         IF_KW_PREFIX_END
-        else IF_KW("pc", 2, YANG_RPC)
+        else IF_KW("pc", 2, LY_STMT_RPC)
         break;
     case 's':
         MOVE_IN(ctx, data, 1);
-        IF_KW("tatus", 5, YANG_STATUS)
-        else IF_KW("ubmodule", 8, YANG_SUBMODULE)
+        IF_KW("tatus", 5, LY_STMT_STATUS)
+        else IF_KW("ubmodule", 8, LY_STMT_SUBMODULE)
         break;
     case 't':
         MOVE_IN(ctx, data, 1);
-        IF_KW("ypedef", 6, YANG_TYPEDEF)
-        else IF_KW("ype", 3, YANG_TYPE)
+        IF_KW("ypedef", 6, LY_STMT_TYPEDEF)
+        else IF_KW("ype", 3, LY_STMT_TYPE)
         break;
     case 'u':
         MOVE_IN(ctx, data, 1);
         IF_KW_PREFIX("ni", 2)
-            IF_KW("que", 3, YANG_UNIQUE)
-            else IF_KW("ts", 2, YANG_UNITS)
+            IF_KW("que", 3, LY_STMT_UNIQUE)
+            else IF_KW("ts", 2, LY_STMT_UNITS)
         IF_KW_PREFIX_END
-        else IF_KW("ses", 3, YANG_USES)
+        else IF_KW("ses", 3, LY_STMT_USES)
         break;
     case 'v':
         MOVE_IN(ctx, data, 1);
-        IF_KW("alue", 4, YANG_VALUE)
+        IF_KW("alue", 4, LY_STMT_VALUE)
         break;
     case 'w':
         MOVE_IN(ctx, data, 1);
-        IF_KW("hen", 3, YANG_WHEN)
+        IF_KW("hen", 3, LY_STMT_WHEN)
         break;
     case 'y':
         MOVE_IN(ctx, data, 1);
-        IF_KW("ang-version", 11, YANG_YANG_VERSION)
-        else IF_KW("in-element", 10, YANG_YIN_ELEMENT)
+        IF_KW("ang-version", 11, LY_STMT_YANG_VERSION)
+        else IF_KW("in-element", 10, LY_STMT_YIN_ELEMENT)
         break;
     default:
         /* if context is not NULL we are matching keyword from YANG data*/
         if (ctx) {
             if (**data == ';') {
                 MOVE_IN(ctx, data, 1);
-                *kw = YANG_SEMICOLON;
+                *kw = LY_STMT_SYNTAX_SEMICOLON;
             } else if (**data == '{') {
                 MOVE_IN(ctx, data, 1);
-                *kw = YANG_LEFT_BRACE;
+                *kw = LY_STMT_SYNTAX_LEFT_BRACE;
             } else if (**data == '}') {
                 MOVE_IN(ctx, data, 1);
-                *kw = YANG_RIGHT_BRACE;
+                *kw = LY_STMT_SYNTAX_RIGHT_BRACE;
             }
         }
         break;