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
137 additions
and
0 deletions
This diff is collapsed. Click to expand it.
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