When a node is going down, remove edges in both directions associated with the node.
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / antlr / YangLexer.g4
1 lexer grammar YangLexer;
2
3 @header {
4 package org.opendaylight.controller.antlrv4.code.gen;
5 }
6
7 tokens{
8     SEMICOLON,
9     LEFT_BRACE,
10     RIGHT_BRACE
11 }
12
13
14 PLUS : '+'-> pushMode(VALUE_MODE);
15 WS : [ \n\r\t] -> skip;
16 LINE_COMMENT :  ('//' (~( '\r' | '\n' )*)) -> skip;
17
18 START_BLOCK_COMMENT : '/*' ->pushMode(BLOCK_COMMENT_MODE), skip ;
19
20
21 SEMICOLON : ';' ->type(SEMICOLON);
22 LEFT_BRACE : '{' ->type(LEFT_BRACE);
23 RIGHT_BRACE : '}' ->type(RIGHT_BRACE);
24
25 YIN_ELEMENT_KEYWORD : 'yin-element'-> pushMode(VALUE_MODE);
26 YANG_VERSION_KEYWORD: 'yang-version'-> pushMode(VALUE_MODE);
27 WHEN_KEYWORD : 'when'-> pushMode(VALUE_MODE);
28 VALUE_KEYWORD : 'value'-> pushMode(VALUE_MODE);
29 USES_KEYWORD : 'uses'-> pushMode(VALUE_MODE);
30 UNITS_KEYWORD : 'units'-> pushMode(VALUE_MODE);
31 UNIQUE_KEYWORD : 'unique'-> pushMode(VALUE_MODE);
32 TYPEDEF_KEYWORD : 'typedef'-> pushMode(VALUE_MODE);
33 TYPE_KEYWORD : 'type'-> pushMode(VALUE_MODE);
34 SUBMODULE_KEYWORD : 'submodule'-> pushMode(VALUE_MODE);
35 STATUS_KEYWORD : 'status'-> pushMode(VALUE_MODE);
36 RPC_KEYWORD : 'rpc'-> pushMode(VALUE_MODE);
37 REVISION_DATE_KEYWORD : 'revision-date'-> pushMode(VALUE_MODE);
38 REVISION_KEYWORD : 'revision'-> pushMode(VALUE_MODE);
39 REQUIRE_INSTANCE_KEYWORD : 'require-instance'-> pushMode(VALUE_MODE);
40 REFINE_KEYWORD : 'refine'-> pushMode(VALUE_MODE);
41 REFERENCE_KEYWORD : 'reference'-> pushMode(VALUE_MODE);
42 RANGE_KEYWORD : 'range'-> pushMode(VALUE_MODE);
43 PRESENCE_KEYWORD : 'presence'-> pushMode(VALUE_MODE);
44 PREFIX_KEYWORD : 'prefix'-> pushMode(VALUE_MODE);
45 POSITION_KEYWORD : 'position'-> pushMode(VALUE_MODE);
46 PATTERN_KEYWORD : 'pattern'-> pushMode(VALUE_MODE);
47 PATH_KEYWORD : 'path'-> pushMode(VALUE_MODE);
48 OUTPUT_KEYWORD : 'output';
49 ORGANIZATION_KEYWORD: 'organization'-> pushMode(VALUE_MODE);
50 ORDERED_BY_KEYWORD : 'ordered-by'-> pushMode(VALUE_MODE);
51 NOTIFICATION_KEYWORD: 'notification'-> pushMode(VALUE_MODE);
52 NAMESPACE_KEYWORD : 'namespace'-> pushMode(VALUE_MODE);
53 MUST_KEYWORD : 'must'-> pushMode(VALUE_MODE);
54 MODULE_KEYWORD : 'module'-> pushMode(VALUE_MODE);
55 MIN_ELEMENTS_KEYWORD : 'min-elements'-> pushMode(VALUE_MODE);
56 MAX_ELEMENTS_KEYWORD : 'max-elements'-> pushMode(VALUE_MODE);
57 MANDATORY_KEYWORD : 'mandatory'-> pushMode(VALUE_MODE);
58 LIST_KEYWORD : 'list'-> pushMode(VALUE_MODE);
59 LENGTH_KEYWORD : 'length'-> pushMode(VALUE_MODE);
60 LEAF_LIST_KEYWORD : 'leaf-list'-> pushMode(VALUE_MODE);
61 LEAF_KEYWORD : 'leaf'-> pushMode(VALUE_MODE);
62 KEY_KEYWORD : 'key'-> pushMode(VALUE_MODE);
63 INPUT_KEYWORD : 'input';
64 INCLUDE_KEYWORD : 'include'-> pushMode(VALUE_MODE);
65 IMPORT_KEYWORD : 'import'-> pushMode(VALUE_MODE);
66 IF_FEATURE_KEYWORD : 'if-feature'-> pushMode(VALUE_MODE);
67 IDENTITY_KEYWORD : 'identity'-> pushMode(VALUE_MODE);
68 GROUPING_KEYWORD : 'grouping'-> pushMode(VALUE_MODE);
69 FRACTION_DIGITS_KEYWORD : 'fraction-digits'-> pushMode(VALUE_MODE);
70 FEATURE_KEYWORD : 'feature'-> pushMode(VALUE_MODE);
71 DEVIATE_KEYWORD : 'deviate'-> pushMode(VALUE_MODE);
72 DEVIATION_KEYWORD : 'deviation'-> pushMode(VALUE_MODE);
73 EXTENSION_KEYWORD : 'extension'-> pushMode(VALUE_MODE);
74 ERROR_MESSAGE_KEYWORD : 'error-message'-> pushMode(VALUE_MODE);
75 ERROR_APP_TAG_KEYWORD : 'error-app-tag'-> pushMode(VALUE_MODE);
76 ENUM_KEYWORD : 'enum'-> pushMode(VALUE_MODE);
77 DESCRIPTION_KEYWORD : 'description'-> pushMode(VALUE_MODE);
78 DEFAULT_KEYWORD : 'default'-> pushMode(VALUE_MODE);
79 CONTAINER_KEYWORD : 'container'-> pushMode(VALUE_MODE);
80 CONTACT_KEYWORD : 'contact'-> pushMode(VALUE_MODE);
81 CONFIG_KEYWORD : 'config'-> pushMode(VALUE_MODE);
82 CHOICE_KEYWORD: 'choice'-> pushMode(VALUE_MODE);
83 CASE_KEYWORD : 'case'-> pushMode(VALUE_MODE);
84 BIT_KEYWORD : 'bit'-> pushMode(VALUE_MODE);
85 BELONGS_TO_KEYWORD : 'belongs-to'-> pushMode(VALUE_MODE);
86 BASE_KEYWORD : 'base'-> pushMode(VALUE_MODE);
87 AUGMENT_KEYWORD : 'augment'-> pushMode(VALUE_MODE);
88 ARGUMENT_KEYWORD : 'argument'-> pushMode(VALUE_MODE);
89 ANYXML_KEYWORD : 'anyxml'-> pushMode(VALUE_MODE);
90
91 IDENTIFIER : [/.a-zA-Z_0-9\-][a-zA-Z0-9_\-.:]* -> pushMode(VALUE_MODE);
92
93 mode VALUE_MODE;
94
95 fragment ESC :  '\\' (["\\/bfnrt] | UNICODE) ;
96 fragment UNICODE : 'u' HEX HEX HEX HEX ;
97 fragment HEX : [0-9a-fA-F] ;
98           
99 END_IDENTIFIER_SEMICOLON : ';' -> type(SEMICOLON),popMode;
100 END_IDENTIFIER_LEFT_BRACE : '{' ->type(LEFT_BRACE), popMode;
101  
102 fragment SUB_STRING : ('"' (ESC | ~["])*'"') | ('\'' (ESC | ~['])*'\'') ;
103
104 STRING: (SUB_STRING |  (~( '\r' | '\n' | ' ' | ';' | '{' )+)) ->popMode;// IDENTIFIER ;
105 S : [ \n\r\t] -> skip;    
106
107 mode BLOCK_COMMENT_MODE;
108 END_BLOCK_COMMENT : '*/' -> popMode,skip;
109 BLOCK_COMMENT :  . ->more,skip;