design | ::= | <DESIGN> designName rootMaps ( pluginMaps )? <EOF> |
designName | ::= | <LABEL> |
rootMaps | ::= | <ROOT> <MAPS> <LBRACE> ( model )+ <RBRACE> |
pluginMaps | ::= | <PLUGIN> <MAPS> <LBRACE> ( model )+ <RBRACE> |
model | ::= | <MODEL> modelName modelTitle structureSpec pathSpec responsibilitySpec ( description )? |
modelName | ::= | ( <LABEL> | <ROOT> ) |
modelTitle | ::= | ( description | modelName ) |
description | ::= | <DESCRIPTION> |
structureSpec | ::= | <STRUCTURE> ( componentSpec )? ( poolSpec )? |
componentSpec | ::= | <COMPONENTS> <LBRACE> ( component <SEMICOLON> )* <RBRACE> |
component | ::= | <COMPONENT> componentName ( <ISA> componentType )? ( responsibilityList )? ( otherAtomsList )? ( subStructureSpec )? ( <PROTECTED> )? ( <SLOT> )? ( <ACTUAL> )? ( <ANCHORED> )? ( <REPLICATED> ( replicationFactor )? )? ( description )? |
componentName | ::= | <LABEL> |
componentType | ::= | <LABEL> |
responsibilityList | ::= | <RESPONSIBILITY> <REFERENCES> <LBRACE> ( responsibilityName <SEMICOLON> )* <RBRACE> |
otherAtomsList | ::= | <ATOMS> <REFERENCES> <LBRACE> ( atomName <SEMICOLON> )* <RBRACE> |
atomName | ::= | <LABEL> |
subStructureSpec | ::= | <INCLUDED> structureSpec |
replicationFactor | ::= | <LABEL> |
poolSpec | ::= | <POOLS> <LBRACE> ( pool <SEMICOLON> )* <RBRACE> |
pool | ::= | <POOL> poolName ( <OF> ( componentType | pluginPool ) )? ( responsibilityList )? ( <ACTUAL> )? ( <ANCHORED> )? ( description )? |
pluginPool | ::= | <PLUGINS> <LBRACE> ( modelName <SEMICOLON> )* <RBRACE> |
poolName | ::= | <LABEL> |
pathSpec | ::= | <PATH> <SPECIFICATION> ( pathAtomsSpec )? ( semiPathList )? ( pathList )? ( pathCompositionList )? |
pathAtomsSpec | ::= | <PATH> <ATOMS> <LBRACE> ( atom <SEMICOLON> )* <RBRACE> |
atom | ::= | ( startOfPath | waitingPlace | endBar | responsibilityRef | join | fork | synchronization | stub | emptySegment ) |
startOfPath | ::= | <START> startOfPathId pathNameList outSegment ( triggeringEventList )? ( preconditionList )? ( description )? |
startOfPathId | ::= | <LABEL> |
pathNameList | ::= | <PART> <OF> <PATHS> <LBRACE> ( pathName <SEMICOLON> )+ <RBRACE> |
pathName | ::= | <LABEL> |
outSegmentList | ::= | <OUT> <SEGMENTS> <LBRACE> ( outSegmentId <SEMICOLON> )+ <RBRACE> |
outSegment | ::= | <OUT> outSegmentId |
outSegmentId | ::= | <LABEL> |
triggeringEventList | ::= | <TRIGGERING> <EVENTS> <LBRACE> ( event <SEMICOLON> )* <RBRACE> |
event | ::= | <LABEL> ( description )? |
preconditionList | ::= | <PRECONDITIONS> <LBRACE> ( condition <SEMICOLON> )* <RBRACE> |
condition | ::= | <LABEL> ( description )? |
waitingPlace | ::= | <WAIT> waitingPlaceId ( <ISA> <TIMER> )? inSegmentList pathNameList outSegmentList ( triggeringEventList )? ( preconditionList )? ( description )? |
waitingPlaceId | ::= | <LABEL> |
inSegmentList | ::= | <IN> <SEGMENTS> <LBRACE> ( inSegmentId <SEMICOLON> )+ <RBRACE> |
inSegment | ::= | <IN> inSegmentId |
inSegmentId | ::= | <LABEL> |
endBar | ::= | <END> endBarId inSegment pathNameList ( resultingEventList )? ( postconditionList )? ( description )? |
endBarId | ::= | <LABEL> |
resultingEventList | ::= | <RESULTING> <EVENTS> <LBRACE> ( event <SEMICOLON> )* <RBRACE> |
postconditionList | ::= | <POSTCONDITIONS> <LBRACE> ( condition <SEMICOLON> )* <RBRACE> |
responsibilityRef | ::= | <RESPONSIBILITY> <REFERENCE> responsibilityName inSegment pathNameList outSegment ( description )? |
responsibilityName | ::= | <LABEL> |
stub | ::= | ( fixedStub | dynamicStub ) |
fixedStub | ::= | <FIXED> <STUB> stubName inSegmentList pathNameList outSegmentList ( plugin )? ( description )? |
dynamicStub | ::= | <DYNAMIC> <STUB> stubName inSegmentList pathNameList outSegmentList ( preconditionList )? ( postconditionList )? ( pluginList )? ( enforceBindings )? ( description )? |
stubName | ::= | <LABEL> |
pluginList | ::= | <PLUGINS> <LBRACE> ( plugin <SEMICOLON> )* <RBRACE> |
plugin | ::= | <PLUGIN> modelName ( inConnections )? ( outConnections )? ( ignoredEndings )? ( instanceValues )? |
inConnections | ::= | <IN> <CONNECTIONS> <LBRACE> ( inConnection <SEMICOLON> )* <RBRACE> |
inConnection | ::= | inSegmentId <WITH> startOfPathId |
outConnections | ::= | <OUT> <CONNECTIONS> <LBRACE> ( outConnection <SEMICOLON> )* <RBRACE> |
outConnection | ::= | endBarId <WITH> outSegmentId |
ignoredEndings | ::= | <IGNORE> <LBRACE> ( <LABEL> <SEMICOLON> )* <RBRACE> |
instanceValues | ::= | <INSTANTIATE> <LBRACE> ( formalToValue <SEMICOLON> )* <RBRACE> |
formalToValue | ::= | <LABEL> <WITH> <LABEL> |
enforceBindings | ::= | <ENFORCE> <LBRACE> ( pathBinding <SEMICOLON> )* <RBRACE> |
pathBinding | ::= | inSegmentId <WITH> outSegmentId |
join | ::= | <JOIN> joinId inSegmentList pathNameList outSegment ( description )? |
joinId | ::= | <LABEL> |
fork | ::= | <FORK> forkId inSegment pathNameList outSegmentList ( description )? |
forkId | ::= | <LABEL> |
synchronization | ::= | <SYNCHRONIZATION> synchronizationId entryPointList pathNameList outSegmentList ( description )? |
synchronizationId | ::= | <LABEL> |
entryPointList | ::= | <ENTRY> <POINTS> <LBRACE> ( entryPoint <SEMICOLON> )+ <RBRACE> |
entryPoint | ::= | inSegmentId ( <TIMER> <WITH> <TIMEOUT> <PATH> outSegment )? |
emptySegment | ::= | <EMPTY> emptySegmentId ( <FAILURE> <POINT> )? ( <SHARED> )? inSegment pathNameList outSegment ( preconditionList )? ( postconditionList )? ( description )? |
emptySegmentId | ::= | <LABEL> |
semiPathList | ::= | <SEMI> <PATHS> <LBRACE> ( semiPath <SEMICOLON> )* <RBRACE> |
semiPath | ::= | <SEMI> <PATH> semiPathId linkList |
semiPathId | ::= | <LABEL> |
linkList | ::= | <LINKS> <LBRACE> ( link <SEMICOLON> )+ <RBRACE> |
link | ::= | <LINK> outSegmentId <WITH> inSegmentId |
pathList | ::= | <PATHS> <LBRACE> ( path <SEMICOLON> )* <RBRACE> |
path | ::= | <PATH> pathName ( semiPathId | connectionList ) ( description )? |
connectionList | ::= | <CONNECTIONS> <LBRACE> ( semiPathConnection <SEMICOLON> )+ <RBRACE> |
semiPathConnection | ::= | <CONNECT> semiPathId <WITH> semiPathId |
pathCompositionList | ::= | <PATH> <COMPOSITIONS> <LBRACE> ( pathComposition <SEMICOLON> )* <RBRACE> |
pathComposition | ::= | <JOIN> <PATH> pathName <AND> pathName <THROUGH> ( <END> endBarId | <EMPTY> emptySegmentId ) <AND> ( <START> startOfPathId | <WAIT> waitingPlaceId ) |
responsibilitySpec | ::= | <RESPONSIBILITIES> <LBRACE> ( responsibility <SEMICOLON> )* <RBRACE> |
responsibility | ::= | <RESPONSIBILITY> responsibilityName ( <ACTION> <COLON> ( dynamicResp | raise | handle ) )? ( description )? |
dynamicResp | ::= | ( <MOVE> | <MOVESTAY> | <CREATE> | <COPY> | <DESTROY> ) ( <IN> | <OUT> ) ( <SOURCEPOOL> poolName )? |
raise | ::= | <RAISE> <EXCEPTION> exceptionId <HANDLE> <WITH> pathName |
exceptionId | ::= | <LABEL> |
handle | ::= | <HANDLE> <EXCEPTION> exceptionId |