Vidyashree Rama
Committed by Gerrit Code Review

[ONOS-3877] Implement Yang grammar for leaf,leaf-list,augment,grouping/uses

[ONOS-3917] YANG LEXER

Change-Id: Ic2476cd97b9b2b5b557a93fb975cc89002ff4464
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