diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/TreeWalkListener.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/TreeWalkListener.java
new file mode 100644
index 0000000..6cb764b
--- /dev/null
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/TreeWalkListener.java
@@ -0,0 +1,1170 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.parser.impl;
+
+import org.antlr.v4.runtime.ParserRuleContext;
+import org.antlr.v4.runtime.tree.ErrorNode;
+import org.antlr.v4.runtime.tree.TerminalNode;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.parser.Parsable;
+import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangListener;
+import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
+import org.onosproject.yangutils.parser.impl.parserutils.ListenerError;
+
+import java.util.Stack;
+
+/**
+ * ANTLR generates a parse-tree listener interface that responds to events
+ * triggered by the built-in tree walker. The methods in listener are just
+ * callbacks. This class implements listener interface and generates the
+ * corresponding data model tree.
+ */
+public class TreeWalkListener implements GeneratedYangListener {
+
+    // List of parsable node entries maintained in stack
+    private Stack<Parsable> parsedDataStack = new Stack<>();
+
+    // Parse tree root node
+    private YangNode rootNode;
+
+    // Maintains the state of Exception.
+    private ListenerError errorInformation = new ListenerError();
+
+    /**
+     * Returns stack of parsable data.
+     *
+     * @return stack of parsable data
+     */
+    public Stack<Parsable> getParsedDataStack() {
+        return parsedDataStack;
+    }
+
+    /**
+     * Returns error information.
+     *
+     * @return error information object having exception flag and message
+     */
+    public ListenerError getErrorInformation() {
+        return errorInformation;
+    }
+
+    /**
+     * Returns root node.
+     *
+     * @return rootNode of data model tree.
+     */
+    public YangNode getRootNode() {
+        return rootNode;
+    }
+
+    /**
+     * Set parsed data stack.
+     *
+     * @param parsedDataStack stack of parsable data objects.
+     */
+    public void setParsedDataStack(Stack<Parsable> parsedDataStack) {
+        this.parsedDataStack = parsedDataStack;
+    }
+
+    /**
+     * Set root node.
+     *
+     * @param rootNode root node of data model tree.
+     */
+    public void setRootNode(YangNode rootNode) {
+        this.rootNode = rootNode;
+    }
+
+    /**
+     * Set listener error information.
+     *
+     * @param errorInformation error occurred during tree walk.
+     */
+    public void setErrorInformation(ListenerError errorInformation) {
+        this.errorInformation = errorInformation;
+    }
+
+    @Override
+    public void enterYangfile(GeneratedYangParser.YangfileContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitYangfile(GeneratedYangParser.YangfileContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterModuleStatement(GeneratedYangParser.ModuleStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitModuleStatement(GeneratedYangParser.ModuleStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterModuleBody(GeneratedYangParser.ModuleBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitModuleBody(GeneratedYangParser.ModuleBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterModuleHeaderStatement(GeneratedYangParser.ModuleHeaderStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitModuleHeaderStatement(GeneratedYangParser.ModuleHeaderStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterLinkageStatements(GeneratedYangParser.LinkageStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitLinkageStatements(GeneratedYangParser.LinkageStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterMetaStatements(GeneratedYangParser.MetaStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitMetaStatements(GeneratedYangParser.MetaStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRevisionStatements(GeneratedYangParser.RevisionStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRevisionStatements(GeneratedYangParser.RevisionStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterBodyStatements(GeneratedYangParser.BodyStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitBodyStatements(GeneratedYangParser.BodyStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterYangVersionStatement(GeneratedYangParser.YangVersionStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitYangVersionStatement(GeneratedYangParser.YangVersionStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterNamespaceStatement(GeneratedYangParser.NamespaceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitNamespaceStatement(GeneratedYangParser.NamespaceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterPrefixStatement(GeneratedYangParser.PrefixStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitPrefixStatement(GeneratedYangParser.PrefixStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterImportStatement(GeneratedYangParser.ImportStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitImportStatement(GeneratedYangParser.ImportStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterImportStatementBody(GeneratedYangParser.ImportStatementBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitImportStatementBody(GeneratedYangParser.ImportStatementBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRevisionDateStatement(GeneratedYangParser.RevisionDateStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRevisionDateStatement(GeneratedYangParser.RevisionDateStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterIncludeStatement(GeneratedYangParser.IncludeStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitIncludeStatement(GeneratedYangParser.IncludeStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterOrganizationStatement(GeneratedYangParser.OrganizationStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitOrganizationStatement(GeneratedYangParser.OrganizationStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterContactStatement(GeneratedYangParser.ContactStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitContactStatement(GeneratedYangParser.ContactStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterDescriptionStatement(GeneratedYangParser.DescriptionStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitDescriptionStatement(GeneratedYangParser.DescriptionStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterReferenceStatement(GeneratedYangParser.ReferenceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitReferenceStatement(GeneratedYangParser.ReferenceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRevisionStatement(GeneratedYangParser.RevisionStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRevisionStatement(GeneratedYangParser.RevisionStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRevisionStatementBody(GeneratedYangParser.RevisionStatementBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRevisionStatementBody(GeneratedYangParser.RevisionStatementBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterSubModuleStatement(GeneratedYangParser.SubModuleStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitSubModuleStatement(GeneratedYangParser.SubModuleStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterSubmoduleBody(GeneratedYangParser.SubmoduleBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitSubmoduleBody(GeneratedYangParser.SubmoduleBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterSubmoduleHeaderStatement(GeneratedYangParser.SubmoduleHeaderStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitSubmoduleHeaderStatement(GeneratedYangParser.SubmoduleHeaderStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterBelongstoStatement(GeneratedYangParser.BelongstoStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitBelongstoStatement(GeneratedYangParser.BelongstoStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterBelongstoStatementBody(GeneratedYangParser.BelongstoStatementBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitBelongstoStatementBody(GeneratedYangParser.BelongstoStatementBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterExtensionStatement(GeneratedYangParser.ExtensionStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitExtensionStatement(GeneratedYangParser.ExtensionStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterExtensionBody(GeneratedYangParser.ExtensionBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitExtensionBody(GeneratedYangParser.ExtensionBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterArgumentStatement(GeneratedYangParser.ArgumentStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitArgumentStatement(GeneratedYangParser.ArgumentStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterArgumentBody(GeneratedYangParser.ArgumentBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitArgumentBody(GeneratedYangParser.ArgumentBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterYinElementStatement(GeneratedYangParser.YinElementStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitYinElementStatement(GeneratedYangParser.YinElementStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterIdentityStatement(GeneratedYangParser.IdentityStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitIdentityStatement(GeneratedYangParser.IdentityStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterIdentityBody(GeneratedYangParser.IdentityBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitIdentityBody(GeneratedYangParser.IdentityBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterBaseStatement(GeneratedYangParser.BaseStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitBaseStatement(GeneratedYangParser.BaseStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterFeatureStatement(GeneratedYangParser.FeatureStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitFeatureStatement(GeneratedYangParser.FeatureStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterFeatureBody(GeneratedYangParser.FeatureBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitFeatureBody(GeneratedYangParser.FeatureBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterDataDefStatement(GeneratedYangParser.DataDefStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitDataDefStatement(GeneratedYangParser.DataDefStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterIfFeatureStatement(GeneratedYangParser.IfFeatureStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitIfFeatureStatement(GeneratedYangParser.IfFeatureStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterUnitsStatement(GeneratedYangParser.UnitsStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitUnitsStatement(GeneratedYangParser.UnitsStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterTypedefStatement(GeneratedYangParser.TypedefStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitTypedefStatement(GeneratedYangParser.TypedefStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterTypeStatement(GeneratedYangParser.TypeStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitTypeStatement(GeneratedYangParser.TypeStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterTypeBodyStatements(GeneratedYangParser.TypeBodyStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitTypeBodyStatements(GeneratedYangParser.TypeBodyStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterNumericalRestrictions(GeneratedYangParser.NumericalRestrictionsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitNumericalRestrictions(GeneratedYangParser.NumericalRestrictionsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRangeStatement(GeneratedYangParser.RangeStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRangeStatement(GeneratedYangParser.RangeStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterCommonStatements(GeneratedYangParser.CommonStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitCommonStatements(GeneratedYangParser.CommonStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterStringRestrictions(GeneratedYangParser.StringRestrictionsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitStringRestrictions(GeneratedYangParser.StringRestrictionsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterLengthStatement(GeneratedYangParser.LengthStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitLengthStatement(GeneratedYangParser.LengthStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterPatternStatement(GeneratedYangParser.PatternStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitPatternStatement(GeneratedYangParser.PatternStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterDefaultStatement(GeneratedYangParser.DefaultStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitDefaultStatement(GeneratedYangParser.DefaultStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterEnumSpecification(GeneratedYangParser.EnumSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitEnumSpecification(GeneratedYangParser.EnumSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterEnumStatement(GeneratedYangParser.EnumStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitEnumStatement(GeneratedYangParser.EnumStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterEnumStatementBody(GeneratedYangParser.EnumStatementBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitEnumStatementBody(GeneratedYangParser.EnumStatementBodyContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterLeafrefSpecification(GeneratedYangParser.LeafrefSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitLeafrefSpecification(GeneratedYangParser.LeafrefSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterPathStatement(GeneratedYangParser.PathStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitPathStatement(GeneratedYangParser.PathStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRequireInstanceStatement(GeneratedYangParser.RequireInstanceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRequireInstanceStatement(GeneratedYangParser.RequireInstanceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterInstanceIdentifierSpecification(GeneratedYangParser.InstanceIdentifierSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitInstanceIdentifierSpecification(GeneratedYangParser.InstanceIdentifierSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterIdentityrefSpecification(GeneratedYangParser.IdentityrefSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitIdentityrefSpecification(GeneratedYangParser.IdentityrefSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterUnionSpecification(GeneratedYangParser.UnionSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitUnionSpecification(GeneratedYangParser.UnionSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterBitsSpecification(GeneratedYangParser.BitsSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitBitsSpecification(GeneratedYangParser.BitsSpecificationContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterBitStatement(GeneratedYangParser.BitStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitBitStatement(GeneratedYangParser.BitStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterBitBodyStatement(GeneratedYangParser.BitBodyStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitBitBodyStatement(GeneratedYangParser.BitBodyStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterPositionStatement(GeneratedYangParser.PositionStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitPositionStatement(GeneratedYangParser.PositionStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterStatusStatement(GeneratedYangParser.StatusStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitStatusStatement(GeneratedYangParser.StatusStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterConfigStatement(GeneratedYangParser.ConfigStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitConfigStatement(GeneratedYangParser.ConfigStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterMandatoryStatement(GeneratedYangParser.MandatoryStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitMandatoryStatement(GeneratedYangParser.MandatoryStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterPresenceStatement(GeneratedYangParser.PresenceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitPresenceStatement(GeneratedYangParser.PresenceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterOrderedByStatement(GeneratedYangParser.OrderedByStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitOrderedByStatement(GeneratedYangParser.OrderedByStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterMustStatement(GeneratedYangParser.MustStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitMustStatement(GeneratedYangParser.MustStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterErrorMessageStatement(GeneratedYangParser.ErrorMessageStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitErrorMessageStatement(GeneratedYangParser.ErrorMessageStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterErrorAppTagStatement(GeneratedYangParser.ErrorAppTagStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitErrorAppTagStatement(GeneratedYangParser.ErrorAppTagStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterMinElementsStatement(GeneratedYangParser.MinElementsStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitMinElementsStatement(GeneratedYangParser.MinElementsStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterMaxElementsStatement(GeneratedYangParser.MaxElementsStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitMaxElementsStatement(GeneratedYangParser.MaxElementsStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterMaxValueArgument(GeneratedYangParser.MaxValueArgumentContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitMaxValueArgument(GeneratedYangParser.MaxValueArgumentContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterValueStatement(GeneratedYangParser.ValueStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitValueStatement(GeneratedYangParser.ValueStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterGroupingStatement(GeneratedYangParser.GroupingStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitGroupingStatement(GeneratedYangParser.GroupingStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterContainerStatement(GeneratedYangParser.ContainerStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitContainerStatement(GeneratedYangParser.ContainerStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterLeafStatement(GeneratedYangParser.LeafStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitLeafStatement(GeneratedYangParser.LeafStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterLeafListStatement(GeneratedYangParser.LeafListStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitLeafListStatement(GeneratedYangParser.LeafListStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterListStatement(GeneratedYangParser.ListStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitListStatement(GeneratedYangParser.ListStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterKeyStatement(GeneratedYangParser.KeyStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitKeyStatement(GeneratedYangParser.KeyStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterUniqueStatement(GeneratedYangParser.UniqueStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitUniqueStatement(GeneratedYangParser.UniqueStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterChoiceStatement(GeneratedYangParser.ChoiceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitChoiceStatement(GeneratedYangParser.ChoiceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterShortCaseStatement(GeneratedYangParser.ShortCaseStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitShortCaseStatement(GeneratedYangParser.ShortCaseStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterCaseStatement(GeneratedYangParser.CaseStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitCaseStatement(GeneratedYangParser.CaseStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterUsesStatement(GeneratedYangParser.UsesStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitUsesStatement(GeneratedYangParser.UsesStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRefineStatement(GeneratedYangParser.RefineStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRefineStatement(GeneratedYangParser.RefineStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRefineContainerStatements(GeneratedYangParser.RefineContainerStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRefineContainerStatements(GeneratedYangParser.RefineContainerStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRefineLeafStatements(GeneratedYangParser.RefineLeafStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRefineLeafStatements(GeneratedYangParser.RefineLeafStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRefineLeafListStatements(GeneratedYangParser.RefineLeafListStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRefineLeafListStatements(GeneratedYangParser.RefineLeafListStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRefineListStatements(GeneratedYangParser.RefineListStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRefineListStatements(GeneratedYangParser.RefineListStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRefineChoiceStatements(GeneratedYangParser.RefineChoiceStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRefineChoiceStatements(GeneratedYangParser.RefineChoiceStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRefineCaseStatements(GeneratedYangParser.RefineCaseStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRefineCaseStatements(GeneratedYangParser.RefineCaseStatementsContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterUsesAugmentStatement(GeneratedYangParser.UsesAugmentStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitUsesAugmentStatement(GeneratedYangParser.UsesAugmentStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterAugmentStatement(GeneratedYangParser.AugmentStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitAugmentStatement(GeneratedYangParser.AugmentStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterWhenStatement(GeneratedYangParser.WhenStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitWhenStatement(GeneratedYangParser.WhenStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterRpcStatement(GeneratedYangParser.RpcStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitRpcStatement(GeneratedYangParser.RpcStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterInputStatement(GeneratedYangParser.InputStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitInputStatement(GeneratedYangParser.InputStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterOutputStatement(GeneratedYangParser.OutputStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitOutputStatement(GeneratedYangParser.OutputStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterNotificationStatement(GeneratedYangParser.NotificationStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitNotificationStatement(GeneratedYangParser.NotificationStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterDeviationStatement(GeneratedYangParser.DeviationStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitDeviationStatement(GeneratedYangParser.DeviationStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterDeviateNotSupportedStatement(GeneratedYangParser.DeviateNotSupportedStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitDeviateNotSupportedStatement(GeneratedYangParser.DeviateNotSupportedStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterDeviateAddStatement(GeneratedYangParser.DeviateAddStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitDeviateAddStatement(GeneratedYangParser.DeviateAddStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterDeviateDeleteStatement(GeneratedYangParser.DeviateDeleteStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitDeviateDeleteStatement(GeneratedYangParser.DeviateDeleteStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterDeviateReplaceStatement(GeneratedYangParser.DeviateReplaceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitDeviateReplaceStatement(GeneratedYangParser.DeviateReplaceStatementContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterString(GeneratedYangParser.StringContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitString(GeneratedYangParser.StringContext ctx) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void visitTerminal(TerminalNode terminalNode) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void visitErrorNode(ErrorNode errorNode) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void enterEveryRule(ParserRuleContext parserRuleContext) {
+        //TODO: implement the method.
+    }
+
+    @Override
+    public void exitEveryRule(ParserRuleContext parserRuleContext) {
+        //TODO: implement the method.
+    }
+}
\ No newline at end of file
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/listeners/package-info.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/listeners/package-info.java
new file mode 100644
index 0000000..66d09d1
--- /dev/null
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/listeners/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Provide call back functions for listeners based tree walk.
+ */
+package org.onosproject.yangutils.parser.impl.listeners;
\ No newline at end of file
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/ListenerError.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/ListenerError.java
new file mode 100644
index 0000000..d4c8504
--- /dev/null
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/ListenerError.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.parser.impl.parserutils;
+
+/**
+ * Error information while doing a listener's based walk is maintained in it.
+ */
+public class ListenerError {
+
+    // Maintains the state of Exception.
+    private boolean errorFlag = false;
+
+    // Maintains the reason of Exception.
+    private String errorMsg;
+
+    /**
+     * Returns error flag.
+     *
+     * @return error flag.
+     */
+    public boolean isErrorFlag() {
+        return errorFlag;
+    }
+
+    /**
+     * Returns error message.
+     *
+     * @return error msg.
+     */
+    public String getErrorMsg() {
+        return errorMsg;
+    }
+
+    /**
+     * Set error flag.
+     *
+     * @param errorFlag error existence flag
+     */
+    public void setErrorFlag(boolean errorFlag) {
+        this.errorFlag = errorFlag;
+    }
+
+    /**
+     * Set error message.
+     *
+      * @param errorMsg reason for error.
+     */
+    public void setErrorMsg(String errorMsg) {
+        this.errorMsg = errorMsg;
+    }
+}
\ No newline at end of file
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/package-info.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/package-info.java
new file mode 100644
index 0000000..b2127e9
--- /dev/null
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Provide common utils for parser implementation.
+ */
+package org.onosproject.yangutils.parser.impl.parserutils;
\ No newline at end of file
diff --git a/utils/yangutils/src/main/resources/GeneratedYang.g4 b/utils/yangutils/src/main/resources/GeneratedYang.g4
index c5dcf26..428bd91 100644
--- a/utils/yangutils/src/main/resources/GeneratedYang.g4
+++ b/utils/yangutils/src/main/resources/GeneratedYang.g4
@@ -25,8 +25,8 @@
 package org.onosproject.yangutils.parser.antlrgencode;
 }
 
-    yangfile : module_stmt
-             | submodule_stmt;
+    yangfile : moduleStatement
+             | subModuleStatement;
 
     /**
      * module-stmt         = optsep module-keyword sep identifier-arg-str
@@ -40,9 +40,9 @@
      *                       "}" optsep
      */
 
-    module_stmt : MODULE_KEYWORD IDENTIFIER LEFT_CURLY_BRACE module_body* RIGHT_CURLY_BRACE;
+    moduleStatement : MODULE_KEYWORD IDENTIFIER LEFT_CURLY_BRACE moduleBody* RIGHT_CURLY_BRACE;
 
-    module_body : module_header_statement linkage_stmts meta_stmts revision_stmts body_stmts;
+    moduleBody : moduleHeaderStatement linkageStatements metaStatements revisionStatements bodyStatements;
 
     /**
      * module-header-stmts = ;; these stmts can appear in any order
@@ -51,12 +51,12 @@
      *                        prefix-stmt stmtsep
      */
 
-    module_header_statement : yang_version_stmt? namespace_stmt prefix_stmt
-                            | yang_version_stmt? prefix_stmt namespace_stmt
-                            | namespace_stmt yang_version_stmt? prefix_stmt
-                            | namespace_stmt prefix_stmt yang_version_stmt?
-                            | prefix_stmt namespace_stmt yang_version_stmt?
-                            | prefix_stmt yang_version_stmt? namespace_stmt?
+    moduleHeaderStatement : yangVersionStatement? namespaceStatement prefixStatement
+                            | yangVersionStatement? prefixStatement namespaceStatement
+                            | namespaceStatement yangVersionStatement? prefixStatement
+                            | namespaceStatement prefixStatement yangVersionStatement?
+                            | prefixStatement namespaceStatement yangVersionStatement?
+                            | prefixStatement yangVersionStatement? namespaceStatement
                             ;
 
     /**
@@ -65,8 +65,8 @@
      *                       *(include-stmt stmtsep)
      */
 
-    linkage_stmts : (import_stmt
-                  | include_stmt)*;
+    linkageStatements : (importStatement
+                  | includeStatement)*;
 
     /**
      * meta-stmts          = ;; these stmts can appear in any order
@@ -76,34 +76,34 @@
      *                       [reference-stmt stmtsep]
      */
 
-    meta_stmts : organization_stmt? contact_stmt? description_stmt? reference_stmt?
-               | organization_stmt? contact_stmt? reference_stmt? description_stmt?
-               | organization_stmt? description_stmt? contact_stmt? reference_stmt?
-               | organization_stmt? description_stmt? reference_stmt? contact_stmt?
-               | organization_stmt? reference_stmt? contact_stmt? description_stmt?
-               | organization_stmt? reference_stmt? description_stmt? contact_stmt?
-               | contact_stmt? organization_stmt? description_stmt? reference_stmt?
-               | contact_stmt? organization_stmt? reference_stmt? description_stmt?
-               | contact_stmt? reference_stmt? organization_stmt? description_stmt?
-               | contact_stmt? reference_stmt? description_stmt? organization_stmt?
-               | contact_stmt? description_stmt? reference_stmt? organization_stmt?
-               | contact_stmt? description_stmt? organization_stmt? reference_stmt?
-               | reference_stmt? contact_stmt? organization_stmt? description_stmt?
-               | reference_stmt? contact_stmt? description_stmt? organization_stmt?
-               | reference_stmt? organization_stmt? contact_stmt? description_stmt?
-               | reference_stmt? organization_stmt? description_stmt? contact_stmt?
-               | reference_stmt? description_stmt? organization_stmt? contact_stmt?
-               | reference_stmt? description_stmt? contact_stmt? organization_stmt?
-               | description_stmt? reference_stmt? contact_stmt? organization_stmt?
-               | description_stmt? reference_stmt? organization_stmt? contact_stmt?
-               | description_stmt? contact_stmt? reference_stmt? organization_stmt?
-               | description_stmt? contact_stmt? organization_stmt? reference_stmt?
-               | description_stmt? organization_stmt? contact_stmt? reference_stmt?
-               | description_stmt? organization_stmt? reference_stmt? contact_stmt?
+    metaStatements : organizationStatement? contactStatement? descriptionStatement? referenceStatement?
+               | organizationStatement? contactStatement? referenceStatement? descriptionStatement?
+               | organizationStatement? descriptionStatement? contactStatement? referenceStatement?
+               | organizationStatement? descriptionStatement? referenceStatement? contactStatement?
+               | organizationStatement? referenceStatement? contactStatement? descriptionStatement?
+               | organizationStatement? referenceStatement? descriptionStatement? contactStatement?
+               | contactStatement? organizationStatement? descriptionStatement? referenceStatement?
+               | contactStatement? organizationStatement? referenceStatement? descriptionStatement?
+               | contactStatement? referenceStatement? organizationStatement? descriptionStatement?
+               | contactStatement? referenceStatement? descriptionStatement? organizationStatement?
+               | contactStatement? descriptionStatement? referenceStatement? organizationStatement?
+               | contactStatement? descriptionStatement? organizationStatement? referenceStatement?
+               | referenceStatement? contactStatement? organizationStatement? descriptionStatement?
+               | referenceStatement? contactStatement? descriptionStatement? organizationStatement?
+               | referenceStatement? organizationStatement? contactStatement? descriptionStatement?
+               | referenceStatement? organizationStatement? descriptionStatement? contactStatement?
+               | referenceStatement? descriptionStatement? organizationStatement? contactStatement?
+               | referenceStatement? descriptionStatement? contactStatement? organizationStatement?
+               | descriptionStatement? referenceStatement? contactStatement? organizationStatement?
+               | descriptionStatement? referenceStatement? organizationStatement? contactStatement?
+               | descriptionStatement? contactStatement? referenceStatement? organizationStatement?
+               | descriptionStatement? contactStatement? organizationStatement? referenceStatement?
+               | descriptionStatement? organizationStatement? contactStatement? referenceStatement?
+               | descriptionStatement? organizationStatement? referenceStatement? contactStatement?
                ;
 
     // revision-stmts      = *(revision-stmt stmtsep)
-    revision_stmts : revision_stmt*;
+    revisionStatements : revisionStatement*;
 
     /**
      * body-stmts          = *((extension-stmt /
@@ -118,16 +118,16 @@
      *                          deviation-stmt) stmtsep)
      */
 
-    body_stmts : (extension_stmt
-               | feature_stmt
-               | identity_stmt
-               | typedef_stmt
-               | grouping_stmt
-               | data_def_stmt
-               | augment_stmt
-               | rpc_stmt
-               | notification_stmt
-               | deviation_stmt)*
+    bodyStatements : (extensionStatement
+               | featureStatement
+               | identityStatement
+               | typedefStatement
+               | groupingStatement
+               | dataDefStatement
+               | augmentStatement
+               | rpcStatement
+               | notificationStatement
+               | deviationStatement)*
                ;
 
     /**
@@ -135,20 +135,20 @@
      *                       optsep stmtend
      */
 
-    yang_version_stmt :   YANG_VERSION_KEYWORD INTEGER STMTEND;
+    yangVersionStatement :   YANG_VERSION_KEYWORD INTEGER STMTEND;
 
 
     /**
      * namespace-stmt      = namespace-keyword sep uri-str optsep stmtend
      * For namespace validation TODO in Listener
      */
-    namespace_stmt : NAMESPACE_KEYWORD string STMTEND;
+    namespaceStatement : NAMESPACE_KEYWORD string STMTEND;
 
     /**
      * prefix-stmt         = prefix-keyword sep prefix-arg-str
      *                       optsep stmtend
      */
-    prefix_stmt : PREFIX_KEYWORD IDENTIFIER STMTEND;
+    prefixStatement : PREFIX_KEYWORD IDENTIFIER STMTEND;
 
     /**
      * import-stmt         = import-keyword sep identifier-arg-str optsep
@@ -157,14 +157,12 @@
      *                           [revision-date-stmt stmtsep]
      *                        "}"
      */
-    import_stmt : IMPORT_KEYWORD IDENTIFIER LEFT_CURLY_BRACE import_stmt_body RIGHT_CURLY_BRACE;
+    importStatement : IMPORT_KEYWORD IDENTIFIER LEFT_CURLY_BRACE importStatementBody RIGHT_CURLY_BRACE;
 
-    import_stmt_body : prefix_stmt revision_date_stmt?;
+    importStatementBody : prefixStatement revisionDateStatement?;
 
     // revision-date-stmt = revision-date-keyword sep revision-date stmtend
-    revision_date_stmt : REVISION_DATE_KEYWORD DATE_ARG STMTEND;
-
-    revision_date_stmt_body : revision_date_stmt;
+    revisionDateStatement : REVISION_DATE_KEYWORD DATE_ARG STMTEND;
 
     /**
      * include-stmt        = include-keyword sep identifier-arg-str optsep
@@ -173,22 +171,22 @@
      *                                  [revision-date-stmt stmtsep]
      *                            "}")
      */
-    include_stmt : INCLUDE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE revision_date_stmt_body? RIGHT_CURLY_BRACE);
+    includeStatement : INCLUDE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE revisionDateStatement? RIGHT_CURLY_BRACE);
 
     /**
      * organization-stmt   = organization-keyword sep string
      *                            optsep stmtend
      */
-    organization_stmt : ORGANIZATION_KEYWORD string STMTEND;
+    organizationStatement : ORGANIZATION_KEYWORD string STMTEND;
 
     // contact-stmt        = contact-keyword sep string optsep stmtend
-    contact_stmt : CONTACT_KEYWORD string STMTEND;
+    contactStatement : CONTACT_KEYWORD string STMTEND;
 
     // description-stmt    = description-keyword sep string optsep stmtend
-    description_stmt : DESCRIPTION_KEYWORD string STMTEND;
+    descriptionStatement : DESCRIPTION_KEYWORD string STMTEND;
 
     // reference-stmt      = reference-keyword sep string optsep stmtend
-    reference_stmt : REFERENCE_KEYWORD string STMTEND;
+    referenceStatement : REFERENCE_KEYWORD string STMTEND;
 
     /**
      * revision-stmt       = revision-keyword sep revision-date optsep
@@ -198,8 +196,8 @@
      *                                  [reference-stmt stmtsep]
      *                              "}")
      */
-    revision_stmt : REVISION_KEYWORD DATE_ARG (STMTEND | LEFT_CURLY_BRACE revision_stmt_body RIGHT_CURLY_BRACE);
-    revision_stmt_body : description_stmt? reference_stmt?;
+    revisionStatement : REVISION_KEYWORD DATE_ARG (STMTEND | LEFT_CURLY_BRACE revisionStatementBody RIGHT_CURLY_BRACE);
+    revisionStatementBody : descriptionStatement? referenceStatement?;
 
     /**
      * submodule-stmt      = optsep submodule-keyword sep identifier-arg-str
@@ -212,16 +210,16 @@
      *                                 body-stmts
      *                             "}" optsep
      */
-    submodule_stmt : SUBMODULE_KEYWORD IDENTIFIER LEFT_CURLY_BRACE submodule_body* RIGHT_CURLY_BRACE;
-    submodule_body : submodule_header_statement linkage_stmts meta_stmts revision_stmts body_stmts;
+    subModuleStatement : SUBMODULE_KEYWORD IDENTIFIER LEFT_CURLY_BRACE submoduleBody* RIGHT_CURLY_BRACE;
+    submoduleBody : submoduleHeaderStatement linkageStatements metaStatements revisionStatements bodyStatements;
 
     /** submodule-header-stmts =
      *                            ;; these stmts can appear in any order
      *                            [yang-version-stmt stmtsep]
      *                             belongs-to-stmt stmtsep
      */
-    submodule_header_statement : yang_version_stmt? belongs_to_stmt
-                               | belongs_to_stmt yang_version_stmt?
+    submoduleHeaderStatement : yangVersionStatement? belongstoStatement
+                               | belongstoStatement yangVersionStatement?
                               ;
 
     /**
@@ -231,8 +229,8 @@
      *                           prefix-stmt stmtsep
      *                       "}"
      */
-    belongs_to_stmt : BELONGS_TO_KEYWORD IDENTIFIER LEFT_CURLY_BRACE belongs_to_stmt_body RIGHT_CURLY_BRACE;
-    belongs_to_stmt_body : prefix_stmt;
+    belongstoStatement : BELONGS_TO_KEYWORD IDENTIFIER LEFT_CURLY_BRACE belongstoStatementBody RIGHT_CURLY_BRACE;
+    belongstoStatementBody : prefixStatement;
 
     /**
      * extension-stmt      = extension-keyword sep identifier-arg-str optsep
@@ -245,31 +243,31 @@
      *                            [reference-stmt stmtsep]
      *                        "}")
      */
-    extension_stmt : EXTENSION_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE extension_body RIGHT_CURLY_BRACE);
-    extension_body : argument_stmt? status_stmt? description_stmt? reference_stmt?
-                   | argument_stmt? status_stmt? reference_stmt? description_stmt?
-                   | argument_stmt? description_stmt? status_stmt? reference_stmt?
-                   | argument_stmt? description_stmt? reference_stmt? status_stmt?
-                   | argument_stmt? reference_stmt? description_stmt? status_stmt?
-                   | argument_stmt? reference_stmt? status_stmt? description_stmt?
-                   | status_stmt? reference_stmt? argument_stmt? description_stmt?
-                   | status_stmt? reference_stmt? description_stmt? argument_stmt?
-                   | status_stmt? description_stmt? reference_stmt? argument_stmt?
-                   | status_stmt? description_stmt? argument_stmt? reference_stmt?
-                   | status_stmt? argument_stmt? reference_stmt? description_stmt?
-                   | status_stmt? argument_stmt? description_stmt? reference_stmt?
-                   | description_stmt? argument_stmt? status_stmt? reference_stmt?
-                   | description_stmt? argument_stmt? reference_stmt? status_stmt?
-                   | description_stmt? status_stmt? argument_stmt? reference_stmt?
-                   | description_stmt? status_stmt? reference_stmt? argument_stmt?
-                   | description_stmt? reference_stmt? status_stmt? argument_stmt?
-                   | description_stmt? reference_stmt? argument_stmt? status_stmt?
-                   | reference_stmt? description_stmt? argument_stmt? status_stmt?
-                   | reference_stmt? description_stmt? status_stmt? argument_stmt?
-                   | reference_stmt? status_stmt? argument_stmt? description_stmt?
-                   | reference_stmt? status_stmt? description_stmt? argument_stmt?
-                   | reference_stmt? argument_stmt? description_stmt? status_stmt?
-                   | reference_stmt? argument_stmt? status_stmt? description_stmt?
+    extensionStatement : EXTENSION_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE extensionBody RIGHT_CURLY_BRACE);
+    extensionBody : argumentStatement? statusStatement? descriptionStatement? referenceStatement?
+                   | argumentStatement? statusStatement? referenceStatement? descriptionStatement?
+                   | argumentStatement? descriptionStatement? statusStatement? referenceStatement?
+                   | argumentStatement? descriptionStatement? referenceStatement? statusStatement?
+                   | argumentStatement? referenceStatement? descriptionStatement? statusStatement?
+                   | argumentStatement? referenceStatement? statusStatement? descriptionStatement?
+                   | statusStatement? referenceStatement? argumentStatement? descriptionStatement?
+                   | statusStatement? referenceStatement? descriptionStatement? argumentStatement?
+                   | statusStatement? descriptionStatement? referenceStatement? argumentStatement?
+                   | statusStatement? descriptionStatement? argumentStatement? referenceStatement?
+                   | statusStatement? argumentStatement? referenceStatement? descriptionStatement?
+                   | statusStatement? argumentStatement? descriptionStatement? referenceStatement?
+                   | descriptionStatement? argumentStatement? statusStatement? referenceStatement?
+                   | descriptionStatement? argumentStatement? referenceStatement? statusStatement?
+                   | descriptionStatement? statusStatement? argumentStatement? referenceStatement?
+                   | descriptionStatement? statusStatement? referenceStatement? argumentStatement?
+                   | descriptionStatement? referenceStatement? statusStatement? argumentStatement?
+                   | descriptionStatement? referenceStatement? argumentStatement? statusStatement?
+                   | referenceStatement? descriptionStatement? argumentStatement? statusStatement?
+                   | referenceStatement? descriptionStatement? statusStatement? argumentStatement?
+                   | referenceStatement? statusStatement? argumentStatement? descriptionStatement?
+                   | referenceStatement? statusStatement? descriptionStatement? argumentStatement?
+                   | referenceStatement? argumentStatement? descriptionStatement? statusStatement?
+                   | referenceStatement? argumentStatement? statusStatement? descriptionStatement?
                    ;
 
     /**
@@ -279,14 +277,14 @@
      *                            [yin-element-stmt stmtsep]
      *                        "}")
      */
-    argument_stmt : ARGUMENT_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE argument_body RIGHT_CURLY_BRACE);
-    argument_body : yin_element_stmt?;
+    argumentStatement : ARGUMENT_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE argumentBody RIGHT_CURLY_BRACE);
+    argumentBody : yinElementStatement?;
 
     /**
      * yin-element-stmt    = yin-element-keyword sep yin-element-arg-str
      *                       stmtend
      */
-    yin_element_stmt : YIN_ELEMENT_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
+    yinElementStatement : YIN_ELEMENT_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
 
     /**
      * identity-stmt       = identity-keyword sep identifier-arg-str optsep
@@ -299,32 +297,32 @@
      *                            [reference-stmt stmtsep]
      *                        "}")
      */
-    identity_stmt : IDENTITY_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE identity_body RIGHT_CURLY_BRACE);
-    identity_body : base_stmt? status_stmt? description_stmt? reference_stmt?
-                  | base_stmt? status_stmt? reference_stmt? description_stmt?
-                  | base_stmt? description_stmt? status_stmt? reference_stmt?
-                  | base_stmt? description_stmt? reference_stmt? status_stmt?
-                  | base_stmt? reference_stmt? description_stmt? status_stmt?
-                  | base_stmt? reference_stmt? status_stmt? description_stmt?
-                  | reference_stmt? base_stmt? status_stmt? description_stmt?
-                  | reference_stmt? base_stmt? description_stmt? status_stmt?
-                  | reference_stmt? status_stmt? base_stmt? description_stmt?
-                  | reference_stmt? status_stmt? description_stmt? base_stmt?
-                  | reference_stmt? description_stmt? status_stmt? base_stmt?
-                  | reference_stmt? description_stmt? base_stmt? status_stmt?
-                  | description_stmt? reference_stmt? status_stmt? base_stmt?
-                  | description_stmt? reference_stmt? status_stmt? base_stmt?
-                  | description_stmt? reference_stmt? base_stmt? status_stmt?
-                  | description_stmt? status_stmt? base_stmt? reference_stmt?
-                  | description_stmt? status_stmt? reference_stmt? base_stmt?
-                  | description_stmt? base_stmt? reference_stmt? status_stmt?
-                  | description_stmt? base_stmt? status_stmt? reference_stmt?
-                  | status_stmt? base_stmt? description_stmt? reference_stmt?
-                  | status_stmt? base_stmt? reference_stmt? description_stmt?
-                  | status_stmt? description_stmt? base_stmt? reference_stmt?
-                  | status_stmt? description_stmt? reference_stmt? base_stmt?
-                  | status_stmt? reference_stmt? description_stmt? base_stmt?
-                  | status_stmt? reference_stmt? base_stmt? description_stmt?
+    identityStatement : IDENTITY_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE identityBody RIGHT_CURLY_BRACE);
+    identityBody : baseStatement? statusStatement? descriptionStatement? referenceStatement?
+                  | baseStatement? statusStatement? referenceStatement? descriptionStatement?
+                  | baseStatement? descriptionStatement? statusStatement? referenceStatement?
+                  | baseStatement? descriptionStatement? referenceStatement? statusStatement?
+                  | baseStatement? referenceStatement? descriptionStatement? statusStatement?
+                  | baseStatement? referenceStatement? statusStatement? descriptionStatement?
+                  | referenceStatement? baseStatement? statusStatement? descriptionStatement?
+                  | referenceStatement? baseStatement? descriptionStatement? statusStatement?
+                  | referenceStatement? statusStatement? baseStatement? descriptionStatement?
+                  | referenceStatement? statusStatement? descriptionStatement? baseStatement?
+                  | referenceStatement? descriptionStatement? statusStatement? baseStatement?
+                  | referenceStatement? descriptionStatement? baseStatement? statusStatement?
+                  | descriptionStatement? referenceStatement? statusStatement? baseStatement?
+                  | descriptionStatement? referenceStatement? statusStatement? baseStatement?
+                  | descriptionStatement? referenceStatement? baseStatement? statusStatement?
+                  | descriptionStatement? statusStatement? baseStatement? referenceStatement?
+                  | descriptionStatement? statusStatement? referenceStatement? baseStatement?
+                  | descriptionStatement? baseStatement? referenceStatement? statusStatement?
+                  | descriptionStatement? baseStatement? statusStatement? referenceStatement?
+                  | statusStatement? baseStatement? descriptionStatement? referenceStatement?
+                  | statusStatement? baseStatement? referenceStatement? descriptionStatement?
+                  | statusStatement? descriptionStatement? baseStatement? referenceStatement?
+                  | statusStatement? descriptionStatement? referenceStatement? baseStatement?
+                  | statusStatement? referenceStatement? descriptionStatement? baseStatement?
+                  | statusStatement? referenceStatement? baseStatement? descriptionStatement?
                   ;
 
     /**
@@ -332,7 +330,7 @@
      *                          optsep stmtend*
      * identifier-ref-arg  = [prefix ":"] identifier
      */
-    base_stmt : BASE_KEYWORD string STMTEND;
+    baseStatement : BASE_KEYWORD string STMTEND;
 
     /**
      *  feature-stmt        = feature-keyword sep identifier-arg-str optsep
@@ -345,31 +343,31 @@
      *                             [reference-stmt stmtsep]
      *                         "}")
      */
-    feature_stmt : FEATURE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE feature_body RIGHT_CURLY_BRACE);
-    feature_body : if_feature_stmt* status_stmt? description_stmt? reference_stmt?
-                 | if_feature_stmt* status_stmt? reference_stmt? description_stmt?
-                 | if_feature_stmt* description_stmt? status_stmt? reference_stmt?
-                 | if_feature_stmt* description_stmt? reference_stmt? status_stmt?
-                 | if_feature_stmt* reference_stmt? status_stmt? description_stmt?
-                 | if_feature_stmt* reference_stmt? description_stmt? status_stmt?
-                 | status_stmt? if_feature_stmt* description_stmt? reference_stmt?
-                 | status_stmt? if_feature_stmt* reference_stmt? description_stmt?
-                 | status_stmt? description_stmt? if_feature_stmt* reference_stmt?
-                 | status_stmt? description_stmt? reference_stmt? if_feature_stmt*
-                 | status_stmt? reference_stmt? if_feature_stmt* description_stmt?
-                 | status_stmt? reference_stmt? description_stmt? if_feature_stmt*
-                 | description_stmt? if_feature_stmt* status_stmt? reference_stmt?
-                 | description_stmt? if_feature_stmt* reference_stmt? status_stmt?
-                 | description_stmt? status_stmt? if_feature_stmt* reference_stmt?
-                 | description_stmt? status_stmt? reference_stmt? if_feature_stmt*
-                 | description_stmt? reference_stmt* status_stmt? if_feature_stmt*
-                 | description_stmt? reference_stmt* if_feature_stmt? status_stmt?
-                 | reference_stmt? if_feature_stmt* status_stmt? description_stmt?
-                 | reference_stmt? if_feature_stmt* description_stmt? status_stmt?
-                 | reference_stmt? description_stmt? status_stmt? if_feature_stmt*
-                 | reference_stmt? description_stmt? if_feature_stmt* status_stmt?
-                 | reference_stmt? status_stmt? description_stmt? if_feature_stmt*
-                 | reference_stmt? status_stmt? if_feature_stmt* description_stmt?
+    featureStatement : FEATURE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE featureBody RIGHT_CURLY_BRACE);
+    featureBody : ifFeatureStatement* statusStatement? descriptionStatement? referenceStatement?
+                 | ifFeatureStatement* statusStatement? referenceStatement? descriptionStatement?
+                 | ifFeatureStatement* descriptionStatement? statusStatement? referenceStatement?
+                 | ifFeatureStatement* descriptionStatement? referenceStatement? statusStatement?
+                 | ifFeatureStatement* referenceStatement? statusStatement? descriptionStatement?
+                 | ifFeatureStatement* referenceStatement? descriptionStatement? statusStatement?
+                 | statusStatement? ifFeatureStatement* descriptionStatement? referenceStatement?
+                 | statusStatement? ifFeatureStatement* referenceStatement? descriptionStatement?
+                 | statusStatement? descriptionStatement? ifFeatureStatement* referenceStatement?
+                 | statusStatement? descriptionStatement? referenceStatement? ifFeatureStatement*
+                 | statusStatement? referenceStatement? ifFeatureStatement* descriptionStatement?
+                 | statusStatement? referenceStatement? descriptionStatement? ifFeatureStatement*
+                 | descriptionStatement? ifFeatureStatement* statusStatement? referenceStatement?
+                 | descriptionStatement? ifFeatureStatement* referenceStatement? statusStatement?
+                 | descriptionStatement? statusStatement? ifFeatureStatement* referenceStatement?
+                 | descriptionStatement? statusStatement? referenceStatement? ifFeatureStatement*
+                 | descriptionStatement? referenceStatement* statusStatement? ifFeatureStatement*
+                 | descriptionStatement? referenceStatement* ifFeatureStatement? statusStatement?
+                 | referenceStatement? ifFeatureStatement* statusStatement? descriptionStatement?
+                 | referenceStatement? ifFeatureStatement* descriptionStatement? statusStatement?
+                 | referenceStatement? descriptionStatement? statusStatement? ifFeatureStatement*
+                 | referenceStatement? descriptionStatement? ifFeatureStatement* statusStatement?
+                 | referenceStatement? statusStatement? descriptionStatement? ifFeatureStatement*
+                 | referenceStatement? statusStatement? ifFeatureStatement* descriptionStatement?
                  ;
 
     /**
@@ -381,23 +379,23 @@
      *                       anyxml-stmt /
      *                       uses-stmt
      */
-    data_def_stmt : container_stmt
-                    | leaf_stmt
-                    | leaf_list_stmt
-                    | list_stmt
-                    | choice_stmt
-                    | uses_stmt;
+    dataDefStatement : containerStatement
+                    | leafStatement
+                    | leafListStatement
+                    | listStatement
+                    | choiceStatement
+                    | usesStatement;
 
     /**
      *  if-feature-stmt     = if-feature-keyword sep identifier-ref-arg-str
      *                        optsep stmtend
      */
-    if_feature_stmt : IF_FEATURE_KEYWORD string STMTEND;
+    ifFeatureStatement : IF_FEATURE_KEYWORD string STMTEND;
 
     /**
     *    units-stmt          = units-keyword sep string optsep stmtend
     */
-    units_stmt : UNITS_KEYWORD string STMTEND;
+    unitsStatement : UNITS_KEYWORD string STMTEND;
 
     /**
      *   typedef-stmt        = typedef-keyword sep identifier-arg-str optsep
@@ -412,8 +410,8 @@
      *                           "}"
      * TODO : 0..1 occurance to be validated in listener
      */
-    typedef_stmt : TYPEDEF_KEYWORD IDENTIFIER LEFT_CURLY_BRACE
-                   (type_stmt | units_stmt | default_stmt | status_stmt | description_stmt | reference_stmt)*
+    typedefStatement : TYPEDEF_KEYWORD IDENTIFIER LEFT_CURLY_BRACE
+                   (typeStatement | unitsStatement | defaultStatement | statusStatement | descriptionStatement | referenceStatement)*
                    RIGHT_CURLY_BRACE;
 
     /**
@@ -423,7 +421,7 @@
      *                            type-body-stmts
      *                         "}")
      */
-    type_stmt : TYPE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE type_body_stmts RIGHT_CURLY_BRACE);
+    typeStatement : TYPE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE typeBodyStatements RIGHT_CURLY_BRACE);
 
     /**
      *  type-body-stmts     = numerical-restrictions /
@@ -437,14 +435,14 @@
      *                        union-specification
      * TODO : decimal64-specification to be added
      */
-    type_body_stmts : numerical_restrictions | string_restrictions | enum_specification
-                    | leafref_specification | identityref_specification | instance_identifier_specification
-                    | bits_specification | union_specification;
+    typeBodyStatements : numericalRestrictions | stringRestrictions | enumSpecification
+                    | leafrefSpecification | identityrefSpecification | instanceIdentifierSpecification
+                    | bitsSpecification | unionSpecification;
 
     /**
      *  numerical-restrictions = range-stmt stmtsep
      */
-    numerical_restrictions : range_stmt;
+    numericalRestrictions : rangeStatement;
 
     /**
      *  range-stmt          = range-keyword sep range-arg-str optsep
@@ -457,32 +455,32 @@
      *                             [reference-stmt stmtsep]
      *                          "}")
      */
-    range_stmt : RANGE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE);
+    rangeStatement : RANGE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE commonStatements RIGHT_CURLY_BRACE);
 
-    common_stmts : error_message_stmt? error_app_tag_stmt? description_stmt? reference_stmt?
-                 | error_message_stmt? error_app_tag_stmt? reference_stmt? description_stmt?
-                 | error_message_stmt? description_stmt? error_app_tag_stmt? reference_stmt?
-                 | error_message_stmt? description_stmt? reference_stmt? error_app_tag_stmt?
-                 | error_message_stmt? reference_stmt? error_app_tag_stmt? description_stmt?
-                 | error_message_stmt? reference_stmt? description_stmt? error_app_tag_stmt?
-                 | error_app_tag_stmt? error_message_stmt? description_stmt? reference_stmt?
-                 | error_app_tag_stmt? error_message_stmt? reference_stmt? description_stmt?
-                 | error_app_tag_stmt? description_stmt? description_stmt? error_message_stmt?
-                 | error_app_tag_stmt? description_stmt? error_message_stmt? description_stmt?
-                 | error_app_tag_stmt? reference_stmt? error_message_stmt? description_stmt?
-                 | error_app_tag_stmt? reference_stmt? description_stmt? error_message_stmt?
-                 | description_stmt? error_message_stmt? error_app_tag_stmt? reference_stmt?
-                 | description_stmt? error_message_stmt? reference_stmt? error_app_tag_stmt?
-                 | description_stmt? error_app_tag_stmt? error_message_stmt? reference_stmt?
-                 | description_stmt? error_app_tag_stmt? reference_stmt? error_message_stmt?
-                 | description_stmt? reference_stmt? error_message_stmt? error_app_tag_stmt?
-                 | description_stmt? reference_stmt? error_app_tag_stmt? error_message_stmt?
-                 | reference_stmt? error_message_stmt? description_stmt? error_app_tag_stmt?
-                 | reference_stmt? error_message_stmt? error_app_tag_stmt? description_stmt?
-                 | reference_stmt? error_app_tag_stmt? description_stmt? error_message_stmt?
-                 | reference_stmt? error_app_tag_stmt? error_message_stmt? description_stmt?
-                 | reference_stmt? description_stmt? error_message_stmt? error_app_tag_stmt?
-                 | reference_stmt? description_stmt? error_app_tag_stmt? error_message_stmt?
+    commonStatements : errorMessageStatement? errorAppTagStatement? descriptionStatement? referenceStatement?
+                 | errorMessageStatement? errorAppTagStatement? referenceStatement? descriptionStatement?
+                 | errorMessageStatement? descriptionStatement? errorAppTagStatement? referenceStatement?
+                 | errorMessageStatement? descriptionStatement? referenceStatement? errorAppTagStatement?
+                 | errorMessageStatement? referenceStatement? errorAppTagStatement? descriptionStatement?
+                 | errorMessageStatement? referenceStatement? descriptionStatement? errorAppTagStatement?
+                 | errorAppTagStatement? errorMessageStatement? descriptionStatement? referenceStatement?
+                 | errorAppTagStatement? errorMessageStatement? referenceStatement? descriptionStatement?
+                 | errorAppTagStatement? descriptionStatement? descriptionStatement? errorMessageStatement?
+                 | errorAppTagStatement? descriptionStatement? errorMessageStatement? descriptionStatement?
+                 | errorAppTagStatement? referenceStatement? errorMessageStatement? descriptionStatement?
+                 | errorAppTagStatement? referenceStatement? descriptionStatement? errorMessageStatement?
+                 | descriptionStatement? errorMessageStatement? errorAppTagStatement? referenceStatement?
+                 | descriptionStatement? errorMessageStatement? referenceStatement? errorAppTagStatement?
+                 | descriptionStatement? errorAppTagStatement? errorMessageStatement? referenceStatement?
+                 | descriptionStatement? errorAppTagStatement? referenceStatement? errorMessageStatement?
+                 | descriptionStatement? referenceStatement? errorMessageStatement? errorAppTagStatement?
+                 | descriptionStatement? referenceStatement? errorAppTagStatement? errorMessageStatement?
+                 | referenceStatement? errorMessageStatement? descriptionStatement? errorAppTagStatement?
+                 | referenceStatement? errorMessageStatement? errorAppTagStatement? descriptionStatement?
+                 | referenceStatement? errorAppTagStatement? descriptionStatement? errorMessageStatement?
+                 | referenceStatement? errorAppTagStatement? errorMessageStatement? descriptionStatement?
+                 | referenceStatement? descriptionStatement? errorMessageStatement? errorAppTagStatement?
+                 | referenceStatement? descriptionStatement? errorAppTagStatement? errorMessageStatement?
                  ;
 
     /**
@@ -490,7 +488,7 @@
      *                        [length-stmt stmtsep]
      *                        *(pattern-stmt stmtsep)
      */
-    string_restrictions : ((length_stmt)? (pattern_stmt)*) | ((pattern_stmt)* (length_stmt)?);
+    stringRestrictions : ((lengthStatement)? (patternStatement)*) | ((patternStatement)* (lengthStatement)?);
 
     /**
      *  length-stmt         = length-keyword sep length-arg-str optsep
@@ -503,8 +501,8 @@
      *                             [reference-stmt stmtsep]
      *                          "}")
      */
-    length_stmt : LENGTH_KEYWORD string
-                  (STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE);
+    lengthStatement : LENGTH_KEYWORD string
+                  (STMTEND | LEFT_CURLY_BRACE commonStatements RIGHT_CURLY_BRACE);
 
     /**
      *  pattern-stmt        = pattern-keyword sep string optsep
@@ -517,17 +515,17 @@
      *                             [reference-stmt stmtsep]
      *                          "}")
      */
-    pattern_stmt : PATTERN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE);
+    patternStatement : PATTERN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE commonStatements RIGHT_CURLY_BRACE);
 
     /**
      *  default-stmt        = default-keyword sep string stmtend
      */
-    default_stmt : DEFAULT_KEYWORD string STMTEND;
+    defaultStatement : DEFAULT_KEYWORD string STMTEND;
 
     /**
      *  enum-specification  = 1*(enum-stmt stmtsep)
      */
-    enum_specification : enum_stmt+;
+    enumSpecification : enumStatement+;
 
     /**
      *  enum-stmt           = enum-keyword sep string optsep
@@ -540,32 +538,32 @@
      *                             [reference-stmt stmtsep]
      *                          "}")
      */
-    enum_stmt : ENUM_KEYWORD string (STMTEND | LEFT_CURLY_BRACE enum_stmt_body RIGHT_CURLY_BRACE);
+    enumStatement : ENUM_KEYWORD string (STMTEND | LEFT_CURLY_BRACE enumStatementBody RIGHT_CURLY_BRACE);
 
-    enum_stmt_body : value_stmt? status_stmt? description_stmt? reference_stmt?
-                   | value_stmt? status_stmt? reference_stmt? description_stmt?
-                   | value_stmt? description_stmt? status_stmt? reference_stmt?
-                   | value_stmt? description_stmt? reference_stmt? status_stmt?
-                   | value_stmt? reference_stmt? status_stmt? description_stmt?
-                   | value_stmt? reference_stmt? description_stmt? status_stmt?
-                   | status_stmt? value_stmt? description_stmt? reference_stmt?
-                   | status_stmt? value_stmt? reference_stmt? description_stmt?
-                   | status_stmt? description_stmt? description_stmt? value_stmt?
-                   | status_stmt? description_stmt? value_stmt? description_stmt?
-                   | status_stmt? reference_stmt? value_stmt? description_stmt?
-                   | status_stmt? reference_stmt? description_stmt? value_stmt?
-                   | description_stmt? value_stmt? status_stmt? reference_stmt?
-                   | description_stmt? value_stmt? reference_stmt? status_stmt?
-                   | description_stmt? status_stmt? value_stmt? reference_stmt?
-                   | description_stmt? status_stmt? reference_stmt? value_stmt?
-                   | description_stmt? reference_stmt? value_stmt? status_stmt?
-                   | description_stmt? reference_stmt? status_stmt? value_stmt?
-                   | reference_stmt? value_stmt? description_stmt? status_stmt?
-                   | reference_stmt? value_stmt? status_stmt? description_stmt?
-                   | reference_stmt? status_stmt? description_stmt? value_stmt?
-                   | reference_stmt? status_stmt? value_stmt? description_stmt?
-                   | reference_stmt? description_stmt? value_stmt? status_stmt?
-                   | reference_stmt? description_stmt? status_stmt? value_stmt?
+    enumStatementBody : valueStatement? statusStatement? descriptionStatement? referenceStatement?
+                   | valueStatement? statusStatement? referenceStatement? descriptionStatement?
+                   | valueStatement? descriptionStatement? statusStatement? referenceStatement?
+                   | valueStatement? descriptionStatement? referenceStatement? statusStatement?
+                   | valueStatement? referenceStatement? statusStatement? descriptionStatement?
+                   | valueStatement? referenceStatement? descriptionStatement? statusStatement?
+                   | statusStatement? valueStatement? descriptionStatement? referenceStatement?
+                   | statusStatement? valueStatement? referenceStatement? descriptionStatement?
+                   | statusStatement? descriptionStatement? descriptionStatement? valueStatement?
+                   | statusStatement? descriptionStatement? valueStatement? descriptionStatement?
+                   | statusStatement? referenceStatement? valueStatement? descriptionStatement?
+                   | statusStatement? referenceStatement? descriptionStatement? valueStatement?
+                   | descriptionStatement? valueStatement? statusStatement? referenceStatement?
+                   | descriptionStatement? valueStatement? referenceStatement? statusStatement?
+                   | descriptionStatement? statusStatement? valueStatement? referenceStatement?
+                   | descriptionStatement? statusStatement? referenceStatement? valueStatement?
+                   | descriptionStatement? referenceStatement? valueStatement? statusStatement?
+                   | descriptionStatement? referenceStatement? statusStatement? valueStatement?
+                   | referenceStatement? valueStatement? descriptionStatement? statusStatement?
+                   | referenceStatement? valueStatement? statusStatement? descriptionStatement?
+                   | referenceStatement? statusStatement? descriptionStatement? valueStatement?
+                   | referenceStatement? statusStatement? valueStatement? descriptionStatement?
+                   | referenceStatement? descriptionStatement? valueStatement? statusStatement?
+                   | referenceStatement? descriptionStatement? statusStatement? valueStatement?
                    ;
 
     /**
@@ -574,12 +572,12 @@
      *                        path-stmt stmtsep
      *                        [require-instance-stmt stmtsep]
      */
-    leafref_specification : (path_stmt (require_instance_stmt)?) | ((require_instance_stmt)? path_stmt);
+    leafrefSpecification : (pathStatement (requireInstanceStatement)?) | ((requireInstanceStatement)? pathStatement);
 
     /**
      *  path-stmt           = path-keyword sep path-arg-str stmtend
      */
-    path_stmt : PATH_KEYWORD string STMTEND;
+    pathStatement : PATH_KEYWORD string STMTEND;
 
     /**
      *  require-instance-stmt = require-instance-keyword sep
@@ -588,29 +586,29 @@
      *                             require-instance-arg >
      *  require-instance-arg = true-keyword / false-keyword
      */
-    require_instance_stmt : REQUIRE_INSTANCE_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
+    requireInstanceStatement : REQUIRE_INSTANCE_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
 
     /**
      *  instance-identifier-specification =
      *                        [require-instance-stmt stmtsep]
      */
-    instance_identifier_specification : require_instance_stmt?;
+    instanceIdentifierSpecification : requireInstanceStatement?;
 
     /**
      * identityref-specification =
      *                        base-stmt stmtsep
      */
-    identityref_specification : base_stmt;
+    identityrefSpecification : baseStatement;
 
     /**
      *  union-specification = 1*(type-stmt stmtsep)
      */
-    union_specification : type_stmt+;
+    unionSpecification : typeStatement+;
 
     /**
      *  bits-specification  = 1*(bit-stmt stmtsep)
      */
-    bits_specification : bit_stmt+;
+    bitsSpecification : bitStatement+;
 
     /**
      * bit-stmt            = bit-keyword sep identifier-arg-str optsep
@@ -624,32 +622,32 @@
      *                          "}"
      *                        "}")
      */
-    bit_stmt : BIT_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE bit_body_stmt RIGHT_CURLY_BRACE);
+    bitStatement : BIT_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE bitBodyStatement RIGHT_CURLY_BRACE);
 
-    bit_body_stmt : position_stmt? status_stmt? description_stmt? reference_stmt?
-                  | position_stmt? status_stmt? reference_stmt? description_stmt?
-                  | position_stmt? description_stmt? status_stmt? reference_stmt?
-                  | position_stmt? description_stmt? reference_stmt? status_stmt?
-                  | position_stmt? reference_stmt? status_stmt? description_stmt?
-                  | position_stmt? reference_stmt? description_stmt? status_stmt?
-                  | status_stmt? position_stmt? description_stmt? reference_stmt?
-                  | status_stmt? position_stmt? reference_stmt? description_stmt?
-                  | status_stmt? description_stmt? description_stmt? position_stmt?
-                  | status_stmt? description_stmt? position_stmt? description_stmt?
-                  | status_stmt? reference_stmt? position_stmt? description_stmt?
-                  | status_stmt? reference_stmt? description_stmt? position_stmt?
-                  | description_stmt? position_stmt? status_stmt? reference_stmt?
-                  | description_stmt? position_stmt? reference_stmt? status_stmt?
-                  | description_stmt? status_stmt? position_stmt? reference_stmt?
-                  | description_stmt? status_stmt? reference_stmt? position_stmt?
-                  | description_stmt? reference_stmt? position_stmt? status_stmt?
-                  | description_stmt? reference_stmt? status_stmt? position_stmt?
-                  | reference_stmt? position_stmt? description_stmt? status_stmt?
-                  | reference_stmt? position_stmt? status_stmt? description_stmt?
-                  | reference_stmt? status_stmt? description_stmt? position_stmt?
-                  | reference_stmt? status_stmt? position_stmt? description_stmt?
-                  | reference_stmt? description_stmt? position_stmt? status_stmt?
-                  | reference_stmt? description_stmt? status_stmt? position_stmt?
+    bitBodyStatement : positionStatement? statusStatement? descriptionStatement? referenceStatement?
+                  | positionStatement? statusStatement? referenceStatement? descriptionStatement?
+                  | positionStatement? descriptionStatement? statusStatement? referenceStatement?
+                  | positionStatement? descriptionStatement? referenceStatement? statusStatement?
+                  | positionStatement? referenceStatement? statusStatement? descriptionStatement?
+                  | positionStatement? referenceStatement? descriptionStatement? statusStatement?
+                  | statusStatement? positionStatement? descriptionStatement? referenceStatement?
+                  | statusStatement? positionStatement? referenceStatement? descriptionStatement?
+                  | statusStatement? descriptionStatement? descriptionStatement? positionStatement?
+                  | statusStatement? descriptionStatement? positionStatement? descriptionStatement?
+                  | statusStatement? referenceStatement? positionStatement? descriptionStatement?
+                  | statusStatement? referenceStatement? descriptionStatement? positionStatement?
+                  | descriptionStatement? positionStatement? statusStatement? referenceStatement?
+                  | descriptionStatement? positionStatement? referenceStatement? statusStatement?
+                  | descriptionStatement? statusStatement? positionStatement? referenceStatement?
+                  | descriptionStatement? statusStatement? referenceStatement? positionStatement?
+                  | descriptionStatement? referenceStatement? positionStatement? statusStatement?
+                  | descriptionStatement? referenceStatement? statusStatement? positionStatement?
+                  | referenceStatement? positionStatement? descriptionStatement? statusStatement?
+                  | referenceStatement? positionStatement? statusStatement? descriptionStatement?
+                  | referenceStatement? statusStatement? descriptionStatement? positionStatement?
+                  | referenceStatement? statusStatement? positionStatement? descriptionStatement?
+                  | referenceStatement? descriptionStatement? positionStatement? statusStatement?
+                  | referenceStatement? descriptionStatement? statusStatement? positionStatement?
                   ;
 
     /**
@@ -659,7 +657,7 @@
      *                              position-value-arg >
      *  position-value-arg  = non-negative-integer-value
      */
-    position_stmt : POSITION_KEYWORD INTEGER STMTEND;
+    positionStatement : POSITION_KEYWORD INTEGER STMTEND;
 
     /**
      *  status-stmt         = status-keyword sep status-arg-str stmtend
@@ -669,7 +667,7 @@
      *                        obsolete-keyword /
      *                        deprecated-keyword
      */
-    status_stmt : STATUS_KEYWORD (CURRENT_KEYWORD | OBSOLETE_KEYWORD | DEPRECATED_KEYWORD) STMTEND;
+    statusStatement : STATUS_KEYWORD (CURRENT_KEYWORD | OBSOLETE_KEYWORD | DEPRECATED_KEYWORD) STMTEND;
 
     /**
      *  config-stmt         = config-keyword sep
@@ -678,34 +676,34 @@
      *                          config-arg >
      *  config-arg          = true-keyword / false-keyword
      */
-    config_stmt : CONFIG_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
+    configStatement : CONFIG_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
 
     /**
      *  mandatory-stmt      = mandatory-keyword sep
      *                        mandatory-arg-str stmtend
-     * 
+     *
      *  mandatory-arg-str   = < a string that matches the rule
      *                          mandatory-arg >
-     * 
-     *  mandatory-arg       = true-keyword / false-keyword 
+     *
+     *  mandatory-arg       = true-keyword / false-keyword
      */
-    mandatory_stmt : MANDATORY_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
+    mandatoryStatement : MANDATORY_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
 
     /**
      *  presence-stmt       = presence-keyword sep string stmtend
      */
-    presence_stmt : PRESENCE_KEYWORD string STMTEND;
+    presenceStatement : PRESENCE_KEYWORD string STMTEND;
 
     /**
      *  ordered-by-stmt     = ordered-by-keyword sep
      *                        ordered-by-arg-str stmtend
-     * 
+     *
      *  ordered-by-arg-str  = < a string that matches the rule
      *                          ordered-by-arg >
-     * 
+     *
      *  ordered-by-arg      = user-keyword / system-keyword
      */
-    ordered_by_stmt : ORDERED_BY_KEYWORD (USER_KEYWORD | SYSTEM_KEYWORD) STMTEND;
+    orderedByStatement : ORDERED_BY_KEYWORD (USER_KEYWORD | SYSTEM_KEYWORD) STMTEND;
 
     /**
      *  must-stmt           = must-keyword sep string optsep
@@ -718,17 +716,17 @@
      *                             [reference-stmt stmtsep]
      *                          "}")
      */
-    must_stmt : MUST_KEYWORD string (STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE);
+    mustStatement : MUST_KEYWORD string (STMTEND | LEFT_CURLY_BRACE commonStatements RIGHT_CURLY_BRACE);
 
     /**
      *   error-message-stmt  = error-message-keyword sep string stmtend
      */
-    error_message_stmt : ERROR_MESSAGE_KEYWORD string STMTEND;
+    errorMessageStatement : ERROR_MESSAGE_KEYWORD string STMTEND;
 
     /**
      *  error-app-tag-stmt  = error-app-tag-keyword sep string stmtend
      */
-    error_app_tag_stmt : ERROR_APP_TAG_KEYWORD string STMTEND;
+    errorAppTagStatement : ERROR_APP_TAG_KEYWORD string STMTEND;
 
     /**
      *  min-elements-stmt   = min-elements-keyword sep
@@ -737,27 +735,27 @@
      *                          min-value-arg >
      *  min-value-arg       = non-negative-integer-value
      */
-    min_elements_stmt : MIN_ELEMENTS_KEYWORD INTEGER STMTEND;
+    minElementsStatement : MIN_ELEMENTS_KEYWORD INTEGER STMTEND;
 
     /**
      *  max-elements-stmt   = max-elements-keyword sep
      *                        max-value-arg-str stmtend
      *  max-value-arg-str   = < a string that matches the rule
      *                          max-value-arg >
-     
+
      */
-    max_elements_stmt :  MAX_ELEMENTS_KEYWORD max_value_arg STMTEND;
+    maxElementsStatement :  MAX_ELEMENTS_KEYWORD maxValueArgument STMTEND;
 
     /**
      *  max-value-arg       = unbounded-keyword /
      *                        positive-integer-value
      */
-    max_value_arg : UNBOUNDED_KEYWORD | INTEGER;
+    maxValueArgument : UNBOUNDED_KEYWORD | INTEGER;
 
     /**
      *  value-stmt          = value-keyword sep integer-value stmtend
      */
-    value_stmt : VALUE_KEYWORD ((MINUS INTEGER) | INTEGER) STMTEND;
+    valueStatement : VALUE_KEYWORD ((MINUS INTEGER) | INTEGER) STMTEND;
 
     /**
      *   grouping-stmt       = grouping-keyword sep identifier-arg-str optsep
@@ -773,9 +771,9 @@
      *                         "}")
      * TODO : 0..1 occurance to be checked in listener
      */
-    grouping_stmt : GROUPING_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE
-                      (status_stmt | description_stmt | reference_stmt | typedef_stmt | grouping_stmt
-                       | data_def_stmt)* RIGHT_CURLY_BRACE);
+    groupingStatement : GROUPING_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE
+                      (statusStatement | descriptionStatement | referenceStatement | typedefStatement | groupingStatement
+                       | dataDefStatement)* RIGHT_CURLY_BRACE);
 
     /**
      *  container-stmt      = container-keyword sep identifier-arg-str optsep
@@ -796,10 +794,10 @@
      *                         "}")
      * TODO : 0..1 occurance to be checked in listener
      */
-    container_stmt : CONTAINER_KEYWORD IDENTIFIER
-                     (STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | must_stmt | presence_stmt | config_stmt
-                     | status_stmt | description_stmt | reference_stmt | typedef_stmt | grouping_stmt
-                     | data_def_stmt)* RIGHT_CURLY_BRACE);
+    containerStatement : CONTAINER_KEYWORD IDENTIFIER
+                     (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | mustStatement | presenceStatement | configStatement
+                     | statusStatement | descriptionStatement | referenceStatement | typedefStatement | groupingStatement
+                     | dataDefStatement)* RIGHT_CURLY_BRACE);
 
     /**
      *  leaf-stmt           = leaf-keyword sep identifier-arg-str optsep
@@ -819,9 +817,9 @@
      *                         "}"
      * TODO : 0..1 occurance to be checked in listener
      */
-    leaf_stmt : LEAF_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | type_stmt | units_stmt
-              | must_stmt | default_stmt | config_stmt | mandatory_stmt | status_stmt  | description_stmt
-              | reference_stmt)* RIGHT_CURLY_BRACE;
+    leafStatement : LEAF_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | typeStatement | unitsStatement
+              | mustStatement | defaultStatement | configStatement | mandatoryStatement | statusStatement  | descriptionStatement
+              | referenceStatement)* RIGHT_CURLY_BRACE;
 
     /**
      *  leaf-list-stmt      = leaf-list-keyword sep identifier-arg-str optsep
@@ -842,9 +840,9 @@
      *                         "}"
      * TODO : 0..1 occurance to be checked in listener
      */
-    leaf_list_stmt : LEAF_LIST_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | type_stmt
-                     | units_stmt | must_stmt | config_stmt | min_elements_stmt | max_elements_stmt | ordered_by_stmt
-                     | status_stmt | description_stmt | reference_stmt)* RIGHT_CURLY_BRACE;
+    leafListStatement : LEAF_LIST_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | typeStatement
+                     | unitsStatement | mustStatement | configStatement | minElementsStatement | maxElementsStatement | orderedByStatement
+                     | statusStatement | descriptionStatement | referenceStatement)* RIGHT_CURLY_BRACE;
 
     /**
      *  list-stmt           = list-keyword sep identifier-arg-str optsep
@@ -868,19 +866,19 @@
      *                         "}"
      * TODO : 0..1 occurance to be checked in listener
      */
-    list_stmt : LIST_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | must_stmt | key_stmt
-              | unique_stmt | config_stmt | min_elements_stmt | max_elements_stmt | ordered_by_stmt | status_stmt
-              | description_stmt | reference_stmt | typedef_stmt | grouping_stmt| data_def_stmt)* RIGHT_CURLY_BRACE;
+    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;
 
     /**
      *  key-stmt            = key-keyword sep key-arg-str stmtend
      */
-    key_stmt : KEY_KEYWORD string STMTEND;
+    keyStatement : KEY_KEYWORD string STMTEND;
 
     /**
      *  unique-stmt         = unique-keyword sep unique-arg-str stmtend
      */
-    unique_stmt: UNIQUE_KEYWORD string STMTEND;
+    uniqueStatement: UNIQUE_KEYWORD string STMTEND;
 
     /**
      *  choice-stmt         = choice-keyword sep identifier-arg-str optsep
@@ -899,9 +897,9 @@
      *                         "}")
      * TODO : 0..1 occurance to be checked in listener
      */
-    choice_stmt : CHOICE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | default_stmt
-                  | config_stmt | mandatory_stmt | status_stmt | description_stmt | reference_stmt | short_case_stmt
-                  | case_stmt)* RIGHT_CURLY_BRACE);
+    choiceStatement : CHOICE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | defaultStatement
+                  | configStatement | mandatoryStatement | statusStatement | descriptionStatement | referenceStatement | shortCaseStatement
+                  | caseStatement)* RIGHT_CURLY_BRACE);
 
     /**
      *  short-case-stmt     = container-stmt /
@@ -910,7 +908,7 @@
      *                        list-stmt /
      *                        anyxml-stmt
      */
-    short_case_stmt : container_stmt | leaf_stmt | leaf_list_stmt | list_stmt;
+    shortCaseStatement : containerStatement | leafStatement | leafListStatement | listStatement;
 
     /**
      *  case-stmt           = case-keyword sep identifier-arg-str optsep
@@ -926,8 +924,8 @@
      *                         "}")
      * TODO : 0..1 occurance to be checked in listener
      */
-    case_stmt : CASE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt
-              | description_stmt | reference_stmt | data_def_stmt)* RIGHT_CURLY_BRACE);
+    caseStatement : CASE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | statusStatement
+              | descriptionStatement | referenceStatement | dataDefStatement)* RIGHT_CURLY_BRACE);
 
     /**
      *  uses-stmt           = uses-keyword sep identifier-ref-arg-str optsep
@@ -944,8 +942,8 @@
      *                         "}")
      * TODO : 0..1 occurance to be checked in listener
      */
-    uses_stmt : USES_KEYWORD string (STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt
-                | description_stmt | reference_stmt | refine_stmt | uses_augment_stmt)* RIGHT_CURLY_BRACE);
+    usesStatement : USES_KEYWORD string (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | statusStatement
+                | descriptionStatement | referenceStatement | refineStatement | usesAugmentStatement)* RIGHT_CURLY_BRACE);
 
     /**
      *  refine-stmt         = refine-keyword sep refine-arg-str optsep
@@ -960,8 +958,8 @@
      *                              refine-anyxml-stmts)
      *                         "}")
      */
-    refine_stmt : REFINE_KEYWORD string (STMTEND  | LEFT_CURLY_BRACE (refine_container_stmts | refine_leaf_stmts
-                  | refine_leaf_list_stmts | refine_list_stmts | refine_choice_stmts | refine_case_stmts)
+    refineStatement : REFINE_KEYWORD string (STMTEND  | LEFT_CURLY_BRACE (refineContainerStatements | refineLeafStatements
+                  | refineLeafListStatements | refineListStatements | refineChoiceStatements | refineCaseStatements)
                   RIGHT_CURLY_BRACE);
 
     /**
@@ -974,7 +972,7 @@
      *                         [reference-stmt stmtsep]
      * TODO : 0..1 occurance to be checked in listener
      */
-    refine_container_stmts : (must_stmt | presence_stmt | config_stmt | description_stmt | reference_stmt)* ;
+    refineContainerStatements : (mustStatement | presenceStatement | configStatement | descriptionStatement | referenceStatement)* ;
 
     /**
      *   refine-leaf-stmts   = ;; these stmts can appear in any order
@@ -986,7 +984,7 @@
      *                        [reference-stmt stmtsep]
      * TODO : 0..1 occurance to be checked in listener
      */
-    refine_leaf_stmts : (must_stmt | default_stmt | config_stmt | mandatory_stmt | description_stmt | reference_stmt)*;
+    refineLeafStatements : (mustStatement | defaultStatement | configStatement | mandatoryStatement | descriptionStatement | referenceStatement)*;
 
     /**
      *  refine-leaf-list-stmts =
@@ -999,8 +997,8 @@
      *                        [reference-stmt stmtsep]
      * TODO : 0..1 occurance to be checked in listener
      */
-    refine_leaf_list_stmts : (must_stmt | config_stmt | min_elements_stmt | max_elements_stmt | description_stmt
-                             | reference_stmt)*;
+    refineLeafListStatements : (mustStatement | configStatement | minElementsStatement | maxElementsStatement | descriptionStatement
+                             | referenceStatement)*;
 
     /**
      *  refine-list-stmts   = ;; these stmts can appear in any order
@@ -1012,8 +1010,8 @@
      *                        [reference-stmt stmtsep]
      * TODO : 0..1 occurance to be checked in listener
      */
-    refine_list_stmts : (must_stmt | config_stmt | min_elements_stmt | max_elements_stmt | description_stmt
-                        | reference_stmt)*;
+    refineListStatements : (mustStatement | configStatement | minElementsStatement | maxElementsStatement | descriptionStatement
+                        | referenceStatement)*;
 
     /**
      *  refine-choice-stmts = ;; these stmts can appear in any order
@@ -1024,7 +1022,7 @@
      *                        [reference-stmt stmtsep]
      * TODO : 0..1 occurance to be checked in listener
      */
-    refine_choice_stmts : (default_stmt | config_stmt | mandatory_stmt | description_stmt | reference_stmt)*;
+    refineChoiceStatements : (defaultStatement | configStatement | mandatoryStatement | descriptionStatement | referenceStatement)*;
 
     /**
      *  refine-case-stmts   = ;; these stmts can appear in any order
@@ -1032,7 +1030,7 @@
      *                        [reference-stmt stmtsep]
      *
      */
-    refine_case_stmts : (description_stmt | reference_stmt)? | (reference_stmt | description_stmt)?;
+    refineCaseStatements : (descriptionStatement | referenceStatement)? | (referenceStatement | descriptionStatement)?;
 
     /**
      *  uses-augment-stmt   = augment-keyword sep uses-augment-arg-str optsep
@@ -1048,8 +1046,8 @@
      *                         "}"
      * TODO : 0..1 occurance to be checked in listener
      */
-    uses_augment_stmt : AUGMENT_KEYWORD string LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt
-                        | description_stmt | reference_stmt | data_def_stmt | case_stmt)* RIGHT_CURLY_BRACE;
+    usesAugmentStatement : AUGMENT_KEYWORD string LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | statusStatement
+                        | descriptionStatement | referenceStatement | dataDefStatement | caseStatement)* RIGHT_CURLY_BRACE;
 
     /**
      *  augment-stmt        = augment-keyword sep augment-arg-str optsep
@@ -1065,8 +1063,8 @@
      *                         "}"
      * TODO : 0..1 occurance to be checked in listener
      */
-    augment_stmt : AUGMENT_KEYWORD string LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt
-                   | description_stmt | reference_stmt | data_def_stmt  | case_stmt)* RIGHT_CURLY_BRACE;
+    augmentStatement : AUGMENT_KEYWORD string LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | statusStatement
+                   | descriptionStatement | referenceStatement | dataDefStatement  | caseStatement)* RIGHT_CURLY_BRACE;
 
     /**
      *  when-stmt           = when-keyword sep string optsep
@@ -1078,8 +1076,8 @@
      *                          "}")
      *
      */
-    when_stmt : WHEN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE ((description_stmt? reference_stmt?)
-                       | (reference_stmt? description_stmt?)) RIGHT_CURLY_BRACE);
+    whenStatement : WHEN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE ((descriptionStatement? referenceStatement?)
+                       | (referenceStatement? descriptionStatement?)) RIGHT_CURLY_BRACE);
 
     /**
      *  rpc-stmt            = rpc-keyword sep identifier-arg-str optsep
@@ -1097,8 +1095,8 @@
      *                         "}")
      * TODO : 0..1 occurance to be checked in listener
      */
-    rpc_stmt : RPC_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (if_feature_stmt | status_stmt | description_stmt
-                | reference_stmt | typedef_stmt | grouping_stmt | input_stmt | output_stmt)* RIGHT_CURLY_BRACE);
+    rpcStatement : RPC_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (ifFeatureStatement | statusStatement | descriptionStatement
+                | referenceStatement | typedefStatement | groupingStatement | inputStatement | outputStatement)* RIGHT_CURLY_BRACE);
 
     /**
      * input-stmt          = input-keyword optsep
@@ -1109,9 +1107,9 @@
      *                           1*(data-def-stmt stmtsep)
      *                         "}"
      */
-    input_stmt : INPUT_KEYWORD LEFT_CURLY_BRACE
-                 ((typedef_stmt | grouping_stmt)* | data_def_stmt+)
-                 | (data_def_stmt+ | (typedef_stmt | grouping_stmt)*)RIGHT_CURLY_BRACE;
+    inputStatement : INPUT_KEYWORD LEFT_CURLY_BRACE
+                 ((typedefStatement | groupingStatement)* | dataDefStatement+)
+                 | (dataDefStatement+ | (typedefStatement | groupingStatement)*)RIGHT_CURLY_BRACE;
 
     /**
      *  output-stmt         = output-keyword optsep
@@ -1122,9 +1120,9 @@
      *                            1*(data-def-stmt stmtsep)
      *                        "}"
      */
-    output_stmt : OUTPUT_KEYWORD LEFT_CURLY_BRACE
-                 ((typedef_stmt | grouping_stmt)* | data_def_stmt+)
-                 | (data_def_stmt+ | (typedef_stmt | grouping_stmt)*)RIGHT_CURLY_BRACE;
+    outputStatement : OUTPUT_KEYWORD LEFT_CURLY_BRACE
+                 ((typedefStatement | groupingStatement)* | dataDefStatement+)
+                 | (dataDefStatement+ | (typedefStatement | groupingStatement)*)RIGHT_CURLY_BRACE;
 
     /**
      *  notification-stmt   = notification-keyword sep
@@ -1142,8 +1140,8 @@
      *                         "}")
      * TODO : 0..1 occurance to be checked in listener
      */
-     notification_stmt : NOTIFICATION_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (if_feature_stmt | status_stmt
-                        | description_stmt | reference_stmt | typedef_stmt | grouping_stmt | data_def_stmt)*
+     notificationStatement : NOTIFICATION_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (ifFeatureStatement | statusStatement
+                        | descriptionStatement | referenceStatement | typedefStatement | groupingStatement | dataDefStatement)*
                         RIGHT_CURLY_BRACE);
 
     /**
@@ -1160,8 +1158,8 @@
      *                        "}"
      * TODO : 0..1 occurance to be checked in listener
      */
-    deviation_stmt: DEVIATION_KEYWORD string LEFT_CURLY_BRACE (description_stmt | reference_stmt
-                    | deviate_not_supported_stmt | deviate_add_stmt | deviate_replace_stmt | deviate_delete_stmt)*
+    deviationStatement: DEVIATION_KEYWORD string LEFT_CURLY_BRACE (descriptionStatement | referenceStatement
+                    | deviateNotSupportedStatement | deviateAddStatement | deviateReplaceStatement | deviateDeleteStatement)*
                     RIGHT_CURLY_BRACE;
 
     /**
@@ -1172,7 +1170,7 @@
      *                        "{" stmtsep
      *                        "}")
      */
-    deviate_not_supported_stmt: DEVIATE_KEYWORD NOT_SUPPORTED_KEYWORD (STMTEND | LEFT_CURLY_BRACE RIGHT_CURLY_BRACE);
+    deviateNotSupportedStatement: DEVIATE_KEYWORD NOT_SUPPORTED_KEYWORD (STMTEND | LEFT_CURLY_BRACE RIGHT_CURLY_BRACE);
 
     /**
      *  deviate-add-stmt    = deviate-keyword sep add-keyword optsep
@@ -1188,8 +1186,8 @@
      *                             [max-elements-stmt stmtsep]
      *                         "}")
      */
-    deviate_add_stmt: DEVIATE_KEYWORD ADD_KEYWORD (STMTEND | (LEFT_CURLY_BRACE units_stmt? must_stmt* unique_stmt*
-                      default_stmt? config_stmt? mandatory_stmt? min_elements_stmt? max_elements_stmt?
+    deviateAddStatement: DEVIATE_KEYWORD ADD_KEYWORD (STMTEND | (LEFT_CURLY_BRACE unitsStatement? mustStatement* uniqueStatement*
+                      defaultStatement? configStatement? mandatoryStatement? minElementsStatement? maxElementsStatement?
                       RIGHT_CURLY_BRACE));
 
     /**
@@ -1202,10 +1200,10 @@
      *                               [default-stmt stmtsep]
      *                           "}")
      */
-    deviate_delete_stmt: DEVIATE_KEYWORD DELETE_KEYWORD (STMTEND
-                       | (LEFT_CURLY_BRACE  units_stmt? must_stmt* unique_stmt* default_stmt? RIGHT_CURLY_BRACE));
+    deviateDeleteStatement: DEVIATE_KEYWORD DELETE_KEYWORD (STMTEND
+                       | (LEFT_CURLY_BRACE  unitsStatement? mustStatement* uniqueStatement* defaultStatement? RIGHT_CURLY_BRACE));
 
-    /** 
+    /**
      *   deviate-replace-stmt = deviate-keyword sep replace-keyword optsep
      *                         (";" /
      *                          "{" stmtsep
@@ -1218,9 +1216,8 @@
      *                              [max-elements-stmt stmtsep]
      *                          "}")
      */
-    deviate_replace_stmt: DEVIATE_KEYWORD REPLACE_KEYWORD (STMTEND | (LEFT_CURLY_BRACE type_stmt? units_stmt?
-                           default_stmt? config_stmt? mandatory_stmt? min_elements_stmt?
-                           max_elements_stmt? RIGHT_CURLY_BRACE));
+    deviateReplaceStatement: DEVIATE_KEYWORD REPLACE_KEYWORD (STMTEND | (LEFT_CURLY_BRACE typeStatement? unitsStatement?
+                           defaultStatement? configStatement? mandatoryStatement? minElementsStatement?
+                           maxElementsStatement? RIGHT_CURLY_BRACE));
 
     string : STRING (PLUS STRING)*;
-
