Closed suweining closed 9 years ago
/////////////////////////////////////////////// Ambiguity 1) //////////////////////////////////////////////////////// SubCmp, SubPgmCall
syntax SubCmp ::= Id Mcolon CmpCategory SubCmpAssocDef MSemicolon | Id Mcolon CmpCategory MSemicolon syntax CmpCategory ::= AbstractCmpCategory | SoftwareCategory | ExecPlateformCategory | CompositeCategory syntax SoftwareCategory ::= Mdata | Msubprogram | Msubprogram Mgroup | Mthread | Mthread Mgroup | Mprocess syntax SubCmpAssocDef ::= SubCmpAssocDefElem | SubCmpAssocDefElem SubCmpAssocDef syntax SubCmpAssocDefElem ::= UniCmpClassifierRef | UniCmpClassifierRef ProtoTypeBindings | Id | ArrayDimension | ArrayDimensions ArrayElementImplList | MBraceLeft PpeContainedPpeAssocList MBraceRight | CmpInModes
syntax SubPgmCall ::= Id Mcolon Msubprogram CalledSubPgm MSemicolon syntax CalledSubPgm ::= AmbIdPointId | AmbProcessorPointId
The same :Id Mcolon Msubprogram Id MSemicolon
/////////////////////////////////////////////// Solution //////////////////////////////////////////////////////// step1) syntax AmbIdColonSubprogramIdSemicolon ::= Id Mcolon Msubprogram Id MSemicolon
step2) syntax SubCmp ::= Id Mcolon CmpCategory MSemicolon | Id Mcolon AbstractCmpCategory SubCmpAssocDef MSemicolon | Id Mcolon ExecPlateformCategory SubCmpAssocDef MSemicolon | Id Mcolon CompositeCategory SubCmpAssocDef MSemicolon | Id Mcolon Mdata SubCmpAssocDef MSemicolon | Id Mcolon Msubprogram Mgroup SubCmpAssocDef MSemicolon | Id Mcolon Mthread SubCmpAssocDef MSemicolon | Id Mcolon Mthread Mgroup SubCmpAssocDef MSemicolon | Id Mcolon Mprocess SubCmpAssocDef MSemicolon | Id Mcolon Msubprogram SubCmpAssocDefElem SubCmpAssocDef MSemicolon | Id Mcolon Msubprogram UniCmpClassifierRef MSemicolon | Id Mcolon Msubprogram UniCmpClassifierRef ProtoTypeBindings MSemicolon | Id Mcolon Msubprogram ArrayDimension MSemicolon | Id Mcolon Msubprogram ArrayDimensions ArrayElementImplList MSemicolon | Id Mcolon Msubprogram MBraceLeft PpeContainedPpeAssocList MBraceRight MSemicolon | Id Mcolon Msubprogram CmpInModes MSemicolon | AmbIdColonSubprogramIdSemicolon
step3) syntax SubPgmCall ::= Id Mcolon Msubprogram AmbProcessorPointId MSemicolon | Id Mcolon Msubprogram Id MPoint Id MSemicolon | AmbIdColonSubprogramIdSemicolon
/////////////////////////////////////////////// Ambiguity 2) ////////////////////////////////////////////////////////
ProtoType, SubCmp
syntax ProtoType ::= Id Mcolon ProtoTypeDef MSemicolon
| Id Mcolon ProtoTypeDef MBraceLeft ProtoTypePpeAssocList MBraceRight MSemicolon
syntax ProtoTypeDef ::= CmpProtoType
| FetGroupTypeProtoType
| FetProtoType
syntax CmpProtoType ::= CmpCategory
| CmpCategory MDoubleBracket
| CmpCategory UniCmpClassifierRef
| CmpCategory UniCmpClassifierRef MDoubleBracket
syntax SubCmp ::= Id Mcolon CmpCategory MSemicolon | Id Mcolon AbstractCmpCategory SubCmpAssocDef MSemicolon | Id Mcolon ExecPlateformCategory SubCmpAssocDef MSemicolon | Id Mcolon CompositeCategory SubCmpAssocDef MSemicolon | Id Mcolon Mdata SubCmpAssocDef MSemicolon | Id Mcolon Msubprogram Mgroup SubCmpAssocDef MSemicolon | Id Mcolon Mthread SubCmpAssocDef MSemicolon | Id Mcolon Mthread Mgroup SubCmpAssocDef MSemicolon | Id Mcolon Mprocess SubCmpAssocDef MSemicolon | Id Mcolon Msubprogram SubCmpAssocDefElem SubCmpAssocDef MSemicolon | Id Mcolon Msubprogram UniCmpClassifierRef MSemicolon | Id Mcolon Msubprogram UniCmpClassifierRef ProtoTypeBindings MSemicolon | Id Mcolon Msubprogram ArrayDimension MSemicolon | Id Mcolon Msubprogram ArrayDimensions ArrayElementImplList MSemicolon | Id Mcolon Msubprogram MBraceLeft PpeContainedPpeAssocList MBraceRight MSemicolon | Id Mcolon Msubprogram CmpInModes MSemicolon | AmbIdColonSubprogramIdSemicolon
The same : Id Mcolon CmpCategory MSemicolon
//////////////////////////////////// Solution ////////////////////////////////////
step1) syntax AmbIdColonCmpCategorySemicolon ::= Id Mcolon CmpCategory MSemicolon [ here need unfold CmpCategory ]
step2)
syntax ProtoType ::= Id Mcolon ProtoTypeDef MBraceLeft ProtoTypePpeAssocList MBraceRight MSemicolon
| Id Mcolon FetGroupTypeProtoType MSemicolon
| Id Mcolon FetProtoType MSemicolon
| Id Mcolon CmpCategory MDoubleBracket MSemicolon
| Id Mcolon CmpCategory UniCmpClassifierRef MSemicolon
| Id Mcolon CmpCategory UniCmpClassifierRef MDoubleBracket MSemicolon
| AmbIdColonCmpCategorySemicolon
step3)
syntax SubCmp ::= Id Mcolon CmpCategory SubCmpAssocDef MSemicolon
| AmbIdColonCmpCategorySemicolon
If appear ambiguity of AmbIdColonCmpCategorySemicolon then we unfold the CmpCategory.
/////////////////////////////////////////////// Ambiguity 3) ////////////////////////////////////////////////////////
ConstantPpeExpression, DefaultPpeExpression, ArrayElementImplList, UnitsList, PpeListValue
syntax ConstantPpeExpression ::= PpeExpression | MBracketLeft BooleanTerm MBracketRight
syntax DefaultPpeExpression ::= PpeExpression | MBracketLeft BooleanTerm MBracketRight
syntax PpeListValue ::= MBracketLeft MBracketRight | MBracketLeft PpeListValueMidSymbol MBracketRight syntax PpeListValueMidSymbol ::= PpeListValue | PpeExpression | PpeListValue MComma PpeListValueMidSymbol | PpeExpression MComma PpeListValueMidSymbol syntax PpeExpression ::= BooleanTerm | RealTerm | IntegerTerm | StringTerm | EnumerationTerm | UnitTerm | RealRangeTerm | IntegerRangeTerm | PpeTerm | CmpClassifierTerm | RefTerm | RecordTerm | ComputedTerm syntax syntax BooleanTerm ::= BooleanValue | BooleanPpeConstantTerm | Mnot BooleanTerm | BooleanTerm Mand BooleanTerm | BooleanTerm Mor BooleanTerm // | MBracketLeft BooleanTerm MBracketRight syntax BooleanPpeConstantTerm ::= PpeConstantTerm syntax PpeConstantTerm ::= AmbDoubleColonId
syntax UnitsList ::= MBracketLeft Id UnitIdList MBracketRight | MBracketLeft Id MBracketRight
syntax ArrayElementImplList ::= MBracketLeft ArrayElementImplListTmps MBracketRight syntax ArrayElementImplListTmps ::= ArrayElementImplListTmp | ArrayElementImplListTmp MComma ArrayElementImplListTmps syntax ArrayElementImplListTmp ::= UniCmpImplRef ProtoTypeBindings | UniCmpImplRef syntax UniCmpImplRef ::= CmpImplName | PkgName MDoubleColon CmpImplName syntax CmpImplName ::= AmbIdPointId
The same products : MBracketLeft Id MBracketRight
/////////////////////////////////////////////// Solution ////////////////////////////////////////////////////////
step1)
It is diffcult for PpeListValue to unfold completely , so we define the middle non-terminal :
syntax AmbBracketLeftBooleanTermBracketRight ::= MBracketLeft BooleanTerm MBracketRight
syntax PpeListValue ::= MBracketLeft MBracketRight | MBracketLeft PpeListValueMidSymbol MBracketRight syntax PpeListValueMidSymbol ::= PpeListValue | PpeExpression | PpeListValue MComma PpeListValueMidSymbol | PpeExpression MComma PpeListValueMidSymbol syntax PpeExpression ::= BooleanTerm | RealTerm | IntegerTerm | StringTerm | EnumerationTerm | UnitTerm | RealRangeTerm | IntegerRangeTerm | PpeTerm | CmpClassifierTerm | RefTerm | RecordTerm | ComputedTerm
==>>
syntax PpeListValue ::= MBracketLeft MBracketRight | MBracketLeft PpeListValue MBracketRight | MBracketLeft PpeListValue MComma PpeListValueMidSymbol MBracketRight | MBracketLeft PpeExpression MComma PpeListValueMidSymbol MBracketRight | MBracketLeft RealTerm MBracketRight | MBracketLeft IntegerTerm MBracketRight | MBracketLeft StringTerm MBracketRight | MBracketLeft EnumerationTerm MBracketRight | MBracketLeft UnitTerm MBracketRight | MBracketLeft RealRangeTerm MBracketRight | MBracketLeft IntegerRangeTerm MBracketRight | MBracketLeft PpeTerm MBracketRight | MBracketLeft CmpClassifierTerm MBracketRight | MBracketLeft RefTerm MBracketRight | MBracketLeft CmpClassifierTerm MBracketRight | MBracketLeft RecordTerm MBracketRight | MBracketLeft ComputedTerm MBracketRight | AmbBracketLeftBooleanTermBracketRight
syntax ConstantPpeExpression ::= PpeExpression | AmbBracketLeftBooleanTermBracketRight
syntax DefaultPpeExpression ::= PpeExpression | AmbBracketLeftBooleanTermBracketRight
step2)
syntax AmbBracketLeftIdBracketRight ::= MBracketLeft Id MBracketRight
syntax BooleanTerm ::= BooleanValue | BooleanPpeConstantTerm | Mnot BooleanTerm | BooleanTerm Mand BooleanTerm | BooleanTerm Mor BooleanTerm // | MBracketLeft BooleanTerm MBracketRight syntax BooleanPpeConstantTerm ::= PpeConstantTerm syntax PpeConstantTerm ::= AmbDoubleColonId syntax AmbDoubleColonId ::= Id | Id MDoubleColon Id
syntax AmbBracketLeftBooleanTermBracketRight ::= MBracketLeft BooleanValue MBracketRight | MBracketLeft Mnot BooleanTerm MBracketRight | MBracketLeft BooleanTerm Mor BooleanTerm Mand BooleanTerm MBracketRight | MBracketLeft MBracketLeft BooleanTerm MBracketRight MBracketRight | MBracketLeft Id MDoubleColon Id MBracketRight | AmbBracketLeftIdBracketRight
If appear ambiguity about AmbBracketLeftBooleanTermBracketRight then we replace it with its defination in DefaultPpeExpression ,ConstantPpeExpression ,PpeListValue .
step3) syntax UnitsList ::= MBracketLeft Id UnitIdList MBracketRight | AmbBracketLeftIdBracketRight
step4) syntax ArrayElementImplList ::= MBracketLeft ArrayElementImplListTmps MBracketRight syntax ArrayElementImplListTmps ::= ArrayElementImplListTmp | ArrayElementImplListTmp MComma ArrayElementImplListTmps syntax ArrayElementImplListTmp ::= UniCmpImplRef ProtoTypeBindings | UniCmpImplRef syntax UniCmpImplRef ::= CmpImplName | PkgName MDoubleColon CmpImplName syntax CmpImplName ::= AmbIdPointId syntax AmbIdPointId ::= Id | Id MPoint Id
==>>
syntax ArrayElementImplList ::= MBracketLeft ArrayElementImplListTmp MComma ArrayElementImplListTmps MBracketRight | MBracketLeft UniCmpImplRef ProtoTypeBindings MBracketRight | MBracketLeft PkgName MDoubleColon CmpImplName MBracketRight | MBracketLeft Id MPoint Id MBracketRight | AmbBracketLeftIdBracketRight
/////////////////////////////////////////////// Ambiguity 4) //////////////////////////////////////////////////////// ConnectIdSubcompenentFlowIdnetifierList, ConnectionSubcompenentFlowAssocDef, ConnectionIdFlowPathList
syntax ConnectIdSubcompenentFlowIdnetifierList ::= MArrows Id MArrows SubCmpFlowId | MArrows Id MArrows SubCmpFlowId ConnectIdSubcompenentFlowIdnetifierList
syntax ConnectionSubcompenentFlowAssocDef ::= MArrows Id MArrows SubCmpFlowId | MArrows Id MArrows SubCmpFlowId ConnectionSubcompenentFlowAssocDef
syntax ConnectionIdFlowPathList ::= MArrows SubCmpFlowId MArrows SubCmpFlowId | MArrows SubCmpFlowId MArrows SubCmpFlowId ConnectionIdFlowPathList
The same :MArrows Id MArrows SubCmpFlowId
/////////////////////////////////////////////// Solution ////////////////////////////////////////////////////////
step1) syntax AmbArrowsIdArrowsSubCmpFlowId ::= MArrows Id MArrows SubCmpFlowId
syntax SubCmpFlowId ::= AmbIdPointId
syntax AmbArrowsIdArrowsSubCmpFlowId ::= MArrows Id MArrows Id | MArrows Id MArrows Id MPoint Id
step2)
syntax ConnectIdSubcompenentFlowIdnetifierList ::= AmbArrowsIdArrowsSubCmpFlowId
| MArrows Id MArrows SubCmpFlowId ConnectIdSubcompenentFlowIdnetifierList
step3)
syntax ConnectionSubcompenentFlowAssocDef ::= AmbArrowsIdArrowsSubCmpFlowId
| MArrows Id MArrows SubCmpFlowId ConnectionSubcompenentFlowAssocDef
step4)
syntax ConnectionIdFlowPathList ::= AmbArrowsIdArrowsSubCmpFlowId
| MArrows SubCmpFlowId MArrows SubCmpFlowId ConnectionIdFlowPathList
/////////////////////////////////////////////// Ambiguity 5) //////////////////////////////////////////////////////// 5)FetGroupTypeProtoTypeActual, FetGroupTypeProtoType, FetGroupSpecAssocDef
syntax FetGroupTypeProtoTypeActual ::= Mfeature Mgroup UniFetGroupTypeRef | Mfeature Mgroup UniFetGroupTypeRef ProtoTypeBindings | Mfeature Mgroup Id
syntax FetGroupTypeProtoType ::= Mfeature Mgroup | Mfeature Mgroup UniFetGroupTypeRef
syntax FetGroupSpecAssocDef ::= Min Mfeature Mgroup InverseOfUniProtoType | Mout Mfeature Mgroup InverseOfUniProtoType | Mfeature Mgroup InverseOfUniProtoType syntax InverseOfUniProtoType ::= AmbInverseOfUniFetGroupTypeRef // | Minverse Mof Id | UniFetGroupTypeRef // | Id
The same : Mfeature Mgroup UniFetGroupTypeRef
/////////////////////////////////////////////// Solution ////////////////////////////////////////////////////////
step1) syntax AmbFeatureGroupUniFetGroupTypeRef ::= Mfeature Mgroup UniFetGroupTypeRef syntax UniFetGroupTypeRef ::= Id | PkgName MDoubleColon Id
syntax AmbFeatureGroupUniFetGroupTypeRef ::= Mfeature Mgroup Id | Mfeature Mgroup Id MDoubleColon Id | Mfeature Mgroup Id MDoubleColon Id MDoubleColon Id step2)
syntax FetGroupTypeProtoTypeActual ::= AmbFeatureGroupUniFetGroupTypeRef | Mfeature Mgroup UniFetGroupTypeRef ProtoTypeBindings | Mfeature Mgroup Id
step3)
syntax FetGroupTypeProtoType ::= Mfeature Mgroup | AmbFeatureGroupUniFetGroupTypeRef
step4) syntax FetGroupSpecAssocDef ::= Min Mfeature Mgroup InverseOfUniProtoType | Mout Mfeature Mgroup InverseOfUniProtoType | AmbFeatureGroupUniFetGroupTypeRef
/////////////////////////////////////////////// Ambiguity 6) //////////////////////////////////////////////////////// FetGroupTypeAssocDefElem, FetGroupTypeExtAssocDefElem, InverseOfUniProtoType ????
syntax FetGroupTypeAssocDefElem ::= Mprototypes ProtoTypeList | Mprototypes NoneStatement | Mfeatures FeatureList | AmbInverseOfUniFetGroupTypeRef | Mproperties FetGroupContainedPpeAssocList | Mproperties NoneStatement | AnnexSubclauseList
syntax FetGroupTypeExtAssocDefElem ::= Mprototypes ProtoTypeList | Mprototypes ProtoTypeRefinementList | Mprototypes NoneStatement | Mfeatures FeatureList | Mfeatures FetRefinementList | AmbInverseOfUniFetGroupTypeRef | Mproperties FetGroupContainedPpeAssocList | Mproperties NoneStatement | AnnexSubclauseList
syntax InverseOfUniProtoType ::= AmbInverseOfUniFetGroupTypeRef // | Minverse Mof Id | UniFetGroupTypeRef // | Id syntax UniFetGroupTypeRef ::= Id | PkgName MDoubleColon Id
The same : AmbInverseOfUniFetGroupTypeRef
/////////////////////////////////////////////// Solution //////////////////////////////////////////////////////// redefine :
syntax AmbInverseOfUniFetGroupTypeRef ::= Minverse Mof Id | Minverse Mof Id MDoubleColon Id | Minverse Mof Id MDoubleColon Id MDoubleColon Id
/////////////////////////////////////////////// Ambiguity 7) //////////////////////////////////////////////////////// InModes, CmpInModes, InModesAndTransitions
syntax InModes ::= Min Mmodes MBracketLeft ModeIdList MBracketRight syntax ModeIdList ::= Id | Id MComma ModeIdList
syntax CmpInModes ::= Min Mmodes MBracketLeft ModeNameList MBracketRight syntax ModeNameList ::= ModeName | ModeName MComma ModeNameList syntax ModeName ::= Id | Id MRoughArrow Id
syntax InModesAndTransitions ::= Min Mmodes MBracketLeft ModeOrTransitionList MBracketRight syntax ModeOrTransitionList ::= Id | Id MComma ModeOrTransitionList
The same : Min Mmodes MBracketLeft Id MBracketRight
/////////////////////////////////////////////// Solution ////////////////////////////////////////////////////////
step1) syntax AmbInModesBracketLeftIdBracketRight ::= Min Mmodes MBracketLeft Id MBracketRight
step2) syntax InModes ::= Min Mmodes MBracketLeft Id MComma ModeIdList MBracketRight | AmbInModesBracketLeftIdBracketRight
step3) syntax CmpInModes ::= AmbInModesBracketLeftIdBracketRight | Min Mmodes MBracketLeft Id MRoughArrow Id MBracketRight | Min Mmodes MBracketLeft ModeName MComma ModeNameList MBracketRight step4)
syntax InModesAndTransitions ::= AmbInModesBracketLeftIdBracketRight | Min Mmodes MBracketLeft Id MComma ModeOrTransitionList MBracketRight
/////////////////////////////////////////////// Ambiguity 8) //////////////////////////////////////////////////////// IntegerRange, IntegerRangeTerm
syntax IntegerRange ::= SignedAadlintegerOrConstant MDoubleDiont SignedAadlintegerOrConstant syntax SignedAadlintegerOrConstant ::= SignedAadlinteger | IntegerPpeConstantTerm | Sign IntegerPpeConstantTerm syntax SignedAadlinteger ::= Sign IntegerLiteral Id | Sign IntegerLiteral | IntegerLiteral Id | IntegerLiteral
syntax IntegerRangeTerm ::= IntegerTerm MDoubleDiont IntegerTerm | IntegerTerm MDoubleDiont IntegerTerm Mdelta IntegerTerm | IntegerRangePpeConstantTerm syntax IntegerTerm ::= SignedAadlintegerOrConstant
The same : IntegerTerm MDoubleDiont IntegerTerm
/////////////////////////////////////////////// Solution ////////////////////////////////////////////////////////
syntax AmbSignedAadlintegerOrConstantDoubleDiontSignedAadlintegerOrConstant ::= SignedAadlintegerOrConstant MDoubleDiont SignedAadlintegerOrConstant
step1) syntax IntegerRange ::= AmbSignedAadlintegerOrConstantDoubleDiontSignedAadlintegerOrConstant
step2) syntax IntegerRangeTerm ::= AmbSignedAadlintegerOrConstantDoubleDiontSignedAadlintegerOrConstant | IntegerTerm MDoubleDiont IntegerTerm Mdelta IntegerTerm | IntegerRangePpeConstantTerm
It may appear the ambiguity of AmbSignedAadlintegerOrConstantDoubleDiontSignedAadlintegerOrConstant
/////////////////////////////////////////////// Ambiguity 9) //////////////////////////////////////////////////////// RefType, RefTerm
syntax RefType ::= Mreference | Mreference MBracketLeft RefCategoryList MBracketRight syntax RefCategoryList ::= Id | Id MComma RefCategoryList
syntax RefTerm ::= Mreference MBracketLeft ContainedModelElementPath MBracketRight
syntax ContainedModelElementPath ::= AnnexPath | ContainedModelElementList AnnexPath | ContainedModelElementList syntax ContainedModelElementList ::= ContainedModelElement | ContainedModelElement MPoint ContainedModelElementList syntax ContainedModelElement ::= Id | NamedElementArraySelectionName
The same products: Mreference MBracketLeft Id MBracketRight
/////////////////////////////////////////////// Solution ////////////////////////////////////////////////////////
step1)
syntax AmbReferenceBracketLeftIdBracketRight ::= Mreference MBracketLeft Id MBracketRight
step2) syntax RefType ::= Mreference | AmbReferenceBracketLeftIdBracketRight | Mreference MBracketLeft Id MComma RefCategoryList MBracketRight
step3) syntax RefTerm ::= Mreference MBracketLeft AnnexPath MBracketRight | Mreference MBracketLeft ContainedModelElementList AnnexPath MBracketRight | Mreference MBracketLeft ContainedModelElement MPoint ContainedModelElementList MBracketRight | Mreference MBracketLeft NamedElementArraySelectionName MBracketRight | AmbReferenceBracketLeftIdBracketRight
/////////////////////////////////////////////// Ambiguity 10) //////////////////////////////////////////////////////// ClassifierType, CmpClassifierTerm
syntax ClassifierType ::= Mclassifier | Mclassifier MBracketLeft ClassifierCategoryRefList MBracketRight syntax ClassifierCategoryRefList ::= ClassifierCategoryRef | ClassifierCategoryRef MComma ClassifierCategoryRefList syntax ClassifierCategoryRef ::= MetaModelClassId | MBraceLeft Id MAsteriskBrace3 MetaModelClassId syntax MetaModelClassId ::= Id | Id MetaModelClassId
syntax CmpClassifierTerm ::= Mclassifier MBracketLeft UniCmpTypeRef MBracketRight | Mclassifier MBracketLeft UniCmpImplRef MBracketRight syntax UniCmpTypeRef ::= PkgName MDoubleColon Id | Id
The same product: Mclassifier MBracketLeft Id MBracketRight
/////////////////////////////////////////////// Solution ////////////////////////////////////////////////////////
step1) syntax AmbClassifierBracketLeftIdBracketRight ::= Mclassifier MBracketLeft Id MBracketRight
step2) syntax ClassifierType ::= Mclassifier | Mclassifier MBracketLeft ClassifierCategoryRef MComma ClassifierCategoryRefList MBracketRight | Mclassifier MBracketLeft MBraceLeft Id MAsteriskBrace3 MetaModelClassId MBracketRight | Mclassifier MBracketLeft Id MetaModelClassId MBracketRight | AmbClassifierBracketLeftIdBracketRight
syntax ClassifierCategoryRefList ::= ClassifierCategoryRef | ClassifierCategoryRef MComma ClassifierCategoryRefList syntax ClassifierCategoryRef ::= MetaModelClassId | MBraceLeft Id MAsteriskBrace3 MetaModelClassId syntax MetaModelClassId ::= Id | Id MetaModelClassId
step3)
syntax CmpClassifierTerm ::= Mclassifier MBracketLeft UniCmpTypeRef MBracketRight | Mclassifier MBracketLeft PkgName MDoubleColon Id MBracketRight | AmbClassifierBracketLeftIdBracketRight syntax UniCmpTypeRef ::= PkgName MDoubleColon Id | Id
The ambiguities are more and more complicated !
1) SubCmp, SubPgmCall
in SubprogramsAndSubprogramCalls.aadl
2) ProtoType, SubCmp
in ComponentTypes.aadl
3) ConstantPpeExpression, ArrayElementImplList, DefaultPpeExpression, UnitsList, PpeListValue
in Devices.aadl Ports.aadl PropertyDefinitions.aadl PropertyTypes.aadl
4) ConnectIdSubcompenentFlowIdnetifierList, ConnectionSubcompenentFlowAssocDef, ConnectionIdFlowPathList
in EndToEndFlows.aadl FlowImplementations.aadl
5) FetGroupTypeProtoTypeActual, FetGroupTypeProtoType, FetGroupSpecAssocDef
in FeatureGroupConnections.aadl
6) FetGroupTypeAssocDefElem, FetGroupTypeExtAssocDefElem, InverseOfUniProtoType
in FeatureGroupsAndFeatureGroupTypes.aadl
7) InModes, CmpInModes, InModesAndTransitions
in ModesAndModeTransitions.aadl
8) IntegerRange, IntegerRangeTerm
in PropertyExpressions.aadl
9) RefType, RefTerm
in SystemBinding.aadl
10) ClassifierType, CmpClassifierTerm
in VirtualBuses.aadl