| 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 |