@O@@{@- #define UNSET 0 #define STATE 1 #define TRANSITION 0 @} @O@@{@- Kind: int; @} @O@@{@- SYMBOL State COMPUTE SYNT.KindOk = ResetKind(THIS.Key, STATE); END; SYMBOL Transition COMPUTE SYNT.KindOk = ResetKind(THIS.Key, TRANSITION); END; SYMBOL PetriNet COMPUTE SYNT.KindOk = CONSTITUENTS (Transition.KindOk, State.KindOk); END; SYMBOL Connection: fromKind, toKind: int; SYMBOL Connection: illegalConnection: int; SYMBOL Connection COMPUTE SYNT.fromKind = GetKind(THIS.StartKey, UNSET) <- INCLUDING PetriNet.KindOk; SYNT.toKind = GetKind(THIS.EndKey, UNSET) <- INCLUDING PetriNet.KindOk; SYNT.illegalConnection = AND(EQ(THIS.fromKind, THIS.toKind), NE(THIS.fromKind, UNSET)); IF (THIS.illegalConnection, message(ERROR, "IllegalConnection", 0, _currn)); END; @}