blob: 22033895306ddfdae9cb2e759ceedc1fd7792904 [file] [log] [blame]
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301/*
Brian O'Connor72b2df22017-08-03 18:48:28 -07002 * Copyright 2016-present Open Networking Foundation
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/**
18 * This is a YANG grammar for parser based on which ANTLR will generate YANG parser.
19 */
20
21grammar GeneratedYang;
22import YangLexer;
23
Gaurav Agrawala599a8f2017-01-10 20:45:27 +053024 yangfile : moduleStatement EOF
25 | subModuleStatement EOF;
26
27 /**
28 * module-stmt = optsep module-keyword sep identifier-arg-str
29 * optsep
30 * "{" stmtsep
31 * module-header-stmts
32 * linkage-stmts
33 * meta-stmts
34 * revision-stmts
35 * body-stmts
36 * "}" optsep
37 */
38
Vidyashree Rama3c586732017-05-12 19:48:07 +053039 moduleStatement : MODULE_KEYWORD identifier LEFT_CURLY_BRACE stmtSep
40 moduleBody RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +053041
42 moduleBody : moduleHeaderStatement linkageStatements metaStatements revisionStatements bodyStatements;
43
44 /**
45 * module-header-stmts = ;; these stmts can appear in any order
46 * [yang-version-stmt stmtsep]
47 * namespace-stmt stmtsep
48 * prefix-stmt stmtsep
49 */
50
Vidyashree Rama3c586732017-05-12 19:48:07 +053051 moduleHeaderStatement : (yangVersionStatement stmtSep)? namespaceStatement stmtSep prefixStatement stmtSep
52 | (yangVersionStatement stmtSep)? prefixStatement stmtSep namespaceStatement stmtSep
53 | namespaceStatement stmtSep (yangVersionStatement stmtSep)? prefixStatement stmtSep
54 | namespaceStatement stmtSep prefixStatement stmtSep (yangVersionStatement stmtSep)?
55 | prefixStatement stmtSep namespaceStatement stmtSep (yangVersionStatement stmtSep)?
56 | prefixStatement stmtSep (yangVersionStatement stmtSep)? namespaceStatement stmtSep
Gaurav Agrawala599a8f2017-01-10 20:45:27 +053057 ;
58
59 /**
60 * linkage-stmts = ;; these stmts can appear in any order
61 * *(import-stmt stmtsep)
62 * *(include-stmt stmtsep)
63 */
Vidyashree Rama3c586732017-05-12 19:48:07 +053064 linkageStatements : (importStatement stmtSep | includeStatement stmtSep)*;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +053065
66 /**
67 * meta-stmts = ;; these stmts can appear in any order
68 * [organization-stmt stmtsep]
69 * [contact-stmt stmtsep]
70 * [description-stmt stmtsep]
71 * [reference-stmt stmtsep]
72 */
Vidyashree Rama3c586732017-05-12 19:48:07 +053073 metaStatements : (organizationStatement stmtSep)? (contactStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
74 | (organizationStatement stmtSep)? (contactStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
75 | (organizationStatement stmtSep)? (descriptionStatement stmtSep)? (contactStatement stmtSep)? (referenceStatement stmtSep)?
76 | (organizationStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (contactStatement stmtSep)?
77 | (organizationStatement stmtSep)? (referenceStatement stmtSep)? (contactStatement stmtSep)? (descriptionStatement stmtSep)?
78 | (organizationStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (contactStatement stmtSep)?
79 | (contactStatement stmtSep)? (organizationStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
80 | (contactStatement stmtSep)? (organizationStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
81 | (contactStatement stmtSep)? (referenceStatement stmtSep)? (organizationStatement stmtSep)? (descriptionStatement stmtSep)?
82 | (contactStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (organizationStatement stmtSep)?
83 | (contactStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (organizationStatement stmtSep)?
84 | (contactStatement stmtSep)? (descriptionStatement stmtSep)? (organizationStatement stmtSep)? (referenceStatement stmtSep)?
85 | (referenceStatement stmtSep)? (contactStatement stmtSep)? (organizationStatement stmtSep)? (descriptionStatement stmtSep)?
86 | (referenceStatement stmtSep)? (contactStatement stmtSep)? (descriptionStatement stmtSep)? (organizationStatement stmtSep)?
87 | (referenceStatement stmtSep)? (organizationStatement stmtSep)? (contactStatement stmtSep)? (descriptionStatement stmtSep)?
88 | (referenceStatement stmtSep)? (organizationStatement stmtSep)? (descriptionStatement stmtSep)? (contactStatement stmtSep)?
89 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (organizationStatement stmtSep)? (contactStatement stmtSep)?
90 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (contactStatement stmtSep)? (organizationStatement stmtSep)?
91 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (contactStatement stmtSep)? (organizationStatement stmtSep)?
92 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (organizationStatement stmtSep)? (contactStatement stmtSep)?
93 | (descriptionStatement stmtSep)? (contactStatement stmtSep)? (referenceStatement stmtSep)? (organizationStatement stmtSep)?
94 | (descriptionStatement stmtSep)? (contactStatement stmtSep)? (organizationStatement stmtSep)? (referenceStatement stmtSep)?
95 | (descriptionStatement stmtSep)? (organizationStatement stmtSep)? (contactStatement stmtSep)? (referenceStatement stmtSep)?
96 | (descriptionStatement stmtSep)? (organizationStatement stmtSep)? (referenceStatement stmtSep)? (contactStatement stmtSep)?
Gaurav Agrawala599a8f2017-01-10 20:45:27 +053097 ;
98
99 // revision-stmts = *(revision-stmt stmtsep)
Vidyashree Rama3c586732017-05-12 19:48:07 +0530100 revisionStatements : (revisionStatement stmtSep)*;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530101
102 /**
103 * body-stmts = *((extension-stmt /
104 * feature-stmt /
105 * identity-stmt /
106 * typedef-stmt /
107 * grouping-stmt /
108 * data-def-stmt /
109 * augment-stmt /
110 * rpc-stmt /
111 * notification-stmt /
112 * deviation-stmt) stmtsep)
113 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530114 bodyStatements : ((extensionStatement | featureStatement | identityStatement
115 | typedefStatement | groupingStatement | dataDefStatement
116 | augmentStatement | rpcStatement | notificationStatement
117 | deviationStatement | compilerAnnotationStatement) stmtSep)*;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530118
119 /**
120 * yang-version-stmt = yang-version-keyword sep yang-version-arg-str
121 * optsep stmtend
122 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530123 yangVersionStatement : YANG_VERSION_KEYWORD version stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530124
125 /**
126 * namespace-stmt = namespace-keyword sep uri-str optsep stmtend
127 * For namespace validation TODO in Listener
128 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530129 namespaceStatement : NAMESPACE_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530130
131 /**
132 * prefix-stmt = prefix-keyword sep prefix-arg-str
133 * optsep stmtend
134 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530135 prefixStatement : PREFIX_KEYWORD identifier stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530136
137 /**
138 * import-stmt = import-keyword sep identifier-arg-str optsep
139 * "{" stmtsep
140 * prefix-stmt stmtsep
141 * [revision-date-stmt stmtsep]
142 * "}"
143 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530144 importStatement : IMPORT_KEYWORD identifier LEFT_CURLY_BRACE
145 stmtSep importStatementBody RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530146
Vidyashree Rama3c586732017-05-12 19:48:07 +0530147 importStatementBody : prefixStatement stmtSep (revisionDateStatement stmtSep)?;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530148
149 // revision-date-stmt = revision-date-keyword sep revision-date stmtend
Vidyashree Rama3c586732017-05-12 19:48:07 +0530150 revisionDateStatement : REVISION_DATE_KEYWORD dateArgumentString stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530151
152 /**
153 * include-stmt = include-keyword sep identifier-arg-str optsep
154 * (";" /
155 * "{" stmtsep
156 * [revision-date-stmt stmtsep]
157 * "}")
158 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530159 includeStatement : INCLUDE_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE
160 stmtSep (revisionDateStatement stmtSep)? RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530161
162 /**
163 * organization-stmt = organization-keyword sep string
164 * optsep stmtend
165 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530166 organizationStatement : ORGANIZATION_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530167
168 // contact-stmt = contact-keyword sep string optsep stmtend
Vidyashree Rama3c586732017-05-12 19:48:07 +0530169 contactStatement : CONTACT_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530170
171 // description-stmt = description-keyword sep string optsep stmtend
Vidyashree Rama3c586732017-05-12 19:48:07 +0530172 descriptionStatement : DESCRIPTION_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530173
174 // reference-stmt = reference-keyword sep string optsep stmtend
Vidyashree Rama3c586732017-05-12 19:48:07 +0530175 referenceStatement : REFERENCE_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530176
177 /**
178 * revision-stmt = revision-keyword sep revision-date optsep
179 * (";" /
180 * "{" stmtsep
181 * [description-stmt stmtsep]
182 * [reference-stmt stmtsep]
183 * "}")
184 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530185 revisionStatement : REVISION_KEYWORD dateArgumentString (STMTEND |
186 LEFT_CURLY_BRACE stmtSep revisionStatementBody RIGHT_CURLY_BRACE);
187 revisionStatementBody : (descriptionStatement stmtSep)?
188 (referenceStatement stmtSep)?;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530189
190 /**
191 * submodule-stmt = optsep submodule-keyword sep identifier-arg-str
192 * optsep
193 * "{" stmtsep
194 * submodule-header-stmts
195 * linkage-stmts
196 * meta-stmts
197 * revision-stmts
198 * body-stmts
199 * "}" optsep
200 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530201 subModuleStatement : SUBMODULE_KEYWORD identifier LEFT_CURLY_BRACE
202 stmtSep submoduleBody RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530203 submoduleBody : submoduleHeaderStatement linkageStatements metaStatements revisionStatements bodyStatements;
204
205 /** submodule-header-stmts =
206 * ;; these stmts can appear in any order
207 * [yang-version-stmt stmtsep]
208 * belongs-to-stmt stmtsep
209 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530210 submoduleHeaderStatement : (yangVersionStatement stmtSep)? belongstoStatement stmtSep
211 | belongstoStatement stmtSep (yangVersionStatement stmtSep)? ;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530212
213 /**
214 * belongs-to-stmt = belongs-to-keyword sep identifier-arg-str
215 * optsep
216 * "{" stmtsep
217 * prefix-stmt stmtsep
218 * "}"
219 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530220 belongstoStatement : BELONGS_TO_KEYWORD identifier LEFT_CURLY_BRACE
221 stmtSep belongstoStatementBody RIGHT_CURLY_BRACE;
222 belongstoStatementBody : prefixStatement stmtSep;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530223
224 /**
225 * extension-stmt = extension-keyword sep identifier-arg-str optsep
226 * (";" /
227 * "{" stmtsep
228 * ;; these stmts can appear in any order
229 * [argument-stmt stmtsep]
230 * [status-stmt stmtsep]
231 * [description-stmt stmtsep]
232 * [reference-stmt stmtsep]
233 * "}")
234 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530235 extensionStatement : EXTENSION_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE
236 stmtSep extensionBody RIGHT_CURLY_BRACE);
237 extensionBody : (argumentStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
238 | (argumentStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
239 | (argumentStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)?
240 | (argumentStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)?
241 | (argumentStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)?
242 | (argumentStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)?
243 | (statusStatement stmtSep)? (referenceStatement stmtSep)? (argumentStatement stmtSep)? (descriptionStatement stmtSep)?
244 | (statusStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (argumentStatement stmtSep)?
245 | (statusStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (argumentStatement stmtSep)?
246 | (statusStatement stmtSep)? (descriptionStatement stmtSep)? (argumentStatement stmtSep)? (referenceStatement stmtSep)?
247 | (statusStatement stmtSep)? (argumentStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
248 | (statusStatement stmtSep)? (argumentStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
249 | (descriptionStatement stmtSep)? (argumentStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)?
250 | (descriptionStatement stmtSep)? (argumentStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)?
251 | (descriptionStatement stmtSep)? (statusStatement stmtSep)? (argumentStatement stmtSep)? (referenceStatement stmtSep)?
252 | (descriptionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)? (argumentStatement stmtSep)?
253 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)? (argumentStatement stmtSep)?
254 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (argumentStatement stmtSep)? (statusStatement stmtSep)?
255 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (argumentStatement stmtSep)? (statusStatement stmtSep)?
256 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)? (argumentStatement stmtSep)?
257 | (referenceStatement stmtSep)? (statusStatement stmtSep)? (argumentStatement stmtSep)? (descriptionStatement stmtSep)?
258 | (referenceStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)? (argumentStatement stmtSep)?
259 | (referenceStatement stmtSep)? (argumentStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)?
260 | (referenceStatement stmtSep)? (argumentStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)?
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530261 ;
262
263 /**
264 * argument-stmt = argument-keyword sep identifier-arg-str optsep
265 * (";" /
266 * "{" stmtsep
267 * [yin-element-stmt stmtsep]
268 * "}")
269 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530270 argumentStatement : ARGUMENT_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE
271 stmtSep argumentBody RIGHT_CURLY_BRACE);
272 argumentBody : (yinElementStatement stmtSep)?;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530273
274 /**
275 * yin-element-stmt = yin-element-keyword sep yin-element-arg-str
276 * stmtend
277 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530278 yinElementStatement : YIN_ELEMENT_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD)
279 stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530280
281 /**
282 * identity-stmt = identity-keyword sep identifier-arg-str optsep
283 * (";" /
284 * "{" stmtsep
285 * ;; these stmts can appear in any order
286 * [base-stmt stmtsep]
287 * [status-stmt stmtsep]
288 * [description-stmt stmtsep]
289 * [reference-stmt stmtsep]
290 * "}")
291 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530292 identityStatement : IDENTITY_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE
293 stmtSep identityBody RIGHT_CURLY_BRACE);
294 identityBody : (baseStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
295 | (baseStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
296 | (baseStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)?
297 | (baseStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)?
298 | (baseStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)?
299 | (baseStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)?
300 | (referenceStatement stmtSep)? (baseStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)?
301 | (referenceStatement stmtSep)? (baseStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)?
302 | (referenceStatement stmtSep)? (statusStatement stmtSep)? (baseStatement stmtSep)? (descriptionStatement stmtSep)?
303 | (referenceStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)? (baseStatement stmtSep)?
304 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)? (baseStatement stmtSep)?
305 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (baseStatement stmtSep)? (statusStatement stmtSep)?
306 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)? (baseStatement stmtSep)?
307 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (baseStatement stmtSep)? (statusStatement stmtSep)?
308 | (descriptionStatement stmtSep)? (statusStatement stmtSep)? (baseStatement stmtSep)? (referenceStatement stmtSep)?
309 | (descriptionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)? (baseStatement stmtSep)?
310 | (descriptionStatement stmtSep)? (baseStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)?
311 | (descriptionStatement stmtSep)? (baseStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)?
312 | (statusStatement stmtSep)? (baseStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
313 | (statusStatement stmtSep)? (baseStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
314 | (statusStatement stmtSep)? (descriptionStatement stmtSep)? (baseStatement stmtSep)? (referenceStatement stmtSep)?
315 | (statusStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (baseStatement stmtSep)?
316 | (statusStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (baseStatement stmtSep)?
317 | (statusStatement stmtSep)? (referenceStatement stmtSep)? (baseStatement stmtSep)? (descriptionStatement stmtSep)?
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530318 ;
319
320 /**
321 * base-stmt = base-keyword sep identifier-ref-arg-str
322 * optsep stmtend*
323 * identifier-ref-arg = [prefix ":"] identifier
324 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530325 baseStatement : BASE_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530326
327 /**
328 * feature-stmt = feature-keyword sep identifier-arg-str optsep
329 * (";" /
330 * "{" stmtsep
331 * ;; these stmts can appear in any order
332 * *(if-feature-stmt stmtsep)
333 * [status-stmt stmtsep]
334 * [description-stmt stmtsep]
335 * [reference-stmt stmtsep]
336 * "}")
337 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530338 featureStatement : FEATURE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE
339 stmtSep featureBody RIGHT_CURLY_BRACE);
340 featureBody : (ifFeatureStatement stmtSep)* (statusStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
341 | (ifFeatureStatement stmtSep)* (statusStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
342 | (ifFeatureStatement stmtSep)* (descriptionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)?
343 | (ifFeatureStatement stmtSep)* (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)?
344 | (ifFeatureStatement stmtSep)* (referenceStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)?
345 | (ifFeatureStatement stmtSep)* (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)?
346 | (statusStatement stmtSep)? (ifFeatureStatement stmtSep)* (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
347 | (statusStatement stmtSep)? (ifFeatureStatement stmtSep)* (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
348 | (statusStatement stmtSep)? (descriptionStatement stmtSep)? (ifFeatureStatement stmtSep)* (referenceStatement stmtSep)?
349 | (statusStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (ifFeatureStatement stmtSep)*
350 | (statusStatement stmtSep)? (referenceStatement stmtSep)? (ifFeatureStatement stmtSep)* (descriptionStatement stmtSep)?
351 | (statusStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (ifFeatureStatement stmtSep)*
352 | (descriptionStatement stmtSep)? (ifFeatureStatement stmtSep)* (statusStatement stmtSep)? (referenceStatement stmtSep)?
353 | (descriptionStatement stmtSep)? (ifFeatureStatement stmtSep)* (referenceStatement stmtSep)? (statusStatement stmtSep)?
354 | (descriptionStatement stmtSep)? (statusStatement stmtSep)? (ifFeatureStatement stmtSep)* (referenceStatement stmtSep)?
355 | (descriptionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)? (ifFeatureStatement stmtSep)*
356 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)* (statusStatement stmtSep)? (ifFeatureStatement stmtSep)*
357 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)* (ifFeatureStatement stmtSep)? (statusStatement stmtSep)?
358 | (referenceStatement stmtSep)? (ifFeatureStatement stmtSep)* (statusStatement stmtSep)? (descriptionStatement stmtSep)?
359 | (referenceStatement stmtSep)? (ifFeatureStatement stmtSep)* (descriptionStatement stmtSep)? (statusStatement stmtSep)?
360 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)? (ifFeatureStatement stmtSep)*
361 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (ifFeatureStatement stmtSep)* (statusStatement stmtSep)?
362 | (referenceStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)? (ifFeatureStatement stmtSep)*
363 | (referenceStatement stmtSep)? (statusStatement stmtSep)? (ifFeatureStatement stmtSep)* (descriptionStatement stmtSep)?
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530364 ;
365
366 /**
367 * data-def-stmt = container-stmt /
368 * leaf-stmt /
369 * leaf-list-stmt /
370 * list-stmt /
371 * choice-stmt /
372 * anyxml-stmt /
sonugupta-huawei711d1e32017-09-14 10:59:08 +0530373 * uses-stmt /
374 * anydata-stmt
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530375 */
376 dataDefStatement : containerStatement
377 | leafStatement
378 | leafListStatement
379 | listStatement
380 | choiceStatement
381 | anyxmlStatement
sonugupta-huawei711d1e32017-09-14 10:59:08 +0530382 | usesStatement
383 | anydataStatement;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530384
385 /**
386 * if-feature-stmt = if-feature-keyword sep identifier-ref-arg-str
387 * optsep stmtend
388 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530389 ifFeatureStatement : IF_FEATURE_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530390
391 /**
392 * units-stmt = units-keyword sep string optsep stmtend
393 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530394 unitsStatement : UNITS_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530395
396 /**
397 * typedef-stmt = typedef-keyword sep identifier-arg-str optsep
398 * "{" stmtsep
399 * ;; these stmts can appear in any order
400 * type-stmt stmtsep
401 * [units-stmt stmtsep]
402 * [default-stmt stmtsep]
403 * [status-stmt stmtsep]
404 * [description-stmt stmtsep]
405 * [reference-stmt stmtsep]
406 * "}"
407 * TODO : 0..1 occurance to be validated in listener
408 */
409 typedefStatement : TYPEDEF_KEYWORD identifier LEFT_CURLY_BRACE
Vidyashree Rama3c586732017-05-12 19:48:07 +0530410 stmtSep ((typeStatement stmtSep) | (unitsStatement stmtSep)
411 | (defaultStatement stmtSep) | (statusStatement stmtSep)
412 | (descriptionStatement stmtSep) | (referenceStatement stmtSep))*
413 RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530414
415 /**
416 * type-stmt = type-keyword sep identifier-ref-arg-str optsep
417 * (";" /
418 * "{" stmtsep
419 * type-body-stmts
420 * "}")
421 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530422 typeStatement : TYPE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE
423 stmtSep typeBodyStatements RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530424
425 /**
426 * type-body-stmts = numerical-restrictions /
427 * decimal64-specification /
428 * string-restrictions /
429 * enum-specification /
430 * leafref-specification /
431 * identityref-specification /
432 * instance-identifier-specification /
433 * bits-specification /
434 * union-specification
435 *
436 */
437 typeBodyStatements : numericalRestrictions | decimal64Specification | stringRestrictions | enumSpecification
438 | leafrefSpecification | identityrefSpecification | instanceIdentifierSpecification
439 | bitsSpecification | unionSpecification;
440
441 /**
442 * decimal64-specification = ;; these stmts can appear in any order
443 * fraction-digits-stmt
444 * [range-stmt]
445 */
446 decimal64Specification : fractionDigitStatement rangeStatement?;
447
448 /**
449 * fraction-digits-stmt = fraction-digits-keyword sep
450 * fraction-digits-arg-str stmtend
451 *
452 * fraction-digits-arg-str = < a string that matches the rule
453 * fraction-digits-arg >
454 *
455 * fraction-digits-arg = ("1" ["0" / "1" / "2" / "3" / "4" /
456 * "5" / "6" / "7" / "8"])
457 * / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
458 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530459 fractionDigitStatement : FRACTION_DIGITS_KEYWORD fraction stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530460
461 /**
462 * numerical-restrictions = range-stmt stmtsep
463 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530464 numericalRestrictions : rangeStatement stmtSep;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530465
466 /**
467 * range-stmt = range-keyword sep range-arg-str optsep
468 * (";" /
469 * "{" stmtsep
470 * ;; these stmts can appear in any order
471 * [error-message-stmt stmtsep]
472 * [error-app-tag-stmt stmtsep]
473 * [description-stmt stmtsep]
474 * [reference-stmt stmtsep]
475 * "}")
476 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530477 rangeStatement : RANGE_KEYWORD range (STMTEND | LEFT_CURLY_BRACE
478 stmtSep commonStatements RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530479
Vidyashree Rama3c586732017-05-12 19:48:07 +0530480 commonStatements : (errorMessageStatement stmtSep)? (errorAppTagStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
481 | (errorMessageStatement stmtSep)? (errorAppTagStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
482 | (errorMessageStatement stmtSep)? (descriptionStatement stmtSep)? (errorAppTagStatement stmtSep)? (referenceStatement stmtSep)?
483 | (errorMessageStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (errorAppTagStatement stmtSep)?
484 | (errorMessageStatement stmtSep)? (referenceStatement stmtSep)? (errorAppTagStatement stmtSep)? (descriptionStatement stmtSep)?
485 | (errorMessageStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (errorAppTagStatement stmtSep)?
486 | (errorAppTagStatement stmtSep)? (errorMessageStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
487 | (errorAppTagStatement stmtSep)? (errorMessageStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
488 | (errorAppTagStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (errorMessageStatement stmtSep)?
489 | (errorAppTagStatement stmtSep)? (descriptionStatement stmtSep)? (errorMessageStatement stmtSep)? (referenceStatement stmtSep)?
490 | (errorAppTagStatement stmtSep)? (referenceStatement stmtSep)? (errorMessageStatement stmtSep)? (descriptionStatement stmtSep)?
491 | (errorAppTagStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (errorMessageStatement stmtSep)?
492 | (descriptionStatement stmtSep)? (errorMessageStatement stmtSep)? (errorAppTagStatement stmtSep)? (referenceStatement stmtSep)?
493 | (descriptionStatement stmtSep)? (errorMessageStatement stmtSep)? (referenceStatement stmtSep)? (errorAppTagStatement stmtSep)?
494 | (descriptionStatement stmtSep)? (errorAppTagStatement stmtSep)? (errorMessageStatement stmtSep)? (referenceStatement stmtSep)?
495 | (descriptionStatement stmtSep)? (errorAppTagStatement stmtSep)? (referenceStatement stmtSep)? (errorMessageStatement stmtSep)?
496 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (errorMessageStatement stmtSep)? (errorAppTagStatement stmtSep)?
497 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (errorAppTagStatement stmtSep)? (errorMessageStatement stmtSep)?
498 | (referenceStatement stmtSep)? (errorMessageStatement stmtSep)? (descriptionStatement stmtSep)? (errorAppTagStatement stmtSep)?
499 | (referenceStatement stmtSep)? (errorMessageStatement stmtSep)? (errorAppTagStatement stmtSep)? (descriptionStatement stmtSep)?
500 | (referenceStatement stmtSep)? (errorAppTagStatement stmtSep)? (descriptionStatement stmtSep)? (errorMessageStatement stmtSep)?
501 | (referenceStatement stmtSep)? (errorAppTagStatement stmtSep)? (errorMessageStatement stmtSep)? (descriptionStatement stmtSep)?
502 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (errorMessageStatement stmtSep)? (errorAppTagStatement stmtSep)?
503 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (errorAppTagStatement stmtSep)? (errorMessageStatement stmtSep)?
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530504 ;
505
506 /**
507 * string-restrictions = ;; these stmts can appear in any order
508 * [length-stmt stmtsep]
509 * *(pattern-stmt stmtsep)
510 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530511 stringRestrictions : ((lengthStatement stmtSep)? (patternStatement stmtSep)*)
512 | ((patternStatement stmtSep)* (lengthStatement stmtSep)?);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530513
514 /**
515 * length-stmt = length-keyword sep length-arg-str optsep
516 * (";" /
517 * "{" stmtsep
518 * ;; these stmts can appear in any order
519 * [error-message-stmt stmtsep]
520 * [error-app-tag-stmt stmtsep]
521 * [description-stmt stmtsep]
522 * [reference-stmt stmtsep]
523 * "}")
524 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530525 lengthStatement : LENGTH_KEYWORD length (STMTEND | LEFT_CURLY_BRACE
526 stmtSep commonStatements RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530527
528 /**
529 * pattern-stmt = pattern-keyword sep string optsep
530 * (";" /
531 * "{" stmtsep
532 * ;; these stmts can appear in any order
533 * [error-message-stmt stmtsep]
534 * [error-app-tag-stmt stmtsep]
535 * [description-stmt stmtsep]
536 * [reference-stmt stmtsep]
537 * "}")
538 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530539 patternStatement : PATTERN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE
540 stmtSep commonStatements RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530541
542 /**
543 * default-stmt = default-keyword sep string stmtend
544 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530545 defaultStatement : DEFAULT_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530546
547 /**
548 * enum-specification = 1*(enum-stmt stmtsep)
549 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530550 enumSpecification : (enumStatement stmtSep)+;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530551
552 /**
553 * enum-stmt = enum-keyword sep string optsep
554 * (";" /
555 * "{" stmtsep
556 * ;; these stmts can appear in any order
557 * [value-stmt stmtsep]
558 * [status-stmt stmtsep]
559 * [description-stmt stmtsep]
560 * [reference-stmt stmtsep]
561 * "}")
562 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530563 enumStatement : ENUM_KEYWORD string (STMTEND | LEFT_CURLY_BRACE
564 stmtSep enumStatementBody RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530565
Vidyashree Rama3c586732017-05-12 19:48:07 +0530566 enumStatementBody : (valueStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
567 | (valueStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
568 | (valueStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)?
569 | (valueStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)?
570 | (valueStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)?
571 | (valueStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)?
572 | (statusStatement stmtSep)? (valueStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
573 | (statusStatement stmtSep)? (valueStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
574 | (statusStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (valueStatement stmtSep)?
575 | (statusStatement stmtSep)? (descriptionStatement stmtSep)? (valueStatement stmtSep)? (referenceStatement stmtSep)?
576 | (statusStatement stmtSep)? (referenceStatement stmtSep)? (valueStatement stmtSep)? (descriptionStatement stmtSep)?
577 | (statusStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (valueStatement stmtSep)?
578 | (descriptionStatement stmtSep)? (valueStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)?
579 | (descriptionStatement stmtSep)? (valueStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)?
580 | (descriptionStatement stmtSep)? (statusStatement stmtSep)? (valueStatement stmtSep)? (referenceStatement stmtSep)?
581 | (descriptionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)? (valueStatement stmtSep)?
582 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (valueStatement stmtSep)? (statusStatement stmtSep)?
583 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)? (valueStatement stmtSep)?
584 | (referenceStatement stmtSep)? (valueStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)?
585 | (referenceStatement stmtSep)? (valueStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)?
586 | (referenceStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)? (valueStatement stmtSep)?
587 | (referenceStatement stmtSep)? (statusStatement stmtSep)? (valueStatement stmtSep)? (descriptionStatement stmtSep)?
588 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (valueStatement stmtSep)? (statusStatement stmtSep)?
589 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)? (valueStatement stmtSep)?
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530590 ;
591
592 /**
593 * leafref-specification =
594 * ;; these stmts can appear in any order
595 * path-stmt stmtsep
596 * [require-instance-stmt stmtsep]
597 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530598 leafrefSpecification : (pathStatement stmtSep (requireInstanceStatement stmtSep)?)
599 | ((requireInstanceStatement stmtSep)? pathStatement stmtSep);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530600
601 /**
602 * path-stmt = path-keyword sep path-arg-str stmtend
603 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530604 pathStatement : PATH_KEYWORD path stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530605
606 /**
607 * require-instance-stmt = require-instance-keyword sep
608 * require-instance-arg-str stmtend
609 * require-instance-arg-str = < a string that matches the rule
610 * require-instance-arg >
611 * require-instance-arg = true-keyword / false-keyword
612 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530613 requireInstanceStatement : REQUIRE_INSTANCE_KEYWORD requireInstance stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530614
615 /**
616 * instance-identifier-specification =
617 * [require-instance-stmt stmtsep]
618 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530619 instanceIdentifierSpecification : (requireInstanceStatement stmtSep)?;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530620
621 /**
622 * identityref-specification =
623 * base-stmt stmtsep
624 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530625 identityrefSpecification : baseStatement stmtSep;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530626
627 /**
628 * union-specification = 1*(type-stmt stmtsep)
629 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530630 unionSpecification : (typeStatement stmtSep)+;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530631
632 /**
633 * bits-specification = 1*(bit-stmt stmtsep)
634 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530635 bitsSpecification : (bitStatement stmtSep)+;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530636
637 /**
638 * bit-stmt = bit-keyword sep identifier-arg-str optsep
639 * (";" /
640 * "{" stmtsep
641 * ;; these stmts can appear in any order
642 * [position-stmt stmtsep]
643 * [status-stmt stmtsep]
644 * [description-stmt stmtsep]
645 * [reference-stmt stmtsep]
646 * "}"
647 * "}")
648 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530649 bitStatement : BIT_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE
650 stmtSep bitBodyStatement RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530651
Vidyashree Rama3c586732017-05-12 19:48:07 +0530652 bitBodyStatement : (positionStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
653 | (positionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
654 | (positionStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)?
655 | (positionStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)?
656 | (positionStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)?
657 | (positionStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)?
658 | (statusStatement stmtSep)? (positionStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)?
659 | (statusStatement stmtSep)? (positionStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)?
660 | (statusStatement stmtSep)? (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (positionStatement stmtSep)?
661 | (statusStatement stmtSep)? (descriptionStatement stmtSep)? (positionStatement stmtSep)? (referenceStatement stmtSep)?
662 | (statusStatement stmtSep)? (referenceStatement stmtSep)? (positionStatement stmtSep)? (descriptionStatement stmtSep)?
663 | (statusStatement stmtSep)? (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (positionStatement stmtSep)?
664 | (descriptionStatement stmtSep)? (positionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)?
665 | (descriptionStatement stmtSep)? (positionStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)?
666 | (descriptionStatement stmtSep)? (statusStatement stmtSep)? (positionStatement stmtSep)? (referenceStatement stmtSep)?
667 | (descriptionStatement stmtSep)? (statusStatement stmtSep)? (referenceStatement stmtSep)? (positionStatement stmtSep)?
668 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (positionStatement stmtSep)? (statusStatement stmtSep)?
669 | (descriptionStatement stmtSep)? (referenceStatement stmtSep)? (statusStatement stmtSep)? (positionStatement stmtSep)?
670 | (referenceStatement stmtSep)? (positionStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)?
671 | (referenceStatement stmtSep)? (positionStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)?
672 | (referenceStatement stmtSep)? (statusStatement stmtSep)? (descriptionStatement stmtSep)? (positionStatement stmtSep)?
673 | (referenceStatement stmtSep)? (statusStatement stmtSep)? (positionStatement stmtSep)? (descriptionStatement stmtSep)?
674 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (positionStatement stmtSep)? (statusStatement stmtSep)?
675 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)? (statusStatement stmtSep)? (positionStatement stmtSep)?
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530676 ;
677
678 /**
679 * position-stmt = position-keyword sep
680 * position-value-arg-str stmtend
681 * position-value-arg-str = < a string that matches the rule
682 * position-value-arg >
683 * position-value-arg = non-negative-integer-value
684 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530685 positionStatement : POSITION_KEYWORD position stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530686
687 /**
688 * status-stmt = status-keyword sep status-arg-str stmtend
689 * status-arg-str = < a string that matches the rule
690 * status-arg >
691 * status-arg = current-keyword /
692 * obsolete-keyword /
693 * deprecated-keyword
694 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530695 statusStatement : STATUS_KEYWORD status stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530696
697 /**
698 * config-stmt = config-keyword sep
699 * config-arg-str stmtend
700 * config-arg-str = < a string that matches the rule
701 * config-arg >
702 * config-arg = true-keyword / false-keyword
703 */
704 configStatement : CONFIG_KEYWORD config STMTEND;
705
706 /**
707 * mandatory-stmt = mandatory-keyword sep
708 * mandatory-arg-str stmtend
709 *
710 * mandatory-arg-str = < a string that matches the rule
711 * mandatory-arg >
712 *
713 * mandatory-arg = true-keyword / false-keyword
714 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530715 mandatoryStatement : MANDATORY_KEYWORD mandatory stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530716
717 /**
718 * presence-stmt = presence-keyword sep string stmtend
719 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530720 presenceStatement : PRESENCE_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530721
722 /**
723 * ordered-by-stmt = ordered-by-keyword sep
724 * ordered-by-arg-str stmtend
725 *
726 * ordered-by-arg-str = < a string that matches the rule
727 * ordered-by-arg >
728 *
729 * ordered-by-arg = user-keyword / system-keyword
730 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530731 orderedByStatement : ORDERED_BY_KEYWORD orderedBy stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530732
733 /**
734 * must-stmt = must-keyword sep string optsep
735 * (";" /
736 * "{" stmtsep
737 * ;; these stmts can appear in any order
738 * [error-message-stmt stmtsep]
739 * [error-app-tag-stmt stmtsep]
740 * [description-stmt stmtsep]
741 * [reference-stmt stmtsep]
742 * "}")
743 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530744 mustStatement : MUST_KEYWORD string (STMTEND | LEFT_CURLY_BRACE
745 stmtSep commonStatements RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530746
747 /**
748 * error-message-stmt = error-message-keyword sep string stmtend
749 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530750 errorMessageStatement : ERROR_MESSAGE_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530751
752 /**
753 * error-app-tag-stmt = error-app-tag-keyword sep string stmtend
754 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530755 errorAppTagStatement : ERROR_APP_TAG_KEYWORD string stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530756
757 /**
758 * min-elements-stmt = min-elements-keyword sep
759 * min-value-arg-str stmtend
760 * min-value-arg-str = < a string that matches the rule
761 * min-value-arg >
762 * min-value-arg = non-negative-integer-value
763 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530764 minElementsStatement : MIN_ELEMENTS_KEYWORD minValue stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530765
766 /**
767 * max-elements-stmt = max-elements-keyword sep
768 * max-value-arg-str stmtend
769 * max-value-arg-str = < a string that matches the rule
770 * max-value-arg >
771 * max-value-arg = unbounded-keyword /
772 * positive-integer-value
773 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530774 maxElementsStatement : MAX_ELEMENTS_KEYWORD maxValue stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530775
776 /**
777 * value-stmt = value-keyword sep integer-value stmtend
778 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530779 valueStatement : VALUE_KEYWORD value stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530780
781 /**
782 * grouping-stmt = grouping-keyword sep identifier-arg-str optsep
783 * (";" /
784 * "{" stmtsep
785 * ;; these stmts can appear in any order
786 * [status-stmt stmtsep]
787 * [description-stmt stmtsep]
788 * [reference-stmt stmtsep]
789 * *((typedef-stmt /
790 * grouping-stmt) stmtsep)
791 * *(data-def-stmt stmtsep)
792 * "}")
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530793 */
794 groupingStatement : GROUPING_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE
Vidyashree Rama3c586732017-05-12 19:48:07 +0530795 stmtSep ((statusStatement | descriptionStatement
796 | referenceStatement | typedefStatement | groupingStatement
797 | dataDefStatement) stmtSep)* RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530798
799 /**
800 * container-stmt = container-keyword sep identifier-arg-str optsep
801 * (";" /
802 * "{" stmtsep
803 * ;; these stmts can appear in any order
804 * [when-stmt stmtsep]
805 * *(if-feature-stmt stmtsep)
806 * *(must-stmt stmtsep)
807 * [presence-stmt stmtsep]
808 * [config-stmt stmtsep]
809 * [status-stmt stmtsep]
810 * [description-stmt stmtsep]
811 * [reference-stmt stmtsep]
812 * *((typedef-stmt /
813 * grouping-stmt) stmtsep)
814 * *(data-def-stmt stmtsep)
Sean Condon6b3a6452016-12-07 17:47:00 +0000815 * [default-deny-write-stmt stmtsep]
816 * [default-deny-all-stmt stmtsep]
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530817 * "}")
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530818 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530819 containerStatement : CONTAINER_KEYWORD identifier (STMTEND |
820 LEFT_CURLY_BRACE stmtSep ((whenStatement | ifFeatureStatement
821 | mustStatement | presenceStatement | configStatement
822 | statusStatement | descriptionStatement | referenceStatement
823 | typedefStatement | groupingStatement | dataDefStatement
824 | defaultDenyWriteStatement | defaultDenyAllStatement) stmtSep)*
825 RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530826
827 /**
828 * leaf-stmt = leaf-keyword sep identifier-arg-str optsep
829 * "{" stmtsep
830 * ;; these stmts can appear in any order
831 * [when-stmt stmtsep]
832 * *(if-feature-stmt stmtsep)
833 * type-stmt stmtsep
834 * [units-stmt stmtsep]
835 * *(must-stmt stmtsep)
836 * [default-stmt stmtsep]
837 * [config-stmt stmtsep]
838 * [mandatory-stmt stmtsep]
839 * [status-stmt stmtsep]
840 * [description-stmt stmtsep]
841 * [reference-stmt stmtsep]
Sean Condon6b3a6452016-12-07 17:47:00 +0000842 * [default-deny-write-stmt stmtsep]
843 * [default-deny-all-stmt stmtsep]
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530844 * "}"
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530845 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530846 leafStatement : LEAF_KEYWORD identifier LEFT_CURLY_BRACE stmtSep
847 ((whenStatement | ifFeatureStatement | typeStatement
848 | unitsStatement | mustStatement | defaultStatement
849 | configStatement | mandatoryStatement | statusStatement
850 | descriptionStatement | referenceStatement
851 | defaultDenyWriteStatement | defaultDenyAllStatement) stmtSep)*
852 RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530853
854 /**
855 * leaf-list-stmt = leaf-list-keyword sep identifier-arg-str optsep
856 * "{" stmtsep
857 * ;; these stmts can appear in any order
858 * [when-stmt stmtsep]
859 * *(if-feature-stmt stmtsep)
860 * type-stmt stmtsep
861 * [units-stmt stmtsep]
862 * *(must-stmt stmtsep)
863 * [config-stmt stmtsep]
864 * [min-elements-stmt stmtsep]
865 * [max-elements-stmt stmtsep]
866 * [ordered-by-stmt stmtsep]
867 * [status-stmt stmtsep]
868 * [description-stmt stmtsep]
869 * [reference-stmt stmtsep]
Sean Condon6b3a6452016-12-07 17:47:00 +0000870 * [default-deny-write-stmt stmtsep]
871 * [default-deny-all-stmt stmtsep]
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530872 * "}"
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530873 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530874 leafListStatement : LEAF_LIST_KEYWORD identifier LEFT_CURLY_BRACE stmtSep
875 ((whenStatement | ifFeatureStatement | typeStatement
876 | unitsStatement | mustStatement | configStatement
877 | minElementsStatement | maxElementsStatement | orderedByStatement
878 | statusStatement | descriptionStatement | referenceStatement
879 | defaultDenyWriteStatement | defaultDenyAllStatement) stmtSep)*
880 RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530881
882 /**
883 * list-stmt = list-keyword sep identifier-arg-str optsep
884 * "{" stmtsep
885 * ;; these stmts can appear in any order
886 * [when-stmt stmtsep]
887 * *(if-feature-stmt stmtsep)
888 * *(must-stmt stmtsep)
889 * [key-stmt stmtsep]
890 * *(unique-stmt stmtsep)
891 * [config-stmt stmtsep]
892 * [min-elements-stmt stmtsep]
893 * [max-elements-stmt stmtsep]
894 * [ordered-by-stmt stmtsep]
895 * [status-stmt stmtsep]
896 * [description-stmt stmtsep]
897 * [reference-stmt stmtsep]
Sean Condon6b3a6452016-12-07 17:47:00 +0000898 * [default-deny-write-stmt stmtsep]
899 * [default-deny-all-stmt stmtsep]
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530900 * *((typedef-stmt /
901 * grouping-stmt) stmtsep)
902 * 1*(data-def-stmt stmtsep)
903 * "}"
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530904 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530905 listStatement : LIST_KEYWORD identifier LEFT_CURLY_BRACE stmtSep
906 ((whenStatement | ifFeatureStatement | mustStatement | keyStatement
907 | uniqueStatement | configStatement | minElementsStatement
908 | maxElementsStatement | orderedByStatement | statusStatement
909 | descriptionStatement | referenceStatement | defaultDenyWriteStatement
910 | defaultDenyAllStatement | typedefStatement | groupingStatement|
911 dataDefStatement) stmtSep)* RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530912
913 /**
914 * key-stmt = key-keyword sep key-arg-str stmtend
915 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530916 keyStatement : KEY_KEYWORD key stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530917
918 /**
919 * unique-stmt = unique-keyword sep unique-arg-str stmtend
920 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530921 uniqueStatement: UNIQUE_KEYWORD unique stmtEnd;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530922
923 /**
924 * choice-stmt = choice-keyword sep identifier-arg-str optsep
925 * (";" /
926 * "{" stmtsep
927 * ;; these stmts can appear in any order
928 * [when-stmt stmtsep]
929 * *(if-feature-stmt stmtsep)
930 * [default-stmt stmtsep]
931 * [config-stmt stmtsep]
932 * [mandatory-stmt stmtsep]
933 * [status-stmt stmtsep]
934 * [description-stmt stmtsep]
935 * [reference-stmt stmtsep]
936 * *((short-case-stmt / case-stmt) stmtsep)
Vidyashree Rama3c586732017-05-12 19:48:07 +0530937 * [default-deny-write-stmt stmtsep]
938 * [default-deny-all-stmt stmtsep]
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530939 * "}")
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530940 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530941 choiceStatement : CHOICE_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE
942 stmtSep ((whenStatement | ifFeatureStatement | defaultStatement
943 | configStatement | mandatoryStatement | statusStatement
944 | descriptionStatement | referenceStatement | shortCaseStatement
945 | caseStatement | defaultDenyAllStatement
946 | defaultDenyWriteStatement) stmtSep)* RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530947
948 /**
949 * short-case-stmt = container-stmt /
950 * leaf-stmt /
951 * leaf-list-stmt /
952 * list-stmt /
953 * anyxml-stmt
954 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530955 shortCaseStatement : containerStatement | leafStatement | leafListStatement
sonugupta-huawei711d1e32017-09-14 10:59:08 +0530956 | listStatement | anyxmlStatement | anydataStatement;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530957
958 /**
959 * case-stmt = case-keyword sep identifier-arg-str optsep
960 * (";" /
961 * "{" stmtsep
962 * ;; these stmts can appear in any order
963 * [when-stmt stmtsep]
964 * *(if-feature-stmt stmtsep)
965 * [status-stmt stmtsep]
966 * [description-stmt stmtsep]
967 * [reference-stmt stmtsep]
968 * *(data-def-stmt stmtsep)
969 * "}")
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530970 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530971 caseStatement : CASE_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE stmtSep
972 ((whenStatement | ifFeatureStatement | statusStatement
973 | descriptionStatement | referenceStatement | dataDefStatement)
974 stmtSep)* RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530975
976 /**
977 * anyxml-stmt = anyxml-keyword sep identifier-arg-str optsep
978 * (";" /
979 * "{" stmtsep
980 * ;; these stmts can appear in any order
981 * [when-stmt stmtsep]
982 * *(if-feature-stmt stmtsep)
983 * *(must-stmt stmtsep)
984 * [config-stmt stmtsep]
985 * [mandatory-stmt stmtsep]
986 * [status-stmt stmtsep]
987 * [description-stmt stmtsep]
988 * [reference-stmt stmtsep]
Vidyashree Rama3c586732017-05-12 19:48:07 +0530989 * [default-deny-write-stmt stmtsep]
990 * [default-deny-all-stmt stmtsep]
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530991 * "}")
992 */
Vidyashree Rama3c586732017-05-12 19:48:07 +0530993 anyxmlStatement : ANYXML_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE
994 stmtSep ((whenStatement | ifFeatureStatement | mustStatement
995 | configStatement | mandatoryStatement | statusStatement
996 | descriptionStatement | referenceStatement
997 | defaultDenyWriteStatement | defaultDenyAllStatement) stmtSep)*
998 RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +0530999
1000 /**
1001 * uses-stmt = uses-keyword sep identifier-ref-arg-str optsep
1002 * (";" /
1003 * "{" stmtsep
1004 * ;; these stmts can appear in any order
1005 * [when-stmt stmtsep]
1006 * *(if-feature-stmt stmtsep)
1007 * [status-stmt stmtsep]
1008 * [description-stmt stmtsep]
1009 * [reference-stmt stmtsep]
1010 * *(refine-stmt stmtsep)
1011 * *(uses-augment-stmt stmtsep)
Vidyashree Rama3c586732017-05-12 19:48:07 +05301012 * [default-deny-write-stmt stmtsep]
1013 * [default-deny-all-stmt stmtsep]
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301014 * "}")
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301015 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301016 usesStatement : USES_KEYWORD string (STMTEND | LEFT_CURLY_BRACE
1017 stmtSep ((whenStatement | ifFeatureStatement | statusStatement
1018 | descriptionStatement | referenceStatement | refineStatement
1019 | augmentStatement | defaultDenyAllStatement
1020 | defaultDenyWriteStatement) stmtSep)* RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301021
1022 /**
1023 * refine-stmt = refine-keyword sep refine-arg-str optsep
1024 * (";" /
1025 * "{" stmtsep
1026 * (refine-container-stmts /
1027 * refine-leaf-stmts /
1028 * refine-leaf-list-stmts /
1029 * refine-list-stmts /
1030 * refine-choice-stmts /
1031 * refine-case-stmts /
1032 * refine-anyxml-stmts)
1033 * "}")
1034 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301035 refineStatement : REFINE_KEYWORD refine (STMTEND | LEFT_CURLY_BRACE
1036 stmtSep (refineContainerStatements | refineLeafStatements
1037 | refineLeafListStatements | refineListStatements
1038 | refineChoiceStatements | refineCaseStatements
1039 | refineAnyxmlStatements) RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301040
1041 /**
1042 * refine-container-stmts =
1043 * ;; these stmts can appear in any order
1044 * *(must-stmt stmtsep)
1045 * [presence-stmt stmtsep]
1046 * [config-stmt stmtsep]
1047 * [description-stmt stmtsep]
1048 * [reference-stmt stmtsep]
1049 * TODO : 0..1 occurance to be checked in listener
1050 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301051 refineContainerStatements : ((mustStatement | presenceStatement
1052 | configStatement | descriptionStatement stmtSep
1053 | referenceStatement) stmtSep)* ;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301054
1055 /**
1056 * refine-leaf-stmts = ;; these stmts can appear in any order
1057 * *(must-stmt stmtsep)
1058 * [default-stmt stmtsep]
1059 * [config-stmt stmtsep]
1060 * [mandatory-stmt stmtsep]
1061 * [description-stmt stmtsep]
1062 * [reference-stmt stmtsep]
1063 * TODO : 0..1 occurance to be checked in listener
1064 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301065 refineLeafStatements : ((mustStatement | defaultStatement
1066 | configStatement | mandatoryStatement | descriptionStatement
1067 | referenceStatement) stmtSep)*;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301068
1069 /**
1070 * refine-leaf-list-stmts =
1071 * ;; these stmts can appear in any order
1072 * *(must-stmt stmtsep)
1073 * [config-stmt stmtsep]
1074 * [min-elements-stmt stmtsep]
1075 * [max-elements-stmt stmtsep]
1076 * [description-stmt stmtsep]
1077 * [reference-stmt stmtsep]
1078 * TODO : 0..1 occurance to be checked in listener
1079 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301080 refineLeafListStatements : ((mustStatement | configStatement
1081 | minElementsStatement | maxElementsStatement
1082 | descriptionStatement | referenceStatement) stmtSep)*;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301083
1084 /**
1085 * refine-list-stmts = ;; these stmts can appear in any order
1086 * *(must-stmt stmtsep)
1087 * [config-stmt stmtsep]
1088 * [min-elements-stmt stmtsep]
1089 * [max-elements-stmt stmtsep]
1090 * [description-stmt stmtsep]
1091 * [reference-stmt stmtsep]
1092 * TODO : 0..1 occurance to be checked in listener
1093 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301094 refineListStatements : ((mustStatement | configStatement
1095 | minElementsStatement | maxElementsStatement
1096 | descriptionStatement | referenceStatement) stmtSep)*;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301097
1098 /**
1099 * refine-choice-stmts = ;; these stmts can appear in any order
1100 * [default-stmt stmtsep]
1101 * [config-stmt stmtsep]
1102 * [mandatory-stmt stmtsep]
1103 * [description-stmt stmtsep]
1104 * [reference-stmt stmtsep]
1105 * TODO : 0..1 occurance to be checked in listener
1106 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301107 refineChoiceStatements : ((defaultStatement | configStatement
1108 | mandatoryStatement | descriptionStatement
1109 | referenceStatement) stmtSep)*;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301110
1111 /**
1112 * refine-case-stmts = ;; these stmts can appear in any order
1113 * [description-stmt stmtsep]
1114 * [reference-stmt stmtsep]
1115 *
1116 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301117 refineCaseStatements : ((descriptionStatement stmtSep)
1118 | (referenceStatement stmtSep))? | ((referenceStatement stmtSep)
1119 | (descriptionStatement stmtSep))?;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301120
1121 /**
1122 * refine-anyxml-stmts = ;; these stmts can appear in any order
1123 * *(must-stmt stmtsep)
1124 * [config-stmt stmtsep]
1125 * [mandatory-stmt stmtsep]
1126 * [description-stmt stmtsep]
1127 * [reference-stmt stmtsep]
1128 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301129 refineAnyxmlStatements : ((mustStatement | configStatement
1130 | mandatoryStatement | descriptionStatement
1131 | referenceStatement) stmtSep)*;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301132
1133 /**
1134 * augment-stmt = augment-keyword sep augment-arg-str optsep
1135 * "{" stmtsep
1136 * ;; these stmts can appear in any order
1137 * [when-stmt stmtsep]
1138 * *(if-feature-stmt stmtsep)
1139 * [status-stmt stmtsep]
1140 * [description-stmt stmtsep]
1141 * [reference-stmt stmtsep]
1142 * 1*((data-def-stmt stmtsep) /
1143 * (case-stmt stmtsep))
1144 * "}"
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301145 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301146 augmentStatement : AUGMENT_KEYWORD augment LEFT_CURLY_BRACE stmtSep
1147 ((whenStatement | ifFeatureStatement | statusStatement
1148 | descriptionStatement | referenceStatement
1149 | dataDefStatement | caseStatement) stmtSep)* RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301150
1151 /**
1152 * when-stmt = when-keyword sep string optsep
1153 * (";" /
1154 * "{" stmtsep
1155 * ;; these stmts can appear in any order
1156 * [description-stmt stmtsep]
1157 * [reference-stmt stmtsep]
1158 * "}")
1159 *
1160 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301161 whenStatement : WHEN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE stmtSep
1162 ((descriptionStatement stmtSep)? (referenceStatement stmtSep)?
1163 | (referenceStatement stmtSep)? (descriptionStatement stmtSep)?)
1164 RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301165
1166 /**
1167 * rpc-stmt = rpc-keyword sep identifier-arg-str optsep
1168 * (";" /
1169 * "{" stmtsep
1170 * ;; these stmts can appear in any order
1171 * *(if-feature-stmt stmtsep)
1172 * [status-stmt stmtsep]
1173 * [description-stmt stmtsep]
1174 * [reference-stmt stmtsep]
1175 * *((typedef-stmt /
1176 * grouping-stmt) stmtsep)
1177 * [input-stmt stmtsep]
1178 * [output-stmt stmtsep]
Sean Condon6b3a6452016-12-07 17:47:00 +00001179 * [default-deny-all-stmt stmtsep]
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301180 * "}")
1181 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301182 rpcStatement : RPC_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE stmtSep
1183 ((ifFeatureStatement | statusStatement | descriptionStatement
1184 | referenceStatement | typedefStatement | groupingStatement
1185 | inputStatement | outputStatement | defaultDenyAllStatement)
1186 stmtSep)* RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301187
1188 /**
1189 * input-stmt = input-keyword optsep
1190 * "{" stmtsep
1191 * ;; these stmts can appear in any order
1192 * *((typedef-stmt /
1193 * grouping-stmt) stmtsep)
1194 * 1*(data-def-stmt stmtsep)
1195 * "}"
1196 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301197 inputStatement : INPUT_KEYWORD LEFT_CURLY_BRACE stmtSep ((typedefStatement
1198 | groupingStatement | dataDefStatement) stmtSep)* RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301199
1200 /**
1201 * output-stmt = output-keyword optsep
1202 * "{" stmtsep
1203 * ;; these stmts can appear in any order
1204 * *((typedef-stmt /
1205 * grouping-stmt) stmtsep)
1206 * 1*(data-def-stmt stmtsep)
1207 * "}"
1208 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301209 outputStatement : OUTPUT_KEYWORD LEFT_CURLY_BRACE stmtSep ((typedefStatement
1210 | groupingStatement | dataDefStatement) stmtSep)* RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301211
1212 /**
1213 * notification-stmt = notification-keyword sep
1214 * identifier-arg-str optsep
1215 * (";" /
1216 * "{" stmtsep
1217 * ;; these stmts can appear in any order
1218 * *(if-feature-stmt stmtsep)
1219 * [status-stmt stmtsep]
1220 * [description-stmt stmtsep]
1221 * [reference-stmt stmtsep]
Sean Condon6b3a6452016-12-07 17:47:00 +00001222 * [default-deny-all-stmt stmtsep]
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301223 * *((typedef-stmt /
1224 * grouping-stmt) stmtsep)
1225 * *(data-def-stmt stmtsep)
1226 * "}")
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301227 */
sonugupta-huaweib5189f12017-12-11 17:28:58 +05301228 notificationStatement : NOTIFICATION_KEYWORD identifier (STMTEND |
1229 LEFT_CURLY_BRACE stmtSep ((ifFeatureStatement | statusStatement
Vidyashree Rama3c586732017-05-12 19:48:07 +05301230 | descriptionStatement | referenceStatement | typedefStatement
1231 | defaultDenyAllStatement | groupingStatement | dataDefStatement)
1232 stmtSep)* RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301233
1234 /**
1235 * deviation-stmt = deviation-keyword sep
1236 * deviation-arg-str optsep
1237 * "{" stmtsep
1238 * ;; these stmts can appear in any order
1239 * [description-stmt stmtsep]
1240 * [reference-stmt stmtsep]
1241 * (deviate-not-supported-stmt /
1242 * 1*(deviate-add-stmt /
1243 * deviate-replace-stmt /
1244 * deviate-delete-stmt))
1245 * "}"
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301246 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301247 deviationStatement: DEVIATION_KEYWORD deviation LEFT_CURLY_BRACE stmtSep
1248 ((descriptionStatement stmtSep) | (referenceStatement stmtSep)
1249 | deviateNotSupportedStatement | deviateAddStatement | deviateReplaceStatement
1250 | deviateDeleteStatement)* RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301251
1252 /**
1253 * deviate-not-supported-stmt =
1254 * deviate-keyword sep
1255 * not-supported-keyword optsep
1256 * (";" /
1257 * "{" stmtsep
1258 * "}")
1259 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301260 deviateNotSupportedStatement: DEVIATE_KEYWORD NOT_SUPPORTED_KEYWORD (STMTEND
1261 | LEFT_CURLY_BRACE stmtSep RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301262
1263 /**
1264 * deviate-add-stmt = deviate-keyword sep add-keyword optsep
1265 * (";" /
1266 * "{" stmtsep
1267 * [units-stmt stmtsep]
1268 * *(must-stmt stmtsep)
1269 * *(unique-stmt stmtsep)
1270 * [default-stmt stmtsep]
1271 * [config-stmt stmtsep]
1272 * [mandatory-stmt stmtsep]
1273 * [min-elements-stmt stmtsep]
1274 * [max-elements-stmt stmtsep]
1275 * "}")
1276 */
Vidyashree Rama4066d712017-01-16 12:20:47 +05301277 deviateAddStatement: DEVIATE_KEYWORD ADD_KEYWORD (STMTEND
Vidyashree Rama3c586732017-05-12 19:48:07 +05301278 | LEFT_CURLY_BRACE stmtSep ((unitsStatement | mustStatement
1279 | uniqueStatement | defaultStatement | configStatement
1280 | mandatoryStatement | minElementsStatement | maxElementsStatement)
1281 stmtSep)* RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301282
1283 /**
1284 * deviate-delete-stmt = deviate-keyword sep delete-keyword optsep
1285 * (";" /
1286 * "{" stmtsep
1287 * [units-stmt stmtsep]
1288 * *(must-stmt stmtsep)
1289 * *(unique-stmt stmtsep)
1290 * [default-stmt stmtsep]
1291 * "}")
1292 */
1293 deviateDeleteStatement: DEVIATE_KEYWORD DELETE_KEYWORD (STMTEND
Vidyashree Rama3c586732017-05-12 19:48:07 +05301294 | LEFT_CURLY_BRACE stmtSep ((unitsStatement | mustStatement
1295 | uniqueStatement | defaultStatement) stmtSep)* RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301296
1297 /**
1298 * deviate-replace-stmt = deviate-keyword sep replace-keyword optsep
1299 * (";" /
1300 * "{" stmtsep
1301 * [type-stmt stmtsep]
1302 * [units-stmt stmtsep]
1303 * [default-stmt stmtsep]
1304 * [config-stmt stmtsep]
1305 * [mandatory-stmt stmtsep]
1306 * [min-elements-stmt stmtsep]
1307 * [max-elements-stmt stmtsep]
1308 * "}")
1309 */
Vidyashree Rama4066d712017-01-16 12:20:47 +05301310 deviateReplaceStatement: DEVIATE_KEYWORD REPLACE_KEYWORD (STMTEND
Vidyashree Rama3c586732017-05-12 19:48:07 +05301311 | LEFT_CURLY_BRACE stmtSep ((typeStatement | unitsStatement
1312 | defaultStatement | configStatement | mandatoryStatement
1313 | minElementsStatement | maxElementsStatement) stmtSep)*
1314 RIGHT_CURLY_BRACE);
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301315
1316 /**
1317 * compiler-annotation-stmt = prefix:compiler-annotation-keyword string
1318 * "{"
1319 * [app-data-structure-stmt stmtsep]
1320 * [app-extended-stmt stmtsep]
1321 * "}"
1322 */
1323 compilerAnnotationStatement : COMPILER_ANNOTATION string LEFT_CURLY_BRACE
Vidyashree Rama3c586732017-05-12 19:48:07 +05301324 compilerAnnotationBodyStatement RIGHT_CURLY_BRACE;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301325
Vidyashree Rama3c586732017-05-12 19:48:07 +05301326 compilerAnnotationBodyStatement : (appDataStructureStatement stmtSep)?
1327 (appExtendedStatement stmtSep)?;
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301328
1329 /**
1330 * app-data-structure-stmt = prefix:app-data-structure-keyword string
1331 * (";" /
1332 * "{"
1333 * [data-structure-key-stmt stmtsep]
1334 * "}")
1335 */
Vidyashree Rama3c586732017-05-12 19:48:07 +05301336 appDataStructureStatement : APP_DATA_STRUCTURE appDataStructure (STMTEND
1337 | (LEFT_CURLY_BRACE (dataStructureKeyStatement stmtSep)?
1338 RIGHT_CURLY_BRACE));
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301339
1340 /**
1341 * data-structure-key-stmt = prefix:key-keyword string ";"
1342 */
1343 dataStructureKeyStatement : DATA_STRUCTURE_KEY string STMTEND;
1344
1345 /**
1346 * app-extended-stmt = prefix:app-extended-name-keyword string ";"
1347 */
1348 appExtendedStatement : APP_EXTENDED extendedName STMTEND;
1349
Sean Condon6b3a6452016-12-07 17:47:00 +00001350 /**
1351 * default-deny-write-stmt = prefix:default-deny-write ";"
1352 * From ietf-netconf-acm.yang RFC 6536
1353 */
1354 defaultDenyWriteStatement : DEFAULT_DENY_WRITE STMTEND;
1355
1356 /**
1357 * default-deny-all-stmt = prefix:default-deny-all ";"
1358 * From ietf-netconf-acm.yang RFC 6536
1359 */
1360 defaultDenyAllStatement : DEFAULT_DENY_ALL STMTEND;
1361
sonugupta-huawei711d1e32017-09-14 10:59:08 +05301362
1363 /**
1364 * anydata-stmt = anydata-keyword sep identifier-arg-str optsep
1365 * (";" /
1366 * "{" stmtsep
1367 * ;; these stmts can appear in any order
1368 * [when-stmt]
1369 * *if-feature-stmt
1370 * *must-stmt
1371 * [config-stmt]
1372 * [mandatory-stmt]
1373 * [status-stmt]
1374 * [description-stmt]
1375 * [reference-stmt]
1376 * "}") stmtsep
1377 */
1378 anydataStatement : ANYDATA_KEYWORD identifier (STMTEND |
1379 LEFT_CURLY_BRACE stmtSep (whenStatement | ifFeatureStatement
1380 | mustStatement | configStatement | mandatoryStatement
1381 | statusStatement | descriptionStatement | referenceStatement)*
1382 RIGHT_CURLY_BRACE) stmtSep;
1383
Vidyashree Rama3c586732017-05-12 19:48:07 +05301384 /**
1385 * unknown-statement = prefix ":" identifier [sep string] optsep
1386 * (";" / "{" *unknown-statement2 "}")
1387 */
1388 unknownStatement : unknown string? (STMTEND
sonugupta-huaweib5189f12017-12-11 17:28:58 +05301389 | LEFT_CURLY_BRACE (yangStatement |unknownStatement2)*
1390 RIGHT_CURLY_BRACE) stmtSep;
Vidyashree Rama3c586732017-05-12 19:48:07 +05301391
1392 /**
1393 * unknown-statement2 = [prefix ":"] identifier [sep string] optsep
1394 * (";" / "{" *unknown-statement2 "}")
1395 */
1396 unknownStatement2 : unknown2 string? (STMTEND
1397 | LEFT_CURLY_BRACE unknownStatement2* RIGHT_CURLY_BRACE);
1398
1399 /**
sonugupta-huaweib5189f12017-12-11 17:28:58 +05301400 * yang-stmt as per RFC 7950
1401 * yang-stmt = action-stmt / -- not handled
1402 * anydata-stmt /
1403 * anyxml-stmt /
1404 * argument-stmt /
1405 * augment-stmt /
1406 * base-stmt /
1407 * belongs-to-stmt /
1408 * bit-stmt /
1409 * case-stmt /
1410 * choice-stmt /
1411 * config-stmt /
1412 * contact-stmt /
1413 * container-stmt /
1414 * default-stmt /
1415 * description-stmt /
1416 * deviate-add-stmt /
1417 * deviate-delete-stmt /
1418 * deviate-not-supported-stmt /
1419 * deviate-replace-stmt /
1420 * deviation-stmt /
1421 * enum-stmt /
1422 * error-app-tag-stmt /
1423 * error-message-stmt /
1424 * extension-stmt /
1425 * feature-stmt /
1426 * fraction-digits-stmt /
1427 * grouping-stmt /
1428 * identity-stmt /
1429 * if-feature-stmt /
1430 * import-stmt /
1431 * include-stmt /
1432 * input-stmt /
1433 * key-stmt /
1434 * leaf-list-stmt /
1435 * leaf-stmt /
1436 * length-stmt /
1437 * list-stmt /
1438 * mandatory-stmt /
1439 * max-elements-stmt /
1440 * min-elements-stmt /
1441 * modifier-stmt / -- not handled
1442 * module-stmt /
1443 * must-stmt /
1444 * namespace-stmt /
1445 * notification-stmt /
1446 * ordered-by-stmt /
1447 * organization-stmt /
1448 * output-stmt /
1449 * path-stmt /
1450 * pattern-stmt /
1451 * position-stmt /
1452 * prefix-stmt /
1453 * presence-stmt /
1454 * range-stmt /
1455 * reference-stmt /
1456 * refine-stmt /
1457 * require-instance-stmt /
1458 * revision-date-stmt /
1459 * revision-stmt /
1460 * rpc-stmt /
1461 * status-stmt /
1462 * submodule-stmt /
1463 * typedef-stmt /
1464 * type-stmt /
1465 * unique-stmt /
1466 * units-stmt /
1467 * uses-augment-stmt / -- not handled
1468 * uses-stmt /
1469 * value-stmt /
1470 * when-stmt /
1471 * yang-version-stmt /
1472 * yin-element-stmt
1473 * ;; Ranges
1474 */
1475 yangStatement : anydataStatement
1476 | anyxmlStatement | argumentStatement | augmentStatement
1477 | baseStatement | belongstoStatement | bitStatement
1478 | caseStatement | choiceStatement | configStatement
1479 | contactStatement | containerStatement | defaultStatement
1480 | descriptionStatement | deviationStatement | enumStatement
1481 | errorAppTagStatement | errorMessageStatement | extensionStatement
1482 | featureStatement | fractionDigitStatement | groupingStatement
1483 | identityStatement | ifFeatureStatement | importStatement
1484 | includeStatement | inputStatement | keyStatement
1485 | leafListStatement | leafStatement | lengthStatement
1486 | listStatement | mandatoryStatement | maxElementsStatement
1487 | minElementsStatement | moduleStatement | mustStatement
1488 | namespaceStatement | notificationStatement | orderedByStatement
1489 | organizationStatement | outputStatement | pathStatement
1490 | patternStatement | positionStatement | prefixStatement
1491 | presenceStatement | rangeStatement | referenceStatement
1492 | refineStatement | requireInstanceStatement | revisionDateStatement
1493 | revisionStatement | rpcStatement | statusStatement
1494 | subModuleStatement | typedefStatement | typeStatement
1495 | uniqueStatement | unitsStatement | usesStatement
1496 | valueStatement | whenStatement | yangVersionStatement
1497 | yinElementStatement ;
1498
1499 /**
Vidyashree Rama3c586732017-05-12 19:48:07 +05301500 * stmtend = ";" / "{" *unknown-statement "}"
1501 */
1502 stmtEnd : STMTEND | LEFT_CURLY_BRACE unknownStatement* RIGHT_CURLY_BRACE;
1503
1504 stmtSep : unknownStatement*;
1505
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301506 string : STRING (PLUS STRING)*
1507 | IDENTIFIER
1508 | INTEGER
Vidyashree Rama3c586732017-05-12 19:48:07 +05301509 | UNKNOWN_STATEMENT
1510 | UNKNOWN_STATEMENT2
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301511 | yangConstruct;
1512
Vidyashree Rama3c586732017-05-12 19:48:07 +05301513 unknown : UNKNOWN_STATEMENT;
1514
1515 unknown2 : UNKNOWN_STATEMENT
1516 | IDENTIFIER;
1517
Gaurav Agrawala599a8f2017-01-10 20:45:27 +05301518 identifier : STRING (PLUS STRING)*
1519 | IDENTIFIER
1520 | yangConstruct;
1521
1522 dateArgumentString : DATE_ARG
1523 | STRING (PLUS STRING)*;
1524
1525 version : string;
1526
1527 range : string;
1528
1529 length : string;
1530
1531 path : string;
1532
1533 position : string;
1534
1535 status : string;
1536
1537 config : string;
1538
1539 mandatory : string;
1540
1541 orderedBy : string;
1542
1543 minValue : string;
1544
1545 maxValue : string;
1546
1547 key : string;
1548
1549 unique : string;
1550
1551 refine : string;
1552
1553 requireInstance : string;
1554
1555 augment : string;
1556
1557 deviation : string;
1558
1559 value : string;
1560
1561 fraction : string;
1562
1563 appDataStructure : string;
1564
1565 extendedName : string;
1566
1567 yangConstruct : ANYXML_KEYWORD | ARGUMENT_KEYWORD | AUGMENT_KEYWORD | BASE_KEYWORD | BELONGS_TO_KEYWORD
1568 | BIT_KEYWORD | CASE_KEYWORD | CHOICE_KEYWORD | CONFIG_KEYWORD | CONTACT_KEYWORD | CONTAINER_KEYWORD
1569 | DEFAULT_KEYWORD | DESCRIPTION_KEYWORD | ENUM_KEYWORD | ERROR_APP_TAG_KEYWORD | ERROR_MESSAGE_KEYWORD
1570 | EXTENSION_KEYWORD | DEVIATION_KEYWORD | DEVIATE_KEYWORD | FEATURE_KEYWORD
1571 | FRACTION_DIGITS_KEYWORD | GROUPING_KEYWORD | IDENTITY_KEYWORD | IF_FEATURE_KEYWORD
1572 | IMPORT_KEYWORD | INCLUDE_KEYWORD | INPUT_KEYWORD | KEY_KEYWORD | LEAF_KEYWORD | LEAF_LIST_KEYWORD
1573 | LENGTH_KEYWORD | LIST_KEYWORD | MANDATORY_KEYWORD | MAX_ELEMENTS_KEYWORD | MIN_ELEMENTS_KEYWORD
1574 | MODULE_KEYWORD | MUST_KEYWORD | NAMESPACE_KEYWORD | NOTIFICATION_KEYWORD | ORDERED_BY_KEYWORD
1575 | ORGANIZATION_KEYWORD | OUTPUT_KEYWORD | PATH_KEYWORD | PATTERN_KEYWORD | POSITION_KEYWORD
1576 | PREFIX_KEYWORD | PRESENCE_KEYWORD | RANGE_KEYWORD | REFERENCE_KEYWORD | REFINE_KEYWORD
1577 | REQUIRE_INSTANCE_KEYWORD | REVISION_KEYWORD | REVISION_DATE_KEYWORD | RPC_KEYWORD
1578 | STATUS_KEYWORD | SUBMODULE_KEYWORD | TYPE_KEYWORD | TYPEDEF_KEYWORD | UNIQUE_KEYWORD
1579 | UNITS_KEYWORD | USES_KEYWORD | VALUE_KEYWORD | WHEN_KEYWORD | YANG_VERSION_KEYWORD
1580 | YIN_ELEMENT_KEYWORD | ADD_KEYWORD | CURRENT_KEYWORD | DELETE_KEYWORD | DEPRECATED_KEYWORD
1581 | FALSE_KEYWORD | MAX_KEYWORD | MIN_KEYWORD | NOT_SUPPORTED_KEYWORD | OBSOLETE_KEYWORD
1582 | REPLACE_KEYWORD | SYSTEM_KEYWORD | TRUE_KEYWORD | UNBOUNDED_KEYWORD | USER_KEYWORD
1583 | COMPILER_ANNOTATION_KEYWORD | APP_DATA_STRUCTURE_KEYWORD | DATA_STRUCTURE_KEYWORD
sonugupta-huawei711d1e32017-09-14 10:59:08 +05301584 | APP_EXTENDED_KEYWORD | DEFAULT_DENY_WRITE_KEYWORD | DEFAULT_DENY_ALL_KEYWORD
1585 | ANYDATA_KEYWORD;