blob: b3272bc077b7117466d937528fc3e6c167c35459 [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 : moduleStatement
| subModuleStatement;
/**
* module-stmt = optsep module-keyword sep identifier-arg-str
* optsep
* "{" stmtsep
* module-header-stmts
* linkage-stmts
* meta-stmts
* revision-stmts
* body-stmts
* "}" optsep
*/
moduleStatement : MODULE_KEYWORD IDENTIFIER LEFT_CURLY_BRACE moduleBody* RIGHT_CURLY_BRACE;
moduleBody : moduleHeaderStatement linkageStatements metaStatements revisionStatements bodyStatements;
/**
* module-header-stmts = ;; these stmts can appear in any order
* [yang-version-stmt stmtsep]
* namespace-stmt stmtsep
* prefix-stmt stmtsep
*/
moduleHeaderStatement : yangVersionStatement? namespaceStatement prefixStatement
| yangVersionStatement? prefixStatement namespaceStatement
| namespaceStatement yangVersionStatement? prefixStatement
| namespaceStatement prefixStatement yangVersionStatement?
| prefixStatement namespaceStatement yangVersionStatement?
| prefixStatement yangVersionStatement? namespaceStatement
;
/**
* linkage-stmts = ;; these stmts can appear in any order
* *(import-stmt stmtsep)
* *(include-stmt stmtsep)
*/
linkageStatements : (importStatement
| includeStatement)*;
/**
* meta-stmts = ;; these stmts can appear in any order
* [organization-stmt stmtsep]
* [contact-stmt stmtsep]
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
*/
metaStatements : organizationStatement? contactStatement? descriptionStatement? referenceStatement?
| organizationStatement? contactStatement? referenceStatement? descriptionStatement?
| organizationStatement? descriptionStatement? contactStatement? referenceStatement?
| organizationStatement? descriptionStatement? referenceStatement? contactStatement?
| organizationStatement? referenceStatement? contactStatement? descriptionStatement?
| organizationStatement? referenceStatement? descriptionStatement? contactStatement?
| contactStatement? organizationStatement? descriptionStatement? referenceStatement?
| contactStatement? organizationStatement? referenceStatement? descriptionStatement?
| contactStatement? referenceStatement? organizationStatement? descriptionStatement?
| contactStatement? referenceStatement? descriptionStatement? organizationStatement?
| contactStatement? descriptionStatement? referenceStatement? organizationStatement?
| contactStatement? descriptionStatement? organizationStatement? referenceStatement?
| referenceStatement? contactStatement? organizationStatement? descriptionStatement?
| referenceStatement? contactStatement? descriptionStatement? organizationStatement?
| referenceStatement? organizationStatement? contactStatement? descriptionStatement?
| referenceStatement? organizationStatement? descriptionStatement? contactStatement?
| referenceStatement? descriptionStatement? organizationStatement? contactStatement?
| referenceStatement? descriptionStatement? contactStatement? organizationStatement?
| descriptionStatement? referenceStatement? contactStatement? organizationStatement?
| descriptionStatement? referenceStatement? organizationStatement? contactStatement?
| descriptionStatement? contactStatement? referenceStatement? organizationStatement?
| descriptionStatement? contactStatement? organizationStatement? referenceStatement?
| descriptionStatement? organizationStatement? contactStatement? referenceStatement?
| descriptionStatement? organizationStatement? referenceStatement? contactStatement?
;
// revision-stmts = *(revision-stmt stmtsep)
revisionStatements : revisionStatement*;
/**
* body-stmts = *((extension-stmt /
* feature-stmt /
* identity-stmt /
* typedef-stmt /
* grouping-stmt /
* data-def-stmt /
* augment-stmt /
* rpc-stmt /
* notification-stmt /
* deviation-stmt) stmtsep)
*/
bodyStatements : (extensionStatement
| featureStatement
| identityStatement
| typedefStatement
| groupingStatement
| dataDefStatement
| augmentStatement
| rpcStatement
| notificationStatement
| deviationStatement)*
;
/**
* yang-version-stmt = yang-version-keyword sep yang-version-arg-str
* optsep stmtend
*/
yangVersionStatement : YANG_VERSION_KEYWORD INTEGER STMTEND;
/**
* namespace-stmt = namespace-keyword sep uri-str optsep stmtend
* For namespace validation TODO in Listener
*/
namespaceStatement : NAMESPACE_KEYWORD string STMTEND;
/**
* prefix-stmt = prefix-keyword sep prefix-arg-str
* optsep stmtend
*/
prefixStatement : PREFIX_KEYWORD IDENTIFIER STMTEND;
/**
* import-stmt = import-keyword sep identifier-arg-str optsep
* "{" stmtsep
* prefix-stmt stmtsep
* [revision-date-stmt stmtsep]
* "}"
*/
importStatement : IMPORT_KEYWORD IDENTIFIER LEFT_CURLY_BRACE importStatementBody RIGHT_CURLY_BRACE;
importStatementBody : prefixStatement revisionDateStatement?;
// revision-date-stmt = revision-date-keyword sep revision-date stmtend
revisionDateStatement : REVISION_DATE_KEYWORD DATE_ARG STMTEND;
/**
* include-stmt = include-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* [revision-date-stmt stmtsep]
* "}")
*/
includeStatement : INCLUDE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE revisionDateStatement? RIGHT_CURLY_BRACE);
/**
* organization-stmt = organization-keyword sep string
* optsep stmtend
*/
organizationStatement : ORGANIZATION_KEYWORD string STMTEND;
// contact-stmt = contact-keyword sep string optsep stmtend
contactStatement : CONTACT_KEYWORD string STMTEND;
// description-stmt = description-keyword sep string optsep stmtend
descriptionStatement : DESCRIPTION_KEYWORD string STMTEND;
// reference-stmt = reference-keyword sep string optsep stmtend
referenceStatement : REFERENCE_KEYWORD string STMTEND;
/**
* revision-stmt = revision-keyword sep revision-date optsep
* (";" /
* "{" stmtsep
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*/
revisionStatement : REVISION_KEYWORD DATE_ARG (STMTEND | LEFT_CURLY_BRACE revisionStatementBody RIGHT_CURLY_BRACE);
revisionStatementBody : descriptionStatement? referenceStatement?;
/**
* submodule-stmt = optsep submodule-keyword sep identifier-arg-str
* optsep
* "{" stmtsep
* submodule-header-stmts
* linkage-stmts
* meta-stmts
* revision-stmts
* body-stmts
* "}" optsep
*/
subModuleStatement : SUBMODULE_KEYWORD IDENTIFIER LEFT_CURLY_BRACE submoduleBody* RIGHT_CURLY_BRACE;
submoduleBody : submoduleHeaderStatement linkageStatements metaStatements revisionStatements bodyStatements;
/** submodule-header-stmts =
* ;; these stmts can appear in any order
* [yang-version-stmt stmtsep]
* belongs-to-stmt stmtsep
*/
submoduleHeaderStatement : yangVersionStatement? belongstoStatement
| belongstoStatement yangVersionStatement?
;
/**
* belongs-to-stmt = belongs-to-keyword sep identifier-arg-str
* optsep
* "{" stmtsep
* prefix-stmt stmtsep
* "}"
*/
belongstoStatement : BELONGS_TO_KEYWORD IDENTIFIER LEFT_CURLY_BRACE belongstoStatementBody RIGHT_CURLY_BRACE;
belongstoStatementBody : prefixStatement;
/**
* 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]
* "}")
*/
extensionStatement : EXTENSION_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE extensionBody RIGHT_CURLY_BRACE);
extensionBody : argumentStatement? statusStatement? descriptionStatement? referenceStatement?
| argumentStatement? statusStatement? referenceStatement? descriptionStatement?
| argumentStatement? descriptionStatement? statusStatement? referenceStatement?
| argumentStatement? descriptionStatement? referenceStatement? statusStatement?
| argumentStatement? referenceStatement? descriptionStatement? statusStatement?
| argumentStatement? referenceStatement? statusStatement? descriptionStatement?
| statusStatement? referenceStatement? argumentStatement? descriptionStatement?
| statusStatement? referenceStatement? descriptionStatement? argumentStatement?
| statusStatement? descriptionStatement? referenceStatement? argumentStatement?
| statusStatement? descriptionStatement? argumentStatement? referenceStatement?
| statusStatement? argumentStatement? referenceStatement? descriptionStatement?
| statusStatement? argumentStatement? descriptionStatement? referenceStatement?
| descriptionStatement? argumentStatement? statusStatement? referenceStatement?
| descriptionStatement? argumentStatement? referenceStatement? statusStatement?
| descriptionStatement? statusStatement? argumentStatement? referenceStatement?
| descriptionStatement? statusStatement? referenceStatement? argumentStatement?
| descriptionStatement? referenceStatement? statusStatement? argumentStatement?
| descriptionStatement? referenceStatement? argumentStatement? statusStatement?
| referenceStatement? descriptionStatement? argumentStatement? statusStatement?
| referenceStatement? descriptionStatement? statusStatement? argumentStatement?
| referenceStatement? statusStatement? argumentStatement? descriptionStatement?
| referenceStatement? statusStatement? descriptionStatement? argumentStatement?
| referenceStatement? argumentStatement? descriptionStatement? statusStatement?
| referenceStatement? argumentStatement? statusStatement? descriptionStatement?
;
/**
* argument-stmt = argument-keyword sep identifier-arg-str optsep
* (";" /
* "{" stmtsep
* [yin-element-stmt stmtsep]
* "}")
*/
argumentStatement : ARGUMENT_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE argumentBody RIGHT_CURLY_BRACE);
argumentBody : yinElementStatement?;
/**
* yin-element-stmt = yin-element-keyword sep yin-element-arg-str
* stmtend
*/
yinElementStatement : 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]
* "}")
*/
identityStatement : IDENTITY_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE identityBody RIGHT_CURLY_BRACE);
identityBody : baseStatement? statusStatement? descriptionStatement? referenceStatement?
| baseStatement? statusStatement? referenceStatement? descriptionStatement?
| baseStatement? descriptionStatement? statusStatement? referenceStatement?
| baseStatement? descriptionStatement? referenceStatement? statusStatement?
| baseStatement? referenceStatement? descriptionStatement? statusStatement?
| baseStatement? referenceStatement? statusStatement? descriptionStatement?
| referenceStatement? baseStatement? statusStatement? descriptionStatement?
| referenceStatement? baseStatement? descriptionStatement? statusStatement?
| referenceStatement? statusStatement? baseStatement? descriptionStatement?
| referenceStatement? statusStatement? descriptionStatement? baseStatement?
| referenceStatement? descriptionStatement? statusStatement? baseStatement?
| referenceStatement? descriptionStatement? baseStatement? statusStatement?
| descriptionStatement? referenceStatement? statusStatement? baseStatement?
| descriptionStatement? referenceStatement? statusStatement? baseStatement?
| descriptionStatement? referenceStatement? baseStatement? statusStatement?
| descriptionStatement? statusStatement? baseStatement? referenceStatement?
| descriptionStatement? statusStatement? referenceStatement? baseStatement?
| descriptionStatement? baseStatement? referenceStatement? statusStatement?
| descriptionStatement? baseStatement? statusStatement? referenceStatement?
| statusStatement? baseStatement? descriptionStatement? referenceStatement?
| statusStatement? baseStatement? referenceStatement? descriptionStatement?
| statusStatement? descriptionStatement? baseStatement? referenceStatement?
| statusStatement? descriptionStatement? referenceStatement? baseStatement?
| statusStatement? referenceStatement? descriptionStatement? baseStatement?
| statusStatement? referenceStatement? baseStatement? descriptionStatement?
;
/**
* base-stmt = base-keyword sep identifier-ref-arg-str
* optsep stmtend*
* identifier-ref-arg = [prefix ":"] identifier
*/
baseStatement : 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]
* "}")
*/
featureStatement : FEATURE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE featureBody RIGHT_CURLY_BRACE);
featureBody : ifFeatureStatement* statusStatement? descriptionStatement? referenceStatement?
| ifFeatureStatement* statusStatement? referenceStatement? descriptionStatement?
| ifFeatureStatement* descriptionStatement? statusStatement? referenceStatement?
| ifFeatureStatement* descriptionStatement? referenceStatement? statusStatement?
| ifFeatureStatement* referenceStatement? statusStatement? descriptionStatement?
| ifFeatureStatement* referenceStatement? descriptionStatement? statusStatement?
| statusStatement? ifFeatureStatement* descriptionStatement? referenceStatement?
| statusStatement? ifFeatureStatement* referenceStatement? descriptionStatement?
| statusStatement? descriptionStatement? ifFeatureStatement* referenceStatement?
| statusStatement? descriptionStatement? referenceStatement? ifFeatureStatement*
| statusStatement? referenceStatement? ifFeatureStatement* descriptionStatement?
| statusStatement? referenceStatement? descriptionStatement? ifFeatureStatement*
| descriptionStatement? ifFeatureStatement* statusStatement? referenceStatement?
| descriptionStatement? ifFeatureStatement* referenceStatement? statusStatement?
| descriptionStatement? statusStatement? ifFeatureStatement* referenceStatement?
| descriptionStatement? statusStatement? referenceStatement? ifFeatureStatement*
| descriptionStatement? referenceStatement* statusStatement? ifFeatureStatement*
| descriptionStatement? referenceStatement* ifFeatureStatement? statusStatement?
| referenceStatement? ifFeatureStatement* statusStatement? descriptionStatement?
| referenceStatement? ifFeatureStatement* descriptionStatement? statusStatement?
| referenceStatement? descriptionStatement? statusStatement? ifFeatureStatement*
| referenceStatement? descriptionStatement? ifFeatureStatement* statusStatement?
| referenceStatement? statusStatement? descriptionStatement? ifFeatureStatement*
| referenceStatement? statusStatement? ifFeatureStatement* descriptionStatement?
;
/**
* data-def-stmt = container-stmt /
* leaf-stmt /
* leaf-list-stmt /
* list-stmt /
* choice-stmt /
* anyxml-stmt /
* uses-stmt
*/
dataDefStatement : containerStatement
| leafStatement
| leafListStatement
| listStatement
| choiceStatement
| usesStatement;
/**
* if-feature-stmt = if-feature-keyword sep identifier-ref-arg-str
* optsep stmtend
*/
ifFeatureStatement : IF_FEATURE_KEYWORD string STMTEND;
/**
* units-stmt = units-keyword sep string optsep stmtend
*/
unitsStatement : 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
*/
typedefStatement : TYPEDEF_KEYWORD IDENTIFIER LEFT_CURLY_BRACE
(typeStatement | unitsStatement | defaultStatement | statusStatement | descriptionStatement | referenceStatement)*
RIGHT_CURLY_BRACE;
/**
* type-stmt = type-keyword sep identifier-ref-arg-str optsep
* (";" /
* "{" stmtsep
* type-body-stmts
* "}")
*/
typeStatement : TYPE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE typeBodyStatements 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
*/
typeBodyStatements : numericalRestrictions | stringRestrictions | enumSpecification
| leafrefSpecification | identityrefSpecification | instanceIdentifierSpecification
| bitsSpecification | unionSpecification;
/**
* numerical-restrictions = range-stmt stmtsep
*/
numericalRestrictions : rangeStatement;
/**
* 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]
* "}")
*/
rangeStatement : RANGE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE commonStatements RIGHT_CURLY_BRACE);
commonStatements : errorMessageStatement? errorAppTagStatement? descriptionStatement? referenceStatement?
| errorMessageStatement? errorAppTagStatement? referenceStatement? descriptionStatement?
| errorMessageStatement? descriptionStatement? errorAppTagStatement? referenceStatement?
| errorMessageStatement? descriptionStatement? referenceStatement? errorAppTagStatement?
| errorMessageStatement? referenceStatement? errorAppTagStatement? descriptionStatement?
| errorMessageStatement? referenceStatement? descriptionStatement? errorAppTagStatement?
| errorAppTagStatement? errorMessageStatement? descriptionStatement? referenceStatement?
| errorAppTagStatement? errorMessageStatement? referenceStatement? descriptionStatement?
| errorAppTagStatement? descriptionStatement? descriptionStatement? errorMessageStatement?
| errorAppTagStatement? descriptionStatement? errorMessageStatement? descriptionStatement?
| errorAppTagStatement? referenceStatement? errorMessageStatement? descriptionStatement?
| errorAppTagStatement? referenceStatement? descriptionStatement? errorMessageStatement?
| descriptionStatement? errorMessageStatement? errorAppTagStatement? referenceStatement?
| descriptionStatement? errorMessageStatement? referenceStatement? errorAppTagStatement?
| descriptionStatement? errorAppTagStatement? errorMessageStatement? referenceStatement?
| descriptionStatement? errorAppTagStatement? referenceStatement? errorMessageStatement?
| descriptionStatement? referenceStatement? errorMessageStatement? errorAppTagStatement?
| descriptionStatement? referenceStatement? errorAppTagStatement? errorMessageStatement?
| referenceStatement? errorMessageStatement? descriptionStatement? errorAppTagStatement?
| referenceStatement? errorMessageStatement? errorAppTagStatement? descriptionStatement?
| referenceStatement? errorAppTagStatement? descriptionStatement? errorMessageStatement?
| referenceStatement? errorAppTagStatement? errorMessageStatement? descriptionStatement?
| referenceStatement? descriptionStatement? errorMessageStatement? errorAppTagStatement?
| referenceStatement? descriptionStatement? errorAppTagStatement? errorMessageStatement?
;
/**
* string-restrictions = ;; these stmts can appear in any order
* [length-stmt stmtsep]
* *(pattern-stmt stmtsep)
*/
stringRestrictions : ((lengthStatement)? (patternStatement)*) | ((patternStatement)* (lengthStatement)?);
/**
* 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]
* "}")
*/
lengthStatement : LENGTH_KEYWORD string
(STMTEND | LEFT_CURLY_BRACE commonStatements 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]
* "}")
*/
patternStatement : PATTERN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE commonStatements RIGHT_CURLY_BRACE);
/**
* default-stmt = default-keyword sep string stmtend
*/
defaultStatement : DEFAULT_KEYWORD string STMTEND;
/**
* enum-specification = 1*(enum-stmt stmtsep)
*/
enumSpecification : enumStatement+;
/**
* 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]
* "}")
*/
enumStatement : ENUM_KEYWORD string (STMTEND | LEFT_CURLY_BRACE enumStatementBody RIGHT_CURLY_BRACE);
enumStatementBody : valueStatement? statusStatement? descriptionStatement? referenceStatement?
| valueStatement? statusStatement? referenceStatement? descriptionStatement?
| valueStatement? descriptionStatement? statusStatement? referenceStatement?
| valueStatement? descriptionStatement? referenceStatement? statusStatement?
| valueStatement? referenceStatement? statusStatement? descriptionStatement?
| valueStatement? referenceStatement? descriptionStatement? statusStatement?
| statusStatement? valueStatement? descriptionStatement? referenceStatement?
| statusStatement? valueStatement? referenceStatement? descriptionStatement?
| statusStatement? descriptionStatement? descriptionStatement? valueStatement?
| statusStatement? descriptionStatement? valueStatement? descriptionStatement?
| statusStatement? referenceStatement? valueStatement? descriptionStatement?
| statusStatement? referenceStatement? descriptionStatement? valueStatement?
| descriptionStatement? valueStatement? statusStatement? referenceStatement?
| descriptionStatement? valueStatement? referenceStatement? statusStatement?
| descriptionStatement? statusStatement? valueStatement? referenceStatement?
| descriptionStatement? statusStatement? referenceStatement? valueStatement?
| descriptionStatement? referenceStatement? valueStatement? statusStatement?
| descriptionStatement? referenceStatement? statusStatement? valueStatement?
| referenceStatement? valueStatement? descriptionStatement? statusStatement?
| referenceStatement? valueStatement? statusStatement? descriptionStatement?
| referenceStatement? statusStatement? descriptionStatement? valueStatement?
| referenceStatement? statusStatement? valueStatement? descriptionStatement?
| referenceStatement? descriptionStatement? valueStatement? statusStatement?
| referenceStatement? descriptionStatement? statusStatement? valueStatement?
;
/**
* leafref-specification =
* ;; these stmts can appear in any order
* path-stmt stmtsep
* [require-instance-stmt stmtsep]
*/
leafrefSpecification : (pathStatement (requireInstanceStatement)?) | ((requireInstanceStatement)? pathStatement);
/**
* path-stmt = path-keyword sep path-arg-str stmtend
*/
pathStatement : 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
*/
requireInstanceStatement : REQUIRE_INSTANCE_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
/**
* instance-identifier-specification =
* [require-instance-stmt stmtsep]
*/
instanceIdentifierSpecification : requireInstanceStatement?;
/**
* identityref-specification =
* base-stmt stmtsep
*/
identityrefSpecification : baseStatement;
/**
* union-specification = 1*(type-stmt stmtsep)
*/
unionSpecification : typeStatement+;
/**
* bits-specification = 1*(bit-stmt stmtsep)
*/
bitsSpecification : bitStatement+;
/**
* 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]
* "}"
* "}")
*/
bitStatement : BIT_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE bitBodyStatement RIGHT_CURLY_BRACE);
bitBodyStatement : positionStatement? statusStatement? descriptionStatement? referenceStatement?
| positionStatement? statusStatement? referenceStatement? descriptionStatement?
| positionStatement? descriptionStatement? statusStatement? referenceStatement?
| positionStatement? descriptionStatement? referenceStatement? statusStatement?
| positionStatement? referenceStatement? statusStatement? descriptionStatement?
| positionStatement? referenceStatement? descriptionStatement? statusStatement?
| statusStatement? positionStatement? descriptionStatement? referenceStatement?
| statusStatement? positionStatement? referenceStatement? descriptionStatement?
| statusStatement? descriptionStatement? descriptionStatement? positionStatement?
| statusStatement? descriptionStatement? positionStatement? descriptionStatement?
| statusStatement? referenceStatement? positionStatement? descriptionStatement?
| statusStatement? referenceStatement? descriptionStatement? positionStatement?
| descriptionStatement? positionStatement? statusStatement? referenceStatement?
| descriptionStatement? positionStatement? referenceStatement? statusStatement?
| descriptionStatement? statusStatement? positionStatement? referenceStatement?
| descriptionStatement? statusStatement? referenceStatement? positionStatement?
| descriptionStatement? referenceStatement? positionStatement? statusStatement?
| descriptionStatement? referenceStatement? statusStatement? positionStatement?
| referenceStatement? positionStatement? descriptionStatement? statusStatement?
| referenceStatement? positionStatement? statusStatement? descriptionStatement?
| referenceStatement? statusStatement? descriptionStatement? positionStatement?
| referenceStatement? statusStatement? positionStatement? descriptionStatement?
| referenceStatement? descriptionStatement? positionStatement? statusStatement?
| referenceStatement? descriptionStatement? statusStatement? positionStatement?
;
/**
* 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
*/
positionStatement : 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
*/
statusStatement : 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
*/
configStatement : 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
*/
mandatoryStatement : MANDATORY_KEYWORD (TRUE_KEYWORD | FALSE_KEYWORD) STMTEND;
/**
* presence-stmt = presence-keyword sep string stmtend
*/
presenceStatement : 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
*/
orderedByStatement : 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]
* "}")
*/
mustStatement : MUST_KEYWORD string (STMTEND | LEFT_CURLY_BRACE commonStatements RIGHT_CURLY_BRACE);
/**
* error-message-stmt = error-message-keyword sep string stmtend
*/
errorMessageStatement : ERROR_MESSAGE_KEYWORD string STMTEND;
/**
* error-app-tag-stmt = error-app-tag-keyword sep string stmtend
*/
errorAppTagStatement : 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
*/
minElementsStatement : 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 >
*/
maxElementsStatement : MAX_ELEMENTS_KEYWORD maxValueArgument STMTEND;
/**
* max-value-arg = unbounded-keyword /
* positive-integer-value
*/
maxValueArgument : UNBOUNDED_KEYWORD | INTEGER;
/**
* value-stmt = value-keyword sep integer-value stmtend
*/
valueStatement : 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
*/
groupingStatement : GROUPING_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE
(statusStatement | descriptionStatement | referenceStatement | typedefStatement | groupingStatement
| dataDefStatement)* 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
*/
containerStatement : CONTAINER_KEYWORD IDENTIFIER
(STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | mustStatement | presenceStatement | configStatement
| statusStatement | descriptionStatement | referenceStatement | typedefStatement | groupingStatement
| dataDefStatement)* 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
*/
leafStatement : LEAF_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | typeStatement | unitsStatement
| mustStatement | defaultStatement | configStatement | mandatoryStatement | statusStatement | descriptionStatement
| referenceStatement)* 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
*/
leafListStatement : LEAF_LIST_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | typeStatement
| unitsStatement | mustStatement | configStatement | minElementsStatement | maxElementsStatement | orderedByStatement
| statusStatement | descriptionStatement | referenceStatement)* 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
*/
listStatement : LIST_KEYWORD IDENTIFIER LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | mustStatement | keyStatement
| uniqueStatement | configStatement | minElementsStatement | maxElementsStatement | orderedByStatement | statusStatement
| descriptionStatement | referenceStatement | typedefStatement | groupingStatement| dataDefStatement)* RIGHT_CURLY_BRACE;
/**
* key-stmt = key-keyword sep key-arg-str stmtend
*/
keyStatement : KEY_KEYWORD string STMTEND;
/**
* unique-stmt = unique-keyword sep unique-arg-str stmtend
*/
uniqueStatement: 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
*/
choiceStatement : CHOICE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | defaultStatement
| configStatement | mandatoryStatement | statusStatement | descriptionStatement | referenceStatement | shortCaseStatement
| caseStatement)* RIGHT_CURLY_BRACE);
/**
* short-case-stmt = container-stmt /
* leaf-stmt /
* leaf-list-stmt /
* list-stmt /
* anyxml-stmt
*/
shortCaseStatement : containerStatement | leafStatement | leafListStatement | listStatement;
/**
* 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
*/
caseStatement : CASE_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | statusStatement
| descriptionStatement | referenceStatement | dataDefStatement)* 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
*/
usesStatement : USES_KEYWORD string (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | statusStatement
| descriptionStatement | referenceStatement | refineStatement | usesAugmentStatement)* 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)
* "}")
*/
refineStatement : REFINE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE (refineContainerStatements | refineLeafStatements
| refineLeafListStatements | refineListStatements | refineChoiceStatements | refineCaseStatements)
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
*/
refineContainerStatements : (mustStatement | presenceStatement | configStatement | descriptionStatement | referenceStatement)* ;
/**
* 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
*/
refineLeafStatements : (mustStatement | defaultStatement | configStatement | mandatoryStatement | descriptionStatement | referenceStatement)*;
/**
* 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
*/
refineLeafListStatements : (mustStatement | configStatement | minElementsStatement | maxElementsStatement | descriptionStatement
| referenceStatement)*;
/**
* 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
*/
refineListStatements : (mustStatement | configStatement | minElementsStatement | maxElementsStatement | descriptionStatement
| referenceStatement)*;
/**
* 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
*/
refineChoiceStatements : (defaultStatement | configStatement | mandatoryStatement | descriptionStatement | referenceStatement)*;
/**
* refine-case-stmts = ;; these stmts can appear in any order
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
*
*/
refineCaseStatements : (descriptionStatement | referenceStatement)? | (referenceStatement | descriptionStatement)?;
/**
* 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
*/
usesAugmentStatement : AUGMENT_KEYWORD string LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | statusStatement
| descriptionStatement | referenceStatement | dataDefStatement | caseStatement)* 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
*/
augmentStatement : AUGMENT_KEYWORD string LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | statusStatement
| descriptionStatement | referenceStatement | dataDefStatement | caseStatement)* RIGHT_CURLY_BRACE;
/**
* when-stmt = when-keyword sep string optsep
* (";" /
* "{" stmtsep
* ;; these stmts can appear in any order
* [description-stmt stmtsep]
* [reference-stmt stmtsep]
* "}")
*
*/
whenStatement : WHEN_KEYWORD string (STMTEND | LEFT_CURLY_BRACE ((descriptionStatement? referenceStatement?)
| (referenceStatement? descriptionStatement?)) 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
*/
rpcStatement : RPC_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (ifFeatureStatement | statusStatement | descriptionStatement
| referenceStatement | typedefStatement | groupingStatement | inputStatement | outputStatement)* 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)
* "}"
*/
inputStatement : INPUT_KEYWORD LEFT_CURLY_BRACE
((typedefStatement | groupingStatement)* | dataDefStatement+)
| (dataDefStatement+ | (typedefStatement | groupingStatement)*)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)
* "}"
*/
outputStatement : OUTPUT_KEYWORD LEFT_CURLY_BRACE
((typedefStatement | groupingStatement)* | dataDefStatement+)
| (dataDefStatement+ | (typedefStatement | groupingStatement)*)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
*/
notificationStatement : NOTIFICATION_KEYWORD IDENTIFIER (STMTEND | LEFT_CURLY_BRACE (ifFeatureStatement | statusStatement
| descriptionStatement | referenceStatement | typedefStatement | groupingStatement | dataDefStatement)*
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
*/
deviationStatement: DEVIATION_KEYWORD string LEFT_CURLY_BRACE (descriptionStatement | referenceStatement
| deviateNotSupportedStatement | deviateAddStatement | deviateReplaceStatement | deviateDeleteStatement)*
RIGHT_CURLY_BRACE;
/**
* deviate-not-supported-stmt =
* deviate-keyword sep
* not-supported-keyword optsep
* (";" /
* "{" stmtsep
* "}")
*/
deviateNotSupportedStatement: 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]
* "}")
*/
deviateAddStatement: DEVIATE_KEYWORD ADD_KEYWORD (STMTEND | (LEFT_CURLY_BRACE unitsStatement? mustStatement* uniqueStatement*
defaultStatement? configStatement? mandatoryStatement? minElementsStatement? maxElementsStatement?
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]
* "}")
*/
deviateDeleteStatement: DEVIATE_KEYWORD DELETE_KEYWORD (STMTEND
| (LEFT_CURLY_BRACE unitsStatement? mustStatement* uniqueStatement* defaultStatement? 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]
* "}")
*/
deviateReplaceStatement: DEVIATE_KEYWORD REPLACE_KEYWORD (STMTEND | (LEFT_CURLY_BRACE typeStatement? unitsStatement?
defaultStatement? configStatement? mandatoryStatement? minElementsStatement?
maxElementsStatement? RIGHT_CURLY_BRACE));
string : STRING (PLUS STRING)*
| IDENTIFIER
| INTEGER;