%{ %} %start main %token ABSENT %token ABSTRACT_SYNTAX %token ALL %token APPLICATION %token AUTOMATIC %token Assignment %token At %token AtDot %token BEGIN %token BIT %token BMPString %token BOOLEAN %token BY %token Bang %token Bstring %token CHARACTER %token CHOICE %token CLASS %token COMPONENT %token COMPONENTS %token CONSTRAINED %token CONTAINING %token Circumflex %token Colon %token Comma %token Cstring %token DEFAULT %token DEFINITIONS %token DefinedSyntax %token Dot %token DoubleDot %token EMBEDDED %token ENCODED %token END %token ENUMERATED %token EOF %token EXCEPT %token EXPLICIT %token EXPORTS %token EXTENSIBILITY %token EXTERNAL %token Ellipsis %token FALSE %token FROM %token GeneralString %token GeneralizedTime %token GraphicString %token Hstring %token Hyphen %token IA5String %token IDENTIFIER %token IMPLICIT %token IMPLIED %token IMPORTS %token INCLUDES %token INSTANCE %token INTEGER %token INTERSECTION %token ISO646String %token LeftBrace %token LeftBracket %token LeftDoubleBracket %token LeftParen %token LessThan %token Lower %token LowerField %token MAX %token MIN %token MINUS_INFINITY %token Middle %token NULL %token Number %token NumericString %token OBJECT %token OCTET %token OF %token OPTIONAL %token ObjectDescriptor %token PATTERN %token PDV %token PLUS_INFINITY %token PRESENT %token PRIVATE %token PrintableString %token REAL %token RELATIVE_OID %token RealNumber %token RightBrace %token RightBracket %token RightDoubleBracket %token RightParen %token SEQUENCE %token SET %token SIZE %token STRING %token SYNTAX %token SemiColon %token T61String %token TAGS %token TRUE %token TYPE_IDENTIFIER %token TeletexString %token UNION %token UNIQUE %token UNIVERSAL %token UTCTime %token UTF8String %token UniversalString %token Upper %token UpperField %token VideotexString %token VisibleString %token WITH %type main %% option_UNIQUE_: { ( None )} | x = UNIQUE { ( Some x )} option_objectOptionalitySpec_: { ( None )} | x = objectOptionalitySpec { ( Some x )} option_objectSetOptionalitySpec_: { ( None )} | x = objectSetOptionalitySpec { ( Some x )} option_typeOptionalitySpec_: { ( None )} | x = typeOptionalitySpec { ( Some x )} option_valueOptionalitySpec_: { ( None )} | x = valueOptionalitySpec { ( Some x )} option_valueSetOptionalitySpec_: { ( None )} | x = valueSetOptionalitySpec { ( Some x )} option_withSyntaxSpec_: { ( None )} | x = withSyntaxSpec { ( Some x )} loption_separated_nonempty_list_Comma_fieldSetting__: { ( [] )} | x = separated_nonempty_list_Comma_fieldSetting_ { ( x )} loption_separated_nonempty_list_Comma_userDefinedConstraintParameter__: { ( [] )} | x = separated_nonempty_list_Comma_userDefinedConstraintParameter_ { ( x )} nonempty_list_tokenOrGroupSpec_: x = tokenOrGroupSpec { ( [ x ] )} | x = tokenOrGroupSpec xs = nonempty_list_tokenOrGroupSpec_ { ( x :: xs )} separated_nonempty_list_Comma_actualParameter_: x = actualParameter { ( [ x ] )} | x = actualParameter _2 = Comma xs = separated_nonempty_list_Comma_actualParameter_ { ( x :: xs )} separated_nonempty_list_Comma_atNotation_: x = atNotation { ( [ x ] )} | x = atNotation _2 = Comma xs = separated_nonempty_list_Comma_atNotation_ { ( x :: xs )} separated_nonempty_list_Comma_fieldSetting_: x = fieldSetting { ( [ x ] )} | x = fieldSetting _2 = Comma xs = separated_nonempty_list_Comma_fieldSetting_ { ( x :: xs )} separated_nonempty_list_Comma_fieldSpec_: x = fieldSpec { ( [ x ] )} | x = fieldSpec _2 = Comma xs = separated_nonempty_list_Comma_fieldSpec_ { ( x :: xs )} separated_nonempty_list_Comma_parameter_: x = parameter { ( [ x ] )} | x = parameter _2 = Comma xs = separated_nonempty_list_Comma_parameter_ { ( x :: xs )} separated_nonempty_list_Comma_userDefinedConstraintParameter_: x = userDefinedConstraintParameter { ( [ x ] )} | x = userDefinedConstraintParameter _2 = Comma xs = separated_nonempty_list_Comma_userDefinedConstraintParameter_ { ( x :: xs )} separated_nonempty_list_Dot_Lower_: x = Lower { ( [ x ] )} | x = Lower _2 = Dot xs = separated_nonempty_list_Dot_Lower_ { ( x :: xs )} separated_nonempty_list_Dot_primitiveFieldName_: x = primitiveFieldName { ( [ x ] )} | x = primitiveFieldName _2 = Dot xs = separated_nonempty_list_Dot_primitiveFieldName_ { ( x :: xs )} main: _1 = moduleDefinition _2 = EOF { ()} moduleDefinition: _1 = moduleIdentifier _2 = DEFINITIONS _3 = tagDefault _4 = extensionDefault _5 = Assignment _6 = BEGIN _7 = moduleBody _8 = END { ()} moduleIdentifier: _1 = Upper _2 = definitiveIdentifier { ()} definitiveIdentifier: _1 = LeftBrace _2 = definitiveObjIdComponentList _3 = RightBrace { ()} | {let _1 = () in ()} definitiveObjIdComponentList: _1 = definitiveObjIdComponent { ()} | _1 = definitiveObjIdComponent _2 = definitiveObjIdComponentList { ()} definitiveObjIdComponent: _1 = nameForm { ()} | _1 = definitiveNumberForm { ()} | _1 = definitiveNameAndNumberForm { ()} definitiveNumberForm: _1 = Number { ()} definitiveNameAndNumberForm: _1 = Lower _2 = LeftParen _3 = definitiveNumberForm _4 = RightParen { ()} tagDefault: _1 = EXPLICIT _2 = TAGS { ()} | _1 = IMPLICIT _2 = TAGS { ()} | _1 = AUTOMATIC _2 = TAGS { ()} | {let _1 = () in ()} extensionDefault: _1 = EXTENSIBILITY _2 = IMPLIED { ()} | {let _1 = () in ()} moduleBody: _1 = exports _2 = imports _3 = assignmentList { ()} | {let _1 = () in ()} exports: _1 = EXPORTS _2 = symbolsExported _3 = SemiColon { ()} | _1 = EXPORTS _2 = ALL _3 = SemiColon { ()} | {let _1 = () in ()} symbolsExported: _1 = symbolList { ()} | {let _1 = () in ()} imports: _1 = IMPORTS _2 = symbolsImported _3 = SemiColon { ()} | {let _1 = () in ()} symbolsImported: _1 = symbolsFromModuleList { ()} | {let _1 = () in ()} symbolsFromModuleList: _1 = symbolsFromModule { ()} | _1 = symbolsFromModuleList _2 = symbolsFromModule { ()} symbolsFromModule: _1 = symbolList _2 = FROM _3 = globalModuleReference { ()} globalModuleReference: _1 = Upper _2 = assignedIdentifier { ()} assignedIdentifier: _1 = objectIdentifierValue { ()} | _1 = definedValue { ()} | {let _1 = () in ()} symbolList: _1 = symbol { ()} | _1 = symbolList _2 = Comma _3 = symbol { ()} symbol: _1 = reference { ()} | _1 = parameterizedReference { ()} reference: _1 = Upper { ()} | _1 = Lower { ()} assignmentList: _1 = assignment { ()} | _1 = assignmentList _2 = assignment { ()} assignment: _1 = typeAssignment { ()} | _1 = valueAssignment { ()} | _1 = valueSetTypeAssignment { ()} | _1 = objectClassAssignment { ()} | _1 = objectAssignment { ()} | _1 = objectSetAssignment { ()} | _1 = parameterizedAssignment { ()} definedType: _1 = externalTypeReference { ()} | _1 = Upper { ()} | _1 = parameterizedType { ()} | _1 = parameterizedValueSetType { ()} externalTypeReference: _1 = Upper _2 = Dot _3 = Upper { ()} definedValue: _1 = externalValueReference { ()} | _1 = Lower { ()} | _1 = parameterizedValue { ()} externalValueReference: _1 = Upper _2 = Dot _3 = Lower { ()} typeAssignment: _1 = Upper _2 = Assignment _3 = type_x { ()} valueAssignment: _1 = Lower _2 = type_x _3 = Assignment _4 = value { ()} valueSetTypeAssignment: _1 = Upper _2 = type_x _3 = Assignment _4 = valueSet { ()} valueSet: _1 = LeftBrace _2 = elementSetSpecs _3 = RightBrace { ()} type_x: _1 = builtinType { ()} | _1 = referencedType { ()} | _1 = constrainedType { ()} builtinType: _1 = bitStringType { ()} | _1 = booleanType { ()} | _1 = characterStringType { ()} | _1 = choiceType { ()} | _1 = embeddedPDVType { ()} | _1 = enumeratedType { ()} | _1 = externalType { ()} | _1 = instanceOfType { ()} | _1 = integerType { ()} | _1 = nullType { ()} | _1 = objectClassFieldType { ()} | _1 = objectIdentifierType { ()} | _1 = octetStringType { ()} | _1 = realType { ()} | _1 = relativeOIDType { ()} | _1 = sequenceType { ()} | _1 = sequenceOfType { ()} | _1 = setType { ()} | _1 = setOfType { ()} | _1 = taggedType { ()} namedType: _1 = Lower _2 = type_x { ()} referencedType: _1 = definedType { ()} | _1 = usefulType { ()} | _1 = selectionType { ()} | _1 = typeFromObject { ()} | _1 = valueSetFromObjects { ()} value: _1 = builtinValue { ()} | _1 = referencedValue { ()} | _1 = objectClassFieldValue { ()} builtinValue: _1 = bitStringValue { ()} | _1 = booleanValue { ()} | _1 = characterStringValue { ()} | _1 = choiceValue { ()} | _1 = embeddedPDVValue { ()} | _1 = enumeratedValue { ()} | _1 = externalValue { ()} | _1 = integerValue { ()} | _1 = nullValue { ()} | _1 = objectIdentifierValue { ()} | _1 = octetStringValue { ()} | _1 = realValue { ()} | _1 = relativeOIDValue { ()} | _1 = sequenceValue { ()} | _1 = sequenceOfValue { ()} | _1 = setValue { ()} | _1 = setOfValue { ()} referencedValue: _1 = definedValue { ()} | _1 = valueFromObject { ()} namedValue: _1 = Lower _2 = value { ()} booleanType: _1 = BOOLEAN { ()} booleanValue: _1 = TRUE { ()} | _1 = FALSE { ()} integerType: _1 = INTEGER { ()} | _1 = INTEGER _2 = LeftBrace _3 = namedNumberList _4 = RightBrace { ()} namedNumberList: _1 = namedNumber { ()} | _1 = namedNumberList _2 = Comma _3 = namedNumber { ()} namedNumber: _1 = Lower _2 = LeftParen _3 = signedNumber _4 = RightParen { ()} | _1 = Lower _2 = LeftParen _3 = definedValue _4 = RightParen { ()} signedNumber: _1 = Number { ()} | _1 = Hyphen _2 = Number { ()} integerValue: _1 = signedNumber { ()} | _1 = Lower { ()} enumeratedType: _1 = ENUMERATED _2 = LeftBrace _3 = enumerations _4 = RightBrace { ()} enumerations: _1 = rootEnumeration { ()} | _1 = rootEnumeration _2 = Comma _3 = Ellipsis _4 = exceptionSpec { ()} | _1 = rootEnumeration _2 = Comma _3 = Ellipsis _4 = exceptionSpec _5 = Comma _6 = additionalEnumeration { ()} rootEnumeration: _1 = enumeration { ()} additionalEnumeration: _1 = enumeration { ()} enumeration: _1 = enumerationItem { ()} | _1 = enumerationItem _2 = Comma _3 = enumeration { ()} enumerationItem: _1 = Lower { ()} | _1 = namedNumber { ()} enumeratedValue: _1 = Lower { ()} realType: _1 = REAL { ()} realValue: _1 = numericRealValue { ()} | _1 = specialRealValue { ()} numericRealValue: _1 = RealNumber { ()} | _1 = Hyphen _2 = RealNumber { ()} | _1 = sequenceValue { ()} specialRealValue: _1 = PLUS_INFINITY { ()} | _1 = MINUS_INFINITY { ()} bitStringType: _1 = BIT _2 = STRING { ()} | _1 = BIT _2 = STRING _3 = LeftBrace _4 = namedBitList _5 = RightBrace { ()} namedBitList: _1 = namedBit { ()} | _1 = namedBitList _2 = Comma _3 = namedBit { ()} namedBit: _1 = Lower _2 = LeftParen _3 = Number _4 = RightParen { ()} | _1 = Lower _2 = LeftParen _3 = definedValue _4 = RightParen { ()} bitStringValue: _1 = Bstring { ()} | _1 = Hstring { ()} | _1 = LeftBrace _2 = identifierList _3 = RightBrace { ()} | _1 = LeftBrace _2 = RightBrace { ()} | _1 = CONTAINING _2 = value { ()} identifierList: _1 = Lower { ()} | _1 = identifierList _2 = Comma _3 = Lower { ()} octetStringType: _1 = OCTET _2 = STRING { ()} octetStringValue: _1 = Bstring { ()} | _1 = Hstring { ()} | _1 = CONTAINING _2 = value { ()} nullType: _1 = NULL { ()} nullValue: _1 = NULL { ()} sequenceType: _1 = SEQUENCE _2 = LeftBrace _3 = RightBrace { ()} | _1 = SEQUENCE _2 = LeftBrace _3 = extensionAndException _4 = optionalExtensionMarker _5 = RightBrace { ()} | _1 = SEQUENCE _2 = LeftBrace _3 = componentTypeLists _4 = RightBrace { ()} extensionAndException: _1 = Ellipsis { ()} | _1 = Ellipsis _2 = exceptionSpec { ()} optionalExtensionMarker: _1 = Comma _2 = Ellipsis { ()} | {let _1 = () in ()} componentTypeLists: _1 = rootComponentTypeList { ()} | _1 = rootComponentTypeList _2 = Comma _3 = extensionAndException _4 = extensionAdditions _5 = optionalExtensionMarker { ()} | _1 = rootComponentTypeList _2 = Comma _3 = extensionAndException _4 = extensionAdditions _5 = extensionEndMarker _6 = Comma _7 = rootComponentTypeList { ()} | _1 = extensionAndException _2 = extensionAdditions _3 = extensionEndMarker _4 = Comma _5 = rootComponentTypeList { ()} | _1 = extensionAndException _2 = extensionAdditions _3 = optionalExtensionMarker { ()} rootComponentTypeList: _1 = componentTypeList { ()} extensionEndMarker: _1 = Comma _2 = Ellipsis { ()} extensionAdditions: _1 = Comma _2 = extensionAdditionList { ()} | {let _1 = () in ()} extensionAdditionList: _1 = extensionAddition { ()} | _1 = extensionAdditionList _2 = Comma _3 = extensionAddition { ()} extensionAddition: _1 = componentType { ()} | _1 = extensionAdditionGroup { ()} extensionAdditionGroup: _1 = LeftDoubleBracket _2 = versionNumber _3 = componentTypeList _4 = RightDoubleBracket { ()} versionNumber: {let _1 = () in ()} | _1 = Number _2 = Colon { ()} componentTypeList: _1 = componentType { ()} | _1 = componentTypeList _2 = Comma _3 = componentType { ()} componentType: _1 = namedType { ()} | _1 = namedType _2 = OPTIONAL { ()} | _1 = namedType _2 = DEFAULT _3 = value { ()} | _1 = COMPONENTS _2 = OF _3 = type_x { ()} sequenceValue: _1 = LeftBrace _2 = componentValueList _3 = RightBrace { ()} | _1 = LeftBrace _2 = RightBrace { ()} componentValueList: _1 = namedValue { ()} | _1 = componentValueList _2 = Comma _3 = namedValue { ()} sequenceOfType: _1 = SEQUENCE _2 = OF _3 = type_x { ()} | _1 = SEQUENCE _2 = OF _3 = namedType { ()} sequenceOfValue: _1 = LeftBrace _2 = valueList _3 = RightBrace { ()} | _1 = LeftBrace _2 = namedValueList _3 = RightBrace { ()} | _1 = LeftBrace _2 = RightBrace { ()} valueList: _1 = value { ()} | _1 = valueList _2 = Comma _3 = value { ()} namedValueList: _1 = namedValue { ()} | _1 = namedValueList _2 = Comma _3 = namedValue { ()} setType: _1 = SET _2 = LeftBrace _3 = RightBrace { ()} | _1 = SET _2 = LeftBrace _3 = extensionAndException _4 = optionalExtensionMarker _5 = RightBrace { ()} | _1 = SET _2 = LeftBrace _3 = componentTypeLists _4 = RightBrace { ()} setValue: _1 = LeftBrace _2 = componentValueList _3 = RightBrace { ()} | _1 = LeftBrace _2 = RightBrace { ()} setOfType: _1 = SET _2 = OF _3 = type_x { ()} | _1 = SET _2 = OF _3 = namedType { ()} setOfValue: _1 = LeftBrace _2 = valueList _3 = RightBrace { ()} | _1 = LeftBrace _2 = namedValueList _3 = RightBrace { ()} | _1 = LeftBrace _2 = RightBrace { ()} choiceType: _1 = CHOICE _2 = LeftBrace _3 = alternativeTypeLists _4 = RightBrace { ()} alternativeTypeLists: _1 = rootAlternativeTypeList { ()} | _1 = rootAlternativeTypeList _2 = Comma _3 = extensionAndException _4 = extensionAdditionAlternatives _5 = optionalExtensionMarker { ()} rootAlternativeTypeList: _1 = alternativeTypeList { ()} extensionAdditionAlternatives: _1 = Comma _2 = extensionAdditionAlternativesList { ()} | {let _1 = () in ()} extensionAdditionAlternativesList: _1 = extensionAdditionAlternative { ()} | _1 = extensionAdditionAlternativesList _2 = Comma _3 = extensionAdditionAlternative { ()} extensionAdditionAlternative: _1 = extensionAdditionAlternativesGroup { ()} | _1 = namedType { ()} extensionAdditionAlternativesGroup: _1 = LeftDoubleBracket _2 = versionNumber _3 = alternativeTypeList _4 = RightDoubleBracket { ()} alternativeTypeList: _1 = namedType { ()} | _1 = alternativeTypeList _2 = Comma _3 = namedType { ()} choiceValue: _1 = Lower _2 = Colon _3 = value { ()} selectionType: _1 = Lower _2 = LessThan _3 = type_x { ()} taggedType: _1 = tag _2 = type_x { ()} | _1 = tag _2 = IMPLICIT _3 = type_x { ()} | _1 = tag _2 = EXPLICIT _3 = type_x { ()} tag: _1 = LeftBracket _2 = class_x _3 = classNumber _4 = RightBracket { ()} classNumber: _1 = Number { ()} | _1 = definedValue { ()} class_x: _1 = UNIVERSAL { ()} | _1 = APPLICATION { ()} | _1 = PRIVATE { ()} | {let _1 = () in ()} embeddedPDVType: _1 = EMBEDDED _2 = PDV { ()} embeddedPDVValue: _1 = sequenceValue { ()} externalType: _1 = EXTERNAL { ()} externalValue: _1 = sequenceValue { ()} objectIdentifierType: _1 = OBJECT _2 = IDENTIFIER { ()} objectIdentifierValue: _1 = LeftBrace _2 = objIdComponentsList _3 = RightBrace { ()} | _1 = LeftBrace _2 = definedValue _3 = objIdComponentsList _4 = RightBrace { ()} objIdComponentsList: _1 = objIdComponents { ()} | _1 = objIdComponents _2 = objIdComponentsList { ()} objIdComponents: _1 = nameForm { ()} | _1 = numberForm { ()} | _1 = nameAndNumberForm { ()} | _1 = definedValue { ()} nameForm: _1 = Lower { ()} numberForm: _1 = Number { ()} | _1 = definedValue { ()} nameAndNumberForm: _1 = Lower _2 = LeftParen _3 = numberForm _4 = RightParen { ()} relativeOIDType: _1 = RELATIVE_OID { ()} relativeOIDValue: _1 = LeftBrace _2 = relativeOIDComponentsList _3 = RightBrace { ()} relativeOIDComponentsList: _1 = relativeOIDComponents { ()} | _1 = relativeOIDComponents _2 = relativeOIDComponentsList { ()} relativeOIDComponents: _1 = numberForm { ()} | _1 = nameAndNumberForm { ()} | _1 = definedValue { ()} characterStringType: _1 = restrictedCharacterStringType { ()} | _1 = unrestrictedCharacterStringType { ()} restrictedCharacterStringType: _1 = BMPString { ()} | _1 = GeneralString { ()} | _1 = GraphicString { ()} | _1 = IA5String { ()} | _1 = ISO646String { ()} | _1 = NumericString { ()} | _1 = PrintableString { ()} | _1 = TeletexString { ()} | _1 = T61String { ()} | _1 = UniversalString { ()} | _1 = UTF8String { ()} | _1 = VideotexString { ()} | _1 = VisibleString { ()} restrictedCharacterStringValue: _1 = Cstring { ()} | _1 = characterStringList { ()} | _1 = quadruple { ()} | _1 = tuple { ()} characterStringList: _1 = LeftBrace _2 = charSyms _3 = RightBrace { ()} charSyms: _1 = charsDefn { ()} | _1 = charSyms _2 = Comma _3 = charsDefn { ()} charsDefn: _1 = Cstring { ()} | _1 = quadruple { ()} | _1 = tuple { ()} | _1 = definedValue { ()} quadruple: _1 = LeftBrace _2 = group _3 = Comma _4 = plane _5 = Comma _6 = row _7 = Comma _8 = cell _9 = RightBrace { ()} group: _1 = Number { ()} plane: _1 = Number { ()} row: _1 = Number { ()} cell: _1 = Number { ()} tuple: _1 = LeftBrace _2 = tableColumn _3 = Comma _4 = tableRow _5 = RightBrace { ()} tableColumn: _1 = Number { ()} tableRow: _1 = Number { ()} unrestrictedCharacterStringType: _1 = CHARACTER _2 = STRING { ()} characterStringValue: _1 = restrictedCharacterStringValue { ()} | _1 = unrestrictedCharacterStringValue { ()} unrestrictedCharacterStringValue: _1 = sequenceValue { ()} usefulType: _1 = GeneralizedTime { ()} | _1 = UTCTime { ()} | _1 = ObjectDescriptor { ()} constrainedType: _1 = type_x _2 = constraint_x { ()} | _1 = typeWithConstraint { ()} typeWithConstraint: _1 = SET _2 = constraint_x _3 = OF _4 = type_x { ()} | _1 = SET _2 = sizeConstraint _3 = OF _4 = type_x { ()} | _1 = SEQUENCE _2 = constraint_x _3 = OF _4 = type_x { ()} | _1 = SEQUENCE _2 = sizeConstraint _3 = OF _4 = type_x { ()} | _1 = SET _2 = constraint_x _3 = OF _4 = namedType { ()} | _1 = SET _2 = sizeConstraint _3 = OF _4 = namedType { ()} | _1 = SEQUENCE _2 = constraint_x _3 = OF _4 = namedType { ()} | _1 = SEQUENCE _2 = sizeConstraint _3 = OF _4 = namedType { ()} constraint_x: _1 = LeftParen _2 = constraintSpec _3 = exceptionSpec _4 = RightParen { ()} constraintSpec: _1 = subtypeConstraint { ()} | _1 = generalConstraint { ()} exceptionSpec: _1 = Bang _2 = exceptionIdentification { ()} | {let _1 = () in ()} exceptionIdentification: _1 = signedNumber { ()} | _1 = definedValue { ()} | _1 = type_x _2 = Colon _3 = value { ()} subtypeConstraint: _1 = elementSetSpecs { ()} elementSetSpecs: _1 = rootElementSetSpec { ()} | _1 = rootElementSetSpec _2 = Comma _3 = Ellipsis { ()} | _1 = rootElementSetSpec _2 = Comma _3 = Ellipsis _4 = Comma _5 = additionalElementSetSpec { ()} rootElementSetSpec: _1 = elementSetSpec { ()} additionalElementSetSpec: _1 = elementSetSpec { ()} elementSetSpec: _1 = unions { ()} | _1 = ALL _2 = exclusions { ()} unions: _1 = intersections { ()} | _1 = uElems _2 = unionMark _3 = intersections { ()} uElems: _1 = unions { ()} intersections: _1 = intersectionElements { ()} | _1 = iElems _2 = intersectionMark _3 = intersectionElements { ()} iElems: _1 = intersections { ()} intersectionElements: _1 = elements { ()} | _1 = elems _2 = exclusions { ()} elems: _1 = elements { ()} exclusions: _1 = EXCEPT _2 = elements { ()} unionMark: _1 = Middle { ()} | _1 = UNION { ()} intersectionMark: _1 = Circumflex { ()} | _1 = INTERSECTION { ()} elements: _1 = subtypeElements { ()} | _1 = objectSetElements { ()} | _1 = LeftParen _2 = elementSetSpec _3 = RightParen { ()} subtypeElements: _1 = singleValue { ()} | _1 = containedSubtype { ()} | _1 = valueRange { ()} | _1 = permittedAlphabet { ()} | _1 = sizeConstraint { ()} | _1 = typeConstraint { ()} | _1 = innerTypeConstraints { ()} | _1 = patternConstraint { ()} singleValue: _1 = value { ()} containedSubtype: _1 = includes _2 = type_x { ()} includes: _1 = INCLUDES { ()} | {let _1 = () in ()} valueRange: _1 = lowerEndPoint _2 = DoubleDot _3 = upperEndPoint { ()} lowerEndPoint: _1 = lowerEndValue { ()} | _1 = lowerEndValue _2 = LessThan { ()} upperEndPoint: _1 = upperEndValue { ()} | _1 = LessThan _2 = upperEndValue { ()} lowerEndValue: _1 = value { ()} | _1 = MIN { ()} upperEndValue: _1 = value { ()} | _1 = MAX { ()} sizeConstraint: _1 = SIZE _2 = constraint_x { ()} permittedAlphabet: _1 = FROM _2 = constraint_x { ()} typeConstraint: _1 = type_x { ()} innerTypeConstraints: _1 = WITH _2 = COMPONENT _3 = singleTypeConstraint { ()} | _1 = WITH _2 = COMPONENTS _3 = multipleTypeConstraints { ()} singleTypeConstraint: _1 = constraint_x { ()} multipleTypeConstraints: _1 = fullSpecification { ()} | _1 = partialSpecification { ()} fullSpecification: _1 = LeftBrace _2 = typeConstraints _3 = RightBrace { ()} partialSpecification: _1 = LeftBrace _2 = Ellipsis _3 = Comma _4 = typeConstraints _5 = RightBrace { ()} typeConstraints: _1 = namedConstraint { ()} | _1 = namedConstraint _2 = Comma _3 = typeConstraints { ()} namedConstraint: _1 = Lower _2 = componentConstraint { ()} componentConstraint: _1 = valueConstraint _2 = presenceConstraint { ()} valueConstraint: _1 = constraint_x { ()} | {let _1 = () in ()} presenceConstraint: _1 = PRESENT { ()} | _1 = ABSENT { ()} | _1 = OPTIONAL { ()} | {let _1 = () in ()} patternConstraint: _1 = PATTERN _2 = value { ()} definedObjectClass: _1 = externalObjectClassReference { ()} | _1 = Upper { ()} | _1 = usefulObjectClassReference { ()} externalObjectClassReference: _1 = Upper _2 = Dot _3 = Upper { ()} usefulObjectClassReference: _1 = TYPE_IDENTIFIER { ()} | _1 = ABSTRACT_SYNTAX { ()} objectClassAssignment: _1 = Upper _2 = Assignment _3 = objectClass { ()} objectClass: _1 = definedObjectClass { ()} | _1 = objectClassDefn { ()} | _1 = parameterizedObjectClass { ()} objectClassDefn: _1 = CLASS _2 = LeftBrace _3 = separated_nonempty_list_Comma_fieldSpec_ _4 = RightBrace _5 = option_withSyntaxSpec_ { ()} fieldSpec: _1 = typeFieldSpec { ()} | _1 = fixedTypeValueFieldSpec { ()} | _1 = variableTypeValueFieldSpec { ()} | _1 = fixedTypeValueSetFieldSpec { ()} | _1 = variableTypeValueSetFieldSpec { ()} | _1 = objectFieldSpec { ()} | _1 = objectSetFieldSpec { ()} primitiveFieldName: _1 = UpperField { ()} | _1 = LowerField { ()} fieldName: _1 = separated_nonempty_list_Dot_primitiveFieldName_ { ()} typeFieldSpec: _1 = UpperField _2 = option_typeOptionalitySpec_ { ()} typeOptionalitySpec: _1 = OPTIONAL { ()} | _1 = DEFAULT _2 = type_x { ()} fixedTypeValueFieldSpec: _1 = LowerField _2 = type_x _3 = option_UNIQUE_ _4 = option_valueOptionalitySpec_ { ()} valueOptionalitySpec: _1 = OPTIONAL { ()} | _1 = DEFAULT _2 = value { ()} variableTypeValueFieldSpec: _1 = LowerField _2 = fieldName _3 = option_valueOptionalitySpec_ { ()} fixedTypeValueSetFieldSpec: _1 = UpperField _2 = type_x _3 = option_valueSetOptionalitySpec_ { ()} valueSetOptionalitySpec: _1 = OPTIONAL { ()} | _1 = DEFAULT _2 = valueSet { ()} variableTypeValueSetFieldSpec: _1 = UpperField _2 = fieldName _3 = option_valueSetOptionalitySpec_ { ()} objectFieldSpec: _1 = LowerField _2 = definedObjectClass _3 = option_objectOptionalitySpec_ { ()} objectOptionalitySpec: _1 = OPTIONAL { ()} | _1 = DEFAULT _2 = object_x { ()} objectSetFieldSpec: _1 = UpperField _2 = definedObjectClass _3 = option_objectSetOptionalitySpec_ { ()} objectSetOptionalitySpec: _1 = OPTIONAL { ()} | _1 = DEFAULT _2 = objectSet { ()} withSyntaxSpec: _1 = WITH _2 = SYNTAX _3 = syntaxList { ()} syntaxList: _1 = LeftBrace _2 = nonempty_list_tokenOrGroupSpec_ _3 = RightBrace { ()} tokenOrGroupSpec: _1 = requiredToken { ()} | _1 = optionalGroup { ()} optionalGroup: _1 = LeftBracket _2 = nonempty_list_tokenOrGroupSpec_ _3 = RightBrace { ()} requiredToken: _1 = literal { ()} | _1 = primitiveFieldName { ()} literal: _1 = Upper { ()} | _1 = Comma { ()} definedObject: _1 = externalObjectReference { ()} | _1 = Lower { ()} externalObjectReference: _1 = Upper _2 = Dot _3 = Lower { ()} objectAssignment: _1 = Lower _2 = definedObjectClass _3 = Assignment _4 = object_x { ()} object_x: _1 = definedObject { ()} | _1 = objectDefn { ()} | _1 = objectFromObject { ()} | _1 = parameterizedObject { ()} objectDefn: _1 = defaultSyntax { ()} | _1 = DefinedSyntax { ()} defaultSyntax: _1 = LeftBrace xs = loption_separated_nonempty_list_Comma_fieldSetting__ _3 = RightBrace {let _2 = ( xs ) in ()} fieldSetting: _1 = primitiveFieldName _2 = setting { ()} setting: _1 = type_x { ()} | _1 = value { ()} | _1 = valueSet { ()} | _1 = object_x { ()} | _1 = objectSet { ()} definedObjectSet: _1 = externalObjectSetReference { ()} | _1 = Upper { ()} externalObjectSetReference: _1 = Upper _2 = Dot _3 = Upper { ()} objectSetAssignment: _1 = Upper _2 = definedObjectClass _3 = Assignment _4 = objectSet { ()} objectSet: _1 = LeftBrace _2 = objectSetSpec _3 = RightBrace { ()} objectSetSpec: _1 = rootElementSetSpec { ()} | _1 = rootElementSetSpec _2 = Comma _3 = Ellipsis { ()} | _1 = Ellipsis { ()} | _1 = Ellipsis _2 = Comma _3 = additionalElementSetSpec { ()} | _1 = rootElementSetSpec _2 = Comma _3 = Ellipsis _4 = Comma _5 = additionalElementSetSpec { ()} objectSetElements: _1 = object_x { ()} | _1 = definedObjectSet { ()} | _1 = objectSetFromObjects { ()} | _1 = parameterizedObjectSet { ()} objectClassFieldType: _1 = definedObjectClass _2 = Dot _3 = fieldName { ()} objectClassFieldValue: _1 = openTypeFieldVal { ()} | _1 = fixedTypeFieldVal { ()} openTypeFieldVal: _1 = type_x _2 = Colon _3 = value { ()} fixedTypeFieldVal: _1 = builtinValue { ()} | _1 = referencedValue { ()} referencedObjects: _1 = definedObject { ()} | _1 = parameterizedObject { ()} | _1 = definedObjectSet { ()} | _1 = parameterizedObjectSet { ()} valueFromObject: _1 = referencedObjects _2 = Dot _3 = fieldName { ()} valueSetFromObjects: _1 = referencedObjects _2 = Dot _3 = fieldName { ()} typeFromObject: _1 = referencedObjects _2 = Dot _3 = fieldName { ()} objectFromObject: _1 = referencedObjects _2 = Dot _3 = fieldName { ()} objectSetFromObjects: _1 = referencedObjects _2 = Dot _3 = fieldName { ()} instanceOfType: _1 = INSTANCE _2 = OF _3 = definedObjectClass { ()} generalConstraint: _1 = userDefinedConstraint { ()} | _1 = tableConstraint { ()} | _1 = contentsConstraint { ()} userDefinedConstraint: _1 = CONSTRAINED _2 = BY _3 = LeftBrace xs = loption_separated_nonempty_list_Comma_userDefinedConstraintParameter__ _5 = RightBrace {let _4 = ( xs ) in ()} userDefinedConstraintParameter: _1 = governor _2 = Colon _3 = value { ()} | _1 = governor _2 = Colon _3 = valueSet { ()} | _1 = governor _2 = Colon _3 = object_x { ()} | _1 = governor _2 = Colon _3 = objectSet { ()} | _1 = type_x { ()} | _1 = definedObjectClass { ()} tableConstraint: _1 = simpleTableConstraint { ()} | _1 = componentRelationConstraint { ()} simpleTableConstraint: _1 = objectSet { ()} componentRelationConstraint: _1 = LeftBrace _2 = definedObjectSet _3 = RightBrace _4 = LeftBrace _5 = separated_nonempty_list_Comma_atNotation_ _6 = RightBrace { ()} atNotation: _1 = At _2 = componentIdList { ()} | _1 = AtDot _2 = level _3 = componentIdList { ()} level: _1 = Dot _2 = level { ()} | {let _1 = () in ()} componentIdList: _1 = separated_nonempty_list_Dot_Lower_ { ()} contentsConstraint: _1 = CONTAINING _2 = type_x { ()} | _1 = ENCODED _2 = BY _3 = value { ()} | _1 = CONTAINING _2 = type_x _3 = ENCODED _4 = BY _5 = value { ()} parameterizedAssignment: _1 = parameterizedTypeAssignment { ()} | _1 = parameterizedValueAssignment { ()} | _1 = parameterizedValueSetTypeAssignment { ()} | _1 = parameterizedObjectClassAssignment { ()} | _1 = parameterizedObjectAssignment { ()} | _1 = parameterizedObjectSetAssignment { ()} parameterizedTypeAssignment: _1 = Upper _2 = parameterList _3 = Assignment _4 = type_x { ()} parameterizedValueAssignment: _1 = Lower _2 = parameterList _3 = type_x _4 = Assignment _5 = value { ()} parameterizedValueSetTypeAssignment: _1 = Upper _2 = parameterList _3 = type_x _4 = Assignment _5 = valueSet { ()} parameterizedObjectClassAssignment: _1 = Upper _2 = parameterList _3 = Assignment _4 = objectClass { ()} parameterizedObjectAssignment: _1 = Lower _2 = parameterList _3 = definedObjectClass _4 = Assignment _5 = object_x { ()} parameterizedObjectSetAssignment: _1 = Upper _2 = parameterList _3 = definedObjectClass _4 = Assignment _5 = objectSet { ()} parameterList: _1 = LeftBrace _2 = separated_nonempty_list_Comma_parameter_ _3 = RightBrace { ()} parameter: _1 = paramGovernor _2 = Colon _3 = dummyReference { ()} | _1 = dummyReference { ()} paramGovernor: _1 = governor { ()} | _1 = dummyGovernor { ()} governor: _1 = type_x { ()} | _1 = definedObjectClass { ()} dummyGovernor: _1 = dummyReference { ()} dummyReference: _1 = reference { ()} parameterizedReference: _1 = reference { ()} | _1 = reference _2 = LeftBrace _3 = RightBrace { ()} simpleDefinedType: _1 = externalTypeReference { ()} | _1 = Upper { ()} simpleDefinedValue: _1 = externalValueReference { ()} | _1 = Lower { ()} parameterizedType: _1 = simpleDefinedType _2 = actualParameterList { ()} parameterizedValue: _1 = simpleDefinedValue _2 = actualParameterList { ()} parameterizedValueSetType: _1 = simpleDefinedType _2 = actualParameterList { ()} parameterizedObjectClass: _1 = definedObjectSet _2 = actualParameterList { ()} parameterizedObject: _1 = definedObject _2 = actualParameterList { ()} parameterizedObjectSet: _1 = definedObjectSet _2 = actualParameterList { ()} actualParameterList: _1 = LeftBrace _2 = separated_nonempty_list_Comma_actualParameter_ _3 = RightBrace { ()} actualParameter: _1 = type_x { ()} | _1 = value { ()} | _1 = valueSet { ()} | _1 = definedObjectClass { ()} | _1 = object_x { ()} | _1 = objectSet { ()} %%