Added handling for YANG extensions related to RFC 6536 (default-deny-write, default-deny-all) and RFC 6241 (get-filter-element-attributes) and added in Unit Tests for the new Listener classes related to extension references

Change-Id: I6501c23d340f0d6f85ecbe8790186568152d341f
diff --git a/compiler/base/parser/src/main/resources/GeneratedYang.g4 b/compiler/base/parser/src/main/resources/GeneratedYang.g4
index 0646a60..b4a20e5 100644
--- a/compiler/base/parser/src/main/resources/GeneratedYang.g4
+++ b/compiler/base/parser/src/main/resources/GeneratedYang.g4
@@ -800,13 +800,15 @@
      *                             *((typedef-stmt /
      *                                grouping-stmt) stmtsep)
      *                             *(data-def-stmt stmtsep)
+     *                             [default-deny-write-stmt stmtsep]
+     *                             [default-deny-all-stmt stmtsep]
      *                         "}")
-     * TODO : 0..1 occurance to be checked in listener
+     * TODO : 0..1 occurrence to be checked in listener
      */
     containerStatement : CONTAINER_KEYWORD identifier
                      (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | mustStatement | presenceStatement | configStatement
                      | statusStatement | descriptionStatement | referenceStatement | typedefStatement | groupingStatement
-                     | dataDefStatement)* RIGHT_CURLY_BRACE);
+                     | dataDefStatement | defaultDenyWriteStatement | defaultDenyAllStatement )* RIGHT_CURLY_BRACE);
 
     /**
      *  leaf-stmt           = leaf-keyword sep identifier-arg-str optsep
@@ -823,12 +825,14 @@
      *                            [status-stmt stmtsep]
      *                            [description-stmt stmtsep]
      *                            [reference-stmt stmtsep]
+     *                            [default-deny-write-stmt stmtsep]
+     *                            [default-deny-all-stmt stmtsep]
      *                         "}"
-     * TODO : 0..1 occurance to be checked in listener
+     * TODO : 0..1 occurrence to be checked in listener
      */
     leafStatement : LEAF_KEYWORD identifier LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | typeStatement | unitsStatement
               | mustStatement | defaultStatement | configStatement | mandatoryStatement | statusStatement  | descriptionStatement
-              | referenceStatement)* RIGHT_CURLY_BRACE;
+              | referenceStatement | defaultDenyWriteStatement | defaultDenyAllStatement )* RIGHT_CURLY_BRACE;
 
     /**
      *  leaf-list-stmt      = leaf-list-keyword sep identifier-arg-str optsep
@@ -846,12 +850,15 @@
      *                            [status-stmt stmtsep]
      *                            [description-stmt stmtsep]
      *                            [reference-stmt stmtsep]
+     *                            [default-deny-write-stmt stmtsep]
+     *                            [default-deny-all-stmt stmtsep]
      *                         "}"
      * TODO : 0..1 occurance to be checked in listener
      */
     leafListStatement : LEAF_LIST_KEYWORD identifier LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | typeStatement
                      | unitsStatement | mustStatement | configStatement | minElementsStatement | maxElementsStatement | orderedByStatement
-                     | statusStatement | descriptionStatement | referenceStatement)* RIGHT_CURLY_BRACE;
+                     | statusStatement | descriptionStatement | referenceStatement
+                     | defaultDenyWriteStatement | defaultDenyAllStatement )* RIGHT_CURLY_BRACE;
 
     /**
      *  list-stmt           = list-keyword sep identifier-arg-str optsep
@@ -869,6 +876,8 @@
      *                            [status-stmt stmtsep]
      *                            [description-stmt stmtsep]
      *                            [reference-stmt stmtsep]
+     *                            [default-deny-write-stmt stmtsep]
+     *                            [default-deny-all-stmt stmtsep]
      *                            *((typedef-stmt /
      *                               grouping-stmt) stmtsep)
      *                            1*(data-def-stmt stmtsep)
@@ -877,7 +886,8 @@
      */
     listStatement : LIST_KEYWORD identifier LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | mustStatement | keyStatement
               | uniqueStatement | configStatement | minElementsStatement | maxElementsStatement | orderedByStatement | statusStatement
