Committed by
Gerrit Code Review
[ONOS-3877] Implement Yang grammar for leaf,leaf-list,augment,grouping/uses
[ONOS-3917] YANG LEXER Change-Id: Ic2476cd97b9b2b5b557a93fb975cc89002ff4464
Showing
2 changed files
with
1363 additions
and
0 deletions
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
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 | + | ||
21 | +grammar GeneratedYang; | ||
22 | +import YangLexer; | ||
23 | + | ||
24 | +@header { | ||
25 | +package org.onosproject.yangutils.parser.antlrgencode; | ||
26 | +} | ||
27 | + | ||
28 | + yangfile : module_stmt | ||
29 | + | submodule_stmt; | ||
30 | + | ||
31 | + /** | ||
32 | + * module-stmt = optsep module-keyword sep identifier-arg-str | ||
33 | + * optsep | ||
34 | + * "{" stmtsep | ||
35 | + * module-header-stmts | ||
36 | + * linkage-stmts | ||
37 | + * meta-stmts | ||
38 | + * revision-stmts | ||
39 | + * body-stmts | ||
40 | + * "}" optsep | ||
41 | + */ | ||
42 | + | ||
43 | + module_stmt : MODULE_KEYWORD IDENTIFIER LEFT_CURLY_BRACE module_body* RIGHT_CURLY_BRACE; | ||
44 | + | ||
45 | + module_body : module_header_statement linkage_stmts meta_stmts revision_stmts body_stmts; | ||
46 | + | ||
47 | + /** | ||
48 | + * module-header-stmts = ;; these stmts can appear in any order | ||
49 | + * [yang-version-stmt stmtsep] | ||
50 | + * namespace-stmt stmtsep | ||
51 | + * prefix-stmt stmtsep | ||
52 | + */ | ||
53 | + | ||
54 | + module_header_statement : yang_version_stmt? namespace_stmt prefix_stmt | ||
55 | + | yang_version_stmt? prefix_stmt namespace_stmt | ||
56 | + | namespace_stmt yang_version_stmt? prefix_stmt | ||
57 | + | namespace_stmt prefix_stmt yang_version_stmt? | ||
58 | + | prefix_stmt namespace_stmt yang_version_stmt? | ||
59 | + | prefix_stmt yang_version_stmt? namespace_stmt? | ||
60 | + ; | ||
61 | + | ||
62 | + /** | ||
63 | + * linkage-stmts = ;; these stmts can appear in any order | ||
64 | + * *(import-stmt stmtsep) | ||
65 | + * *(include-stmt stmtsep) | ||
66 | + */ | ||
67 | + | ||
68 | + linkage_stmts : (import_stmt | ||
69 | + | include_stmt)*; | ||
70 | + | ||
71 | + /** | ||
72 | + * meta-stmts = ;; these stmts can appear in any order | ||
73 | + * [organization-stmt stmtsep] | ||
74 | + * [contact-stmt stmtsep] | ||
75 | + * [description-stmt stmtsep] | ||
76 | + * [reference-stmt stmtsep] | ||
77 | + */ | ||
78 | + | ||
79 | + meta_stmts : organization_stmt? contact_stmt? description_stmt? reference_stmt? | ||
80 | + | organization_stmt? contact_stmt? reference_stmt? description_stmt? | ||
81 | + | organization_stmt? description_stmt? contact_stmt? reference_stmt? | ||
82 | + | organization_stmt? description_stmt? reference_stmt? contact_stmt? | ||
83 | + | organization_stmt? reference_stmt? contact_stmt? description_stmt? | ||
84 | + | organization_stmt? reference_stmt? description_stmt? contact_stmt? | ||
85 | + | contact_stmt? organization_stmt? description_stmt? reference_stmt? | ||
86 | + | contact_stmt? organization_stmt? reference_stmt? description_stmt? | ||
87 | + | contact_stmt? reference_stmt? organization_stmt? description_stmt? | ||
88 | + | contact_stmt? reference_stmt? description_stmt? organization_stmt? | ||
89 | + | contact_stmt? description_stmt? reference_stmt? organization_stmt? | ||
90 | + | contact_stmt? description_stmt? organization_stmt? reference_stmt? | ||
91 | + | reference_stmt? contact_stmt? organization_stmt? description_stmt? | ||
92 | + | reference_stmt? contact_stmt? description_stmt? organization_stmt? | ||
93 | + | reference_stmt? organization_stmt? contact_stmt? description_stmt? | ||
94 | + | reference_stmt? organization_stmt? description_stmt? contact_stmt? | ||
95 | + | reference_stmt? description_stmt? organization_stmt? contact_stmt? | ||
96 | + | reference_stmt? description_stmt? contact_stmt? organization_stmt? | ||
97 | + | description_stmt? reference_stmt? contact_stmt? organization_stmt? | ||
98 | + | description_stmt? reference_stmt? organization_stmt? contact_stmt? | ||
99 | + | description_stmt? contact_stmt? reference_stmt? organization_stmt? | ||
100 | + | description_stmt? contact_stmt? organization_stmt? reference_stmt? | ||
101 | + | description_stmt? organization_stmt? contact_stmt? reference_stmt? | ||
102 | + | description_stmt? organization_stmt? reference_stmt? contact_stmt? | ||
103 | + ; | ||
104 | + | ||
105 | + // revision-stmts = *(revision-stmt stmtsep) | ||
106 | + revision_stmts : revision_stmt*; | ||
107 | + | ||
108 | + /** | ||
109 | + * body-stmts = *((extension-stmt / | ||
110 | + * feature-stmt / | ||
111 | + * identity-stmt / | ||
112 | + * typedef-stmt / | ||
113 | + * grouping-stmt / | ||
114 | + * data-def-stmt / | ||
115 | + * augment-stmt / | ||
116 | + * rpc-stmt / | ||
117 | + * notification-stmt / | ||
118 | + * deviation-stmt) stmtsep) | ||
119 | + */ | ||
120 | + | ||
121 | + body_stmts : (extension_stmt | ||
122 | + | feature_stmt | ||
123 | + | identity_stmt | ||
124 | + | typedef_stmt | ||
125 | + | grouping_stmt | ||
126 | + | data_def_stmt | ||
127 | + | augment_stmt | ||
128 | + | rpc_stmt | ||
129 | + | notification_stmt | ||
130 | + | deviation_stmt)* | ||
131 | + ; | ||
132 | + | ||
133 | + /** | ||
134 | + * yang-version-stmt = yang-version-keyword sep yang-version-arg-str | ||
135 | + * optsep stmtend | ||
136 | + */ | ||
137 | + | ||
138 | + yang_version_stmt : YANG_VERSION_KEYWORD INTEGER STMTEND; | ||
139 | + | ||
140 | + | ||
141 | + /** | ||
142 | + * namespace-stmt = namespace-keyword sep uri-str optsep stmtend | ||
143 | + * For namespace validation TODO in Listener | ||
144 | + */ | ||
145 | + namespace_stmt : NAMESPACE_KEYWORD string STMTEND; | ||
146 | + | ||
147 | + /** | ||
148 | + * prefix-stmt = prefix-keyword sep prefix-arg-str | ||
149 | + * optsep stmtend | ||
150 | + */ | ||
151 | + prefix_stmt : PREFIX_KEYWORD IDENTIFIER STMTEND; | ||
152 | + | ||
153 | + /** | ||
154 | + * import-stmt = import-keyword sep identifier-arg-str optsep | ||
155 | + * "{" stmtsep | ||
156 | + * prefix-stmt stmtsep | ||
157 | + * [revision-date-stmt stmtsep] | ||
158 | + * "}" | ||
159 | + */ | ||
160 | + import_stmt : IMPORT_KEYWORD IDENTIFIER LEFT_CURLY_BRACE import_stmt_body RIGHT_CURLY_BRACE; | ||
161 | + | ||
162 | + import_stmt_body : prefix_stmt revision_date_stmt?; | ||
163 | + | ||
164 | + // revision-date-stmt = revision-date-keyword sep revision-date stmtend | ||
165 | + revision_date_stmt : REVISION_DATE_KEYWORD DATE_ARG STMTEND; | ||
166 | + | ||
167 | + revision_date_stmt_body : revision_date_stmt; | ||
168 | + | ||
169 | + /** | ||
170 | + * include-stmt = include-keyword sep identifier-arg-str optsep | ||
171 | + * (";" / | ||
172 | + * "{" stmtsep | ||
173 | + * [revision-date-stmt stmtsep] | ||
174 | + * "}") | ||
175 | + */ | ||
176 | + include_stmt : INCLUDE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE revision_date_stmt_body? RIGHT_CURLY_BRACE); | ||
177 | + | ||
178 | + /** | ||
179 | + * organization-stmt = organization-keyword sep string | ||
180 | + * optsep stmtend | ||
181 | + */ | ||
182 | + organization_stmt : ORGANIZATION_KEYWORD string STMTEND; | ||
183 | + | ||
184 | + // contact-stmt = contact-keyword sep string optsep stmtend | ||
185 | + contact_stmt : CONTACT_KEYWORD string STMTEND; | ||
186 | + | ||
187 | + // description-stmt = description-keyword sep string optsep stmtend | ||
188 | + description_stmt : DESCRIPTION_KEYWORD string STMTEND; | ||
189 | + | ||
190 | + // reference-stmt = reference-keyword sep string optsep stmtend | ||
191 | + reference_stmt : REFERENCE_KEYWORD string STMTEND; | ||
192 | + | ||
193 | + /** | ||
194 | + * revision-stmt = revision-keyword sep revision-date optsep | ||
195 | + * (";" / | ||
196 | + * "{" stmtsep | ||
197 | + * [description-stmt stmtsep] | ||
198 | + * [reference-stmt stmtsep] | ||
199 | + * "}") | ||
200 | + */ | ||
201 | + revision_stmt : REVISION_KEYWORD DATE_ARG (STMTEND | LEFT_CURLY_BRACE revision_stmt_body RIGHT_CURLY_BRACE); | ||
202 | + revision_stmt_body : description_stmt? reference_stmt?; | ||
203 | + | ||
204 | + /** | ||
205 | + * submodule-stmt = optsep submodule-keyword sep identifier-arg-str | ||
206 | + * optsep | ||
207 | + * "{" stmtsep | ||
208 | + * submodule-header-stmts | ||
209 | + * linkage-stmts | ||
210 | + * meta-stmts | ||
211 | + * revision-stmts | ||
212 | + * body-stmts | ||
213 | + * "}" optsep | ||
214 | + */ | ||
215 | + submodule_stmt : SUBMODULE_KEYWORD IDENTIFIER LEFT_CURLY_BRACE submodule_body* RIGHT_CURLY_BRACE; | ||
216 | + submodule_body : submodule_header_statement linkage_stmts meta_stmts revision_stmts body_stmts; | ||
217 | + | ||
218 | + /** submodule-header-stmts = | ||
219 | + * ;; these stmts can appear in any order | ||
220 | + * [yang-version-stmt stmtsep] | ||
221 | + * belongs-to-stmt stmtsep | ||
222 | + */ | ||
223 | + submodule_header_statement : yang_version_stmt? belongs_to_stmt | ||
224 | + | belongs_to_stmt yang_version_stmt? | ||
225 | + ; | ||
226 | + | ||
227 | + /** | ||
228 | + * belongs-to-stmt = belongs-to-keyword sep identifier-arg-str | ||
229 | + * optsep | ||
230 | + * "{" stmtsep | ||
231 | + * prefix-stmt stmtsep | ||
232 | + * "}" | ||
233 | + */ | ||
234 | + belongs_to_stmt : BELONGS_TO_KEYWORD IDENTIFIER LEFT_CURLY_BRACE belongs_to_stmt_body RIGHT_CURLY_BRACE; | ||
235 | + belongs_to_stmt_body : prefix_stmt; | ||
236 | + | ||
237 | + /** | ||
238 | + * extension-stmt = extension-keyword sep identifier-arg-str optsep | ||
239 | + * (";" / | ||
240 | + * "{" stmtsep | ||
241 | + * ;; these stmts can appear in any order | ||
242 | + * [argument-stmt stmtsep] | ||
243 | + * [status-stmt stmtsep] | ||
244 | + * [description-stmt stmtsep] | ||
245 | + * [reference-stmt stmtsep] | ||
246 | + * "}") | ||
247 | + */ | ||
248 | + extension_stmt : EXTENSION_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE extension_body RIGHT_CURLY_BRACE); | ||
249 | + extension_body : argument_stmt? status_stmt? description_stmt? reference_stmt? | ||
250 | + | argument_stmt? status_stmt? reference_stmt? description_stmt? | ||
251 | + | argument_stmt? description_stmt? status_stmt? reference_stmt? | ||
252 | + | argument_stmt? description_stmt? reference_stmt? status_stmt? | ||
253 | + | argument_stmt? reference_stmt? description_stmt? status_stmt? | ||
254 | + | argument_stmt? reference_stmt? status_stmt? description_stmt? | ||
255 | + | status_stmt? reference_stmt? argument_stmt? description_stmt? | ||
256 | + | status_stmt? reference_stmt? description_stmt? argument_stmt? | ||
257 | + | status_stmt? description_stmt? reference_stmt? argument_stmt? | ||
258 | + | status_stmt? description_stmt? argument_stmt? reference_stmt? | ||
259 | + | status_stmt? argument_stmt? reference_stmt? description_stmt? | ||
260 | + | status_stmt? argument_stmt? description_stmt? reference_stmt? | ||
261 | + | description_stmt? argument_stmt? status_stmt? reference_stmt? | ||
262 | + | description_stmt? argument_stmt? reference_stmt? status_stmt? | ||
263 | + | description_stmt? status_stmt? argument_stmt? reference_stmt? | ||
264 | + | description_stmt? status_stmt? reference_stmt? argument_stmt? | ||
265 | + | description_stmt? reference_stmt? status_stmt? argument_stmt? | ||
266 | + | description_stmt? reference_stmt? argument_stmt? status_stmt? | ||
267 | + | reference_stmt? description_stmt? argument_stmt? status_stmt? | ||
268 | + | reference_stmt? description_stmt? status_stmt? argument_stmt? | ||
269 | + | reference_stmt? status_stmt? argument_stmt? description_stmt? | ||
270 | + | reference_stmt? status_stmt? description_stmt? argument_stmt? | ||
271 | + | reference_stmt? argument_stmt? description_stmt? status_stmt? | ||
272 | + | reference_stmt? argument_stmt? status_stmt? description_stmt? | ||
273 | + ; | ||
274 | + | ||
275 | + /** | ||
276 | + * argument-stmt = argument-keyword sep identifier-arg-str optsep | ||
277 | + * (";" / | ||
278 | + * "{" stmtsep | ||
279 | + * [yin-element-stmt stmtsep] | ||
280 | + * "}") | ||
281 | + */ | ||
282 | + argument_stmt : ARGUMENT_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE argument_body RIGHT_CURLY_BRACE); | ||
283 | + argument_body : yin_element_stmt?; | ||
284 | + | ||
285 | + /** | ||
286 | + * yin-element-stmt = yin-element-keyword sep yin-element-arg-str | ||
287 | + * stmtend | ||
288 | + */ | ||
289 | + yin_element_stmt : YIN_ELEMENT_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND; | ||
290 | + | ||
291 | + /** | ||
292 | + * identity-stmt = identity-keyword sep identifier-arg-str optsep | ||
293 | + * (";" / | ||
294 | + * "{" stmtsep | ||
295 | + * ;; these stmts can appear in any order | ||
296 | + * [base-stmt stmtsep] | ||
297 | + * [status-stmt stmtsep] | ||
298 | + * [description-stmt stmtsep] | ||
299 | + * [reference-stmt stmtsep] | ||
300 | + * "}") | ||
301 | + */ | ||
302 | + identity_stmt : IDENTITY_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE identity_body RIGHT_CURLY_BRACE); | ||
303 | + identity_body : base_stmt? status_stmt? description_stmt? reference_stmt? | ||
304 | + | base_stmt? status_stmt? reference_stmt? description_stmt? | ||
305 | + | base_stmt? description_stmt? status_stmt? reference_stmt? | ||
306 | + | base_stmt? description_stmt? reference_stmt? status_stmt? | ||
307 | + | base_stmt? reference_stmt? description_stmt? status_stmt? | ||
308 | + | base_stmt? reference_stmt? status_stmt? description_stmt? | ||
309 | + | reference_stmt? base_stmt? status_stmt? description_stmt? | ||
310 | + | reference_stmt? base_stmt? description_stmt? status_stmt? | ||
311 | + | reference_stmt? status_stmt? base_stmt? description_stmt? | ||
312 | + | reference_stmt? status_stmt? description_stmt? base_stmt? | ||
313 | + | reference_stmt? description_stmt? status_stmt? base_stmt? | ||
314 | + | reference_stmt? description_stmt? base_stmt? status_stmt? | ||
315 | + | description_stmt? reference_stmt? status_stmt? base_stmt? | ||
316 | + | description_stmt? reference_stmt? status_stmt? base_stmt? | ||
317 | + | description_stmt? reference_stmt? base_stmt? status_stmt? | ||
318 | + | description_stmt? status_stmt? base_stmt? reference_stmt? | ||
319 | + | description_stmt? status_stmt? reference_stmt? base_stmt? | ||
320 | + | description_stmt? base_stmt? reference_stmt? status_stmt? | ||
321 | + | description_stmt? base_stmt? status_stmt? reference_stmt? | ||
322 | + | status_stmt? base_stmt? description_stmt? reference_stmt? | ||
323 | + | status_stmt? base_stmt? reference_stmt? description_stmt? | ||
324 | + | status_stmt? description_stmt? base_stmt? reference_stmt? | ||
325 | + | status_stmt? description_stmt? reference_stmt? base_stmt? | ||
326 | + | status_stmt? reference_stmt? description_stmt? base_stmt? | ||
327 | + | status_stmt? reference_stmt? base_stmt? description_stmt? | ||
328 | + ; | ||
329 | + | ||
330 | + /** | ||
331 | + * base-stmt = base-keyword sep identifier-ref-arg-str | ||
332 | + * optsep stmtend* | ||
333 | + * identifier-ref-arg = [prefix ":"] identifier | ||
334 | + */ | ||
335 | + base_stmt : BASE_KEYWORD string STMTEND; | ||
336 | + | ||
337 | + /** | ||
338 | + * feature-stmt = feature-keyword sep identifier-arg-str optsep | ||
339 | + * (";" / | ||
340 | + * "{" stmtsep | ||
341 | + * ;; these stmts can appear in any order | ||
342 | + * *(if-feature-stmt stmtsep) | ||
343 | + * [status-stmt stmtsep] | ||
344 | + * [description-stmt stmtsep] | ||
345 | + * [reference-stmt stmtsep] | ||
346 | + * "}") | ||
347 | + */ | ||
348 | + feature_stmt : FEATURE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE feature_body RIGHT_CURLY_BRACE); | ||
349 | + feature_body : if_feature_stmt* status_stmt? description_stmt? reference_stmt? | ||
350 | + | if_feature_stmt* status_stmt? reference_stmt? description_stmt? | ||
351 | + | if_feature_stmt* description_stmt? status_stmt? reference_stmt? | ||
352 | + | if_feature_stmt* description_stmt? reference_stmt? status_stmt? | ||
353 | + | if_feature_stmt* reference_stmt? status_stmt? description_stmt? | ||
354 | + | if_feature_stmt* reference_stmt? description_stmt? status_stmt? | ||
355 | + | status_stmt? if_feature_stmt* description_stmt? reference_stmt? | ||
356 | + | status_stmt? if_feature_stmt* reference_stmt? description_stmt? | ||
357 | + | status_stmt? description_stmt? if_feature_stmt* reference_stmt? | ||
358 | + | status_stmt? description_stmt? reference_stmt? if_feature_stmt* | ||
359 | + | status_stmt? reference_stmt? if_feature_stmt* description_stmt? | ||
360 | + | status_stmt? reference_stmt? description_stmt? if_feature_stmt* | ||
361 | + | description_stmt? if_feature_stmt* status_stmt? reference_stmt? | ||
362 | + | description_stmt? if_feature_stmt* reference_stmt? status_stmt? | ||
363 | + | description_stmt? status_stmt? if_feature_stmt* reference_stmt? | ||
364 | + | description_stmt? status_stmt? reference_stmt? if_feature_stmt* | ||
365 | + | description_stmt? reference_stmt* status_stmt? if_feature_stmt* | ||
366 | + | description_stmt? reference_stmt* if_feature_stmt? status_stmt? | ||
367 | + | reference_stmt? if_feature_stmt* status_stmt? description_stmt? | ||
368 | + | reference_stmt? if_feature_stmt* description_stmt? status_stmt? | ||
369 | + | reference_stmt? description_stmt? status_stmt? if_feature_stmt* | ||
370 | + | reference_stmt? description_stmt? if_feature_stmt* status_stmt? | ||
371 | + | reference_stmt? status_stmt? description_stmt? if_feature_stmt* | ||
372 | + | reference_stmt? status_stmt? if_feature_stmt* description_stmt? | ||
373 | + ; | ||
374 | + | ||
375 | + /** | ||
376 | + * data-def-stmt = container-stmt / | ||
377 | + * leaf-stmt / | ||
378 | + * leaf-list-stmt / | ||
379 | + * list-stmt / | ||
380 | + * choice-stmt / | ||
381 | + * anyxml-stmt / | ||
382 | + * uses-stmt | ||
383 | + */ | ||
384 | + data_def_stmt : container_stmt | ||
385 | + | leaf_stmt | ||
386 | + | leaf_list_stmt | ||
387 | + | list_stmt | ||
388 | + | choice_stmt | ||
389 | + | uses_stmt; | ||
390 | + | ||
391 | + /** | ||
392 | + * if-feature-stmt = if-feature-keyword sep identifier-ref-arg-str | ||
393 | + * optsep stmtend | ||
394 | + */ | ||
395 | + if_feature_stmt : IF_FEATURE_KEYWORD string STMTEND; | ||
396 | + | ||
397 | + /** | ||
398 | + * units-stmt = units-keyword sep string optsep stmtend | ||
399 | + */ | ||
400 | + units_stmt : UNITS_KEYWORD string STMTEND; | ||
401 | + | ||
402 | + /** | ||
403 | + * typedef-stmt = typedef-keyword sep identifier-arg-str optsep | ||
404 | + * "{" stmtsep | ||
405 | + * ;; these stmts can appear in any order | ||
406 | + * type-stmt stmtsep | ||
407 | + * [units-stmt stmtsep] | ||
408 | + * [default-stmt stmtsep] | ||
409 | + * [status-stmt stmtsep] | ||
410 | + * [description-stmt stmtsep] | ||
411 | + * [reference-stmt stmtsep] | ||
412 | + * "}" | ||
413 | + * TODO : 0..1 occurance to be validated in listener | ||
414 | + */ | ||
415 | + typedef_stmt : TYPEDEF_KEYWORD IDENTIFIER LEFT_CURLY_BRACE | ||
416 | + (type_stmt | units_stmt | default_stmt | status_stmt | description_stmt | reference_stmt)* | ||
417 | + RIGHT_CURLY_BRACE; | ||
418 | + | ||
419 | + /** | ||
420 | + * type-stmt = type-keyword sep identifier-ref-arg-str optsep | ||
421 | + * (";" / | ||
422 | + * "{" stmtsep | ||
423 | + * type-body-stmts | ||
424 | + * "}") | ||
425 | + */ | ||
426 | + type_stmt : TYPE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE type_body_stmts RIGHT_CURLY_BRACE); | ||
427 | + | ||
428 | + /** | ||
429 | + * type-body-stmts = numerical-restrictions / | ||
430 | + * decimal64-specification / | ||
431 | + * string-restrictions / | ||
432 | + * enum-specification / | ||
433 | + * leafref-specification / | ||
434 | + * identityref-specification / | ||
435 | + * instance-identifier-specification / | ||
436 | + * bits-specification / | ||
437 | + * union-specification | ||
438 | + * TODO : decimal64-specification to be added | ||
439 | + */ | ||
440 | + type_body_stmts : numerical_restrictions | string_restrictions | enum_specification | ||
441 | + | leafref_specification | identityref_specification | instance_identifier_specification | ||
442 | + | bits_specification | union_specification; | ||
443 | + | ||
444 | + /** | ||
445 | + * numerical-restrictions = range-stmt stmtsep | ||
446 | + */ | ||
447 | + numerical_restrictions : range_stmt; | ||
448 | + | ||
449 | + /** | ||
450 | + * range-stmt = range-keyword sep range-arg-str optsep | ||
451 | + * (";" / | ||
452 | + * "{" stmtsep | ||
453 | + * ;; these stmts can appear in any order | ||
454 | + * [error-message-stmt stmtsep] | ||
455 | + * [error-app-tag-stmt stmtsep] | ||
456 | + * [description-stmt stmtsep] | ||
457 | + * [reference-stmt stmtsep] | ||
458 | + * "}") | ||
459 | + */ | ||
460 | + range_stmt : RANGE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE); | ||
461 | + | ||
462 | + common_stmts : error_message_stmt? error_app_tag_stmt? description_stmt? reference_stmt? | ||
463 | + | error_message_stmt? error_app_tag_stmt? reference_stmt? description_stmt? | ||
464 | + | error_message_stmt? description_stmt? error_app_tag_stmt? reference_stmt? | ||
465 | + | error_message_stmt? description_stmt? reference_stmt? error_app_tag_stmt? | ||
466 | + | error_message_stmt? reference_stmt? error_app_tag_stmt? description_stmt? | ||
467 | + | error_message_stmt? reference_stmt? description_stmt? error_app_tag_stmt? | ||
468 | + | error_app_tag_stmt? error_message_stmt? description_stmt? reference_stmt? | ||
469 | + | error_app_tag_stmt? error_message_stmt? reference_stmt? description_stmt? | ||
470 | + | error_app_tag_stmt? description_stmt? description_stmt? error_message_stmt? | ||
471 | + | error_app_tag_stmt? description_stmt? error_message_stmt? description_stmt? | ||
472 | + | error_app_tag_stmt? reference_stmt? error_message_stmt? description_stmt? | ||
473 | + | error_app_tag_stmt? reference_stmt? description_stmt? error_message_stmt? | ||
474 | + | description_stmt? error_message_stmt? error_app_tag_stmt? reference_stmt? | ||
475 | + | description_stmt? error_message_stmt? reference_stmt? error_app_tag_stmt? | ||
476 | + | description_stmt? error_app_tag_stmt? error_message_stmt? reference_stmt? | ||
477 | + | description_stmt? error_app_tag_stmt? reference_stmt? error_message_stmt? | ||
478 | + | description_stmt? reference_stmt? error_message_stmt? error_app_tag_stmt? | ||
479 | + | description_stmt? reference_stmt? error_app_tag_stmt? error_message_stmt? | ||
480 | + | reference_stmt? error_message_stmt? description_stmt? error_app_tag_stmt? | ||
481 | + | reference_stmt? error_message_stmt? error_app_tag_stmt? description_stmt? | ||
482 | + | reference_stmt? error_app_tag_stmt? description_stmt? error_message_stmt? | ||
483 | + | reference_stmt? error_app_tag_stmt? error_message_stmt? description_stmt? | ||
484 | + | reference_stmt? description_stmt? error_message_stmt? error_app_tag_stmt? | ||
485 | + | reference_stmt? description_stmt? error_app_tag_stmt? error_message_stmt? | ||
486 | + ; | ||
487 | + | ||
488 | + /** | ||
489 | + * string-restrictions = ;; these stmts can appear in any order | ||
490 | + * [length-stmt stmtsep] | ||
491 | + * *(pattern-stmt stmtsep) | ||
492 | + */ | ||
493 | + string_restrictions : ((length_stmt)? (pattern_stmt)*) | ((pattern_stmt)* (length_stmt)?); | ||
494 | + | ||
495 | + /** | ||
496 | + * length-stmt = length-keyword sep length-arg-str optsep | ||
497 | + * (";" / | ||
498 | + * "{" stmtsep | ||
499 | + * ;; these stmts can appear in any order | ||
500 | + * [error-message-stmt stmtsep] | ||
501 | + * [error-app-tag-stmt stmtsep] | ||
502 | + * [description-stmt stmtsep] | ||
503 | + * [reference-stmt stmtsep] | ||
504 | + * "}") | ||
505 | + */ | ||
506 | + length_stmt : LENGTH_KEYWORD string | ||
507 | + (STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE); | ||
508 | + | ||
509 | + /** | ||
510 | + * pattern-stmt = pattern-keyword sep string optsep | ||
511 | + * (";" / | ||
512 | + * "{" stmtsep | ||
513 | + * ;; these stmts can appear in any order | ||
514 | + * [error-message-stmt stmtsep] | ||
515 | + * [error-app-tag-stmt stmtsep] | ||
516 | + * [description-stmt stmtsep] | ||
517 | + * [reference-stmt stmtsep] | ||
518 | + * "}") | ||
519 | + */ | ||
520 | + pattern_stmt : PATTERN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE); | ||
521 | + | ||
522 | + /** | ||
523 | + * default-stmt = default-keyword sep string stmtend | ||
524 | + */ | ||
525 | + default_stmt : DEFAULT_KEYWORD string STMTEND; | ||
526 | + | ||
527 | + /** | ||
528 | + * enum-specification = 1*(enum-stmt stmtsep) | ||
529 | + */ | ||
530 | + enum_specification : enum_stmt+; | ||
531 | + | ||
532 | + /** | ||
533 | + * enum-stmt = enum-keyword sep string optsep | ||
534 | + * (";" / | ||
535 | + * "{" stmtsep | ||
536 | + * ;; these stmts can appear in any order | ||
537 | + * [value-stmt stmtsep] | ||
538 | + * [status-stmt stmtsep] | ||
539 | + * [description-stmt stmtsep] | ||
540 | + * [reference-stmt stmtsep] | ||
541 | + * "}") | ||
542 | + */ | ||
543 | + enum_stmt : ENUM_KEYWORD string (STMTEND | LEFT_CURLY_BRACE enum_stmt_body RIGHT_CURLY_BRACE); | ||
544 | + | ||
545 | + enum_stmt_body : value_stmt? status_stmt? description_stmt? reference_stmt? | ||
546 | + | value_stmt? status_stmt? reference_stmt? description_stmt? | ||
547 | + | value_stmt? description_stmt? status_stmt? reference_stmt? | ||
548 | + | value_stmt? description_stmt? reference_stmt? status_stmt? | ||
549 | + | value_stmt? reference_stmt? status_stmt? description_stmt? | ||
550 | + | value_stmt? reference_stmt? description_stmt? status_stmt? | ||
551 | + | status_stmt? value_stmt? description_stmt? reference_stmt? | ||
552 | + | status_stmt? value_stmt? reference_stmt? description_stmt? | ||
553 | + | status_stmt? description_stmt? description_stmt? value_stmt? | ||
554 | + | status_stmt? description_stmt? value_stmt? description_stmt? | ||
555 | + | status_stmt? reference_stmt? value_stmt? description_stmt? | ||
556 | + | status_stmt? reference_stmt? description_stmt? value_stmt? | ||
557 | + | description_stmt? value_stmt? status_stmt? reference_stmt? | ||
558 | + | description_stmt? value_stmt? reference_stmt? status_stmt? | ||
559 | + | description_stmt? status_stmt? value_stmt? reference_stmt? | ||
560 | + | description_stmt? status_stmt? reference_stmt? value_stmt? | ||
561 | + | description_stmt? reference_stmt? value_stmt? status_stmt? | ||
562 | + | description_stmt? reference_stmt? status_stmt? value_stmt? | ||
563 | + | reference_stmt? value_stmt? description_stmt? status_stmt? | ||
564 | + | reference_stmt? value_stmt? status_stmt? description_stmt? | ||
565 | + | reference_stmt? status_stmt? description_stmt? value_stmt? | ||
566 | + | reference_stmt? status_stmt? value_stmt? description_stmt? | ||
567 | + | reference_stmt? description_stmt? value_stmt? status_stmt? | ||
568 | + | reference_stmt? description_stmt? status_stmt? value_stmt? | ||
569 | + ; | ||
570 | + | ||
571 | + /** | ||
572 | + * leafref-specification = | ||
573 | + * ;; these stmts can appear in any order | ||
574 | + * path-stmt stmtsep | ||
575 | + * [require-instance-stmt stmtsep] | ||
576 | + */ | ||
577 | + leafref_specification : (path_stmt (require_instance_stmt)?) | ((require_instance_stmt)? path_stmt); | ||
578 | + | ||
579 | + /** | ||
580 | + * path-stmt = path-keyword sep path-arg-str stmtend | ||
581 | + */ | ||
582 | + path_stmt : PATH_KEYWORD string STMTEND; | ||
583 | + | ||
584 | + /** | ||
585 | + * require-instance-stmt = require-instance-keyword sep | ||
586 | + * require-instance-arg-str stmtend | ||
587 | + * require-instance-arg-str = < a string that matches the rule | ||
588 | + * require-instance-arg > | ||
589 | + * require-instance-arg = true-keyword / false-keyword | ||
590 | + */ | ||
591 | + require_instance_stmt : REQUIRE_INSTANCE_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND; | ||
592 | + | ||
593 | + /** | ||
594 | + * instance-identifier-specification = | ||
595 | + * [require-instance-stmt stmtsep] | ||
596 | + */ | ||
597 | + instance_identifier_specification : require_instance_stmt?; | ||
598 | + | ||
599 | + /** | ||
600 | + * identityref-specification = | ||
601 | + * base-stmt stmtsep | ||
602 | + */ | ||
603 | + identityref_specification : base_stmt; | ||
604 | + | ||
605 | + /** | ||
606 | + * union-specification = 1*(type-stmt stmtsep) | ||
607 | + */ | ||
608 | + union_specification : type_stmt+; | ||
609 | + | ||
610 | + /** | ||
611 | + * bits-specification = 1*(bit-stmt stmtsep) | ||
612 | + */ | ||
613 | + bits_specification : bit_stmt+; | ||
614 | + | ||
615 | + /** | ||
616 | + * bit-stmt = bit-keyword sep identifier-arg-str optsep | ||
617 | + * (";" / | ||
618 | + * "{" stmtsep | ||
619 | + * ;; these stmts can appear in any order | ||
620 | + * [position-stmt stmtsep] | ||
621 | + * [status-stmt stmtsep] | ||
622 | + * [description-stmt stmtsep] | ||
623 | + * [reference-stmt stmtsep] | ||
624 | + * "}" | ||
625 | + * "}") | ||
626 | + */ | ||
627 | + bit_stmt : BIT_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE bit_body_stmt RIGHT_CURLY_BRACE); | ||
628 | + | ||
629 | + bit_body_stmt : position_stmt? status_stmt? description_stmt? reference_stmt? | ||
630 | + | position_stmt? status_stmt? reference_stmt? description_stmt? | ||
631 | + | position_stmt? description_stmt? status_stmt? reference_stmt? | ||
632 | + | position_stmt? description_stmt? reference_stmt? status_stmt? | ||
633 | + | position_stmt? reference_stmt? status_stmt? description_stmt? | ||
634 | + | position_stmt? reference_stmt? description_stmt? status_stmt? | ||
635 | + | status_stmt? position_stmt? description_stmt? reference_stmt? | ||
636 | + | status_stmt? position_stmt? reference_stmt? description_stmt? | ||
637 | + | status_stmt? description_stmt? description_stmt? position_stmt? | ||
638 | + | status_stmt? description_stmt? position_stmt? description_stmt? | ||
639 | + | status_stmt? reference_stmt? position_stmt? description_stmt? | ||
640 | + | status_stmt? reference_stmt? description_stmt? position_stmt? | ||
641 | + | description_stmt? position_stmt? status_stmt? reference_stmt? | ||
642 | + | description_stmt? position_stmt? reference_stmt? status_stmt? | ||
643 | + | description_stmt? status_stmt? position_stmt? reference_stmt? | ||
644 | + | description_stmt? status_stmt? reference_stmt? position_stmt? | ||
645 | + | description_stmt? reference_stmt? position_stmt? status_stmt? | ||
646 | + | description_stmt? reference_stmt? status_stmt? position_stmt? | ||
647 | + | reference_stmt? position_stmt? description_stmt? status_stmt? | ||
648 | + | reference_stmt? position_stmt? status_stmt? description_stmt? | ||
649 | + | reference_stmt? status_stmt? description_stmt? position_stmt? | ||
650 | + | reference_stmt? status_stmt? position_stmt? description_stmt? | ||
651 | + | reference_stmt? description_stmt? position_stmt? status_stmt? | ||
652 | + | reference_stmt? description_stmt? status_stmt? position_stmt? | ||
653 | + ; | ||
654 | + | ||
655 | + /** | ||
656 | + * position-stmt = position-keyword sep | ||
657 | + * position-value-arg-str stmtend | ||
658 | + * position-value-arg-str = < a string that matches the rule | ||
659 | + * position-value-arg > | ||
660 | + * position-value-arg = non-negative-integer-value | ||
661 | + */ | ||
662 | + position_stmt : POSITION_KEYWORD INTEGER STMTEND; | ||
663 | + | ||
664 | + /** | ||
665 | + * status-stmt = status-keyword sep status-arg-str stmtend | ||
666 | + * status-arg-str = < a string that matches the rule | ||
667 | + * status-arg > | ||
668 | + * status-arg = current-keyword / | ||
669 | + * obsolete-keyword / | ||
670 | + * deprecated-keyword | ||
671 | + */ | ||
672 | + status_stmt : STATUS_KEYWORD (CURRENT_KEYWORD | OBSOLETE_KEYWORD | DEPRECATED_KEYWORD) STMTEND; | ||
673 | + | ||
674 | + /** | ||
675 | + * config-stmt = config-keyword sep | ||
676 | + * config-arg-str stmtend | ||
677 | + * config-arg-str = < a string that matches the rule | ||
678 | + * config-arg > | ||
679 | + * config-arg = true-keyword / false-keyword | ||
680 | + */ | ||
681 | + config_stmt : CONFIG_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND; | ||
682 | + | ||
683 | + /** | ||
684 | + * mandatory-stmt = mandatory-keyword sep | ||
685 | + * mandatory-arg-str stmtend | ||
686 | + * | ||
687 | + * mandatory-arg-str = < a string that matches the rule | ||
688 | + * mandatory-arg > | ||
689 | + * | ||
690 | + * mandatory-arg = true-keyword / false-keyword | ||
691 | + */ | ||
692 | + mandatory_stmt : MANDATORY_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND; | ||
693 | + | ||
694 | + /** | ||
695 | + * presence-stmt = presence-keyword sep string stmtend | ||
696 | + */ | ||
697 | + presence_stmt : PRESENCE_KEYWORD string STMTEND; | ||
698 | + | ||
699 | + /** | ||
700 | + * ordered-by-stmt = ordered-by-keyword sep | ||
701 | + * ordered-by-arg-str stmtend | ||
702 | + * | ||
703 | + * ordered-by-arg-str = < a string that matches the rule | ||
704 | + * ordered-by-arg > | ||
705 | + * | ||
706 | + * ordered-by-arg = user-keyword / system-keyword | ||
707 | + */ | ||
708 | + ordered_by_stmt : ORDERED_BY_KEYWORD (USER_KEYWORD | SYSTEM_KEYWORD) STMTEND; | ||
709 | + | ||
710 | + /** | ||
711 | + * must-stmt = must-keyword sep string optsep | ||
712 | + * (";" / | ||
713 | + * "{" stmtsep | ||
714 | + * ;; these stmts can appear in any order | ||
715 | + * [error-message-stmt stmtsep] | ||
716 | + * [error-app-tag-stmt stmtsep] | ||
717 | + * [description-stmt stmtsep] | ||
718 | + * [reference-stmt stmtsep] | ||
719 | + * "}") | ||
720 | + */ | ||
721 | + must_stmt : MUST_KEYWORD string (STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE); | ||
722 | + | ||
723 | + /** | ||
724 | + * error-message-stmt = error-message-keyword sep string stmtend | ||
725 | + */ | ||
726 | + error_message_stmt : ERROR_MESSAGE_KEYWORD string STMTEND; | ||
727 | + | ||
728 | + /** | ||
729 | + * error-app-tag-stmt = error-app-tag-keyword sep string stmtend | ||
730 | + */ | ||
731 | + error_app_tag_stmt : ERROR_APP_TAG_KEYWORD string STMTEND; | ||
732 | + | ||
733 | + /** | ||
734 | + * min-elements-stmt = min-elements-keyword sep | ||
735 | + * min-value-arg-str stmtend | ||
736 | + * min-value-arg-str = < a string that matches the rule | ||
737 | + * min-value-arg > | ||
738 | + * min-value-arg = non-negative-integer-value | ||
739 | + */ | ||
740 | + min_elements_stmt : MIN_ELEMENTS_KEYWORD INTEGER STMTEND; | ||
741 | + | ||
742 | + /** | ||
743 | + * max-elements-stmt = max-elements-keyword sep | ||
744 | + * max-value-arg-str stmtend | ||
745 | + * max-value-arg-str = < a string that matches the rule | ||
746 | + * max-value-arg > | ||
747 | + | ||
748 | + */ | ||
749 | + max_elements_stmt : MAX_ELEMENTS_KEYWORD max_value_arg STMTEND; | ||
750 | + | ||
751 | + /** | ||
752 | + * max-value-arg = unbounded-keyword / | ||
753 | + * positive-integer-value | ||
754 | + */ | ||
755 | + max_value_arg : UNBOUNDED_KEYWORD | INTEGER; | ||
756 | + | ||
757 | + /** | ||
758 | + * value-stmt = value-keyword sep integer-value stmtend | ||
759 | + */ | ||
760 | + value_stmt : VALUE_KEYWORD ((MINUS INTEGER) | INTEGER) STMTEND; | ||
761 | + | ||
762 | + /** | ||
763 | + * grouping-stmt = grouping-keyword sep identifier-arg-str optsep | ||
764 | + * (";" / | ||
765 | + * "{" stmtsep | ||
766 | + * ;; these stmts can appear in any order | ||
767 | + * [status-stmt stmtsep] | ||
768 | + * [description-stmt stmtsep] | ||
769 | + * [reference-stmt stmtsep] | ||
770 | + * *((typedef-stmt / | ||
771 | + * grouping-stmt) stmtsep) | ||
772 | + * *(data-def-stmt stmtsep) | ||
773 | + * "}") | ||
774 | + * TODO : 0..1 occurance to be checked in listener | ||
775 | + */ | ||
776 | + grouping_stmt : GROUPING_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE | ||
777 | + (status_stmt | description_stmt | reference_stmt | typedef_stmt | grouping_stmt | ||
778 | + | data_def_stmt)* RIGHT_CURLY_BRACE); | ||
779 | + | ||
780 | + /** | ||
781 | + * container-stmt = container-keyword sep identifier-arg-str optsep | ||
782 | + * (";" / | ||
783 | + * "{" stmtsep | ||
784 | + * ;; these stmts can appear in any order | ||
785 | + * [when-stmt stmtsep] | ||
786 | + * *(if-feature-stmt stmtsep) | ||
787 | + * *(must-stmt stmtsep) | ||
788 | + * [presence-stmt stmtsep] | ||
789 | + * [config-stmt stmtsep] | ||
790 | + * [status-stmt stmtsep] | ||
791 | + * [description-stmt stmtsep] | ||
792 | + * [reference-stmt stmtsep] | ||
793 | + * *((typedef-stmt / | ||
794 | + * grouping-stmt) stmtsep) | ||
795 | + * *(data-def-stmt stmtsep) | ||
796 | + * "}") | ||
797 | + * TODO : 0..1 occurance to be checked in listener | ||
798 | + */ | ||
799 | + container_stmt : CONTAINER_KEYWORD IDENTIFIER | ||
800 | + (STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | must_stmt | presence_stmt | config_stmt | ||
801 | + | status_stmt | description_stmt | reference_stmt | typedef_stmt | grouping_stmt | ||
802 | + | data_def_stmt)* RIGHT_CURLY_BRACE); | ||
803 | + | ||
804 | + /** | ||
805 | + * leaf-stmt = leaf-keyword sep identifier-arg-str optsep | ||
806 | + * "{" stmtsep | ||
807 | + * ;; these stmts can appear in any order | ||
808 | + * [when-stmt stmtsep] | ||
809 | + * *(if-feature-stmt stmtsep) | ||
810 | + * type-stmt stmtsep | ||
811 | + * [units-stmt stmtsep] | ||
812 | + * *(must-stmt stmtsep) | ||
813 | + * [default-stmt stmtsep] | ||
814 | + * [config-stmt stmtsep] | ||
815 | + * [mandatory-stmt stmtsep] | ||
816 | + * [status-stmt stmtsep] | ||
817 | + * [description-stmt stmtsep] | ||
818 | + * [reference-stmt stmtsep] | ||
819 | + * "}" | ||
820 | + * TODO : 0..1 occurance to be checked in listener | ||
821 | + */ | ||
822 | + leaf_stmt : LEAF_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | type_stmt | units_stmt | ||
823 | + | must_stmt | default_stmt | config_stmt | mandatory_stmt | status_stmt | description_stmt | ||
824 | + | reference_stmt)* RIGHT_CURLY_BRACE; | ||
825 | + | ||
826 | + /** | ||
827 | + * leaf-list-stmt = leaf-list-keyword sep identifier-arg-str optsep | ||
828 | + * "{" stmtsep | ||
829 | + * ;; these stmts can appear in any order | ||
830 | + * [when-stmt stmtsep] | ||
831 | + * *(if-feature-stmt stmtsep) | ||
832 | + * type-stmt stmtsep | ||
833 | + * [units-stmt stmtsep] | ||
834 | + * *(must-stmt stmtsep) | ||
835 | + * [config-stmt stmtsep] | ||
836 | + * [min-elements-stmt stmtsep] | ||
837 | + * [max-elements-stmt stmtsep] | ||
838 | + * [ordered-by-stmt stmtsep] | ||
839 | + * [status-stmt stmtsep] | ||
840 | + * [description-stmt stmtsep] | ||
841 | + * [reference-stmt stmtsep] | ||
842 | + * "}" | ||
843 | + * TODO : 0..1 occurance to be checked in listener | ||
844 | + */ | ||
845 | + leaf_list_stmt : LEAF_LIST_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | type_stmt | ||
846 | + | units_stmt | must_stmt | config_stmt | min_elements_stmt | max_elements_stmt | ordered_by_stmt | ||
847 | + | status_stmt | description_stmt | reference_stmt)* RIGHT_CURLY_BRACE; | ||
848 | + | ||
849 | + /** | ||
850 | + * list-stmt = list-keyword sep identifier-arg-str optsep | ||
851 | + * "{" stmtsep | ||
852 | + * ;; these stmts can appear in any order | ||
853 | + * [when-stmt stmtsep] | ||
854 | + * *(if-feature-stmt stmtsep) | ||
855 | + * *(must-stmt stmtsep) | ||
856 | + * [key-stmt stmtsep] | ||
857 | + * *(unique-stmt stmtsep) | ||
858 | + * [config-stmt stmtsep] | ||
859 | + * [min-elements-stmt stmtsep] | ||
860 | + * [max-elements-stmt stmtsep] | ||
861 | + * [ordered-by-stmt stmtsep] | ||
862 | + * [status-stmt stmtsep] | ||
863 | + * [description-stmt stmtsep] | ||
864 | + * [reference-stmt stmtsep] | ||
865 | + * *((typedef-stmt / | ||
866 | + * grouping-stmt) stmtsep) | ||
867 | + * 1*(data-def-stmt stmtsep) | ||
868 | + * "}" | ||
869 | + * TODO : 0..1 occurance to be checked in listener | ||
870 | + */ | ||
871 | + list_stmt : LIST_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | must_stmt | key_stmt | ||
872 | + | unique_stmt | config_stmt | min_elements_stmt | max_elements_stmt | ordered_by_stmt | status_stmt | ||
873 | + | description_stmt | reference_stmt | typedef_stmt | grouping_stmt| data_def_stmt)* RIGHT_CURLY_BRACE; | ||
874 | + | ||
875 | + /** | ||
876 | + * key-stmt = key-keyword sep key-arg-str stmtend | ||
877 | + */ | ||
878 | + key_stmt : KEY_KEYWORD string STMTEND; | ||
879 | + | ||
880 | + /** | ||
881 | + * unique-stmt = unique-keyword sep unique-arg-str stmtend | ||
882 | + */ | ||
883 | + unique_stmt: UNIQUE_KEYWORD string STMTEND; | ||
884 | + | ||
885 | + /** | ||
886 | + * choice-stmt = choice-keyword sep identifier-arg-str optsep | ||
887 | + * (";" / | ||
888 | + * "{" stmtsep | ||
889 | + * ;; these stmts can appear in any order | ||
890 | + * [when-stmt stmtsep] | ||
891 | + * *(if-feature-stmt stmtsep) | ||
892 | + * [default-stmt stmtsep] | ||
893 | + * [config-stmt stmtsep] | ||
894 | + * [mandatory-stmt stmtsep] | ||
895 | + * [status-stmt stmtsep] | ||
896 | + * [description-stmt stmtsep] | ||
897 | + * [reference-stmt stmtsep] | ||
898 | + * *((short-case-stmt / case-stmt) stmtsep) | ||
899 | + * "}") | ||
900 | + * TODO : 0..1 occurance to be checked in listener | ||
901 | + */ | ||
902 | + choice_stmt : CHOICE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | default_stmt | ||
903 | + | config_stmt | mandatory_stmt | status_stmt | description_stmt | reference_stmt | short_case_stmt | ||
904 | + | case_stmt)* RIGHT_CURLY_BRACE); | ||
905 | + | ||
906 | + /** | ||
907 | + * short-case-stmt = container-stmt / | ||
908 | + * leaf-stmt / | ||
909 | + * leaf-list-stmt / | ||
910 | + * list-stmt / | ||
911 | + * anyxml-stmt | ||
912 | + */ | ||
913 | + short_case_stmt : container_stmt | leaf_stmt | leaf_list_stmt | list_stmt; | ||
914 | + | ||
915 | + /** | ||
916 | + * case-stmt = case-keyword sep identifier-arg-str optsep | ||
917 | + * (";" / | ||
918 | + * "{" stmtsep | ||
919 | + * ;; these stmts can appear in any order | ||
920 | + * [when-stmt stmtsep] | ||
921 | + * *(if-feature-stmt stmtsep) | ||
922 | + * [status-stmt stmtsep] | ||
923 | + * [description-stmt stmtsep] | ||
924 | + * [reference-stmt stmtsep] | ||
925 | + * *(data-def-stmt stmtsep) | ||
926 | + * "}") | ||
927 | + * TODO : 0..1 occurance to be checked in listener | ||
928 | + */ | ||
929 | + case_stmt : CASE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt | ||
930 | + | description_stmt | reference_stmt | data_def_stmt)* RIGHT_CURLY_BRACE); | ||
931 | + | ||
932 | + /** | ||
933 | + * uses-stmt = uses-keyword sep identifier-ref-arg-str optsep | ||
934 | + * (";" / | ||
935 | + * "{" stmtsep | ||
936 | + * ;; these stmts can appear in any order | ||
937 | + * [when-stmt stmtsep] | ||
938 | + * *(if-feature-stmt stmtsep) | ||
939 | + * [status-stmt stmtsep] | ||
940 | + * [description-stmt stmtsep] | ||
941 | + * [reference-stmt stmtsep] | ||
942 | + * *(refine-stmt stmtsep) | ||
943 | + * *(uses-augment-stmt stmtsep) | ||
944 | + * "}") | ||
945 | + * TODO : 0..1 occurance to be checked in listener | ||
946 | + */ | ||
947 | + uses_stmt : USES_KEYWORD string (STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt | ||
948 | + | description_stmt | reference_stmt | refine_stmt | uses_augment_stmt)* RIGHT_CURLY_BRACE); | ||
949 | + | ||
950 | + /** | ||
951 | + * refine-stmt = refine-keyword sep refine-arg-str optsep | ||
952 | + * (";" / | ||
953 | + * "{" stmtsep | ||
954 | + * (refine-container-stmts / | ||
955 | + * refine-leaf-stmts / | ||
956 | + * refine-leaf-list-stmts / | ||
957 | + * refine-list-stmts / | ||
958 | + * refine-choice-stmts / | ||
959 | + * refine-case-stmts / | ||
960 | + * refine-anyxml-stmts) | ||
961 | + * "}") | ||
962 | + */ | ||
963 | + refine_stmt : REFINE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE (refine_container_stmts | refine_leaf_stmts | ||
964 | + | refine_leaf_list_stmts | refine_list_stmts | refine_choice_stmts | refine_case_stmts) | ||
965 | + RIGHT_CURLY_BRACE); | ||
966 | + | ||
967 | + /** | ||
968 | + * refine-container-stmts = | ||
969 | + * ;; these stmts can appear in any order | ||
970 | + * *(must-stmt stmtsep) | ||
971 | + * [presence-stmt stmtsep] | ||
972 | + * [config-stmt stmtsep] | ||
973 | + * [description-stmt stmtsep] | ||
974 | + * [reference-stmt stmtsep] | ||
975 | + * TODO : 0..1 occurance to be checked in listener | ||
976 | + */ | ||
977 | + refine_container_stmts : (must_stmt | presence_stmt | config_stmt | description_stmt | reference_stmt)* ; | ||
978 | + | ||
979 | + /** | ||
980 | + * refine-leaf-stmts = ;; these stmts can appear in any order | ||
981 | + * *(must-stmt stmtsep) | ||
982 | + * [default-stmt stmtsep] | ||
983 | + * [config-stmt stmtsep] | ||
984 | + * [mandatory-stmt stmtsep] | ||
985 | + * [description-stmt stmtsep] | ||
986 | + * [reference-stmt stmtsep] | ||
987 | + * TODO : 0..1 occurance to be checked in listener | ||
988 | + */ | ||
989 | + refine_leaf_stmts : (must_stmt | default_stmt | config_stmt | mandatory_stmt | description_stmt | reference_stmt)*; | ||
990 | + | ||
991 | + /** | ||
992 | + * refine-leaf-list-stmts = | ||
993 | + * ;; these stmts can appear in any order | ||
994 | + * *(must-stmt stmtsep) | ||
995 | + * [config-stmt stmtsep] | ||
996 | + * [min-elements-stmt stmtsep] | ||
997 | + * [max-elements-stmt stmtsep] | ||
998 | + * [description-stmt stmtsep] | ||
999 | + * [reference-stmt stmtsep] | ||
1000 | + * TODO : 0..1 occurance to be checked in listener | ||
1001 | + */ | ||
1002 | + refine_leaf_list_stmts : (must_stmt | config_stmt | min_elements_stmt | max_elements_stmt | description_stmt | ||
1003 | + | reference_stmt)*; | ||
1004 | + | ||
1005 | + /** | ||
1006 | + * refine-list-stmts = ;; these stmts can appear in any order | ||
1007 | + * *(must-stmt stmtsep) | ||
1008 | + * [config-stmt stmtsep] | ||
1009 | + * [min-elements-stmt stmtsep] | ||
1010 | + * [max-elements-stmt stmtsep] | ||
1011 | + * [description-stmt stmtsep] | ||
1012 | + * [reference-stmt stmtsep] | ||
1013 | + * TODO : 0..1 occurance to be checked in listener | ||
1014 | + */ | ||
1015 | + refine_list_stmts : (must_stmt | config_stmt | min_elements_stmt | max_elements_stmt | description_stmt | ||
1016 | + | reference_stmt)*; | ||
1017 | + | ||
1018 | + /** | ||
1019 | + * refine-choice-stmts = ;; these stmts can appear in any order | ||
1020 | + * [default-stmt stmtsep] | ||
1021 | + * [config-stmt stmtsep] | ||
1022 | + * [mandatory-stmt stmtsep] | ||
1023 | + * [description-stmt stmtsep] | ||
1024 | + * [reference-stmt stmtsep] | ||
1025 | + * TODO : 0..1 occurance to be checked in listener | ||
1026 | + */ | ||
1027 | + refine_choice_stmts : (default_stmt | config_stmt | mandatory_stmt | description_stmt | reference_stmt)*; | ||
1028 | + | ||
1029 | + /** | ||
1030 | + * refine-case-stmts = ;; these stmts can appear in any order | ||
1031 | + * [description-stmt stmtsep] | ||
1032 | + * [reference-stmt stmtsep] | ||
1033 | + * | ||
1034 | + */ | ||
1035 | + refine_case_stmts : (description_stmt | reference_stmt)? | (reference_stmt | description_stmt)?; | ||
1036 | + | ||
1037 | + /** | ||
1038 | + * uses-augment-stmt = augment-keyword sep uses-augment-arg-str optsep | ||
1039 | + * "{" stmtsep | ||
1040 | + * ;; these stmts can appear in any order | ||
1041 | + * [when-stmt stmtsep] | ||
1042 | + * *(if-feature-stmt stmtsep) | ||
1043 | + * [status-stmt stmtsep] | ||
1044 | + * [description-stmt stmtsep] | ||
1045 | + * [reference-stmt stmtsep] | ||
1046 | + * 1*((data-def-stmt stmtsep) / | ||
1047 | + * (case-stmt stmtsep)) | ||
1048 | + * "}" | ||
1049 | + * TODO : 0..1 occurance to be checked in listener | ||
1050 | + */ | ||
1051 | + uses_augment_stmt : AUGMENT_KEYWORD string LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt | ||
1052 | + | description_stmt | reference_stmt | data_def_stmt | case_stmt)* RIGHT_CURLY_BRACE; | ||
1053 | + | ||
1054 | + /** | ||
1055 | + * augment-stmt = augment-keyword sep augment-arg-str optsep | ||
1056 | + * "{" stmtsep | ||
1057 | + * ;; these stmts can appear in any order | ||
1058 | + * [when-stmt stmtsep] | ||
1059 | + * *(if-feature-stmt stmtsep) | ||
1060 | + * [status-stmt stmtsep] | ||
1061 | + * [description-stmt stmtsep] | ||
1062 | + * [reference-stmt stmtsep] | ||
1063 | + * 1*((data-def-stmt stmtsep) / | ||
1064 | + * (case-stmt stmtsep)) | ||
1065 | + * "}" | ||
1066 | + * TODO : 0..1 occurance to be checked in listener | ||
1067 | + */ | ||
1068 | + augment_stmt : AUGMENT_KEYWORD string LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt | ||
1069 | + | description_stmt | reference_stmt | data_def_stmt | case_stmt)* RIGHT_CURLY_BRACE; | ||
1070 | + | ||
1071 | + /** | ||
1072 | + * when-stmt = when-keyword sep string optsep | ||
1073 | + * (";" / | ||
1074 | + * "{" stmtsep | ||
1075 | + * ;; these stmts can appear in any order | ||
1076 | + * [description-stmt stmtsep] | ||
1077 | + * [reference-stmt stmtsep] | ||
1078 | + * "}") | ||
1079 | + * | ||
1080 | + */ | ||
1081 | + when_stmt : WHEN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE ((description_stmt? reference_stmt?) | ||
1082 | + | (reference_stmt? description_stmt?)) RIGHT_CURLY_BRACE); | ||
1083 | + | ||
1084 | + /** | ||
1085 | + * rpc-stmt = rpc-keyword sep identifier-arg-str optsep | ||
1086 | + * (";" / | ||
1087 | + * "{" stmtsep | ||
1088 | + * ;; these stmts can appear in any order | ||
1089 | + * *(if-feature-stmt stmtsep) | ||
1090 | + * [status-stmt stmtsep] | ||
1091 | + * [description-stmt stmtsep] | ||
1092 | + * [reference-stmt stmtsep] | ||
1093 | + * *((typedef-stmt / | ||
1094 | + * grouping-stmt) stmtsep) | ||
1095 | + * [input-stmt stmtsep] | ||
1096 | + * [output-stmt stmtsep] | ||
1097 | + * "}") | ||
1098 | + * TODO : 0..1 occurance to be checked in listener | ||
1099 | + */ | ||
1100 | + rpc_stmt : RPC_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (if_feature_stmt | status_stmt | description_stmt | ||
1101 | + | reference_stmt | typedef_stmt | grouping_stmt | input_stmt | output_stmt)* RIGHT_CURLY_BRACE); | ||
1102 | + | ||
1103 | + /** | ||
1104 | + * input-stmt = input-keyword optsep | ||
1105 | + * "{" stmtsep | ||
1106 | + * ;; these stmts can appear in any order | ||
1107 | + * *((typedef-stmt / | ||
1108 | + * grouping-stmt) stmtsep) | ||
1109 | + * 1*(data-def-stmt stmtsep) | ||
1110 | + * "}" | ||
1111 | + */ | ||
1112 | + input_stmt : INPUT_KEYWORD LEFT_CURLY_BRACE | ||
1113 | + ((typedef_stmt | grouping_stmt)* | data_def_stmt+) | ||
1114 | + | (data_def_stmt+ | (typedef_stmt | grouping_stmt)*)RIGHT_CURLY_BRACE; | ||
1115 | + | ||
1116 | + /** | ||
1117 | + * output-stmt = output-keyword optsep | ||
1118 | + * "{" stmtsep | ||
1119 | + * ;; these stmts can appear in any order | ||
1120 | + * *((typedef-stmt / | ||
1121 | + * grouping-stmt) stmtsep) | ||
1122 | + * 1*(data-def-stmt stmtsep) | ||
1123 | + * "}" | ||
1124 | + */ | ||
1125 | + output_stmt : OUTPUT_KEYWORD LEFT_CURLY_BRACE | ||
1126 | + ((typedef_stmt | grouping_stmt)* | data_def_stmt+) | ||
1127 | + | (data_def_stmt+ | (typedef_stmt | grouping_stmt)*)RIGHT_CURLY_BRACE; | ||
1128 | + | ||
1129 | + /** | ||
1130 | + * notification-stmt = notification-keyword sep | ||
1131 | + * identifier-arg-str optsep | ||
1132 | + * (";" / | ||
1133 | + * "{" stmtsep | ||
1134 | + * ;; these stmts can appear in any order | ||
1135 | + * *(if-feature-stmt stmtsep) | ||
1136 | + * [status-stmt stmtsep] | ||
1137 | + * [description-stmt stmtsep] | ||
1138 | + * [reference-stmt stmtsep] | ||
1139 | + * *((typedef-stmt / | ||
1140 | + * grouping-stmt) stmtsep) | ||
1141 | + * *(data-def-stmt stmtsep) | ||
1142 | + * "}") | ||
1143 | + * TODO : 0..1 occurance to be checked in listener | ||
1144 | + */ | ||
1145 | + notification_stmt : NOTIFICATION_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (if_feature_stmt | status_stmt | ||
1146 | + | description_stmt | reference_stmt | typedef_stmt | grouping_stmt | data_def_stmt)* | ||
1147 | + RIGHT_CURLY_BRACE); | ||
1148 | + | ||
1149 | + /** | ||
1150 | + * deviation-stmt = deviation-keyword sep | ||
1151 | + * deviation-arg-str optsep | ||
1152 | + * "{" stmtsep | ||
1153 | + * ;; these stmts can appear in any order | ||
1154 | + * [description-stmt stmtsep] | ||
1155 | + * [reference-stmt stmtsep] | ||
1156 | + * (deviate-not-supported-stmt / | ||
1157 | + * 1*(deviate-add-stmt / | ||
1158 | + * deviate-replace-stmt / | ||
1159 | + * deviate-delete-stmt)) | ||
1160 | + * "}" | ||
1161 | + * TODO : 0..1 occurance to be checked in listener | ||
1162 | + */ | ||
1163 | + deviation_stmt: DEVIATION_KEYWORD string LEFT_CURLY_BRACE (description_stmt | reference_stmt | ||
1164 | + | deviate_not_supported_stmt | deviate_add_stmt | deviate_replace_stmt | deviate_delete_stmt)* | ||
1165 | + RIGHT_CURLY_BRACE; | ||
1166 | + | ||
1167 | + /** | ||
1168 | + * deviate-not-supported-stmt = | ||
1169 | + * deviate-keyword sep | ||
1170 | + * not-supported-keyword optsep | ||
1171 | + * (";" / | ||
1172 | + * "{" stmtsep | ||
1173 | + * "}") | ||
1174 | + */ | ||
1175 | + deviate_not_supported_stmt: DEVIATE_KEYWORD NOT_SUPPORTED_KEYWORD (STMTEND | LEFT_CURLY_BRACE RIGHT_CURLY_BRACE); | ||
1176 | + | ||
1177 | + /** | ||
1178 | + * deviate-add-stmt = deviate-keyword sep add-keyword optsep | ||
1179 | + * (";" / | ||
1180 | + * "{" stmtsep | ||
1181 | + * [units-stmt stmtsep] | ||
1182 | + * *(must-stmt stmtsep) | ||
1183 | + * *(unique-stmt stmtsep) | ||
1184 | + * [default-stmt stmtsep] | ||
1185 | + * [config-stmt stmtsep] | ||
1186 | + * [mandatory-stmt stmtsep] | ||
1187 | + * [min-elements-stmt stmtsep] | ||
1188 | + * [max-elements-stmt stmtsep] | ||
1189 | + * "}") | ||
1190 | + */ | ||
1191 | + deviate_add_stmt: DEVIATE_KEYWORD ADD_KEYWORD (STMTEND | (LEFT_CURLY_BRACE units_stmt? must_stmt* unique_stmt* | ||
1192 | + default_stmt? config_stmt? mandatory_stmt? min_elements_stmt? max_elements_stmt? | ||
1193 | + RIGHT_CURLY_BRACE)); | ||
1194 | + | ||
1195 | + /** | ||
1196 | + * deviate-delete-stmt = deviate-keyword sep delete-keyword optsep | ||
1197 | + * (";" / | ||
1198 | + * "{" stmtsep | ||
1199 | + * [units-stmt stmtsep] | ||
1200 | + * *(must-stmt stmtsep) | ||
1201 | + * *(unique-stmt stmtsep) | ||
1202 | + * [default-stmt stmtsep] | ||
1203 | + * "}") | ||
1204 | + */ | ||
1205 | + deviate_delete_stmt: DEVIATE_KEYWORD DELETE_KEYWORD (STMTEND | ||
1206 | + | (LEFT_CURLY_BRACE units_stmt? must_stmt* unique_stmt* default_stmt? RIGHT_CURLY_BRACE)); | ||
1207 | + | ||
1208 | + /** | ||
1209 | + * deviate-replace-stmt = deviate-keyword sep replace-keyword optsep | ||
1210 | + * (";" / | ||
1211 | + * "{" stmtsep | ||
1212 | + * [type-stmt stmtsep] | ||
1213 | + * [units-stmt stmtsep] | ||
1214 | + * [default-stmt stmtsep] | ||
1215 | + * [config-stmt stmtsep] | ||
1216 | + * [mandatory-stmt stmtsep] | ||
1217 | + * [min-elements-stmt stmtsep] | ||
1218 | + * [max-elements-stmt stmtsep] | ||
1219 | + * "}") | ||
1220 | + */ | ||
1221 | + deviate_replace_stmt: DEVIATE_KEYWORD REPLACE_KEYWORD (STMTEND | (LEFT_CURLY_BRACE type_stmt? units_stmt? | ||
1222 | + default_stmt? config_stmt? mandatory_stmt? min_elements_stmt? | ||
1223 | + max_elements_stmt? RIGHT_CURLY_BRACE)); | ||
1224 | + | ||
1225 | + string : STRING (PLUS STRING)*; | ||
1226 | + |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
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 lexer based on which ANTLR will generate YANG lexer. | ||
19 | + */ | ||
20 | + | ||
21 | +lexer grammar YangLexer; | ||
22 | + | ||
23 | + // Statements keywords | ||
24 | + ANYXML_KEYWORD : 'anyxml'; | ||
25 | + ARGUMENT_KEYWORD : 'argument'; | ||
26 | + AUGMENT_KEYWORD : 'augment'; | ||
27 | + BASE_KEYWORD : 'base'; | ||
28 | + BELONGS_TO_KEYWORD : 'belongs-to'; | ||
29 | + BIT_KEYWORD : 'bit'; | ||
30 | + CASE_KEYWORD : 'case'; | ||
31 | + CHOICE_KEYWORD : 'choice'; | ||
32 | + CONFIG_KEYWORD : 'config'; | ||
33 | + CONTACT_KEYWORD : 'contact'; | ||
34 | + CONTAINER_KEYWORD : 'container'; | ||
35 | + DEFAULT_KEYWORD : 'default'; | ||
36 | + DESCRIPTION_KEYWORD : 'description'; | ||
37 | + ENUM_KEYWORD : 'enum'; | ||
38 | + ERROR_APP_TAG_KEYWORD : 'error-app-tag'; | ||
39 | + ERROR_MESSAGE_KEYWORD : 'error-message'; | ||
40 | + EXTENSION_KEYWORD : 'extension'; | ||
41 | + DEVIATION_KEYWORD : 'deviation'; | ||
42 | + DEVIATE_KEYWORD : 'deviate'; | ||
43 | + FEATURE_KEYWORD : 'feature'; | ||
44 | + FRACTION_DIGITS_KEYWORD : 'fraction-digits'; | ||
45 | + GROUPING_KEYWORD : 'grouping'; | ||
46 | + IDENTITY_KEYWORD : 'identity'; | ||
47 | + IF_FEATURE_KEYWORD : 'if-feature'; | ||
48 | + IMPORT_KEYWORD : 'import'; | ||
49 | + INCLUDE_KEYWORD : 'include'; | ||
50 | + INPUT_KEYWORD : 'input'; | ||
51 | + KEY_KEYWORD : 'key'; | ||
52 | + LEAF_KEYWORD : 'leaf'; | ||
53 | + LEAF_LIST_KEYWORD : 'leaf-list'; | ||
54 | + LENGTH_KEYWORD : 'length'; | ||
55 | + LIST_KEYWORD : 'list'; | ||
56 | + MANDATORY_KEYWORD : 'mandatory'; | ||
57 | + MAX_ELEMENTS_KEYWORD : 'max-elements'; | ||
58 | + MIN_ELEMENTS_KEYWORD : 'min-elements'; | ||
59 | + MODULE_KEYWORD : 'module'; | ||
60 | + MUST_KEYWORD : 'must'; | ||
61 | + NAMESPACE_KEYWORD : 'namespace'; | ||
62 | + NOTIFICATION_KEYWORD: 'notification'; | ||
63 | + ORDERED_BY_KEYWORD : 'ordered-by'; | ||
64 | + ORGANIZATION_KEYWORD: 'organization'; | ||
65 | + OUTPUT_KEYWORD : 'output'; | ||
66 | + PATH_KEYWORD : 'path'; | ||
67 | + PATTERN_KEYWORD : 'pattern'; | ||
68 | + POSITION_KEYWORD : 'position'; | ||
69 | + PREFIX_KEYWORD : 'prefix'; | ||
70 | + PRESENCE_KEYWORD : 'presence'; | ||
71 | + RANGE_KEYWORD : 'range'; | ||
72 | + REFERENCE_KEYWORD : 'reference'; | ||
73 | + REFINE_KEYWORD : 'refine'; | ||
74 | + REQUIRE_INSTANCE_KEYWORD : 'require-instance'; | ||
75 | + REVISION_KEYWORD : 'revision'; | ||
76 | + REVISION_DATE_KEYWORD : 'revision-date'; | ||
77 | + RPC_KEYWORD : 'rpc'; | ||
78 | + STATUS_KEYWORD : 'status'; | ||
79 | + SUBMODULE_KEYWORD : 'submodule'; | ||
80 | + TYPE_KEYWORD : 'type'; | ||
81 | + TYPEDEF_KEYWORD : 'typedef'; | ||
82 | + UNIQUE_KEYWORD : 'unique'; | ||
83 | + UNITS_KEYWORD : 'units'; | ||
84 | + USES_KEYWORD : 'uses'; | ||
85 | + VALUE_KEYWORD : 'value'; | ||
86 | + WHEN_KEYWORD : 'when'; | ||
87 | + YANG_VERSION_KEYWORD: 'yang-version'; | ||
88 | + YIN_ELEMENT_KEYWORD : 'yin-element'; | ||
89 | + ADD_KEYWORD : 'add'; | ||
90 | + CURRENT_KEYWORD : 'current'; | ||
91 | + DELETE_KEYWORD : 'delete'; | ||
92 | + DEPRECATED_KEYWORD : 'deprecated'; | ||
93 | + FALSE_KEYWORD : 'false'; | ||
94 | + MAX_KEYWORD : 'max'; | ||
95 | + MIN_KEYWORD : 'min'; | ||
96 | + NOT_SUPPORTED_KEYWORD : 'not-supported'; | ||
97 | + OBSOLETE_KEYWORD : 'obsolete'; | ||
98 | + REPLACE_KEYWORD : 'replace'; | ||
99 | + SYSTEM_KEYWORD : 'system'; | ||
100 | + TRUE_KEYWORD : 'true'; | ||
101 | + UNBOUNDED_KEYWORD : 'unbounded'; | ||
102 | + USER_KEYWORD : 'user'; | ||
103 | + | ||
104 | + // Lexer tokens to be skipped | ||
105 | + COMMENT | ||
106 | + : '/*' .*? '*/' -> channel(HIDDEN) | ||
107 | + ; | ||
108 | + WS : [ \r\t\u000C\n]+ -> channel(HIDDEN) | ||
109 | + ; | ||
110 | + LINE_COMMENT | ||
111 | + : '//' ~[\r\n]* '\r'? '\n' -> channel(HIDDEN) | ||
112 | + ; | ||
113 | + | ||
114 | + // Additional rules | ||
115 | + INTEGER : DIGIT+; | ||
116 | + DATE_ARG : DIGIT DIGIT DIGIT DIGIT '-' DIGIT DIGIT '-' DIGIT DIGIT; | ||
117 | + LEFT_CURLY_BRACE : '{'; | ||
118 | + RIGHT_CURLY_BRACE : '}'; | ||
119 | + IDENTIFIER : (ALPHA | '_') | ||
120 | + (ALPHA | DIGIT | '_' | '-' | '.')*; | ||
121 | + STMTEND : ';'; | ||
122 | + DQUOTE : '"'; | ||
123 | + COLON : ':'; | ||
124 | + PLUS : '+'; | ||
125 | + MINUS: '-'; | ||
126 | + | ||
127 | + STRING : ((~( '\r' | '\n' | '\t' | ' ' | ';' | '{' | '"' | '\'')~( '\r' | '\n' | '\t' | ' ' | ';' | '{' )* ) | SUB_STRING ); | ||
128 | + | ||
129 | + //Fragment rules | ||
130 | + fragment SUB_STRING : ('"' (ESC | ~["])*'"') | ('\'' (ESC | ~['])*'\'') ; | ||
131 | + fragment ESC : '\\' (["\\/bfnrt] | UNICODE) ; | ||
132 | + fragment UNICODE : 'u' HEX HEX HEX HEX ; | ||
133 | + fragment HEX : [0-9a-fA-F] ; | ||
134 | + fragment ALPHA : [A-Za-z]; | ||
135 | + fragment DIGIT : [0-9]; | ||
136 | + fragment URN : [u][r][n]; | ||
137 | + fragment HTTP : [h][t][t][p]; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment