Vidyashree Rama
Committed by Gerrit Code Review

string issue fix for few yang construct like config, mandatory + allowing yang c…

…onstructs as identifers and string

Change-Id: I8dd01dc60d280a843b0a485681caa6bfcac013c2
Showing 16 changed files with 717 additions and 153 deletions
...@@ -1178,22 +1178,6 @@ public interface GeneratedYangListener extends ParseTreeListener { ...@@ -1178,22 +1178,6 @@ public interface GeneratedYangListener extends ParseTreeListener {
1178 1178
1179 /** 1179 /**
1180 * Enter a parse tree produced by GeneratedYangParser for grammar rule 1180 * Enter a parse tree produced by GeneratedYangParser for grammar rule
1181 - * maxValueArgument.
1182 - *
1183 - * @param currentContext current context in the parsed tree
1184 - */
1185 - void enterMaxValueArgument(GeneratedYangParser.MaxValueArgumentContext currentContext);
1186 -
1187 - /**
1188 - * Exit a parse tree produced by GeneratedYangParser for grammar rule
1189 - * maxValueArgument.
1190 - *
1191 - * @param currentContext current context in the parsed tree
1192 - */
1193 - void exitMaxValueArgument(GeneratedYangParser.MaxValueArgumentContext currentContext);
1194 -
1195 - /**
1196 - * Enter a parse tree produced by GeneratedYangParser for grammar rule
1197 * valueStatement. 1181 * valueStatement.
1198 * 1182 *
1199 * @param currentContext current context in the parsed tree 1183 * @param currentContext current context in the parsed tree
...@@ -1720,6 +1704,37 @@ public interface GeneratedYangListener extends ParseTreeListener { ...@@ -1720,6 +1704,37 @@ public interface GeneratedYangListener extends ParseTreeListener {
1720 */ 1704 */
1721 void exitIdentifier(GeneratedYangParser.IdentifierContext currentContext); 1705 void exitIdentifier(GeneratedYangParser.IdentifierContext currentContext);
1722 1706
1707 + /**
1708 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1709 + * version.
1710 + *
1711 + * @param currentContext current context in the parsed tree
1712 + */
1713 + void enterVersion(GeneratedYangParser.VersionContext currentContext);
1714 +
1715 + /**
1716 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1717 + * version.
1718 + *
1719 + * @param currentContext current context in the parsed tree
1720 + */
1721 + void exitVersion(GeneratedYangParser.VersionContext currentContext);
1722 +
1723 + /**
1724 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1725 + * range.
1726 + *
1727 + * @param currentContext current context in the parsed tree
1728 + */
1729 + void enterRange(GeneratedYangParser.RangeContext currentContext);
1730 +
1731 + /**
1732 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1733 + * range.
1734 + *
1735 + * @param currentContext current context in the parsed tree
1736 + */
1737 + void exitRange(GeneratedYangParser.RangeContext currentContext);
1723 1738
1724 /** 1739 /**
1725 * Enter a parse tree produced by GeneratedYangParser for grammar rule 1740 * Enter a parse tree produced by GeneratedYangParser for grammar rule
...@@ -1736,4 +1751,244 @@ public interface GeneratedYangListener extends ParseTreeListener { ...@@ -1736,4 +1751,244 @@ public interface GeneratedYangListener extends ParseTreeListener {
1736 * @param currentContext current context in the parsed tree 1751 * @param currentContext current context in the parsed tree
1737 */ 1752 */
1738 void exitDateArgumentString(GeneratedYangParser.DateArgumentStringContext currentContext); 1753 void exitDateArgumentString(GeneratedYangParser.DateArgumentStringContext currentContext);
1754 +
1755 + /**
1756 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1757 + * length.
1758 + *
1759 + * @param currentContext current context in the parsed tree
1760 + */
1761 + void enterLength(GeneratedYangParser.LengthContext currentContext);
1762 +
1763 + /**
1764 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1765 + * length.
1766 + *
1767 + * @param currentContext current context in the parsed tree
1768 + */
1769 + void exitLength(GeneratedYangParser.LengthContext currentContext);
1770 +
1771 + /**
1772 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1773 + * path.
1774 + *
1775 + * @param currentContext current context in the parsed tree
1776 + */
1777 + void enterPath(GeneratedYangParser.PathContext currentContext);
1778 +
1779 + /**
1780 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1781 + * path.
1782 + *
1783 + * @param currentContext current context in the parsed tree
1784 + */
1785 + void exitPath(GeneratedYangParser.PathContext currentContext);
1786 +
1787 + /**
1788 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1789 + * position.
1790 + *
1791 + * @param currentContext current context in the parsed tree
1792 + */
1793 + void enterPosition(GeneratedYangParser.PositionContext currentContext);
1794 +
1795 + /**
1796 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1797 + * position.
1798 + *
1799 + * @param currentContext current context in the parsed tree
1800 + */
1801 + void exitPosition(GeneratedYangParser.PositionContext currentContext);
1802 +
1803 + /**
1804 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1805 + * status.
1806 + *
1807 + * @param currentContext current context in the parsed tree
1808 + */
1809 + void enterStatus(GeneratedYangParser.StatusContext currentContext);
1810 +
1811 + /**
1812 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1813 + * status.
1814 + *
1815 + * @param currentContext current context in the parsed tree
1816 + */
1817 + void exitStatus(GeneratedYangParser.StatusContext currentContext);
1818 +
1819 + /**
1820 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1821 + * config.
1822 + *
1823 + * @param currentContext current context in the parsed tree
1824 + */
1825 + void enterConfig(GeneratedYangParser.ConfigContext currentContext);
1826 +
1827 + /**
1828 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1829 + * config.
1830 + *
1831 + * @param currentContext current context in the parsed tree
1832 + */
1833 + void exitConfig(GeneratedYangParser.ConfigContext currentContext);
1834 +
1835 + /**
1836 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1837 + * mandatory.
1838 + *
1839 + * @param currentContext current context in the parsed tree
1840 + */
1841 + void enterMandatory(GeneratedYangParser.MandatoryContext currentContext);
1842 +
1843 + /**
1844 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1845 + * mandatory.
1846 + *
1847 + * @param currentContext current context in the parsed tree
1848 + */
1849 + void exitMandatory(GeneratedYangParser.MandatoryContext currentContext);
1850 +
1851 + /**
1852 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1853 + * ordered-by.
1854 + *
1855 + * @param currentContext current context in the parsed tree
1856 + */
1857 + void enterOrderedBy(GeneratedYangParser.OrderedByContext currentContext);
1858 +
1859 + /**
1860 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1861 + * ordered-by.
1862 + *
1863 + * @param currentContext current context in the parsed tree
1864 + */
1865 + void exitOrderedBy(GeneratedYangParser.OrderedByContext currentContext);
1866 +
1867 + /**
1868 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1869 + * min elements value.
1870 + *
1871 + * @param currentContext current context in the parsed tree
1872 + */
1873 + void enterMinValue(GeneratedYangParser.MinValueContext currentContext);
1874 +
1875 + /**
1876 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1877 + * min elements value.
1878 + *
1879 + * @param currentContext current context in the parsed tree
1880 + */
1881 + void exitMinValue(GeneratedYangParser.MinValueContext currentContext);
1882 +
1883 + /**
1884 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1885 + * max elements value.
1886 + *
1887 + * @param currentContext current context in the parsed tree
1888 + */
1889 + void enterMaxValue(GeneratedYangParser.MaxValueContext currentContext);
1890 +
1891 + /**
1892 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1893 + * max elements value.
1894 + *
1895 + * @param currentContext current context in the parsed tree
1896 + */
1897 + void exitMaxValue(GeneratedYangParser.MaxValueContext currentContext);
1898 +
1899 + /**
1900 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1901 + * key.
1902 + *
1903 + * @param currentContext current context in the parsed tree
1904 + */
1905 + void enterKey(GeneratedYangParser.KeyContext currentContext);
1906 +
1907 + /**
1908 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1909 + * key.
1910 + *
1911 + * @param currentContext current context in the parsed tree
1912 + */
1913 + void exitKey(GeneratedYangParser.KeyContext currentContext);
1914 +
1915 + /**
1916 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1917 + * unique.
1918 + *
1919 + * @param currentContext current context in the parsed tree
1920 + */
1921 + void enterUnique(GeneratedYangParser.UniqueContext currentContext);
1922 +
1923 + /**
1924 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1925 + * unique.
1926 + *
1927 + * @param currentContext current context in the parsed tree
1928 + */
1929 + void exitUnique(GeneratedYangParser.UniqueContext currentContext);
1930 +
1931 + /**
1932 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1933 + * refine.
1934 + *
1935 + * @param currentContext current context in the parsed tree
1936 + */
1937 + void enterRefine(GeneratedYangParser.RefineContext currentContext);
1938 +
1939 + /**
1940 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1941 + * refine.
1942 + *
1943 + * @param currentContext current context in the parsed tree
1944 + */
1945 + void exitRefine(GeneratedYangParser.RefineContext currentContext);
1946 +
1947 + /**
1948 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1949 + * augment.
1950 + *
1951 + * @param currentContext current context in the parsed tree
1952 + */
1953 + void enterAugment(GeneratedYangParser.AugmentContext currentContext);
1954 +
1955 + /**
1956 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1957 + * augment.
1958 + *
1959 + * @param currentContext current context in the parsed tree
1960 + */
1961 + void exitAugment(GeneratedYangParser.AugmentContext currentContext);
1962 +
1963 + /**
1964 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1965 + * deviation.
1966 + *
1967 + * @param currentContext current context in the parsed tree
1968 + */
1969 + void enterDeviation(GeneratedYangParser.DeviationContext currentContext);
1970 +
1971 + /**
1972 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1973 + * deviation.
1974 + *
1975 + * @param currentContext current context in the parsed tree
1976 + */
1977 + void exitDeviation(GeneratedYangParser.DeviationContext currentContext);
1978 +
1979 + /**
1980 + * Enter a parse tree produced by GeneratedYangParser for grammar rule
1981 + * yang construct.
1982 + *
1983 + * @param currentContext current context in the parsed tree
1984 + */
1985 + void enterYangConstruct(GeneratedYangParser.YangConstructContext currentContext);
1986 +
1987 + /**
1988 + * Exit a parse tree produced by GeneratedYangParser for grammar rule
1989 + * yang construct.
1990 + *
1991 + * @param currentContext current context in the parsed tree
1992 + */
1993 + void exitYangConstruct(GeneratedYangParser.YangConstructContext currentContext);
1739 } 1994 }
......
...@@ -833,16 +833,6 @@ public class TreeWalkListener implements GeneratedYangListener { ...@@ -833,16 +833,6 @@ public class TreeWalkListener implements GeneratedYangListener {
833 } 833 }
834 834
835 @Override 835 @Override
836 - public void enterMaxValueArgument(GeneratedYangParser.MaxValueArgumentContext ctx) {
837 - // TODO: implement the method.
838 - }
839 -
840 - @Override
841 - public void exitMaxValueArgument(GeneratedYangParser.MaxValueArgumentContext ctx) {
842 - // TODO: implement the method.
843 - }
844 -
845 - @Override
846 public void enterValueStatement(GeneratedYangParser.ValueStatementContext ctx) { 836 public void enterValueStatement(GeneratedYangParser.ValueStatementContext ctx) {
847 ValueListener.processValueEntry(this, ctx); 837 ValueListener.processValueEntry(this, ctx);
848 } 838 }
...@@ -1183,6 +1173,176 @@ public class TreeWalkListener implements GeneratedYangListener { ...@@ -1183,6 +1173,176 @@ public class TreeWalkListener implements GeneratedYangListener {
1183 } 1173 }
1184 1174
1185 @Override 1175 @Override
1176 + public void enterRange(GeneratedYangParser.RangeContext ctx) {
1177 + // TODO: implement the method.
1178 + }
1179 +
1180 + @Override
1181 + public void exitRange(GeneratedYangParser.RangeContext ctx) {
1182 + // TODO: implement the method.
1183 + }
1184 +
1185 + @Override
1186 + public void enterLength(GeneratedYangParser.LengthContext ctx) {
1187 + // TODO: implement the method.
1188 + }
1189 +
1190 + @Override
1191 + public void exitLength(GeneratedYangParser.LengthContext ctx) {
1192 + // TODO: implement the method.
1193 + }
1194 +
1195 + @Override
1196 + public void enterPath(GeneratedYangParser.PathContext ctx) {
1197 + // TODO: implement the method.
1198 + }
1199 +
1200 + @Override
1201 + public void exitPath(GeneratedYangParser.PathContext ctx) {
1202 + // TODO: implement the method.
1203 + }
1204 +
1205 + @Override
1206 + public void enterPosition(GeneratedYangParser.PositionContext ctx) {
1207 + // TODO: implement the method.
1208 + }
1209 +
1210 + @Override
1211 + public void exitPosition(GeneratedYangParser.PositionContext ctx) {
1212 + // TODO: implement the method.
1213 + }
1214 +
1215 + @Override
1216 + public void enterStatus(GeneratedYangParser.StatusContext ctx) {
1217 + // TODO: implement the method.
1218 + }
1219 +
1220 + @Override
1221 + public void exitStatus(GeneratedYangParser.StatusContext ctx) {
1222 + // TODO: implement the method.
1223 + }
1224 +
1225 + @Override
1226 + public void enterConfig(GeneratedYangParser.ConfigContext ctx) {
1227 + // TODO: implement the method.
1228 + }
1229 +
1230 + @Override
1231 + public void exitConfig(GeneratedYangParser.ConfigContext ctx) {
1232 + // TODO: implement the method.
1233 + }
1234 +
1235 + @Override
1236 + public void enterMandatory(GeneratedYangParser.MandatoryContext ctx) {
1237 + // TODO: implement the method.
1238 + }
1239 +
1240 + @Override
1241 + public void exitMandatory(GeneratedYangParser.MandatoryContext ctx) {
1242 + // TODO: implement the method.
1243 + }
1244 +
1245 + @Override
1246 + public void enterOrderedBy(GeneratedYangParser.OrderedByContext ctx) {
1247 + // TODO: implement the method.
1248 + }
1249 +
1250 + @Override
1251 + public void exitOrderedBy(GeneratedYangParser.OrderedByContext ctx) {
1252 + // TODO: implement the method.
1253 + }
1254 +
1255 + @Override
1256 + public void enterMinValue(GeneratedYangParser.MinValueContext ctx) {
1257 + // TODO: implement the method.
1258 + }
1259 +
1260 + @Override
1261 + public void exitMinValue(GeneratedYangParser.MinValueContext ctx) {
1262 + // TODO: implement the method.
1263 + }
1264 +
1265 + @Override
1266 + public void enterMaxValue(GeneratedYangParser.MaxValueContext ctx) {
1267 + // TODO: implement the method.
1268 + }
1269 +
1270 + @Override
1271 + public void exitMaxValue(GeneratedYangParser.MaxValueContext ctx) {
1272 + // TODO: implement the method.
1273 + }
1274 +
1275 + @Override
1276 + public void enterKey(GeneratedYangParser.KeyContext ctx) {
1277 + // TODO: implement the method.
1278 + }
1279 +
1280 + @Override
1281 + public void exitKey(GeneratedYangParser.KeyContext ctx) {
1282 + // TODO: implement the method.
1283 + }
1284 +
1285 + @Override
1286 + public void enterUnique(GeneratedYangParser.UniqueContext ctx) {
1287 + // TODO: implement the method.
1288 + }
1289 +
1290 + @Override
1291 + public void exitUnique(GeneratedYangParser.UniqueContext ctx) {
1292 + // TODO: implement the method.
1293 + }
1294 +
1295 + @Override
1296 + public void enterRefine(GeneratedYangParser.RefineContext ctx) {
1297 + // TODO: implement the method.
1298 + }
1299 +
1300 + @Override
1301 + public void exitRefine(GeneratedYangParser.RefineContext ctx) {
1302 + // TODO: implement the method.
1303 + }
1304 +
1305 + @Override
1306 + public void enterAugment(GeneratedYangParser.AugmentContext ctx) {
1307 + // TODO: implement the method.
1308 + }
1309 +
1310 + @Override
1311 + public void exitAugment(GeneratedYangParser.AugmentContext ctx) {
1312 + // TODO: implement the method.
1313 + }
1314 +
1315 + @Override
1316 + public void enterDeviation(GeneratedYangParser.DeviationContext ctx) {
1317 + // TODO: implement the method.
1318 + }
1319 +
1320 + @Override
1321 + public void exitDeviation(GeneratedYangParser.DeviationContext ctx) {
1322 + // TODO: implement the method.
1323 + }
1324 +
1325 + @Override
1326 + public void enterYangConstruct(GeneratedYangParser.YangConstructContext ctx) {
1327 + // TODO: implement the method.
1328 + }
1329 +
1330 + @Override
1331 + public void exitYangConstruct(GeneratedYangParser.YangConstructContext ctx) {
1332 + // TODO: implement the method.
1333 + }
1334 +
1335 + @Override
1336 + public void enterVersion(GeneratedYangParser.VersionContext ctx) {
1337 + // TODO: implement the method.
1338 + }
1339 +
1340 + @Override
1341 + public void exitVersion(GeneratedYangParser.VersionContext ctx) {
1342 + // TODO: implement the method.
1343 + }
1344 +
1345 + @Override
1186 public void visitTerminal(TerminalNode terminalNode) { 1346 public void visitTerminal(TerminalNode terminalNode) {
1187 // TODO: implement the method. 1347 // TODO: implement the method.
1188 } 1348 }
......
...@@ -25,6 +25,7 @@ import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; ...@@ -25,6 +25,7 @@ import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
25 import org.onosproject.yangutils.parser.exceptions.ParserException; 25 import org.onosproject.yangutils.parser.exceptions.ParserException;
26 import org.onosproject.yangutils.parser.impl.TreeWalkListener; 26 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
27 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY; 27 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
28 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.getValidBooleanValue;
28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage; 29 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
29 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER; 30 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER;
30 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER; 31 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
...@@ -42,7 +43,8 @@ import static org.onosproject.yangutils.utils.YangConstructType.CONFIG_DATA; ...@@ -42,7 +43,8 @@ import static org.onosproject.yangutils.utils.YangConstructType.CONFIG_DATA;
42 * config-arg = true-keyword / false-keyword 43 * config-arg = true-keyword / false-keyword
43 * 44 *
44 * ANTLR grammar rule 45 * ANTLR grammar rule
45 - * configStatement : CONFIG_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND; 46 + * configStatement : CONFIG_KEYWORD config STMTEND;
47 + * config : string;
46 */ 48 */
47 49
48 /** 50 /**
...@@ -66,14 +68,11 @@ public final class ConfigListener { ...@@ -66,14 +68,11 @@ public final class ConfigListener {
66 */ 68 */
67 public static void processConfigEntry(TreeWalkListener listener, 69 public static void processConfigEntry(TreeWalkListener listener,
68 GeneratedYangParser.ConfigStatementContext ctx) { 70 GeneratedYangParser.ConfigStatementContext ctx) {
69 - boolean isConfig = false;
70 71
71 // Check for stack to be non empty. 72 // Check for stack to be non empty.
72 checkStackIsNotEmpty(listener, MISSING_HOLDER, CONFIG_DATA, "", ENTRY); 73 checkStackIsNotEmpty(listener, MISSING_HOLDER, CONFIG_DATA, "", ENTRY);
73 74
74 - if (ctx.TRUE_KEYWORD() != null) { 75 + boolean isConfig = getValidBooleanValue(ctx.config().getText(), CONFIG_DATA, ctx);
75 - isConfig = true;
76 - }
77 76
78 Parsable tmpData = listener.getParsedDataStack().peek(); 77 Parsable tmpData = listener.getParsedDataStack().peek();
79 switch (tmpData.getYangConstructType()) { 78 switch (tmpData.getYangConstructType()) {
......
...@@ -24,6 +24,7 @@ import org.onosproject.yangutils.parser.exceptions.ParserException; ...@@ -24,6 +24,7 @@ import org.onosproject.yangutils.parser.exceptions.ParserException;
24 import org.onosproject.yangutils.parser.impl.TreeWalkListener; 24 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
25 25
26 import static org.onosproject.yangutils.utils.YangConstructType.KEY_DATA; 26 import static org.onosproject.yangutils.utils.YangConstructType.KEY_DATA;
27 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.removeQuotesAndHandleConcat;
27 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY; 28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage; 29 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
29 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructExtendedListenerErrorMessage; 30 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructExtendedListenerErrorMessage;
...@@ -39,7 +40,8 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidati ...@@ -39,7 +40,8 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidati
39 * key-stmt = key-keyword sep key-arg-str stmtend 40 * key-stmt = key-keyword sep key-arg-str stmtend
40 * 41 *
41 * ANTLR grammar rule 42 * ANTLR grammar rule
42 - * keyStatement : KEY_KEYWORD string STMTEND; 43 + * keyStatement : KEY_KEYWORD key STMTEND;
44 + * key : string;
43 */ 45 */
44 46
45 /** 47 /**
...@@ -66,12 +68,12 @@ public final class KeyListener { ...@@ -66,12 +68,12 @@ public final class KeyListener {
66 GeneratedYangParser.KeyStatementContext ctx) { 68 GeneratedYangParser.KeyStatementContext ctx) {
67 69
68 // Check for stack to be non empty. 70 // Check for stack to be non empty.
69 - checkStackIsNotEmpty(listener, MISSING_HOLDER, KEY_DATA, ctx.string().getText(), ENTRY); 71 + checkStackIsNotEmpty(listener, MISSING_HOLDER, KEY_DATA, ctx.key().getText(), ENTRY);
70 72
71 Parsable tmpData = listener.getParsedDataStack().peek(); 73 Parsable tmpData = listener.getParsedDataStack().peek();
72 if (listener.getParsedDataStack().peek() instanceof YangList) { 74 if (listener.getParsedDataStack().peek() instanceof YangList) {
73 YangList yangList = (YangList) tmpData; 75 YangList yangList = (YangList) tmpData;
74 - String tmpKeyValue = ctx.string().getText().replace("\"", ""); 76 + String tmpKeyValue = removeQuotesAndHandleConcat(ctx.key().getText());
75 if (tmpKeyValue.contains(" ")) { 77 if (tmpKeyValue.contains(" ")) {
76 String[] keyValues = tmpKeyValue.split(" "); 78 String[] keyValues = tmpKeyValue.split(" ");
77 for (String keyValue : keyValues) { 79 for (String keyValue : keyValues) {
...@@ -79,7 +81,7 @@ public final class KeyListener { ...@@ -79,7 +81,7 @@ public final class KeyListener {
79 yangList.addKey(keyValue); 81 yangList.addKey(keyValue);
80 } catch (DataModelException e) { 82 } catch (DataModelException e) {
81 throw new ParserException(constructExtendedListenerErrorMessage(UNHANDLED_PARSED_DATA, KEY_DATA, 83 throw new ParserException(constructExtendedListenerErrorMessage(UNHANDLED_PARSED_DATA, KEY_DATA,
82 - ctx.string().getText(), ENTRY, e.getMessage())); 84 + ctx.key().getText(), ENTRY, e.getMessage()));
83 } 85 }
84 } 86 }
85 } else { 87 } else {
...@@ -87,11 +89,11 @@ public final class KeyListener { ...@@ -87,11 +89,11 @@ public final class KeyListener {
87 yangList.addKey(tmpKeyValue); 89 yangList.addKey(tmpKeyValue);
88 } catch (DataModelException e) { 90 } catch (DataModelException e) {
89 throw new ParserException(constructExtendedListenerErrorMessage(UNHANDLED_PARSED_DATA, KEY_DATA, 91 throw new ParserException(constructExtendedListenerErrorMessage(UNHANDLED_PARSED_DATA, KEY_DATA,
90 - ctx.string().getText(), ENTRY, e.getMessage())); 92 + ctx.key().getText(), ENTRY, e.getMessage()));
91 } 93 }
92 } 94 }
93 } else { 95 } else {
94 - throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, KEY_DATA, ctx.string().getText(), 96 + throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, KEY_DATA, ctx.key().getText(),
95 ENTRY)); 97 ENTRY));
96 } 98 }
97 } 99 }
......
...@@ -22,6 +22,7 @@ import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; ...@@ -22,6 +22,7 @@ import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
22 import org.onosproject.yangutils.parser.exceptions.ParserException; 22 import org.onosproject.yangutils.parser.exceptions.ParserException;
23 import org.onosproject.yangutils.parser.impl.TreeWalkListener; 23 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
24 24
25 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.getValidBooleanValue;
25 import static org.onosproject.yangutils.utils.YangConstructType.MANDATORY_DATA; 26 import static org.onosproject.yangutils.utils.YangConstructType.MANDATORY_DATA;
26 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY; 27 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
27 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage; 28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
...@@ -42,7 +43,8 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidati ...@@ -42,7 +43,8 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidati
42 * mandatory-arg = true-keyword / false-keyword 43 * mandatory-arg = true-keyword / false-keyword
43 * 44 *
44 * ANTLR grammar rule 45 * ANTLR grammar rule
45 - * mandatoryStatement : MANDATORY_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND; 46 + * mandatoryStatement : MANDATORY_KEYWORD mandatory STMTEND;
47 + * mandatory : string;
46 */ 48 */
47 49
48 /** 50 /**
...@@ -71,15 +73,13 @@ public final class MandatoryListener { ...@@ -71,15 +73,13 @@ public final class MandatoryListener {
71 // Check for stack to be non empty. 73 // Check for stack to be non empty.
72 checkStackIsNotEmpty(listener, MISSING_HOLDER, MANDATORY_DATA, "", ENTRY); 74 checkStackIsNotEmpty(listener, MISSING_HOLDER, MANDATORY_DATA, "", ENTRY);
73 75
76 + boolean isMandatory = getValidBooleanValue(ctx.mandatory().getText(), MANDATORY_DATA, ctx);
77 +
74 Parsable tmpNode = listener.getParsedDataStack().peek(); 78 Parsable tmpNode = listener.getParsedDataStack().peek();
75 switch (tmpNode.getYangConstructType()) { 79 switch (tmpNode.getYangConstructType()) {
76 case LEAF_DATA: 80 case LEAF_DATA:
77 YangLeaf leaf = (YangLeaf) tmpNode; 81 YangLeaf leaf = (YangLeaf) tmpNode;
78 - if (ctx.TRUE_KEYWORD() != null) { 82 + leaf.setMandatory(isMandatory);
79 - leaf.setMandatory(true);
80 - } else {
81 - leaf.setMandatory(false);
82 - }
83 break; 83 break;
84 case CHOICE_DATA: // TODO 84 case CHOICE_DATA: // TODO
85 break; 85 break;
......
...@@ -22,11 +22,13 @@ import org.onosproject.yangutils.parser.Parsable; ...@@ -22,11 +22,13 @@ import org.onosproject.yangutils.parser.Parsable;
22 import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; 22 import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
23 import org.onosproject.yangutils.parser.exceptions.ParserException; 23 import org.onosproject.yangutils.parser.exceptions.ParserException;
24 import org.onosproject.yangutils.parser.impl.TreeWalkListener; 24 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
25 +import org.onosproject.yangutils.utils.YangConstructType;
25 26
26 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY; 27 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
27 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage; 28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER; 29 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER;
29 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER; 30 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
31 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.removeQuotesAndHandleConcat;
30 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty; 32 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
31 import static org.onosproject.yangutils.utils.YangConstructType.MAX_ELEMENT_DATA; 33 import static org.onosproject.yangutils.utils.YangConstructType.MAX_ELEMENT_DATA;
32 34
...@@ -40,7 +42,8 @@ import static org.onosproject.yangutils.utils.YangConstructType.MAX_ELEMENT_DATA ...@@ -40,7 +42,8 @@ import static org.onosproject.yangutils.utils.YangConstructType.MAX_ELEMENT_DATA
40 * max-value-arg > 42 * max-value-arg >
41 * 43 *
42 * ANTLR grammar rule 44 * ANTLR grammar rule
43 - * maxElementsStatement : MAX_ELEMENTS_KEYWORD maxValueArgument STMTEND; 45 + * maxElementsStatement : MAX_ELEMENTS_KEYWORD maxValue STMTEND;
46 + * maxValue : string;
44 */ 47 */
45 48
46 /** 49 /**
...@@ -50,6 +53,9 @@ import static org.onosproject.yangutils.utils.YangConstructType.MAX_ELEMENT_DATA ...@@ -50,6 +53,9 @@ import static org.onosproject.yangutils.utils.YangConstructType.MAX_ELEMENT_DATA
50 */ 53 */
51 public final class MaxElementsListener { 54 public final class MaxElementsListener {
52 55
56 + private static final String POSITIVE_INTEGER_PATTERN = "[1-9][0-9]*";
57 + private static final String UNBOUNDED_KEYWORD = "unbounded";
58 +
53 /** 59 /**
54 * Creates a new max-elements listener. 60 * Creates a new max-elements listener.
55 */ 61 */
...@@ -65,16 +71,11 @@ public final class MaxElementsListener { ...@@ -65,16 +71,11 @@ public final class MaxElementsListener {
65 */ 71 */
66 public static void processMaxElementsEntry(TreeWalkListener listener, 72 public static void processMaxElementsEntry(TreeWalkListener listener,
67 GeneratedYangParser.MaxElementsStatementContext ctx) { 73 GeneratedYangParser.MaxElementsStatementContext ctx) {
68 - int maxElementsValue;
69 74
70 // Check for stack to be non empty. 75 // Check for stack to be non empty.
71 checkStackIsNotEmpty(listener, MISSING_HOLDER, MAX_ELEMENT_DATA, "", ENTRY); 76 checkStackIsNotEmpty(listener, MISSING_HOLDER, MAX_ELEMENT_DATA, "", ENTRY);
72 77
73 - if (ctx.maxValueArgument().UNBOUNDED_KEYWORD() != null) { 78 + int maxElementsValue = getValidMaxElementValue(ctx);
74 - maxElementsValue = Integer.MAX_VALUE;
75 - } else {
76 - maxElementsValue = Integer.parseInt(ctx.maxValueArgument().INTEGER().getText());
77 - }
78 79
79 Parsable tmpData = listener.getParsedDataStack().peek(); 80 Parsable tmpData = listener.getParsedDataStack().peek();
80 switch (tmpData.getYangConstructType()) { 81 switch (tmpData.getYangConstructType()) {
...@@ -90,4 +91,31 @@ public final class MaxElementsListener { ...@@ -90,4 +91,31 @@ public final class MaxElementsListener {
90 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, MAX_ELEMENT_DATA, "", ENTRY)); 91 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, MAX_ELEMENT_DATA, "", ENTRY));
91 } 92 }
92 } 93 }
94 +
95 + /**
96 + * Validates max element value and returns the value from context.
97 + *
98 + * @param ctx context object of the grammar rule
99 + * @return max element's value
100 + */
101 + private static int getValidMaxElementValue(GeneratedYangParser.MaxElementsStatementContext ctx) {
102 +
103 + int maxElementsValue;
104 +
105 + String value = removeQuotesAndHandleConcat(ctx.maxValue().getText());
106 + if (value.equals(UNBOUNDED_KEYWORD)) {
107 + maxElementsValue = Integer.MAX_VALUE;
108 + } else if (value.matches(POSITIVE_INTEGER_PATTERN)) {
109 + maxElementsValue = Integer.parseInt(value);
110 + } else {
111 + ParserException parserException = new ParserException("YANG file error : " +
112 + YangConstructType.getYangConstructType(MAX_ELEMENT_DATA) + " value " + value + " is not " +
113 + "valid.");
114 + parserException.setLine(ctx.getStart().getLine());
115 + parserException.setCharPosition(ctx.getStart().getCharPositionInLine());
116 + throw parserException;
117 + }
118 +
119 + return maxElementsValue;
120 + }
93 } 121 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -23,6 +23,7 @@ import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; ...@@ -23,6 +23,7 @@ import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
23 import org.onosproject.yangutils.parser.exceptions.ParserException; 23 import org.onosproject.yangutils.parser.exceptions.ParserException;
24 import org.onosproject.yangutils.parser.impl.TreeWalkListener; 24 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
25 25
26 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.getValidNonNegativeIntegerValue;
26 import static org.onosproject.yangutils.utils.YangConstructType.MIN_ELEMENT_DATA; 27 import static org.onosproject.yangutils.utils.YangConstructType.MIN_ELEMENT_DATA;
27 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY; 28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage; 29 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
...@@ -41,7 +42,8 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidati ...@@ -41,7 +42,8 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidati
41 * min-value-arg = non-negative-integer-value 42 * min-value-arg = non-negative-integer-value
42 * 43 *
43 * ANTLR grammar rule 44 * ANTLR grammar rule
44 - * minElementsStatement : MIN_ELEMENTS_KEYWORD INTEGER STMTEND; 45 + * minElementsStatement : MIN_ELEMENTS_KEYWORD minValue STMTEND;
46 + * minValue : string;
45 */ 47 */
46 48
47 /** 49 /**
...@@ -68,21 +70,23 @@ public final class MinElementsListener { ...@@ -68,21 +70,23 @@ public final class MinElementsListener {
68 GeneratedYangParser.MinElementsStatementContext ctx) { 70 GeneratedYangParser.MinElementsStatementContext ctx) {
69 71
70 // Check for stack to be non empty. 72 // Check for stack to be non empty.
71 - checkStackIsNotEmpty(listener, MISSING_HOLDER, MIN_ELEMENT_DATA, ctx.INTEGER().getText(), ENTRY); 73 + checkStackIsNotEmpty(listener, MISSING_HOLDER, MIN_ELEMENT_DATA, ctx.minValue().getText(), ENTRY);
74 +
75 + int minElementValue = getValidNonNegativeIntegerValue(ctx.minValue().getText(), MIN_ELEMENT_DATA, ctx);
72 76
73 Parsable tmpData = listener.getParsedDataStack().peek(); 77 Parsable tmpData = listener.getParsedDataStack().peek();
74 switch (tmpData.getYangConstructType()) { 78 switch (tmpData.getYangConstructType()) {
75 case LEAF_LIST_DATA: 79 case LEAF_LIST_DATA:
76 YangLeafList leafList = (YangLeafList) tmpData; 80 YangLeafList leafList = (YangLeafList) tmpData;
77 - leafList.setMinElements(Integer.parseInt(ctx.INTEGER().getText())); 81 + leafList.setMinElements(minElementValue);
78 break; 82 break;
79 case LIST_DATA: 83 case LIST_DATA:
80 YangList yangList = (YangList) tmpData; 84 YangList yangList = (YangList) tmpData;
81 - yangList.setMinElements(Integer.parseInt(ctx.INTEGER().getText())); 85 + yangList.setMinElements(minElementValue);
82 break; 86 break;
83 default: 87 default:
84 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, MIN_ELEMENT_DATA, 88 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, MIN_ELEMENT_DATA,
85 - ctx.INTEGER().getText(), ENTRY)); 89 + ctx.minValue().getText(), ENTRY));
86 } 90 }
87 } 91 }
88 } 92 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -30,7 +30,8 @@ package org.onosproject.yangutils.parser.impl.listeners; ...@@ -30,7 +30,8 @@ package org.onosproject.yangutils.parser.impl.listeners;
30 * zero-integer-value = 1*DIGIT 30 * zero-integer-value = 1*DIGIT
31 * 31 *
32 * ANTLR grammar rule 32 * ANTLR grammar rule
33 - * positionStatement : POSITION_KEYWORD string STMTEND; 33 + * positionStatement : POSITION_KEYWORD position STMTEND;
34 + * position : string;
34 */ 35 */
35 36
36 import org.onosproject.yangutils.datamodel.YangBit; 37 import org.onosproject.yangutils.datamodel.YangBit;
...@@ -44,7 +45,7 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLoc ...@@ -44,7 +45,7 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLoc
44 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage; 45 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
45 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER; 46 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER;
46 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER; 47 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
47 -import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.removeQuotesAndHandleConcat; 48 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.getValidNonNegativeIntegerValue;
48 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty; 49 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
49 import static org.onosproject.yangutils.utils.YangConstructType.POSITION_DATA; 50 import static org.onosproject.yangutils.utils.YangConstructType.POSITION_DATA;
50 51
...@@ -54,9 +55,6 @@ import static org.onosproject.yangutils.utils.YangConstructType.POSITION_DATA; ...@@ -54,9 +55,6 @@ import static org.onosproject.yangutils.utils.YangConstructType.POSITION_DATA;
54 */ 55 */
55 public final class PositionListener { 56 public final class PositionListener {
56 57
57 - // Exact message in case position is invalid.
58 - private static String errMsg;
59 -
60 /** 58 /**
61 * Creates a new position listener. 59 * Creates a new position listener.
62 */ 60 */
...@@ -74,27 +72,20 @@ public final class PositionListener { ...@@ -74,27 +72,20 @@ public final class PositionListener {
74 GeneratedYangParser.PositionStatementContext ctx) { 72 GeneratedYangParser.PositionStatementContext ctx) {
75 73
76 // Check for stack to be non empty. 74 // Check for stack to be non empty.
77 - checkStackIsNotEmpty(listener, MISSING_HOLDER, POSITION_DATA, ctx.string().getText(), ENTRY); 75 + checkStackIsNotEmpty(listener, MISSING_HOLDER, POSITION_DATA, ctx.position().getText(), ENTRY);
78 -
79 - String position = removeQuotesAndHandleConcat(ctx.string().getText());
80 76
81 // Obtain the node of the stack. 77 // Obtain the node of the stack.
82 Parsable tmpNode = listener.getParsedDataStack().peek(); 78 Parsable tmpNode = listener.getParsedDataStack().peek();
83 switch (tmpNode.getYangConstructType()) { 79 switch (tmpNode.getYangConstructType()) {
84 case BIT_DATA: { 80 case BIT_DATA: {
85 YangBit bitNode = (YangBit) tmpNode; 81 YangBit bitNode = (YangBit) tmpNode;
86 - if (!isBitPositionValid(listener, ctx, position)) { 82 + int positionValue = getValidBitPosition(listener, ctx);
87 - ParserException parserException = new ParserException(errMsg); 83 + bitNode.setPosition(positionValue);
88 - parserException.setLine(ctx.getStart().getLine());
89 - parserException.setCharPosition(ctx.getStart().getCharPositionInLine());
90 - throw parserException;
91 - }
92 - bitNode.setPosition(Integer.valueOf(position));
93 break; 84 break;
94 } 85 }
95 default: 86 default:
96 throw new ParserException( 87 throw new ParserException(
97 - constructListenerErrorMessage(INVALID_HOLDER, POSITION_DATA, ctx.string().getText(), ENTRY)); 88 + constructListenerErrorMessage(INVALID_HOLDER, POSITION_DATA, ctx.position().getText(), ENTRY));
98 } 89 }
99 } 90 }
100 91
...@@ -103,39 +94,38 @@ public final class PositionListener { ...@@ -103,39 +94,38 @@ public final class PositionListener {
103 * 94 *
104 * @param listener Listener's object 95 * @param listener Listener's object
105 * @param ctx context object of the grammar rule 96 * @param ctx context object of the grammar rule
106 - * @return validation result 97 + * @return position value
107 */ 98 */
108 - private static boolean isBitPositionValid(TreeWalkListener listener, 99 + private static int getValidBitPosition(TreeWalkListener listener,
109 - GeneratedYangParser.PositionStatementContext ctx, String position) { 100 + GeneratedYangParser.PositionStatementContext ctx) {
110 Parsable bitNode = listener.getParsedDataStack().pop(); 101 Parsable bitNode = listener.getParsedDataStack().pop();
111 102
112 // Check for stack to be non empty. 103 // Check for stack to be non empty.
113 - checkStackIsNotEmpty(listener, MISSING_HOLDER, POSITION_DATA, ctx.string().getText(), ENTRY); 104 + checkStackIsNotEmpty(listener, MISSING_HOLDER, POSITION_DATA, ctx.position().getText(), ENTRY);
114 105
115 - if (Integer.valueOf(position) < 0) { 106 + int positionValue = getValidNonNegativeIntegerValue(ctx.position().getText(), POSITION_DATA, ctx);
116 - errMsg = "YANG file error: Negative value of position is invalid.";
117 - listener.getParsedDataStack().push(bitNode);
118 - return false;
119 - }
120 107
121 Parsable tmpNode = listener.getParsedDataStack().peek(); 108 Parsable tmpNode = listener.getParsedDataStack().peek();
122 switch (tmpNode.getYangConstructType()) { 109 switch (tmpNode.getYangConstructType()) {
123 case BITS_DATA: { 110 case BITS_DATA: {
124 YangBits yangBits = (YangBits) tmpNode; 111 YangBits yangBits = (YangBits) tmpNode;
125 for (YangBit curBit : yangBits.getBitSet()) { 112 for (YangBit curBit : yangBits.getBitSet()) {
126 - if (Integer.valueOf(position) == curBit.getPosition()) { 113 + if (positionValue == curBit.getPosition()) {
127 - errMsg = "YANG file error: Duplicate value of position is invalid.";
128 listener.getParsedDataStack().push(bitNode); 114 listener.getParsedDataStack().push(bitNode);
129 - return false; 115 + ParserException parserException = new ParserException("YANG file error: Duplicate value of " +
116 + "position is invalid.");
117 + parserException.setLine(ctx.getStart().getLine());
118 + parserException.setCharPosition(ctx.getStart().getCharPositionInLine());
119 + throw parserException;
130 } 120 }
131 } 121 }
132 listener.getParsedDataStack().push(bitNode); 122 listener.getParsedDataStack().push(bitNode);
133 - return true; 123 + return positionValue;
134 } 124 }
135 default: 125 default:
136 listener.getParsedDataStack().push(bitNode); 126 listener.getParsedDataStack().push(bitNode);
137 throw new ParserException( 127 throw new ParserException(
138 - constructListenerErrorMessage(INVALID_HOLDER, POSITION_DATA, ctx.string().getText(), ENTRY)); 128 + constructListenerErrorMessage(INVALID_HOLDER, POSITION_DATA, ctx.position().getText(), ENTRY));
139 } 129 }
140 } 130 }
141 } 131 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -23,10 +23,12 @@ import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; ...@@ -23,10 +23,12 @@ import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
23 import org.onosproject.yangutils.parser.exceptions.ParserException; 23 import org.onosproject.yangutils.parser.exceptions.ParserException;
24 import org.onosproject.yangutils.parser.impl.TreeWalkListener; 24 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
25 25
26 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.removeQuotesAndHandleConcat;
26 import static org.onosproject.yangutils.utils.YangConstructType.STATUS_DATA; 27 import static org.onosproject.yangutils.utils.YangConstructType.STATUS_DATA;
27 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY; 28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage; 29 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
29 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER; 30 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER;
31 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_CONTENT;
30 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER; 32 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
31 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty; 33 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
32 34
...@@ -51,6 +53,10 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidati ...@@ -51,6 +53,10 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidati
51 */ 53 */
52 public final class StatusListener { 54 public final class StatusListener {
53 55
56 + private static final String CURRENT_KEYWORD = "current";
57 + private static final String DEPRECATED_KEYWORD = "deprecated";
58 + private static final String OBSOLETE_KEYWORD = "obsolete";
59 +
54 /** 60 /**
55 * Creates a new status listener. 61 * Creates a new status listener.
56 */ 62 */
...@@ -67,18 +73,11 @@ public final class StatusListener { ...@@ -67,18 +73,11 @@ public final class StatusListener {
67 */ 73 */
68 public static void processStatusEntry(TreeWalkListener listener, 74 public static void processStatusEntry(TreeWalkListener listener,
69 GeneratedYangParser.StatusStatementContext ctx) { 75 GeneratedYangParser.StatusStatementContext ctx) {
70 - YangStatusType status;
71 76
72 // Check for stack to be non empty. 77 // Check for stack to be non empty.
73 checkStackIsNotEmpty(listener, MISSING_HOLDER, STATUS_DATA, "", ENTRY); 78 checkStackIsNotEmpty(listener, MISSING_HOLDER, STATUS_DATA, "", ENTRY);
74 79
75 - if (ctx.CURRENT_KEYWORD() != null) { 80 + YangStatusType status = getValidStatus(ctx);
76 - status = YangStatusType.CURRENT;
77 - } else if (ctx.DEPRECATED_KEYWORD() != null) {
78 - status = YangStatusType.DEPRECATED;
79 - } else {
80 - status = YangStatusType.OBSOLETE;
81 - }
82 81
83 Parsable tmpData = listener.getParsedDataStack().peek(); 82 Parsable tmpData = listener.getParsedDataStack().peek();
84 if (tmpData instanceof YangStatus) { 83 if (tmpData instanceof YangStatus) {
...@@ -88,4 +87,28 @@ public final class StatusListener { ...@@ -88,4 +87,28 @@ public final class StatusListener {
88 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, STATUS_DATA, "", ENTRY)); 87 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, STATUS_DATA, "", ENTRY));
89 } 88 }
90 } 89 }
90 +
91 + /**
92 + * Validates status value and returns the value from context.
93 + *
94 + * @param ctx context object of the grammar rule
95 + * @return status current/deprecated/obsolete
96 + */
97 + private static YangStatusType getValidStatus(GeneratedYangParser.StatusStatementContext ctx) {
98 +
99 + YangStatusType status;
100 +
101 + String value = removeQuotesAndHandleConcat(ctx.status().getText());
102 + if (value.equals(CURRENT_KEYWORD)) {
103 + status = YangStatusType.CURRENT;
104 + } else if (value.equals(DEPRECATED_KEYWORD)) {
105 + status = YangStatusType.DEPRECATED;
106 + } else if (value.equals(OBSOLETE_KEYWORD)) {
107 + status = YangStatusType.OBSOLETE;
108 + } else {
109 + throw new ParserException(constructListenerErrorMessage(INVALID_CONTENT, STATUS_DATA, value, ENTRY));
110 + }
111 +
112 + return status;
113 + }
91 } 114 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -23,7 +23,7 @@ import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; ...@@ -23,7 +23,7 @@ import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
23 import org.onosproject.yangutils.parser.exceptions.ParserException; 23 import org.onosproject.yangutils.parser.exceptions.ParserException;
24 import org.onosproject.yangutils.parser.impl.TreeWalkListener; 24 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
25 25
26 -import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.removeQuotesAndHandleConcat; 26 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.getValidVersion;
27 import static org.onosproject.yangutils.utils.YangConstructType.VERSION_DATA; 27 import static org.onosproject.yangutils.utils.YangConstructType.VERSION_DATA;
28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY; 28 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
29 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage; 29 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
...@@ -60,7 +60,8 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidati ...@@ -60,7 +60,8 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidati
60 * submodule_header_statement : yang_version_stmt? belongs_to_stmt 60 * submodule_header_statement : yang_version_stmt? belongs_to_stmt
61 * | belongs_to_stmt yang_version_stmt? 61 * | belongs_to_stmt yang_version_stmt?
62 * ; 62 * ;
63 - * yang_version_stmt : YANG_VERSION_KEYWORD string STMTEND; 63 + * yang_version_stmt : YANG_VERSION_KEYWORD version STMTEND;
64 + * version : string;
64 */ 65 */
65 66
66 /** 67 /**
...@@ -86,42 +87,26 @@ public final class VersionListener { ...@@ -86,42 +87,26 @@ public final class VersionListener {
86 GeneratedYangParser.YangVersionStatementContext ctx) { 87 GeneratedYangParser.YangVersionStatementContext ctx) {
87 88
88 // Check for stack to be non empty. 89 // Check for stack to be non empty.
89 - checkStackIsNotEmpty(listener, MISSING_HOLDER, VERSION_DATA, ctx.string().getText(), ENTRY); 90 + checkStackIsNotEmpty(listener, MISSING_HOLDER, VERSION_DATA, ctx.version().getText(), ENTRY);
90 91
91 - String version = removeQuotesAndHandleConcat(ctx.string().getText()); 92 + byte version = getValidVersion(ctx);
92 - if (!isVersionValid(Integer.valueOf(version))) {
93 - ParserException parserException = new ParserException("YANG file error: Input version not supported");
94 - parserException.setLine(ctx.getStart().getLine());
95 - parserException.setCharPosition(ctx.getStart().getCharPositionInLine());
96 - throw parserException;
97 - }
98 93
99 // Obtain the node of the stack. 94 // Obtain the node of the stack.
100 Parsable tmpNode = listener.getParsedDataStack().peek(); 95 Parsable tmpNode = listener.getParsedDataStack().peek();
101 switch (tmpNode.getYangConstructType()) { 96 switch (tmpNode.getYangConstructType()) {
102 case MODULE_DATA: { 97 case MODULE_DATA: {
103 YangModule module = (YangModule) tmpNode; 98 YangModule module = (YangModule) tmpNode;
104 - module.setVersion((byte) 1); 99 + module.setVersion(version);
105 break; 100 break;
106 } 101 }
107 case SUB_MODULE_DATA: { 102 case SUB_MODULE_DATA: {
108 YangSubModule subModule = (YangSubModule) tmpNode; 103 YangSubModule subModule = (YangSubModule) tmpNode;
109 - subModule.setVersion((byte) 1); 104 + subModule.setVersion(version);
110 break; 105 break;
111 } 106 }
112 default: 107 default:
113 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, VERSION_DATA, 108 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, VERSION_DATA,
114 - ctx.string().getText(), ENTRY)); 109 + ctx.version().getText(), ENTRY));
115 - }
116 } 110 }
117 -
118 - /**
119 - * Validates whether the value of YANG version.
120 - *
121 - * @param version input yang version
122 - * @return validation result
123 - */
124 - private static boolean isVersionValid(Integer version) {
125 - return version == 1;
126 } 111 }
127 } 112 }
......
...@@ -21,6 +21,8 @@ import org.antlr.v4.runtime.ParserRuleContext; ...@@ -21,6 +21,8 @@ import org.antlr.v4.runtime.ParserRuleContext;
21 import java.text.ParseException; 21 import java.text.ParseException;
22 import java.text.SimpleDateFormat; 22 import java.text.SimpleDateFormat;
23 import java.util.regex.Pattern; 23 import java.util.regex.Pattern;
24 +
25 +import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
24 import org.onosproject.yangutils.utils.YangConstructType; 26 import org.onosproject.yangutils.utils.YangConstructType;
25 import org.onosproject.yangutils.parser.exceptions.ParserException; 27 import org.onosproject.yangutils.parser.exceptions.ParserException;
26 28
...@@ -29,7 +31,11 @@ import org.onosproject.yangutils.parser.exceptions.ParserException; ...@@ -29,7 +31,11 @@ import org.onosproject.yangutils.parser.exceptions.ParserException;
29 */ 31 */
30 public final class ListenerUtil { 32 public final class ListenerUtil {
31 private static final Pattern IDENTIFIER_PATTERN = Pattern.compile("[a-zA-Z_][a-zA-Z0-9_.-]*"); 33 private static final Pattern IDENTIFIER_PATTERN = Pattern.compile("[a-zA-Z_][a-zA-Z0-9_.-]*");
34 + private static final String NON_NEGATIVE_INTEGER_PATTERN = "[0-9]+";
32 private static final String PLUS = "+"; 35 private static final String PLUS = "+";
36 + private static final String ONE = "1";
37 + private static final String TRUE_KEYWORD = "true";
38 + private static final String FALSE_KEYWORD = "false";
33 private static final int IDENTIFIER_LENGTH = 64; 39 private static final int IDENTIFIER_LENGTH = 64;
34 40
35 /** 41 /**
...@@ -109,4 +115,73 @@ public final class ListenerUtil { ...@@ -109,4 +115,73 @@ public final class ListenerUtil {
109 115
110 return true; 116 return true;
111 } 117 }
118 +
119 + /**
120 + * Validates YANG version.
121 + *
122 + * @param ctx version context object of the grammar rule
123 + * @return valid version
124 + */
125 + public static byte getValidVersion(GeneratedYangParser.YangVersionStatementContext ctx) {
126 +
127 + String value = removeQuotesAndHandleConcat(ctx.version().getText());
128 + if (!value.equals(ONE)) {
129 + ParserException parserException = new ParserException("YANG file error: Input version not supported");
130 + parserException.setLine(ctx.getStart().getLine());
131 + parserException.setCharPosition(ctx.getStart().getCharPositionInLine());
132 + throw parserException;
133 + }
134 +
135 + return Byte.valueOf(value);
136 + }
137 +
138 + /**
139 + * Validates non negative integer value.
140 + *
141 + * @param integerValue integer to be validated
142 + * @param yangConstruct yang construct for creating error message
143 + * @param ctx context object of the grammar rule
144 + * @return valid non negative integer value
145 + */
146 + public static int getValidNonNegativeIntegerValue(String integerValue, YangConstructType yangConstruct,
147 + ParserRuleContext ctx) {
148 +
149 + String value = removeQuotesAndHandleConcat(integerValue);
150 + if (!value.matches(NON_NEGATIVE_INTEGER_PATTERN)) {
151 + ParserException parserException = new ParserException("YANG file error : " +
152 + YangConstructType.getYangConstructType(yangConstruct) + " value " + value + " is not " +
153 + "valid.");
154 + parserException.setLine(ctx.getStart().getLine());
155 + parserException.setCharPosition(ctx.getStart().getCharPositionInLine());
156 + throw parserException;
157 + }
158 +
159 + return Integer.parseInt(value);
160 + }
161 +
162 + /**
163 + * Validates boolean value.
164 + *
165 + * @param booleanValue value to be validated
166 + * @param yangConstruct yang construct for creating error message
167 + * @param ctx context object of the grammar rule
168 + * @return boolean value either true or false
169 + */
170 + public static boolean getValidBooleanValue(String booleanValue, YangConstructType yangConstruct,
171 + ParserRuleContext ctx) {
172 +
173 + String value = removeQuotesAndHandleConcat(booleanValue);
174 + if (value.equals(TRUE_KEYWORD)) {
175 + return true;
176 + } else if (value.equals(FALSE_KEYWORD)) {
177 + return false;
178 + } else {
179 + ParserException parserException = new ParserException("YANG file error : " +
180 + YangConstructType.getYangConstructType(yangConstruct) + " value " + value + " is not " +
181 + "valid.");
182 + parserException.setLine(ctx.getStart().getLine());
183 + parserException.setCharPosition(ctx.getStart().getCharPositionInLine());
184 + throw parserException;
185 + }
186 + }
112 } 187 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -64,7 +64,6 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -64,7 +64,6 @@ package org.onosproject.yangutils.parser.antlrgencode;
64 * *(import-stmt stmtsep) 64 * *(import-stmt stmtsep)
65 * *(include-stmt stmtsep) 65 * *(include-stmt stmtsep)
66 */ 66 */
67 -
68 linkageStatements : (importStatement 67 linkageStatements : (importStatement
69 | includeStatement)*; 68 | includeStatement)*;
70 69
...@@ -75,7 +74,6 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -75,7 +74,6 @@ package org.onosproject.yangutils.parser.antlrgencode;
75 * [description-stmt stmtsep] 74 * [description-stmt stmtsep]
76 * [reference-stmt stmtsep] 75 * [reference-stmt stmtsep]
77 */ 76 */
78 -
79 metaStatements : organizationStatement? contactStatement? descriptionStatement? referenceStatement? 77 metaStatements : organizationStatement? contactStatement? descriptionStatement? referenceStatement?
80 | organizationStatement? contactStatement? referenceStatement? descriptionStatement? 78 | organizationStatement? contactStatement? referenceStatement? descriptionStatement?
81 | organizationStatement? descriptionStatement? contactStatement? referenceStatement? 79 | organizationStatement? descriptionStatement? contactStatement? referenceStatement?
...@@ -117,7 +115,6 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -117,7 +115,6 @@ package org.onosproject.yangutils.parser.antlrgencode;
117 * notification-stmt / 115 * notification-stmt /
118 * deviation-stmt) stmtsep) 116 * deviation-stmt) stmtsep)
119 */ 117 */
120 -
121 bodyStatements : (extensionStatement 118 bodyStatements : (extensionStatement
122 | featureStatement 119 | featureStatement
123 | identityStatement 120 | identityStatement
...@@ -134,8 +131,7 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -134,8 +131,7 @@ package org.onosproject.yangutils.parser.antlrgencode;
134 * yang-version-stmt = yang-version-keyword sep yang-version-arg-str 131 * yang-version-stmt = yang-version-keyword sep yang-version-arg-str
135 * optsep stmtend 132 * optsep stmtend
136 */ 133 */
137 - 134 + yangVersionStatement : YANG_VERSION_KEYWORD version STMTEND;
138 - yangVersionStatement : YANG_VERSION_KEYWORD string STMTEND;
139 135
140 136
141 /** 137 /**
...@@ -455,7 +451,7 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -455,7 +451,7 @@ package org.onosproject.yangutils.parser.antlrgencode;
455 * [reference-stmt stmtsep] 451 * [reference-stmt stmtsep]
456 * "}") 452 * "}")
457 */ 453 */
458 - rangeStatement : RANGE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE commonStatements RIGHT_CURLY_BRACE); 454 + rangeStatement : RANGE_KEYWORD range (STMTEND | LEFT_CURLY_BRACE commonStatements RIGHT_CURLY_BRACE);
459 455
460 commonStatements : errorMessageStatement? errorAppTagStatement? descriptionStatement? referenceStatement? 456 commonStatements : errorMessageStatement? errorAppTagStatement? descriptionStatement? referenceStatement?
461 | errorMessageStatement? errorAppTagStatement? referenceStatement? descriptionStatement? 457 | errorMessageStatement? errorAppTagStatement? referenceStatement? descriptionStatement?
...@@ -501,7 +497,7 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -501,7 +497,7 @@ package org.onosproject.yangutils.parser.antlrgencode;
501 * [reference-stmt stmtsep] 497 * [reference-stmt stmtsep]
502 * "}") 498 * "}")
503 */ 499 */
504 - lengthStatement : LENGTH_KEYWORD string 500 + lengthStatement : LENGTH_KEYWORD length
505 (STMTEND | LEFT_CURLY_BRACE commonStatements RIGHT_CURLY_BRACE); 501 (STMTEND | LEFT_CURLY_BRACE commonStatements RIGHT_CURLY_BRACE);
506 502
507 /** 503 /**
...@@ -577,7 +573,7 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -577,7 +573,7 @@ package org.onosproject.yangutils.parser.antlrgencode;
577 /** 573 /**
578 * path-stmt = path-keyword sep path-arg-str stmtend 574 * path-stmt = path-keyword sep path-arg-str stmtend
579 */ 575 */
580 - pathStatement : PATH_KEYWORD string STMTEND; 576 + pathStatement : PATH_KEYWORD path STMTEND;
581 577
582 /** 578 /**
583 * require-instance-stmt = require-instance-keyword sep 579 * require-instance-stmt = require-instance-keyword sep
...@@ -657,7 +653,7 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -657,7 +653,7 @@ package org.onosproject.yangutils.parser.antlrgencode;
657 * position-value-arg > 653 * position-value-arg >
658 * position-value-arg = non-negative-integer-value 654 * position-value-arg = non-negative-integer-value
659 */ 655 */
660 - positionStatement : POSITION_KEYWORD string STMTEND; 656 + positionStatement : POSITION_KEYWORD position STMTEND;
661 657
662 /** 658 /**
663 * status-stmt = status-keyword sep status-arg-str stmtend 659 * status-stmt = status-keyword sep status-arg-str stmtend
...@@ -667,7 +663,7 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -667,7 +663,7 @@ package org.onosproject.yangutils.parser.antlrgencode;
667 * obsolete-keyword / 663 * obsolete-keyword /
668 * deprecated-keyword 664 * deprecated-keyword
669 */ 665 */
670 - statusStatement : STATUS_KEYWORD (CURRENT_KEYWORD | OBSOLETE_KEYWORD | DEPRECATED_KEYWORD) STMTEND; 666 + statusStatement : STATUS_KEYWORD status STMTEND;
671 667
672 /** 668 /**
673 * config-stmt = config-keyword sep 669 * config-stmt = config-keyword sep
...@@ -676,7 +672,7 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -676,7 +672,7 @@ package org.onosproject.yangutils.parser.antlrgencode;
676 * config-arg > 672 * config-arg >
677 * config-arg = true-keyword / false-keyword 673 * config-arg = true-keyword / false-keyword
678 */ 674 */
679 - configStatement : CONFIG_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND; 675 + configStatement : CONFIG_KEYWORD config STMTEND;
680 676
681 /** 677 /**
682 * mandatory-stmt = mandatory-keyword sep 678 * mandatory-stmt = mandatory-keyword sep
...@@ -687,7 +683,7 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -687,7 +683,7 @@ package org.onosproject.yangutils.parser.antlrgencode;
687 * 683 *
688 * mandatory-arg = true-keyword / false-keyword 684 * mandatory-arg = true-keyword / false-keyword
689 */ 685 */
690 - mandatoryStatement : MANDATORY_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND; 686 + mandatoryStatement : MANDATORY_KEYWORD mandatory STMTEND;
691 687
692 /** 688 /**
693 * presence-stmt = presence-keyword sep string stmtend 689 * presence-stmt = presence-keyword sep string stmtend
...@@ -703,7 +699,7 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -703,7 +699,7 @@ package org.onosproject.yangutils.parser.antlrgencode;
703 * 699 *
704 * ordered-by-arg = user-keyword / system-keyword 700 * ordered-by-arg = user-keyword / system-keyword
705 */ 701 */
706 - orderedByStatement : ORDERED_BY_KEYWORD (USER_KEYWORD | SYSTEM_KEYWORD) STMTEND; 702 + orderedByStatement : ORDERED_BY_KEYWORD orderedBy STMTEND;
707 703
708 /** 704 /**
709 * must-stmt = must-keyword sep string optsep 705 * must-stmt = must-keyword sep string optsep
...@@ -735,22 +731,17 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -735,22 +731,17 @@ package org.onosproject.yangutils.parser.antlrgencode;
735 * min-value-arg > 731 * min-value-arg >
736 * min-value-arg = non-negative-integer-value 732 * min-value-arg = non-negative-integer-value
737 */ 733 */
738 - minElementsStatement : MIN_ELEMENTS_KEYWORD INTEGER STMTEND; 734 + minElementsStatement : MIN_ELEMENTS_KEYWORD minValue STMTEND;
739 735
740 /** 736 /**
741 * max-elements-stmt = max-elements-keyword sep 737 * max-elements-stmt = max-elements-keyword sep
742 * max-value-arg-str stmtend 738 * max-value-arg-str stmtend
743 * max-value-arg-str = < a string that matches the rule 739 * max-value-arg-str = < a string that matches the rule
744 * max-value-arg > 740 * max-value-arg >
745 -
746 - */
747 - maxElementsStatement : MAX_ELEMENTS_KEYWORD maxValueArgument STMTEND;
748 -
749 - /**
750 * max-value-arg = unbounded-keyword / 741 * max-value-arg = unbounded-keyword /
751 * positive-integer-value 742 * positive-integer-value
752 */ 743 */
753 - maxValueArgument : UNBOUNDED_KEYWORD | INTEGER; 744 + maxElementsStatement : MAX_ELEMENTS_KEYWORD maxValue STMTEND;
754 745
755 /** 746 /**
756 * value-stmt = value-keyword sep integer-value stmtend 747 * value-stmt = value-keyword sep integer-value stmtend
...@@ -873,12 +864,12 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -873,12 +864,12 @@ package org.onosproject.yangutils.parser.antlrgencode;
873 /** 864 /**
874 * key-stmt = key-keyword sep key-arg-str stmtend 865 * key-stmt = key-keyword sep key-arg-str stmtend
875 */ 866 */
876 - keyStatement : KEY_KEYWORD string STMTEND; 867 + keyStatement : KEY_KEYWORD key STMTEND;
877 868
878 /** 869 /**
879 * unique-stmt = unique-keyword sep unique-arg-str stmtend 870 * unique-stmt = unique-keyword sep unique-arg-str stmtend
880 */ 871 */
881 - uniqueStatement: UNIQUE_KEYWORD string STMTEND; 872 + uniqueStatement: UNIQUE_KEYWORD unique STMTEND;
882 873
883 /** 874 /**
884 * choice-stmt = choice-keyword sep identifier-arg-str optsep 875 * choice-stmt = choice-keyword sep identifier-arg-str optsep
...@@ -958,9 +949,9 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -958,9 +949,9 @@ package org.onosproject.yangutils.parser.antlrgencode;
958 * refine-anyxml-stmts) 949 * refine-anyxml-stmts)
959 * "}") 950 * "}")
960 */ 951 */
961 - refineStatement : REFINE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE (refineContainerStatements | refineLeafStatements 952 + refineStatement : REFINE_KEYWORD refine (STMTEND | LEFT_CURLY_BRACE (refineContainerStatements
962 - | refineLeafListStatements | refineListStatements | refineChoiceStatements | refineCaseStatements) 953 + | refineLeafStatements | refineLeafListStatements | refineListStatements | refineChoiceStatements
963 - RIGHT_CURLY_BRACE); 954 + | refineCaseStatements) RIGHT_CURLY_BRACE);
964 955
965 /** 956 /**
966 * refine-container-stmts = 957 * refine-container-stmts =
...@@ -1046,8 +1037,9 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -1046,8 +1037,9 @@ package org.onosproject.yangutils.parser.antlrgencode;
1046 * "}" 1037 * "}"
1047 * TODO : 0..1 occurance to be checked in listener 1038 * TODO : 0..1 occurance to be checked in listener
1048 */ 1039 */
1049 - usesAugmentStatement : AUGMENT_KEYWORD string LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | statusStatement 1040 + usesAugmentStatement : AUGMENT_KEYWORD augment LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement
1050 - | descriptionStatement | referenceStatement | dataDefStatement | caseStatement)* RIGHT_CURLY_BRACE; 1041 + | statusStatement | descriptionStatement | referenceStatement | dataDefStatement
1042 + | caseStatement)* RIGHT_CURLY_BRACE;
1051 1043
1052 /** 1044 /**
1053 * augment-stmt = augment-keyword sep augment-arg-str optsep 1045 * augment-stmt = augment-keyword sep augment-arg-str optsep
...@@ -1158,9 +1150,9 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -1158,9 +1150,9 @@ package org.onosproject.yangutils.parser.antlrgencode;
1158 * "}" 1150 * "}"
1159 * TODO : 0..1 occurance to be checked in listener 1151 * TODO : 0..1 occurance to be checked in listener
1160 */ 1152 */
1161 - deviationStatement: DEVIATION_KEYWORD string LEFT_CURLY_BRACE (descriptionStatement | referenceStatement 1153 + deviationStatement: DEVIATION_KEYWORD deviation LEFT_CURLY_BRACE (descriptionStatement | referenceStatement
1162 - | deviateNotSupportedStatement | deviateAddStatement | deviateReplaceStatement | deviateDeleteStatement)* 1154 + | deviateNotSupportedStatement | deviateAddStatement | deviateReplaceStatement
1163 - RIGHT_CURLY_BRACE; 1155 + | deviateDeleteStatement)* RIGHT_CURLY_BRACE;
1164 1156
1165 /** 1157 /**
1166 * deviate-not-supported-stmt = 1158 * deviate-not-supported-stmt =
...@@ -1222,10 +1214,61 @@ package org.onosproject.yangutils.parser.antlrgencode; ...@@ -1222,10 +1214,61 @@ package org.onosproject.yangutils.parser.antlrgencode;
1222 1214
1223 string : STRING (PLUS STRING)* 1215 string : STRING (PLUS STRING)*
1224 | IDENTIFIER 1216 | IDENTIFIER
1225 - | INTEGER; 1217 + | INTEGER
1218 + | yangConstruct;
1226 1219
1227 identifier : STRING (PLUS STRING)* 1220 identifier : STRING (PLUS STRING)*
1228 - | IDENTIFIER; 1221 + | IDENTIFIER
1222 + | yangConstruct;
1229 1223
1230 dateArgumentString : DATE_ARG 1224 dateArgumentString : DATE_ARG
1231 | STRING (PLUS STRING)*; 1225 | STRING (PLUS STRING)*;
1226 +
1227 + version : string;
1228 +
1229 + range : string;
1230 +
1231 + length : string;
1232 +
1233 + path : string;
1234 +
1235 + position : string;
1236 +
1237 + status : string;
1238 +
1239 + config : string;
1240 +
1241 + mandatory : string;
1242 +
1243 + orderedBy : string;
1244 +
1245 + minValue : string;
1246 +
1247 + maxValue : string;
1248 +
1249 + key : string;
1250 +
1251 + unique : string;
1252 +
1253 + refine : string;
1254 +
1255 + augment : string;
1256 +
1257 + deviation : string;
1258 +
1259 + yangConstruct : ANYXML_KEYWORD | ARGUMENT_KEYWORD | AUGMENT_KEYWORD | BASE_KEYWORD | BELONGS_TO_KEYWORD
1260 + | BIT_KEYWORD | CASE_KEYWORD | CHOICE_KEYWORD | CONFIG_KEYWORD | CONTACT_KEYWORD | CONTAINER_KEYWORD
1261 + | DEFAULT_KEYWORD | DESCRIPTION_KEYWORD | ENUM_KEYWORD ERROR_APP_TAG_KEYWORD | ERROR_MESSAGE_KEYWORD
1262 + | EXTENSION_KEYWORD | DEVIATION_KEYWORD | DEVIATE_KEYWORD | FEATURE_KEYWORD
1263 + | FRACTION_DIGITS_KEYWORD | GROUPING_KEYWORD | IDENTITY_KEYWORD | IF_FEATURE_KEYWORD
1264 + | IMPORT_KEYWORD | INCLUDE_KEYWORD | INPUT_KEYWORD | KEY_KEYWORD | LEAF_KEYWORD | LEAF_LIST_KEYWORD
1265 + | LENGTH_KEYWORD | LIST_KEYWORD | MANDATORY_KEYWORD | MAX_ELEMENTS_KEYWORD | MIN_ELEMENTS_KEYWORD
1266 + | MODULE_KEYWORD | MUST_KEYWORD | NAMESPACE_KEYWORD | NOTIFICATION_KEYWORD | ORDERED_BY_KEYWORD
1267 + | ORGANIZATION_KEYWORD | OUTPUT_KEYWORD | PATH_KEYWORD | PATTERN_KEYWORD |POSITION_KEYWORD
1268 + | PREFIX_KEYWORD | PRESENCE_KEYWORD | RANGE_KEYWORD | REFERENCE_KEYWORD | REFINE_KEYWORD
1269 + | REQUIRE_INSTANCE_KEYWORD | REVISION_KEYWORD | REVISION_DATE_KEYWORD | RPC_KEYWORD
1270 + | STATUS_KEYWORD | SUBMODULE_KEYWORD | TYPE_KEYWORD | TYPEDEF_KEYWORD | UNIQUE_KEYWORD
1271 + | UNITS_KEYWORD | USES_KEYWORD | VALUE_KEYWORD | WHEN_KEYWORD | YANG_VERSION_KEYWORD
1272 + | YIN_ELEMENT_KEYWORD | ADD_KEYWORD | CURRENT_KEYWORD | DELETE_KEYWORD | DEPRECATED_KEYWORD
1273 + | FALSE_KEYWORD | MAX_KEYWORD | MIN_KEYWORD | NOT_SUPPORTED_KEYWORD | OBSOLETE_KEYWORD
1274 + | REPLACE_KEYWORD | SYSTEM_KEYWORD | TRUE_KEYWORD | UNBOUNDED_KEYWORD | USER_KEYWORD;
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -115,7 +115,7 @@ public class ConfigListenerTest { ...@@ -115,7 +115,7 @@ public class ConfigListenerTest {
115 @Test 115 @Test
116 public void processConfigInvalidValue() throws IOException, ParserException { 116 public void processConfigInvalidValue() throws IOException, ParserException {
117 thrown.expect(ParserException.class); 117 thrown.expect(ParserException.class);
118 - thrown.expectMessage("mismatched input 'invalid' expecting {'false', 'true'}"); 118 + thrown.expectMessage("YANG file error : config value invalid is not valid.");
119 YangNode node = manager.getDataModel("src/test/resources/ConfigInvalidValue.yang"); 119 YangNode node = manager.getDataModel("src/test/resources/ConfigInvalidValue.yang");
120 } 120 }
121 121
...@@ -125,7 +125,7 @@ public class ConfigListenerTest { ...@@ -125,7 +125,7 @@ public class ConfigListenerTest {
125 @Test 125 @Test
126 public void processConfigEmptyValue() throws IOException, ParserException { 126 public void processConfigEmptyValue() throws IOException, ParserException {
127 thrown.expect(ParserException.class); 127 thrown.expect(ParserException.class);
128 - thrown.expectMessage("missing {'false', 'true'} at ';'"); 128 + thrown.expectMessage("no viable alternative at input ';'");
129 YangNode node = manager.getDataModel("src/test/resources/ConfigEmptyValue.yang"); 129 YangNode node = manager.getDataModel("src/test/resources/ConfigEmptyValue.yang");
130 } 130 }
131 131
......
...@@ -126,7 +126,7 @@ public class MandatoryListenerTest { ...@@ -126,7 +126,7 @@ public class MandatoryListenerTest {
126 @Test 126 @Test
127 public void processMandatoryEmptyStatement() throws IOException, ParserException { 127 public void processMandatoryEmptyStatement() throws IOException, ParserException {
128 thrown.expect(ParserException.class); 128 thrown.expect(ParserException.class);
129 - thrown.expectMessage("missing {'false', 'true'} at ';'"); 129 + thrown.expectMessage("no viable alternative at input ';'");
130 YangNode node = manager.getDataModel("src/test/resources/MandatoryEmptyStatement.yang"); 130 YangNode node = manager.getDataModel("src/test/resources/MandatoryEmptyStatement.yang");
131 } 131 }
132 132
......
...@@ -111,7 +111,7 @@ public class MinElementsListenerTest { ...@@ -111,7 +111,7 @@ public class MinElementsListenerTest {
111 @Test 111 @Test
112 public void processMinElementsInvalidValue() throws IOException, ParserException { 112 public void processMinElementsInvalidValue() throws IOException, ParserException {
113 thrown.expect(ParserException.class); 113 thrown.expect(ParserException.class);
114 - thrown.expectMessage("mismatched input 'asd' expecting INTEGER"); 114 + thrown.expectMessage("YANG file error : min-elements value asd is not valid.");
115 YangNode node = manager.getDataModel("src/test/resources/MinElementsInvalidValue.yang"); 115 YangNode node = manager.getDataModel("src/test/resources/MinElementsInvalidValue.yang");
116 } 116 }
117 117
......
...@@ -141,7 +141,7 @@ public class StatusListenerTest { ...@@ -141,7 +141,7 @@ public class StatusListenerTest {
141 @Test 141 @Test
142 public void processStatusInvalidValue() throws IOException, ParserException { 142 public void processStatusInvalidValue() throws IOException, ParserException {
143 thrown.expect(ParserException.class); 143 thrown.expect(ParserException.class);
144 - thrown.expectMessage("mismatched input 'invalid' expecting {'current', 'deprecated', 'obsolete'}"); 144 + thrown.expectMessage("Invalid content in status \"invalid\" before processing.");
145 YangNode node = manager.getDataModel("src/test/resources/StatusInvalidValue.yang"); 145 YangNode node = manager.getDataModel("src/test/resources/StatusInvalidValue.yang");
146 } 146 }
147 147
......