BNF for lfmparse.jj

NON-TERMINALS

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