-              | descriptionStatement | referenceStatement | typedefStatement | groupingStatement| dataDefStatement)* RIGHT_CURLY_BRACE;
+              | descriptionStatement | referenceStatement | defaultDenyWriteStatement | defaultDenyAllStatement
+              | typedefStatement | groupingStatement| dataDefStatement)* RIGHT_CURLY_BRACE;
 
     /**
      *  key-stmt            = key-keyword sep key-arg-str stmtend
@@ -1114,10 +1124,12 @@
      *                                grouping-stmt) stmtsep)
      *                             [input-stmt stmtsep]
      *                             [output-stmt stmtsep]
+     *                             [default-deny-all-stmt stmtsep]
      *                         "}")
      */
     rpcStatement : RPC_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE (ifFeatureStatement | statusStatement | descriptionStatement
-                | referenceStatement | typedefStatement | groupingStatement | inputStatement | outputStatement)* RIGHT_CURLY_BRACE);
+                | referenceStatement | typedefStatement | groupingStatement | inputStatement | outputStatement
+                | defaultDenyAllStatement)* RIGHT_CURLY_BRACE);
 
     /**
      * input-stmt          = input-keyword optsep
@@ -1151,6 +1163,7 @@
      *                             [status-stmt stmtsep]
      *                             [description-stmt stmtsep]
      *                             [reference-stmt stmtsep]
+     *                             [default-deny-all-stmt stmtsep]
      *                             *((typedef-stmt /
      *                                grouping-stmt) stmtsep)
      *                             *(data-def-stmt stmtsep)
@@ -1158,7 +1171,8 @@
      * TODO : 0..1 occurance to be checked in listener
      */
      notificationStatement : NOTIFICATION_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE (ifFeatureStatement
-                           | statusStatement | descriptionStatement | referenceStatement | typedefStatement
+                           | statusStatement | descriptionStatement | referenceStatement
+                           | typedefStatement | defaultDenyAllStatement
                            | groupingStatement | dataDefStatement)* RIGHT_CURLY_BRACE);
 
     /**
@@ -1275,6 +1289,18 @@
      */
     appExtendedStatement : APP_EXTENDED extendedName STMTEND;
 
+    /**
+     *   default-deny-write-stmt = prefix:default-deny-write ";"
+     *   From ietf-netconf-acm.yang RFC 6536
+     */
+    defaultDenyWriteStatement : DEFAULT_DENY_WRITE STMTEND;
+
+    /**
+     *   default-deny-all-stmt = prefix:default-deny-all ";"
+     *   From ietf-netconf-acm.yang RFC 6536
+     */
+    defaultDenyAllStatement : DEFAULT_DENY_ALL STMTEND;
+
     string : STRING (PLUS STRING)*
            | IDENTIFIER
            | INTEGER
@@ -1346,4 +1372,4 @@
                   | FALSE_KEYWORD | MAX_KEYWORD | MIN_KEYWORD | NOT_SUPPORTED_KEYWORD | OBSOLETE_KEYWORD
                   | REPLACE_KEYWORD | SYSTEM_KEYWORD | TRUE_KEYWORD | UNBOUNDED_KEYWORD | USER_KEYWORD
                   | COMPILER_ANNOTATION_KEYWORD | APP_DATA_STRUCTURE_KEYWORD | DATA_STRUCTURE_KEYWORD
-                  | APP_EXTENDED_KEYWORD;
+                  | APP_EXTENDED_KEYWORD | DEFAULT_DENY_WRITE_KEYWORD | DEFAULT_DENY_ALL_KEYWORD;
diff --git a/compiler/base/parser/src/main/resources/YangLexer.g4 b/compiler/base/parser/src/main/resources/YangLexer.g4
index 45189f7..cd942a0 100644
--- a/compiler/base/parser/src/main/resources/YangLexer.g4
+++ b/compiler/base/parser/src/main/resources/YangLexer.g4
@@ -113,6 +113,11 @@
     DATA_STRUCTURE_KEY : IDENTIFIER COLON KEY_KEYWORD;
     APP_EXTENDED_KEYWORD : 'app-extended-name';
     APP_EXTENDED : IDENTIFIER COLON APP_EXTENDED_KEYWORD;
+    //From ietf-netconf-acm.yang RFC 6536
+    DEFAULT_DENY_WRITE_KEYWORD : 'default-deny-write';
+    DEFAULT_DENY_WRITE : IDENTIFIER COLON DEFAULT_DENY_WRITE_KEYWORD;
+    DEFAULT_DENY_ALL_KEYWORD : 'default-deny-all';
+    DEFAULT_DENY_ALL : IDENTIFIER COLON DEFAULT_DENY_ALL_KEYWORD;
 
     // Lexer tokens to be skipped
     COMMENT
@@ -147,4 +152,4 @@
     fragment ALPHA      : [A-Za-z];
     fragment DIGIT      : [0-9];
     fragment URN        : [u][r][n];
-    fragment HTTP       : [h][t][t][p];
\ No newline at end of file
+    fragment HTTP       : [h][t][t][p];