FormalADL / kAADL

1 stars 1 forks source link

Researchful Question 02 #11

Closed suweining closed 9 years ago

suweining commented 9 years ago

Here is researchful about Error03 4): ProtoType, SubCmp, AmbIdColonSubprogramIdSemicolon The defination of ProtoType : 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 The defination of SubCmp: syntax SubCmp ::= AmbIdColonCmpCategorySemicolon | 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 They all contain "AmbIdColonSubprogramIdSemicolon". Howere, the product in SubCmp ,"Id Mcolon Msubprogram UniCmpClassifierRef MSemicolon" ,can infer to "AmbIdColonSubprogramIdSemicolon". Thus,the product in ProtoType,"Id Mcolon CmpCategory UniCmpClassifierRef MSemicolon ",can also infer to "AmbIdColonSubprogramIdSemicolon".Even we delete AmbIdColonSubprogramIdSemicolon from the defination of SubCmp and ProtoType,they (SubCmp and ProtoType) can also infer to the same product : Id Mcolon Msubprogram Id MSemicolon . After the above analysis,ambituity 4) shall unfold "Id Mcolon Msubprogram UniCmpClassifierRef MSemicolon" and "Id Mcolon CmpCategory UniCmpClassifierRef MSemicolon" . Howerer,I just delete "AmbIdColonSubprogramIdSemicolon" from SubCmp and ProtoType,the 4) chang to :

Exception in thread "main" java.lang.AssertionError: The greatest lower bound (GLB) of sorts [AmbIdBracketLeftIdBracketRight, AmbClassifierBracketLeftIdBracketRight, CmpClassifierTerm]doesn't exist!

suweining commented 9 years ago

Here is an other solution about Error03 4) : unfold "Id Mcolon Msubprogram UniCmpClassifierRef MSemicolon" and "Id Mcolon CmpCategory UniCmpClassifierRef MSemicolon"

step1)

"Id Mcolon Msubprogram UniCmpClassifierRef MSemicolon" can infer to ”AmbIdColonSubprogramIdSemicolon“

syntax UniCmpClassifierRef ::= UniCmpTypeRef | UniCmpImplRef syntax UniCmpTypeRef ::= PkgName syntax PkgName ::= Id | Id MDoubleColon PkgName syntax UniCmpImplRef ::= CmpImplName | PkgName MDoubleColon CmpImplName syntax CmpImplName ::= AmbIdPointId

==>>

syntax UniCmpClassifierRef ::= PkgName | Id MPoint Id | PkgName MDoubleColon AmbIdPointId

so the product

Id Mcolon Msubprogram UniCmpClassifierRef MSemicolon

should change to:

Id Mcolon Msubprogram Id MSemicolon 【AmbIdColonSubprogramIdSemicolon】 Id Mcolon Msubprogram Id MPoint Id MSemicolon Id Mcolon Msubprogram Id MDoubleColon PkgName MSemicolon Id Mcolon Msubprogram PkgName MDoubleColon AmbIdPointId MSemicolon

step2) "Id Mcolon CmpCategory UniCmpClassifierRef MSemicolon" can infers to ”AmbIdColonSubprogramIdSemicolon“

syntax CmpCategory ::= AbstractCmpCategory | SoftwareCategory | ExecPlateformCategory | CompositeCategory syntax SoftwareCategory ::= Mdata | Msubprogram | Msubprogram Mgroup | Mthread | Mthread Mgroup | Mprocess

so the product

Id Mcolon CmpCategory UniCmpClassifierRef MSemicolon

should change to:

Id Mcolon AbstractCmpCategory UniCmpClassifierRef MSemicolon Id Mcolon ExecPlateformCategory UniCmpClassifierRef MSemicolon Id Mcolon CompositeCategory UniCmpClassifierRef MSemicolon

Id Mcolon Mdata UniCmpClassifierRef MSemicolon Id Mcolon Msubprogram Mgroup UniCmpClassifierRef MSemicolon Id Mcolon Mthread UniCmpClassifierRef MSemicolon Id Mcolon Mthread Mgroup UniCmpClassifierRef MSemicolon Id Mcolon Mprocess UniCmpClassifierRef MSemicolon

Id Mcolon Msubprogram UniCmpClassifierRef MSemicolon

the "Id Mcolon Msubprogram UniCmpClassifierRef MSemicolon" also need to unfold.

Kompile and krun .Answer is: Exception in thread "main" java.lang.AssertionError: The greatest lower bound (GLB) of sorts [ProtoType, SubCmp, SubPgmCall]doesn't exist!