blob: c5dcf26a8d84ceb8b7b1c437dcba0b40993fca51 [file] [log] [blame]
/*
* Copyright 2016 Open Networking Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* This is a YANG grammar for parser based on which ANTLR will generate YANG parser.
*/
grammar GeneratedYang;
import YangLexer;
@header {
package org.onosproject.yangutils.parser.antlrgencode;
}
yangfile : module_stmt
| submodule_stmt;
/**
* module-stmt = optsep module-keyword sep identifier-arg-str
* optsep
* "{" stmtsep
* module-header-stmts
* linkage-stmts
* meta-stmts
* revision-stmts
* body-stmts
* "}" optsep
*/
module_stmt : MODULE_KEYWORD IDENTIFIER LEFT_CURLY_BRACE module_body* RIGHT_CURLY_BRACE;
module_body : module_header_statement linkage_stmts meta_stmts revision_stmts body_stmts;
/**
* module-header-stmts = ;; these stmts can appear in any order
* [yang-version-stmt stmtsep]
* namespace-stmt stmtsep
* prefix-stmt stmtsep
*/
module_header_statement : yang_version_stmt? namespace_stmt prefix_stmt
| yang_version_stmt? prefix_stmt namespace_stmt
| namespace_stmt yang_version_stmt? prefix_stmt
| namespace_stmt prefix_stmt yang_version_stmt?
| prefix_stmt namespace_stmt yang_version_stmt?
| prefix_stmt yang_version_stmt? namespace_stmt?
;
/**
* linkage-stmts = ;; these stmts can appear in any order
* *(import-stmt stmtsep)
* *(include-stmt stmtsep)
*/
linkage_stmts : (import_stmt
| include_stmt)*;
/**
* meta-stmts = ;; these stmts can appear in any order
* [organization-stmt stmtsep]
* [contact-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
*/
meta_stmts : organization_stmt? contact_stmt? description_stmt? reference_stmt?
| organization_stmt? contact_stmt? reference_stmt? description_stmt?
| organization_stmt? description_stmt? contact_stmt? reference_stmt?
| organization_stmt? description_stmt? reference_stmt? contact_stmt?
| organization_stmt? reference_stmt? contact_stmt? description_stmt?
| organization_stmt? reference_stmt? description_stmt? contact_stmt?
| contact_stmt? organization_stmt? description_stmt? reference_stmt?
| contact_stmt? organization_stmt? reference_stmt? description_stmt?
| contact_stmt? reference_stmt? organization_stmt? description_stmt?
| contact_stmt? reference_stmt? description_stmt? organization_stmt?
| contact_stmt? description_stmt? reference_stmt? organization_stmt?
| contact_stmt? description_stmt? organization_stmt? reference_stmt?
| reference_stmt? contact_stmt? organization_stmt? description_stmt?
| reference_stmt? contact_stmt? description_stmt? organization_stmt?
| reference_stmt? organization_stmt? contact_stmt? description_stmt?
| reference_stmt? organization_stmt? description_stmt? contact_stmt?
| reference_stmt? description_stmt? organization_stmt? contact_stmt?
| reference_stmt? description_stmt? contact_stmt? organization_stmt?
| description_stmt? reference_stmt? contact_stmt? organization_stmt?
| description_stmt? reference_stmt? organization_stmt? contact_stmt?
| description_stmt? contact_stmt? reference_stmt? organization_stmt?
| description_stmt? contact_stmt? organization_stmt? reference_stmt?
| description_stmt? organization_stmt? contact_stmt? reference_stmt?
| description_stmt? organization_stmt? reference_stmt? contact_stmt?
;
// revision-stmts = *(revision-stmt stmtsep)
revision_stmts : revision_stmt*;
/**
* body-stmts = *((extension-stmt /
* feature-stmt /
* identity-stmt /
* typedef-stmt /
* grouping-stmt /
* data-def-stmt /
* augment-stmt /
* rpc-stmt /
* notification-stmt /
* deviation-stmt) stmtsep)
*/
body_stmts : (extension_stmt
| feature_stmt
| identity_stmt
| typedef_stmt
| grouping_stmt
| data_def_stmt
| augment_stmt
| rpc_stmt
| notification_stmt
| deviation_stmt)*
;
/**
* yang-version-stmt = yang-version-keyword sep yang-version-arg-str
* optsep stmtend
*/
yang_version_stmt : YANG_VERSION_KEYWORD INTEGER STMTEND;
/**
* namespace-stmt = namespace-keyword sep uri-str optsep stmtend
* For namespace validation TODO in Listener
*/
namespace_stmt : NAMESPACE_KEYWORD string STMTEND;
/**
* prefix-stmt = prefix-keyword sep prefix-arg-str
* optsep stmtend
*/
prefix_stmt : PREFIX_KEYWORD IDENTIFIER STMTEND;
/**
* import-stmt = import-keyword sep identifier-arg-str optsep
* "{" stmtsep
* prefix-stmt stmtsep
* [revision-date-stmt stmtsep]
* "}"
*/
import_stmt : IMPORT_KEYWORD IDENTIFIER LEFT_CURLY_BRACE import_stmt_body RIGHT_CURLY_BRACE;
import_stmt_body : prefix_stmt revision_date_stmt?;
// revision-date-stmt = revision-date-keyword sep revision-date stmtend
revision_date_stmt : REVISION_DATE_KEYWORD DATE_ARG STMTEND;
revision_date_stmt_body : revision_date_stmt;
/**
* include-stmt = include-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* [revision-date-stmt stmtsep]
* "}")
*/
include_stmt : INCLUDE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE revision_date_stmt_body? RIGHT_CURLY_BRACE);
/**
* organization-stmt = organization-keyword sep string
* optsep stmtend
*/
organization_stmt : ORGANIZATION_KEYWORD string STMTEND;
// contact-stmt = contact-keyword sep string optsep stmtend
contact_stmt : CONTACT_KEYWORD string STMTEND;
// description-stmt = description-keyword sep string optsep stmtend
description_stmt : DESCRIPTION_KEYWORD string STMTEND;
// reference-stmt = reference-keyword sep string optsep stmtend
reference_stmt : REFERENCE_KEYWORD string STMTEND;
/**
* revision-stmt = revision-keyword sep revision-date optsep
* (";" /
* "{" stmtsep
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*/
revision_stmt : REVISION_KEYWORD DATE_ARG (STMTEND | LEFT_CURLY_BRACE revision_stmt_body RIGHT_CURLY_BRACE);
revision_stmt_body : description_stmt? reference_stmt?;
/**
* submodule-stmt = optsep submodule-keyword sep identifier-arg-str
* optsep
* "{" stmtsep
* submodule-header-stmts
* linkage-stmts
* meta-stmts
* revision-stmts
* body-stmts
* "}" optsep
*/
submodule_stmt : SUBMODULE_KEYWORD IDENTIFIER LEFT_CURLY_BRACE submodule_body* RIGHT_CURLY_BRACE;
submodule_body : submodule_header_statement linkage_stmts meta_stmts revision_stmts body_stmts;
/** submodule-header-stmts =
* ;; these stmts can appear in any order
* [yang-version-stmt stmtsep]
* belongs-to-stmt stmtsep
*/
submodule_header_statement : yang_version_stmt? belongs_to_stmt
| belongs_to_stmt yang_version_stmt?
;
/**
* belongs-to-stmt = belongs-to-keyword sep identifier-arg-str
* optsep
* "{" stmtsep
* prefix-stmt stmtsep
* "}"
*/
belongs_to_stmt : BELONGS_TO_KEYWORD IDENTIFIER LEFT_CURLY_BRACE belongs_to_stmt_body RIGHT_CURLY_BRACE;
belongs_to_stmt_body : prefix_stmt;
/**
* extension-stmt = extension-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [argument-stmt stmtsep]
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*/
extension_stmt : EXTENSION_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE extension_body RIGHT_CURLY_BRACE);
extension_body : argument_stmt? status_stmt? description_stmt? reference_stmt?
| argument_stmt? status_stmt? reference_stmt? description_stmt?
| argument_stmt? description_stmt? status_stmt? reference_stmt?
| argument_stmt? description_stmt? reference_stmt? status_stmt?
| argument_stmt? reference_stmt? description_stmt? status_stmt?
| argument_stmt? reference_stmt? status_stmt? description_stmt?
| status_stmt? reference_stmt? argument_stmt? description_stmt?
| status_stmt? reference_stmt? description_stmt? argument_stmt?
| status_stmt? description_stmt? reference_stmt? argument_stmt?
| status_stmt? description_stmt? argument_stmt? reference_stmt?
| status_stmt? argument_stmt? reference_stmt? description_stmt?
| status_stmt? argument_stmt? description_stmt? reference_stmt?
| description_stmt? argument_stmt? status_stmt? reference_stmt?
| description_stmt? argument_stmt? reference_stmt? status_stmt?
| description_stmt? status_stmt? argument_stmt? reference_stmt?
| description_stmt? status_stmt? reference_stmt? argument_stmt?
| description_stmt? reference_stmt? status_stmt? argument_stmt?
| description_stmt? reference_stmt? argument_stmt? status_stmt?
| reference_stmt? description_stmt? argument_stmt? status_stmt?
| reference_stmt? description_stmt? status_stmt? argument_stmt?
| reference_stmt? status_stmt? argument_stmt? description_stmt?
| reference_stmt? status_stmt? description_stmt? argument_stmt?
| reference_stmt? argument_stmt? description_stmt? status_stmt?
| reference_stmt? argument_stmt? status_stmt? description_stmt?
;
/**
* argument-stmt = argument-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* [yin-element-stmt stmtsep]
* "}")
*/
argument_stmt : ARGUMENT_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE argument_body RIGHT_CURLY_BRACE);
argument_body : yin_element_stmt?;
/**
* yin-element-stmt = yin-element-keyword sep yin-element-arg-str
* stmtend
*/
yin_element_stmt : YIN_ELEMENT_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
/**
* identity-stmt = identity-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [base-stmt stmtsep]
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*/
identity_stmt : IDENTITY_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE identity_body RIGHT_CURLY_BRACE);
identity_body : base_stmt? status_stmt? description_stmt? reference_stmt?
| base_stmt? status_stmt? reference_stmt? description_stmt?
| base_stmt? description_stmt? status_stmt? reference_stmt?
| base_stmt? description_stmt? reference_stmt? status_stmt?
| base_stmt? reference_stmt? description_stmt? status_stmt?
| base_stmt? reference_stmt? status_stmt? description_stmt?
| reference_stmt? base_stmt? status_stmt? description_stmt?
| reference_stmt? base_stmt? description_stmt? status_stmt?
| reference_stmt? status_stmt? base_stmt? description_stmt?
| reference_stmt? status_stmt? description_stmt? base_stmt?
| reference_stmt? description_stmt? status_stmt? base_stmt?
| reference_stmt? description_stmt? base_stmt? status_stmt?
| description_stmt? reference_stmt? status_stmt? base_stmt?
| description_stmt? reference_stmt? status_stmt? base_stmt?
| description_stmt? reference_stmt? base_stmt? status_stmt?
| description_stmt? status_stmt? base_stmt? reference_stmt?
| description_stmt? status_stmt? reference_stmt? base_stmt?
| description_stmt? base_stmt? reference_stmt? status_stmt?
| description_stmt? base_stmt? status_stmt? reference_stmt?
| status_stmt? base_stmt? description_stmt? reference_stmt?
| status_stmt? base_stmt? reference_stmt? description_stmt?
| status_stmt? description_stmt? base_stmt? reference_stmt?
| status_stmt? description_stmt? reference_stmt? base_stmt?
| status_stmt? reference_stmt? description_stmt? base_stmt?
| status_stmt? reference_stmt? base_stmt? description_stmt?
;
/**
* base-stmt = base-keyword sep identifier-ref-arg-str
* optsep stmtend*
* identifier-ref-arg = [prefix ":"] identifier
*/
base_stmt : BASE_KEYWORD string STMTEND;
/**
* feature-stmt = feature-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* *(if-feature-stmt stmtsep)
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*/
feature_stmt : FEATURE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE feature_body RIGHT_CURLY_BRACE);
feature_body : if_feature_stmt* status_stmt? description_stmt? reference_stmt?
| if_feature_stmt* status_stmt? reference_stmt? description_stmt?
| if_feature_stmt* description_stmt? status_stmt? reference_stmt?
| if_feature_stmt* description_stmt? reference_stmt? status_stmt?
| if_feature_stmt* reference_stmt? status_stmt? description_stmt?
| if_feature_stmt* reference_stmt? description_stmt? status_stmt?
| status_stmt? if_feature_stmt* description_stmt? reference_stmt?
| status_stmt? if_feature_stmt* reference_stmt? description_stmt?
| status_stmt? description_stmt? if_feature_stmt* reference_stmt?
| status_stmt? description_stmt? reference_stmt? if_feature_stmt*
| status_stmt? reference_stmt? if_feature_stmt* description_stmt?
| status_stmt? reference_stmt? description_stmt? if_feature_stmt*
| description_stmt? if_feature_stmt* status_stmt? reference_stmt?
| description_stmt? if_feature_stmt* reference_stmt? status_stmt?
| description_stmt? status_stmt? if_feature_stmt* reference_stmt?
| description_stmt? status_stmt? reference_stmt? if_feature_stmt*
| description_stmt? reference_stmt* status_stmt? if_feature_stmt*
| description_stmt? reference_stmt* if_feature_stmt? status_stmt?
| reference_stmt? if_feature_stmt* status_stmt? description_stmt?
| reference_stmt? if_feature_stmt* description_stmt? status_stmt?
| reference_stmt? description_stmt? status_stmt? if_feature_stmt*
| reference_stmt? description_stmt? if_feature_stmt* status_stmt?
| reference_stmt? status_stmt? description_stmt? if_feature_stmt*
| reference_stmt? status_stmt? if_feature_stmt* description_stmt?
;
/**
* data-def-stmt = container-stmt /
* leaf-stmt /
* leaf-list-stmt /
* list-stmt /
* choice-stmt /
* anyxml-stmt /
* uses-stmt
*/
data_def_stmt : container_stmt
| leaf_stmt
| leaf_list_stmt
| list_stmt
| choice_stmt
| uses_stmt;
/**
* if-feature-stmt = if-feature-keyword sep identifier-ref-arg-str
* optsep stmtend
*/
if_feature_stmt : IF_FEATURE_KEYWORD string STMTEND;
/**
* units-stmt = units-keyword sep string optsep stmtend
*/
units_stmt : UNITS_KEYWORD string STMTEND;
/**
* typedef-stmt = typedef-keyword sep identifier-arg-str optsep
* "{" stmtsep
* ;; these stmts can appear in any order
* type-stmt stmtsep
* [units-stmt stmtsep]
* [default-stmt stmtsep]
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}"
* TODO : 0..1 occurance to be validated in listener
*/
typedef_stmt : TYPEDEF_KEYWORD IDENTIFIER LEFT_CURLY_BRACE
(type_stmt | units_stmt | default_stmt | status_stmt | description_stmt | reference_stmt)*
RIGHT_CURLY_BRACE;
/**
* type-stmt = type-keyword sep identifier-ref-arg-str optsep
* (";" /
* "{" stmtsep
* type-body-stmts
* "}")
*/
type_stmt : TYPE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE type_body_stmts RIGHT_CURLY_BRACE);
/**
* type-body-stmts = numerical-restrictions /
* decimal64-specification /
* string-restrictions /
* enum-specification /
* leafref-specification /
* identityref-specification /
* instance-identifier-specification /
* bits-specification /
* union-specification
* TODO : decimal64-specification to be added
*/
type_body_stmts : numerical_restrictions | string_restrictions | enum_specification
| leafref_specification | identityref_specification | instance_identifier_specification
| bits_specification | union_specification;
/**
* numerical-restrictions = range-stmt stmtsep
*/
numerical_restrictions : range_stmt;
/**
* range-stmt = range-keyword sep range-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [error-message-stmt stmtsep]
* [error-app-tag-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*/
range_stmt : RANGE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE);
common_stmts : error_message_stmt? error_app_tag_stmt? description_stmt? reference_stmt?
| error_message_stmt? error_app_tag_stmt? reference_stmt? description_stmt?
| error_message_stmt? description_stmt? error_app_tag_stmt? reference_stmt?
| error_message_stmt? description_stmt? reference_stmt? error_app_tag_stmt?
| error_message_stmt? reference_stmt? error_app_tag_stmt? description_stmt?
| error_message_stmt? reference_stmt? description_stmt? error_app_tag_stmt?
| error_app_tag_stmt? error_message_stmt? description_stmt? reference_stmt?
| error_app_tag_stmt? error_message_stmt? reference_stmt? description_stmt?
| error_app_tag_stmt? description_stmt? description_stmt? error_message_stmt?
| error_app_tag_stmt? description_stmt? error_message_stmt? description_stmt?
| error_app_tag_stmt? reference_stmt? error_message_stmt? description_stmt?
| error_app_tag_stmt? reference_stmt? description_stmt? error_message_stmt?
| description_stmt? error_message_stmt? error_app_tag_stmt? reference_stmt?
| description_stmt? error_message_stmt? reference_stmt? error_app_tag_stmt?
| description_stmt? error_app_tag_stmt? error_message_stmt? reference_stmt?
| description_stmt? error_app_tag_stmt? reference_stmt? error_message_stmt?
| description_stmt? reference_stmt? error_message_stmt? error_app_tag_stmt?
| description_stmt? reference_stmt? error_app_tag_stmt? error_message_stmt?
| reference_stmt? error_message_stmt? description_stmt? error_app_tag_stmt?
| reference_stmt? error_message_stmt? error_app_tag_stmt? description_stmt?
| reference_stmt? error_app_tag_stmt? description_stmt? error_message_stmt?
| reference_stmt? error_app_tag_stmt? error_message_stmt? description_stmt?
| reference_stmt? description_stmt? error_message_stmt? error_app_tag_stmt?
| reference_stmt? description_stmt? error_app_tag_stmt? error_message_stmt?
;
/**
* string-restrictions = ;; these stmts can appear in any order
* [length-stmt stmtsep]
* *(pattern-stmt stmtsep)
*/
string_restrictions : ((length_stmt)? (pattern_stmt)*) | ((pattern_stmt)* (length_stmt)?);
/**
* length-stmt = length-keyword sep length-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [error-message-stmt stmtsep]
* [error-app-tag-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*/
length_stmt : LENGTH_KEYWORD string
(STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE);
/**
* pattern-stmt = pattern-keyword sep string optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [error-message-stmt stmtsep]
* [error-app-tag-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*/
pattern_stmt : PATTERN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE);
/**
* default-stmt = default-keyword sep string stmtend
*/
default_stmt : DEFAULT_KEYWORD string STMTEND;
/**
* enum-specification = 1*(enum-stmt stmtsep)
*/
enum_specification : enum_stmt+;
/**
* enum-stmt = enum-keyword sep string optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [value-stmt stmtsep]
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*/
enum_stmt : ENUM_KEYWORD string (STMTEND | LEFT_CURLY_BRACE enum_stmt_body RIGHT_CURLY_BRACE);
enum_stmt_body : value_stmt? status_stmt? description_stmt? reference_stmt?
| value_stmt? status_stmt? reference_stmt? description_stmt?
| value_stmt? description_stmt? status_stmt? reference_stmt?
| value_stmt? description_stmt? reference_stmt? status_stmt?
| value_stmt? reference_stmt? status_stmt? description_stmt?
| value_stmt? reference_stmt? description_stmt? status_stmt?
| status_stmt? value_stmt? description_stmt? reference_stmt?
| status_stmt? value_stmt? reference_stmt? description_stmt?
| status_stmt? description_stmt? description_stmt? value_stmt?
| status_stmt? description_stmt? value_stmt? description_stmt?
| status_stmt? reference_stmt? value_stmt? description_stmt?
| status_stmt? reference_stmt? description_stmt? value_stmt?
| description_stmt? value_stmt? status_stmt? reference_stmt?
| description_stmt? value_stmt? reference_stmt? status_stmt?
| description_stmt? status_stmt? value_stmt? reference_stmt?
| description_stmt? status_stmt? reference_stmt? value_stmt?
| description_stmt? reference_stmt? value_stmt? status_stmt?
| description_stmt? reference_stmt? status_stmt? value_stmt?
| reference_stmt? value_stmt? description_stmt? status_stmt?
| reference_stmt? value_stmt? status_stmt? description_stmt?
| reference_stmt? status_stmt? description_stmt? value_stmt?
| reference_stmt? status_stmt? value_stmt? description_stmt?
| reference_stmt? description_stmt? value_stmt? status_stmt?
| reference_stmt? description_stmt? status_stmt? value_stmt?
;
/**
* leafref-specification =
* ;; these stmts can appear in any order
* path-stmt stmtsep
* [require-instance-stmt stmtsep]
*/
leafref_specification : (path_stmt (require_instance_stmt)?) | ((require_instance_stmt)? path_stmt);
/**
* path-stmt = path-keyword sep path-arg-str stmtend
*/
path_stmt : PATH_KEYWORD string STMTEND;
/**
* require-instance-stmt = require-instance-keyword sep
* require-instance-arg-str stmtend
* require-instance-arg-str = < a string that matches the rule
* require-instance-arg >
* require-instance-arg = true-keyword / false-keyword
*/
require_instance_stmt : REQUIRE_INSTANCE_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
/**
* instance-identifier-specification =
* [require-instance-stmt stmtsep]
*/
instance_identifier_specification : require_instance_stmt?;
/**
* identityref-specification =
* base-stmt stmtsep
*/
identityref_specification : base_stmt;
/**
* union-specification = 1*(type-stmt stmtsep)
*/
union_specification : type_stmt+;
/**
* bits-specification = 1*(bit-stmt stmtsep)
*/
bits_specification : bit_stmt+;
/**
* bit-stmt = bit-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [position-stmt stmtsep]
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}"
* "}")
*/
bit_stmt : BIT_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE bit_body_stmt RIGHT_CURLY_BRACE);
bit_body_stmt : position_stmt? status_stmt? description_stmt? reference_stmt?
| position_stmt? status_stmt? reference_stmt? description_stmt?
| position_stmt? description_stmt? status_stmt? reference_stmt?
| position_stmt? description_stmt? reference_stmt? status_stmt?
| position_stmt? reference_stmt? status_stmt? description_stmt?
| position_stmt? reference_stmt? description_stmt? status_stmt?
| status_stmt? position_stmt? description_stmt? reference_stmt?
| status_stmt? position_stmt? reference_stmt? description_stmt?
| status_stmt? description_stmt? description_stmt? position_stmt?
| status_stmt? description_stmt? position_stmt? description_stmt?
| status_stmt? reference_stmt? position_stmt? description_stmt?
| status_stmt? reference_stmt? description_stmt? position_stmt?
| description_stmt? position_stmt? status_stmt? reference_stmt?
| description_stmt? position_stmt? reference_stmt? status_stmt?
| description_stmt? status_stmt? position_stmt? reference_stmt?
| description_stmt? status_stmt? reference_stmt? position_stmt?
| description_stmt? reference_stmt? position_stmt? status_stmt?
| description_stmt? reference_stmt? status_stmt? position_stmt?
| reference_stmt? position_stmt? description_stmt? status_stmt?
| reference_stmt? position_stmt? status_stmt? description_stmt?
| reference_stmt? status_stmt? description_stmt? position_stmt?
| reference_stmt? status_stmt? position_stmt? description_stmt?
| reference_stmt? description_stmt? position_stmt? status_stmt?
| reference_stmt? description_stmt? status_stmt? position_stmt?
;
/**
* position-stmt = position-keyword sep
* position-value-arg-str stmtend
* position-value-arg-str = < a string that matches the rule
* position-value-arg >
* position-value-arg = non-negative-integer-value
*/
position_stmt : POSITION_KEYWORD INTEGER STMTEND;
/**
* status-stmt = status-keyword sep status-arg-str stmtend
* status-arg-str = < a string that matches the rule
* status-arg >
* status-arg = current-keyword /
* obsolete-keyword /
* deprecated-keyword
*/
status_stmt : STATUS_KEYWORD (CURRENT_KEYWORD | OBSOLETE_KEYWORD | DEPRECATED_KEYWORD) STMTEND;
/**
* config-stmt = config-keyword sep
* config-arg-str stmtend
* config-arg-str = < a string that matches the rule
* config-arg >
* config-arg = true-keyword / false-keyword
*/
config_stmt : CONFIG_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
/**
* mandatory-stmt = mandatory-keyword sep
* mandatory-arg-str stmtend
*
* mandatory-arg-str = < a string that matches the rule
* mandatory-arg >
*
* mandatory-arg = true-keyword / false-keyword
*/
mandatory_stmt : MANDATORY_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
/**
* presence-stmt = presence-keyword sep string stmtend
*/
presence_stmt : PRESENCE_KEYWORD string STMTEND;
/**
* ordered-by-stmt = ordered-by-keyword sep
* ordered-by-arg-str stmtend
*
* ordered-by-arg-str = < a string that matches the rule
* ordered-by-arg >
*
* ordered-by-arg = user-keyword / system-keyword
*/
ordered_by_stmt : ORDERED_BY_KEYWORD (USER_KEYWORD | SYSTEM_KEYWORD) STMTEND;
/**
* must-stmt = must-keyword sep string optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [error-message-stmt stmtsep]
* [error-app-tag-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*/
must_stmt : MUST_KEYWORD string (STMTEND | LEFT_CURLY_BRACE common_stmts RIGHT_CURLY_BRACE);
/**
* error-message-stmt = error-message-keyword sep string stmtend
*/
error_message_stmt : ERROR_MESSAGE_KEYWORD string STMTEND;
/**
* error-app-tag-stmt = error-app-tag-keyword sep string stmtend
*/
error_app_tag_stmt : ERROR_APP_TAG_KEYWORD string STMTEND;
/**
* min-elements-stmt = min-elements-keyword sep
* min-value-arg-str stmtend
* min-value-arg-str = < a string that matches the rule
* min-value-arg >
* min-value-arg = non-negative-integer-value
*/
min_elements_stmt : MIN_ELEMENTS_KEYWORD INTEGER STMTEND;
/**
* max-elements-stmt = max-elements-keyword sep
* max-value-arg-str stmtend
* max-value-arg-str = < a string that matches the rule
* max-value-arg >
*/
max_elements_stmt : MAX_ELEMENTS_KEYWORD max_value_arg STMTEND;
/**
* max-value-arg = unbounded-keyword /
* positive-integer-value
*/
max_value_arg : UNBOUNDED_KEYWORD | INTEGER;
/**
* value-stmt = value-keyword sep integer-value stmtend
*/
value_stmt : VALUE_KEYWORD ((MINUS INTEGER) | INTEGER) STMTEND;
/**
* grouping-stmt = grouping-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* *((typedef-stmt /
* grouping-stmt) stmtsep)
* *(data-def-stmt stmtsep)
* "}")
* TODO : 0..1 occurance to be checked in listener
*/
grouping_stmt : GROUPING_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE
(status_stmt | description_stmt | reference_stmt | typedef_stmt | grouping_stmt
| data_def_stmt)* RIGHT_CURLY_BRACE);
/**
* container-stmt = container-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [when-stmt stmtsep]
* *(if-feature-stmt stmtsep)
* *(must-stmt stmtsep)
* [presence-stmt stmtsep]
* [config-stmt stmtsep]
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* *((typedef-stmt /
* grouping-stmt) stmtsep)
* *(data-def-stmt stmtsep)
* "}")
* TODO : 0..1 occurance to be checked in listener
*/
container_stmt : CONTAINER_KEYWORD IDENTIFIER
(STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | must_stmt | presence_stmt | config_stmt
| status_stmt | description_stmt | reference_stmt | typedef_stmt | grouping_stmt
| data_def_stmt)* RIGHT_CURLY_BRACE);
/**
* leaf-stmt = leaf-keyword sep identifier-arg-str optsep
* "{" stmtsep
* ;; these stmts can appear in any order
* [when-stmt stmtsep]
* *(if-feature-stmt stmtsep)
* type-stmt stmtsep
* [units-stmt stmtsep]
* *(must-stmt stmtsep)
* [default-stmt stmtsep]
* [config-stmt stmtsep]
* [mandatory-stmt stmtsep]
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}"
* TODO : 0..1 occurance to be checked in listener
*/
leaf_stmt : LEAF_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | type_stmt | units_stmt
| must_stmt | default_stmt | config_stmt | mandatory_stmt | status_stmt | description_stmt
| reference_stmt)* RIGHT_CURLY_BRACE;
/**
* leaf-list-stmt = leaf-list-keyword sep identifier-arg-str optsep
* "{" stmtsep
* ;; these stmts can appear in any order
* [when-stmt stmtsep]
* *(if-feature-stmt stmtsep)
* type-stmt stmtsep
* [units-stmt stmtsep]
* *(must-stmt stmtsep)
* [config-stmt stmtsep]
* [min-elements-stmt stmtsep]
* [max-elements-stmt stmtsep]
* [ordered-by-stmt stmtsep]
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}"
* TODO : 0..1 occurance to be checked in listener
*/
leaf_list_stmt : LEAF_LIST_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | type_stmt
| units_stmt | must_stmt | config_stmt | min_elements_stmt | max_elements_stmt | ordered_by_stmt
| status_stmt | description_stmt | reference_stmt)* RIGHT_CURLY_BRACE;
/**
* list-stmt = list-keyword sep identifier-arg-str optsep
* "{" stmtsep
* ;; these stmts can appear in any order
* [when-stmt stmtsep]
* *(if-feature-stmt stmtsep)
* *(must-stmt stmtsep)
* [key-stmt stmtsep]
* *(unique-stmt stmtsep)
* [config-stmt stmtsep]
* [min-elements-stmt stmtsep]
* [max-elements-stmt stmtsep]
* [ordered-by-stmt stmtsep]
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* *((typedef-stmt /
* grouping-stmt) stmtsep)
* 1*(data-def-stmt stmtsep)
* "}"
* TODO : 0..1 occurance to be checked in listener
*/
list_stmt : LIST_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | must_stmt | key_stmt
| unique_stmt | config_stmt | min_elements_stmt | max_elements_stmt | ordered_by_stmt | status_stmt
| description_stmt | reference_stmt | typedef_stmt | grouping_stmt| data_def_stmt)* RIGHT_CURLY_BRACE;
/**
* key-stmt = key-keyword sep key-arg-str stmtend
*/
key_stmt : KEY_KEYWORD string STMTEND;
/**
* unique-stmt = unique-keyword sep unique-arg-str stmtend
*/
unique_stmt: UNIQUE_KEYWORD string STMTEND;
/**
* choice-stmt = choice-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [when-stmt stmtsep]
* *(if-feature-stmt stmtsep)
* [default-stmt stmtsep]
* [config-stmt stmtsep]
* [mandatory-stmt stmtsep]
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* *((short-case-stmt / case-stmt) stmtsep)
* "}")
* TODO : 0..1 occurance to be checked in listener
*/
choice_stmt : CHOICE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | default_stmt
| config_stmt | mandatory_stmt | status_stmt | description_stmt | reference_stmt | short_case_stmt
| case_stmt)* RIGHT_CURLY_BRACE);
/**
* short-case-stmt = container-stmt /
* leaf-stmt /
* leaf-list-stmt /
* list-stmt /
* anyxml-stmt
*/
short_case_stmt : container_stmt | leaf_stmt | leaf_list_stmt | list_stmt;
/**
* case-stmt = case-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [when-stmt stmtsep]
* *(if-feature-stmt stmtsep)
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* *(data-def-stmt stmtsep)
* "}")
* TODO : 0..1 occurance to be checked in listener
*/
case_stmt : CASE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt
| description_stmt | reference_stmt | data_def_stmt)* RIGHT_CURLY_BRACE);
/**
* uses-stmt = uses-keyword sep identifier-ref-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [when-stmt stmtsep]
* *(if-feature-stmt stmtsep)
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* *(refine-stmt stmtsep)
* *(uses-augment-stmt stmtsep)
* "}")
* TODO : 0..1 occurance to be checked in listener
*/
uses_stmt : USES_KEYWORD string (STMTEND | LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt
| description_stmt | reference_stmt | refine_stmt | uses_augment_stmt)* RIGHT_CURLY_BRACE);
/**
* refine-stmt = refine-keyword sep refine-arg-str optsep
* (";" /
* "{" stmtsep
* (refine-container-stmts /
* refine-leaf-stmts /
* refine-leaf-list-stmts /
* refine-list-stmts /
* refine-choice-stmts /
* refine-case-stmts /
* refine-anyxml-stmts)
* "}")
*/
refine_stmt : REFINE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE (refine_container_stmts | refine_leaf_stmts
| refine_leaf_list_stmts | refine_list_stmts | refine_choice_stmts | refine_case_stmts)
RIGHT_CURLY_BRACE);
/**
* refine-container-stmts =
* ;; these stmts can appear in any order
* *(must-stmt stmtsep)
* [presence-stmt stmtsep]
* [config-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* TODO : 0..1 occurance to be checked in listener
*/
refine_container_stmts : (must_stmt | presence_stmt | config_stmt | description_stmt | reference_stmt)* ;
/**
* refine-leaf-stmts = ;; these stmts can appear in any order
* *(must-stmt stmtsep)
* [default-stmt stmtsep]
* [config-stmt stmtsep]
* [mandatory-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* TODO : 0..1 occurance to be checked in listener
*/
refine_leaf_stmts : (must_stmt | default_stmt | config_stmt | mandatory_stmt | description_stmt | reference_stmt)*;
/**
* refine-leaf-list-stmts =
* ;; these stmts can appear in any order
* *(must-stmt stmtsep)
* [config-stmt stmtsep]
* [min-elements-stmt stmtsep]
* [max-elements-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* TODO : 0..1 occurance to be checked in listener
*/
refine_leaf_list_stmts : (must_stmt | config_stmt | min_elements_stmt | max_elements_stmt | description_stmt
| reference_stmt)*;
/**
* refine-list-stmts = ;; these stmts can appear in any order
* *(must-stmt stmtsep)
* [config-stmt stmtsep]
* [min-elements-stmt stmtsep]
* [max-elements-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* TODO : 0..1 occurance to be checked in listener
*/
refine_list_stmts : (must_stmt | config_stmt | min_elements_stmt | max_elements_stmt | description_stmt
| reference_stmt)*;
/**
* refine-choice-stmts = ;; these stmts can appear in any order
* [default-stmt stmtsep]
* [config-stmt stmtsep]
* [mandatory-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* TODO : 0..1 occurance to be checked in listener
*/
refine_choice_stmts : (default_stmt | config_stmt | mandatory_stmt | description_stmt | reference_stmt)*;
/**
* refine-case-stmts = ;; these stmts can appear in any order
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
*
*/
refine_case_stmts : (description_stmt | reference_stmt)? | (reference_stmt | description_stmt)?;
/**
* uses-augment-stmt = augment-keyword sep uses-augment-arg-str optsep
* "{" stmtsep
* ;; these stmts can appear in any order
* [when-stmt stmtsep]
* *(if-feature-stmt stmtsep)
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* 1*((data-def-stmt stmtsep) /
* (case-stmt stmtsep))
* "}"
* TODO : 0..1 occurance to be checked in listener
*/
uses_augment_stmt : AUGMENT_KEYWORD string LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt
| description_stmt | reference_stmt | data_def_stmt | case_stmt)* RIGHT_CURLY_BRACE;
/**
* augment-stmt = augment-keyword sep augment-arg-str optsep
* "{" stmtsep
* ;; these stmts can appear in any order
* [when-stmt stmtsep]
* *(if-feature-stmt stmtsep)
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* 1*((data-def-stmt stmtsep) /
* (case-stmt stmtsep))
* "}"
* TODO : 0..1 occurance to be checked in listener
*/
augment_stmt : AUGMENT_KEYWORD string LEFT_CURLY_BRACE (when_stmt | if_feature_stmt | status_stmt
| description_stmt | reference_stmt | data_def_stmt | case_stmt)* RIGHT_CURLY_BRACE;
/**
* when-stmt = when-keyword sep string optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*
*/
when_stmt : WHEN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE ((description_stmt? reference_stmt?)
| (reference_stmt? description_stmt?)) RIGHT_CURLY_BRACE);
/**
* rpc-stmt = rpc-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* *(if-feature-stmt stmtsep)
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* *((typedef-stmt /
* grouping-stmt) stmtsep)
* [input-stmt stmtsep]
* [output-stmt stmtsep]
* "}")
* TODO : 0..1 occurance to be checked in listener
*/
rpc_stmt : RPC_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (if_feature_stmt | status_stmt | description_stmt
| reference_stmt | typedef_stmt | grouping_stmt | input_stmt | output_stmt)* RIGHT_CURLY_BRACE);
/**
* input-stmt = input-keyword optsep
* "{" stmtsep
* ;; these stmts can appear in any order
* *((typedef-stmt /
* grouping-stmt) stmtsep)
* 1*(data-def-stmt stmtsep)
* "}"
*/
input_stmt : INPUT_KEYWORD LEFT_CURLY_BRACE
((typedef_stmt | grouping_stmt)* | data_def_stmt+)
| (data_def_stmt+ | (typedef_stmt | grouping_stmt)*)RIGHT_CURLY_BRACE;
/**
* output-stmt = output-keyword optsep
* "{" stmtsep
* ;; these stmts can appear in any order
* *((typedef-stmt /
* grouping-stmt) stmtsep)
* 1*(data-def-stmt stmtsep)
* "}"
*/
output_stmt : OUTPUT_KEYWORD LEFT_CURLY_BRACE
((typedef_stmt | grouping_stmt)* | data_def_stmt+)
| (data_def_stmt+ | (typedef_stmt | grouping_stmt)*)RIGHT_CURLY_BRACE;
/**
* notification-stmt = notification-keyword sep
* identifier-arg-str optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* *(if-feature-stmt stmtsep)
* [status-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* *((typedef-stmt /
* grouping-stmt) stmtsep)
* *(data-def-stmt stmtsep)
* "}")
* TODO : 0..1 occurance to be checked in listener
*/
notification_stmt : NOTIFICATION_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (if_feature_stmt | status_stmt
| description_stmt | reference_stmt | typedef_stmt | grouping_stmt | data_def_stmt)*
RIGHT_CURLY_BRACE);
/**
* deviation-stmt = deviation-keyword sep
* deviation-arg-str optsep
* "{" stmtsep
* ;; these stmts can appear in any order
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* (deviate-not-supported-stmt /
* 1*(deviate-add-stmt /
* deviate-replace-stmt /
* deviate-delete-stmt))
* "}"
* TODO : 0..1 occurance to be checked in listener
*/
deviation_stmt: DEVIATION_KEYWORD string LEFT_CURLY_BRACE (description_stmt | reference_stmt
| deviate_not_supported_stmt | deviate_add_stmt | deviate_replace_stmt | deviate_delete_stmt)*
RIGHT_CURLY_BRACE;
/**
* deviate-not-supported-stmt =
* deviate-keyword sep
* not-supported-keyword optsep
* (";" /
* "{" stmtsep
* "}")
*/
deviate_not_supported_stmt: DEVIATE_KEYWORD NOT_SUPPORTED_KEYWORD (STMTEND | LEFT_CURLY_BRACE RIGHT_CURLY_BRACE);
/**
* deviate-add-stmt = deviate-keyword sep add-keyword optsep
* (";" /
* "{" stmtsep
* [units-stmt stmtsep]
* *(must-stmt stmtsep)
* *(unique-stmt stmtsep)
* [default-stmt stmtsep]
* [config-stmt stmtsep]
* [mandatory-stmt stmtsep]
* [min-elements-stmt stmtsep]
* [max-elements-stmt stmtsep]
* "}")
*/
deviate_add_stmt: DEVIATE_KEYWORD ADD_KEYWORD (STMTEND | (LEFT_CURLY_BRACE units_stmt? must_stmt* unique_stmt*
default_stmt? config_stmt? mandatory_stmt? min_elements_stmt? max_elements_stmt?
RIGHT_CURLY_BRACE));
/**
* deviate-delete-stmt = deviate-keyword sep delete-keyword optsep
* (";" /
* "{" stmtsep
* [units-stmt stmtsep]
* *(must-stmt stmtsep)
* *(unique-stmt stmtsep)
* [default-stmt stmtsep]
* "}")
*/
deviate_delete_stmt: DEVIATE_KEYWORD DELETE_KEYWORD (STMTEND
| (LEFT_CURLY_BRACE units_stmt? must_stmt* unique_stmt* default_stmt? RIGHT_CURLY_BRACE));
/**
* deviate-replace-stmt = deviate-keyword sep replace-keyword optsep
* (";" /
* "{" stmtsep
* [type-stmt stmtsep]
* [units-stmt stmtsep]
* [default-stmt stmtsep]
* [config-stmt stmtsep]
* [mandatory-stmt stmtsep]
* [min-elements-stmt stmtsep]
* [max-elements-stmt stmtsep]
* "}")
*/
deviate_replace_stmt: DEVIATE_KEYWORD REPLACE_KEYWORD (STMTEND | (LEFT_CURLY_BRACE type_stmt? units_stmt?
default_stmt? config_stmt? mandatory_stmt? min_elements_stmt?
max_elements_stmt? RIGHT_CURLY_BRACE));
string : STRING (PLUS STRING)*;