Projects moved under correct parent.
[controller.git] / opendaylight / sal / yang-prototype / yang / yang-model-parser-impl / src / main / antlr / YangLexer.g4
diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-parser-impl/src/main/antlr/YangLexer.g4 b/opendaylight/sal/yang-prototype/yang/yang-model-parser-impl/src/main/antlr/YangLexer.g4
new file mode 100644 (file)
index 0000000..1c51135
--- /dev/null
@@ -0,0 +1,109 @@
+lexer grammar YangLexer;
+
+@header {
+package org.opendaylight.controller.antlrv4.code.gen;
+}
+
+tokens{
+    SEMICOLON,
+    LEFT_BRACE,
+    RIGHT_BRACE
+}
+
+
+PLUS : '+'-> pushMode(VALUE_MODE);
+WS : [ \n\r\t] -> skip;
+LINE_COMMENT :  ('//' (~( '\r' | '\n' )*)) -> skip;
+
+START_BLOCK_COMMENT : '/*' ->pushMode(BLOCK_COMMENT_MODE), skip ;
+
+
+SEMICOLON : ';' ->type(SEMICOLON);
+LEFT_BRACE : '{' ->type(LEFT_BRACE);
+RIGHT_BRACE : '}' ->type(RIGHT_BRACE);
+
+YIN_ELEMENT_KEYWORD : 'yin-element'-> pushMode(VALUE_MODE);
+YANG_VERSION_KEYWORD: 'yang-version'-> pushMode(VALUE_MODE);
+WHEN_KEYWORD : 'when'-> pushMode(VALUE_MODE);
+VALUE_KEYWORD : 'value'-> pushMode(VALUE_MODE);
+USES_KEYWORD : 'uses'-> pushMode(VALUE_MODE);
+UNITS_KEYWORD : 'units'-> pushMode(VALUE_MODE);
+UNIQUE_KEYWORD : 'unique'-> pushMode(VALUE_MODE);
+TYPEDEF_KEYWORD : 'typedef'-> pushMode(VALUE_MODE);
+TYPE_KEYWORD : 'type'-> pushMode(VALUE_MODE);
+SUBMODULE_KEYWORD : 'submodule'-> pushMode(VALUE_MODE);
+STATUS_KEYWORD : 'status'-> pushMode(VALUE_MODE);
+RPC_KEYWORD : 'rpc'-> pushMode(VALUE_MODE);
+REVISION_DATE_KEYWORD : 'revision-date'-> pushMode(VALUE_MODE);
+REVISION_KEYWORD : 'revision'-> pushMode(VALUE_MODE);
+REQUIRE_INSTANCE_KEYWORD : 'require-instance'-> pushMode(VALUE_MODE);
+REFINE_KEYWORD : 'refine'-> pushMode(VALUE_MODE);
+REFERENCE_KEYWORD : 'reference'-> pushMode(VALUE_MODE);
+RANGE_KEYWORD : 'range'-> pushMode(VALUE_MODE);
+PRESENCE_KEYWORD : 'presence'-> pushMode(VALUE_MODE);
+PREFIX_KEYWORD : 'prefix'-> pushMode(VALUE_MODE);
+POSITION_KEYWORD : 'position'-> pushMode(VALUE_MODE);
+PATTERN_KEYWORD : 'pattern'-> pushMode(VALUE_MODE);
+PATH_KEYWORD : 'path'-> pushMode(VALUE_MODE);
+OUTPUT_KEYWORD : 'output';
+ORGANIZATION_KEYWORD: 'organization'-> pushMode(VALUE_MODE);
+ORDERED_BY_KEYWORD : 'ordered-by'-> pushMode(VALUE_MODE);
+NOTIFICATION_KEYWORD: 'notification'-> pushMode(VALUE_MODE);
+NAMESPACE_KEYWORD : 'namespace'-> pushMode(VALUE_MODE);
+MUST_KEYWORD : 'must'-> pushMode(VALUE_MODE);
+MODULE_KEYWORD : 'module'-> pushMode(VALUE_MODE);
+MIN_ELEMENTS_KEYWORD : 'min-elements'-> pushMode(VALUE_MODE);
+MAX_ELEMENTS_KEYWORD : 'max-elements'-> pushMode(VALUE_MODE);
+MANDATORY_KEYWORD : 'mandatory'-> pushMode(VALUE_MODE);
+LIST_KEYWORD : 'list'-> pushMode(VALUE_MODE);
+LENGTH_KEYWORD : 'length'-> pushMode(VALUE_MODE);
+LEAF_LIST_KEYWORD : 'leaf-list'-> pushMode(VALUE_MODE);
+LEAF_KEYWORD : 'leaf'-> pushMode(VALUE_MODE);
+KEY_KEYWORD : 'key'-> pushMode(VALUE_MODE);
+INPUT_KEYWORD : 'input';
+INCLUDE_KEYWORD : 'include'-> pushMode(VALUE_MODE);
+IMPORT_KEYWORD : 'import'-> pushMode(VALUE_MODE);
+IF_FEATURE_KEYWORD : 'if-feature'-> pushMode(VALUE_MODE);
+IDENTITY_KEYWORD : 'identity'-> pushMode(VALUE_MODE);
+GROUPING_KEYWORD : 'grouping'-> pushMode(VALUE_MODE);
+FRACTION_DIGITS_KEYWORD : 'fraction-digits'-> pushMode(VALUE_MODE);
+FEATURE_KEYWORD : 'feature'-> pushMode(VALUE_MODE);
+DEVIATE_KEYWORD : 'deviate'-> pushMode(VALUE_MODE);
+DEVIATION_KEYWORD : 'deviation'-> pushMode(VALUE_MODE);
+EXTENSION_KEYWORD : 'extension'-> pushMode(VALUE_MODE);
+ERROR_MESSAGE_KEYWORD : 'error-message'-> pushMode(VALUE_MODE);
+ERROR_APP_TAG_KEYWORD : 'error-app-tag'-> pushMode(VALUE_MODE);
+ENUM_KEYWORD : 'enum'-> pushMode(VALUE_MODE);
+DESCRIPTION_KEYWORD : 'description'-> pushMode(VALUE_MODE);
+DEFAULT_KEYWORD : 'default'-> pushMode(VALUE_MODE);
+CONTAINER_KEYWORD : 'container'-> pushMode(VALUE_MODE);
+CONTACT_KEYWORD : 'contact'-> pushMode(VALUE_MODE);
+CONFIG_KEYWORD : 'config'-> pushMode(VALUE_MODE);
+CHOICE_KEYWORD: 'choice'-> pushMode(VALUE_MODE);
+CASE_KEYWORD : 'case'-> pushMode(VALUE_MODE);
+BIT_KEYWORD : 'bit'-> pushMode(VALUE_MODE);
+BELONGS_TO_KEYWORD : 'belongs-to'-> pushMode(VALUE_MODE);
+BASE_KEYWORD : 'base'-> pushMode(VALUE_MODE);
+AUGMENT_KEYWORD : 'augment'-> pushMode(VALUE_MODE);
+ARGUMENT_KEYWORD : 'argument'-> pushMode(VALUE_MODE);
+ANYXML_KEYWORD : 'anyxml'-> pushMode(VALUE_MODE);
+
+IDENTIFIER : [/.a-zA-Z_0-9\-][a-zA-Z0-9_\-.:]* -> pushMode(VALUE_MODE);
+
+mode VALUE_MODE;
+
+fragment ESC :  '\\' (["\\/bfnrt] | UNICODE) ;
+fragment UNICODE : 'u' HEX HEX HEX HEX ;
+fragment HEX : [0-9a-fA-F] ;
+          
+END_IDENTIFIER_SEMICOLON : ';' -> type(SEMICOLON),popMode;
+END_IDENTIFIER_LEFT_BRACE : '{' ->type(LEFT_BRACE), popMode;
+fragment SUB_STRING : ('"' (ESC | ~["])*'"') | ('\'' (ESC | ~['])*'\'') ;
+
+STRING: (SUB_STRING |  (~( '\r' | '\n' | ' ' | ';' | '{' )+)) ->popMode;// IDENTIFIER ;
+S : [ \n\r\t] -> skip;    
+
+mode BLOCK_COMMENT_MODE;
+END_BLOCK_COMMENT : '*/' -> popMode,skip;
+BLOCK_COMMENT :  . ->more,skip;
\ No newline at end of file