Loading plugins/Prototypes/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/TDLtx.xtext +111 −48 Original line number Original line Diff line number Diff line Loading @@ -41,6 +41,7 @@ PackageableElement returns tdl::PackageableElement: | ComponentType | GateType | ComponentType | GateType | TestConfiguration | TestConfiguration | TestDescription | TestDescription | LocallyOrderedTestDescription ) ) WithCommentFragment? WithCommentFragment? // | PredefinedAnnotationType // | PredefinedAnnotationType Loading Loading @@ -69,8 +70,10 @@ ElementImport returns tdl::ElementImport: ) ) ) ) 'from' 'from' (importedPackage=[tdl::Package|Identifier] ( | importedPackage=[tdl::Package|QIdentifier] // importedPackage=[tdl::Package|Identifier] // | importedPackage=[tdl::Package|QIdentifier] ) ) WithCommentFragment? WithCommentFragment? ; ; Loading Loading @@ -649,21 +652,22 @@ TimeOperation returns tdl::TimeOperation: ; ; Wait returns tdl::Wait: Wait returns tdl::Wait: PrefixFragment? AtomicPrefixFragment? ( 'component' componentInstance=[tdl::ComponentInstance|Identifier]) 'wait' 'for' 'waits' 'for' period=DataUse period=DataUse ( 'on' componentInstance=[tdl::ComponentInstance|Identifier]) ; ; Quiescence returns tdl::Quiescence: Quiescence returns tdl::Quiescence: PrefixFragment? AtomicPrefixFragment? //TODO: improve syntax 'quiet' 'for' period=DataUse ( ( 'component' componentInstance=[tdl::ComponentInstance|Identifier] 'on' ( | 'gate' gateReference=[tdl::GateReference|IdentifierDot] componentInstance=[tdl::ComponentInstance|Identifier] | gateReference=[tdl::GateReference|IdentifierDot] ) ) 'is' 'quiet' 'for' )? period=DataUse ; ; Loading @@ -672,7 +676,7 @@ TimerOperation returns tdl::TimerOperation: ; ; TimerStart returns tdl::TimerStart: TimerStart returns tdl::TimerStart: PrefixFragment? AtomicPrefixFragment? 'start' 'start' componentInstance=[tdl::ComponentInstance|Identifier] componentInstance=[tdl::ComponentInstance|Identifier] '.' '.' Loading @@ -681,7 +685,7 @@ TimerStart returns tdl::TimerStart: ; ; TimerStop returns tdl::TimerStop: TimerStop returns tdl::TimerStop: PrefixFragment? AtomicPrefixFragment? 'stop' 'stop' componentInstance=[tdl::ComponentInstance|Identifier] componentInstance=[tdl::ComponentInstance|Identifier] '.' '.' Loading @@ -689,12 +693,11 @@ TimerStop returns tdl::TimerStop: ; ; TimeOut returns tdl::TimeOut: TimeOut returns tdl::TimeOut: PrefixFragment? AtomicPrefixFragment? 'time' 'out' 'on' componentInstance=[tdl::ComponentInstance|Identifier] componentInstance=[tdl::ComponentInstance|Identifier] '.' '.' timer=[tdl::Timer|Identifier] timer=[tdl::Timer|Identifier] //TODO: refine syntax 'times' 'out' ; ; Loading Loading @@ -777,10 +780,25 @@ TestConfiguration returns tdl::TestConfiguration: //## Test Description //## Test Description LocallyOrderedTestDescription returns tdl::TestDescription: PrefixFragment? //TODO: consider better way to specify / indicate local ordering //Make local ordering the default? Needs value converter? //According to the meta-model default shall be global ordering (isLocallyOrdered?='Test') name=Identifier ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')' )? 'uses' testConfiguration=[tdl::TestConfiguration|Identifier] (behaviourDescription=BehaviourDescription)? ; TestDescription returns tdl::TestDescription: TestDescription returns tdl::TestDescription: PrefixFragment? PrefixFragment? 'TestDescription' 'TestDescription' //TODO: consider better way to specify / indicate local ordering //TODO: consider better way to specify / indicate local ordering //Make local ordering the default? Needs value converter? //According to the meta-model default shall be global ordering (isLocallyOrdered?='Implementation')? (isLocallyOrdered?='Implementation')? name=Identifier name=Identifier ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')' )? ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')' )? Loading Loading @@ -939,25 +957,25 @@ AtomicBehaviour returns tdl::AtomicBehaviour: Break returns tdl::Break: Break returns tdl::Break: {tdl::Break} {tdl::Break} PrefixFragment? AtomicPrefixFragment? 'break' 'break' ; ; Stop returns tdl::Stop: Stop returns tdl::Stop: {tdl::Stop} {tdl::Stop} PrefixFragment? AtomicPrefixFragment? 'terminate' 'terminate' ; ; VerdictAssignment returns tdl::VerdictAssignment: VerdictAssignment returns tdl::VerdictAssignment: PrefixFragment? AtomicPrefixFragment? 'set' 'verdict' 'to' 'set' 'verdict' 'to' verdict=DataUse verdict=DataUse ; ; Assertion returns tdl::Assertion: Assertion returns tdl::Assertion: {tdl::Assertion} {tdl::Assertion} PrefixFragment? AtomicPrefixFragment? 'assert' 'assert' condition=DataUse condition=DataUse ('on' componentInstance=[tdl::ComponentInstance|Identifier])? ('on' componentInstance=[tdl::ComponentInstance|Identifier])? Loading @@ -966,12 +984,13 @@ Assertion returns tdl::Assertion: ; ; Interaction returns tdl::Interaction: Interaction returns tdl::Interaction: Message | ProcedureCall | ProcedureCallResponse Message | ReceiveMessage | ProcedureCall | ProcedureCallResponse ; ; Message returns tdl::Message: Message returns tdl::Message: PrefixFragment? AtomicPrefixFragment? sourceGate=[tdl::GateReference|IdentifierDot] sourceGate=[tdl::GateReference|IdentifierDot] // | sourceGate=[tdl::GateReference|Identifier] ('sends' | (isTrigger?='triggers')) ('sends' | (isTrigger?='triggers')) argument=DataUse argument=DataUse 'to' 'to' Loading @@ -991,13 +1010,45 @@ ValueAssignmentMessage returns tdl::ValueAssignment: //TODO: ambiguity? //TODO: ambiguity? //PrefixFragment? //PrefixFragment? //TODO: check what the correct syntax shall be //TODO: check what the correct syntax shall be 'where' 'it' 'is' 'assigned' 'to' variable=[tdl::Variable|Identifier] //'where' 'it' 'is' 'assigned' 'to' variable=[tdl::Variable|Identifier] //WithNameFragment? //WithNameFragment? ; ; ProcedureCall returns tdl::ProcedureCall: ReceiveMessage returns tdl::Message: AtomicPrefixFragment? //TODO: make sure scoping works with this as well target+=ReceiveTargetMessage //( "," target+=ReceiveTargetMessage)* 'receives' (isTrigger?='trigger')? argument=DataUse 'from' sourceGate=[tdl::GateReference|IdentifierDot] // | sourceGate=[tdl::GateReference|Identifier] ; ReceiveTargetMessage returns tdl::Target: //TODO: ambiguity? //TODO: ambiguity? //PrefixFragment? //PrefixFragment? (valueAssignment+=ReceiveValueAssignmentMessage)? targetGate=[tdl::GateReference|IdentifierDot] //TODO: check what the correct syntax shall be //WithNameFragment? ; ReceiveValueAssignmentMessage returns tdl::ValueAssignment: //TODO: ambiguity? //PrefixFragment? variable=[tdl::Variable|Identifier] '=' //WithNameFragment? ; ProcedureCall returns tdl::ProcedureCall: //TODO: ambiguity? AtomicPrefixFragment? //TODO: async await pattern? -> it is actually sync //TODO: async await pattern? -> it is actually sync sourceGate=[tdl::GateReference|IdentifierDot] sourceGate=[tdl::GateReference|IdentifierDot] 'calls' 'calls' Loading @@ -1009,6 +1060,8 @@ ProcedureCall returns tdl::ProcedureCall: ; ; ProcedureCallResponse returns tdl::ProcedureCall: ProcedureCallResponse returns tdl::ProcedureCall: AtomicPrefixFragment? //TODO: this shall probably be switched (replyTo=[tdl::ProcedureCall|Identifier] ':')? (replyTo=[tdl::ProcedureCall|Identifier] ':')? sourceGate=[tdl::GateReference|IdentifierDot] sourceGate=[tdl::GateReference|IdentifierDot] 'responds' 'responds' Loading Loading @@ -1038,8 +1091,7 @@ ValueAssignmentProcedure returns tdl::ValueAssignment: ; ; TestDescriptionReference returns tdl::TestDescriptionReference: TestDescriptionReference returns tdl::TestDescriptionReference: //TODO: ambiguity? AtomicPrefixFragment? //PrefixFragment? 'execute' 'execute' testDescription=[tdl::TestDescription|Identifier] testDescription=[tdl::TestDescription|Identifier] //TODO: mandatory parentheses? //TODO: mandatory parentheses? Loading @@ -1063,7 +1115,7 @@ ActionBehaviour returns tdl::ActionBehaviour: ; ; ActionReference returns tdl::ActionReference: ActionReference returns tdl::ActionReference: PrefixFragment? AtomicPrefixFragment? //TODO: simplify syntax further //TODO: simplify syntax further 'perform' //'action' 'perform' //'action' action=[tdl::Action|Identifier] action=[tdl::Action|Identifier] Loading @@ -1072,7 +1124,7 @@ ActionReference returns tdl::ActionReference: ; ; InlineAction returns tdl::InlineAction: InlineAction returns tdl::InlineAction: PrefixFragment? AtomicPrefixFragment? //TODO: simplify syntax further //TODO: simplify syntax further 'perform' 'action' ':' 'perform' 'action' ':' body=EString body=EString Loading @@ -1080,12 +1132,11 @@ InlineAction returns tdl::InlineAction: ; ; Assignment returns tdl::Assignment: Assignment returns tdl::Assignment: PrefixFragment? AtomicPrefixFragment? //TODO: shall be mandatory? (componentInstance=[tdl::ComponentInstance|Identifier] '->')? variable=VariableUse variable=VariableUse '=' '=' expression=DataUse expression=DataUse ('on' componentInstance=[tdl::ComponentInstance|Identifier])? ; ; Loading @@ -1104,7 +1155,7 @@ Assignment returns tdl::Assignment: //Use: inline block - within other blocks, e.g. with other contents //Use: inline block - within other blocks, e.g. with other contents fragment WithCommentFragment returns tdl::Element: fragment WithCommentFragment returns tdl::Element: 'With:' 'with' BEGIN BEGIN (comment+=Comment)+ (comment+=Comment)+ //SHall this be '*'? Ambiguity? //SHall this be '*'? Ambiguity? Loading @@ -1112,7 +1163,7 @@ fragment WithCommentFragment returns tdl::Element: ; ; fragment WithNameFragment returns tdl::Element: fragment WithNameFragment returns tdl::Element: 'With:' 'with' BEGIN BEGIN //At least one element shall be provided? Ambiguity? //At least one element shall be provided? Ambiguity? NameFragment? NameFragment? Loading @@ -1121,7 +1172,7 @@ fragment WithNameFragment returns tdl::Element: ; ; fragment WithBehaviourFragment returns tdl::Behaviour: fragment WithBehaviourFragment returns tdl::Behaviour: 'With:' 'with' BEGIN BEGIN //At least one element shall be provided? Ambiguity? //At least one element shall be provided? Ambiguity? NameFragment? NameFragment? Loading @@ -1130,29 +1181,36 @@ fragment WithBehaviourFragment returns tdl::Behaviour: END END ; ; fragment TDPrefixFragment returns tdl::TestDescription: TDObjectiveFragment? ('@' annotation+=Annotation)+ (comment+=Comment)* ; fragment WithTDFragment returns tdl::TestDescription: fragment WithTDFragment returns tdl::TestDescription: 'With:' 'with' BEGIN BEGIN //At least one element shall be provided? Ambiguity? //At least one element shall be provided? Ambiguity? TDObjectiveFragment? (comment+=Comment)* END END ; ; fragment AtomicPrefixFragment returns tdl::AtomicBehaviour: ObjectiveFragment? (comment+=Comment)* ('@' annotation+=Annotation)+ ; fragment WithAtomicFragment returns tdl::AtomicBehaviour: fragment WithAtomicFragment returns tdl::AtomicBehaviour: 'With:' 'with' BEGIN BEGIN //At least one element shall be provided? Ambiguity? NameFragment? NameFragment? ObjectiveFragment? TimeLabelFragment? TimeLabelFragment? TimeConstraintFragment? TimeConstraintFragment? (comment+=Comment)* END END ; ; fragment WithCombinedFragment returns tdl::CombinedBehaviour: fragment WithCombinedFragment returns tdl::CombinedBehaviour: 'With:' 'with' BEGIN BEGIN //At least one element shall be provided? Ambiguity? //At least one element shall be provided? Ambiguity? NameFragment? NameFragment? Loading @@ -1178,11 +1236,11 @@ fragment NameFragment returns tdl::Element: ; ; fragment TimeLabelFragment returns tdl::AtomicBehaviour: fragment TimeLabelFragment returns tdl::AtomicBehaviour: 'TimeLabel:' timeLabel=TimeLabel timeLabel=TimeLabel '=now' ; ; fragment TimeConstraintFragment returns tdl::AtomicBehaviour: fragment TimeConstraintFragment returns tdl::AtomicBehaviour: 'TimeConstraints:' timeConstraint+=TimeConstraint ( "," timeConstraint+=TimeConstraint)* LBrace timeConstraint+=TimeConstraint ( "," timeConstraint+=TimeConstraint)* RBrace ; ; //Use: for packageable elements only? or for all instead of 'With' fragments? (backwards compatibility?) //Use: for packageable elements only? or for all instead of 'With' fragments? (backwards compatibility?) Loading @@ -1191,6 +1249,11 @@ fragment PrefixFragment returns tdl::Element: ('@' annotation+=Annotation)+ ('@' annotation+=Annotation)+ ; ; fragment PrefixCommentFragment returns tdl::Element: ('@' comment+=Comment)* ('@' annotation+=Annotation)+ ; fragment ConstraintFragment returns tdl::DataType: fragment ConstraintFragment returns tdl::DataType: LBrace (constraint+=Constraint)+ RBrace LBrace (constraint+=Constraint)+ RBrace ; ; Loading Loading @@ -1244,7 +1307,7 @@ IdentifierDot returns ecore::EString: ; ; QIdentifier returns ecore::EString: QIdentifier returns ecore::EString: ID ('.' ID)+ ID ('.' ID)* ; ; //Retain Braces even in indentation-based //Retain Braces even in indentation-based Loading Loading
plugins/Prototypes/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/TDLtx.xtext +111 −48 Original line number Original line Diff line number Diff line Loading @@ -41,6 +41,7 @@ PackageableElement returns tdl::PackageableElement: | ComponentType | GateType | ComponentType | GateType | TestConfiguration | TestConfiguration | TestDescription | TestDescription | LocallyOrderedTestDescription ) ) WithCommentFragment? WithCommentFragment? // | PredefinedAnnotationType // | PredefinedAnnotationType Loading Loading @@ -69,8 +70,10 @@ ElementImport returns tdl::ElementImport: ) ) ) ) 'from' 'from' (importedPackage=[tdl::Package|Identifier] ( | importedPackage=[tdl::Package|QIdentifier] // importedPackage=[tdl::Package|Identifier] // | importedPackage=[tdl::Package|QIdentifier] ) ) WithCommentFragment? WithCommentFragment? ; ; Loading Loading @@ -649,21 +652,22 @@ TimeOperation returns tdl::TimeOperation: ; ; Wait returns tdl::Wait: Wait returns tdl::Wait: PrefixFragment? AtomicPrefixFragment? ( 'component' componentInstance=[tdl::ComponentInstance|Identifier]) 'wait' 'for' 'waits' 'for' period=DataUse period=DataUse ( 'on' componentInstance=[tdl::ComponentInstance|Identifier]) ; ; Quiescence returns tdl::Quiescence: Quiescence returns tdl::Quiescence: PrefixFragment? AtomicPrefixFragment? //TODO: improve syntax 'quiet' 'for' period=DataUse ( ( 'component' componentInstance=[tdl::ComponentInstance|Identifier] 'on' ( | 'gate' gateReference=[tdl::GateReference|IdentifierDot] componentInstance=[tdl::ComponentInstance|Identifier] | gateReference=[tdl::GateReference|IdentifierDot] ) ) 'is' 'quiet' 'for' )? period=DataUse ; ; Loading @@ -672,7 +676,7 @@ TimerOperation returns tdl::TimerOperation: ; ; TimerStart returns tdl::TimerStart: TimerStart returns tdl::TimerStart: PrefixFragment? AtomicPrefixFragment? 'start' 'start' componentInstance=[tdl::ComponentInstance|Identifier] componentInstance=[tdl::ComponentInstance|Identifier] '.' '.' Loading @@ -681,7 +685,7 @@ TimerStart returns tdl::TimerStart: ; ; TimerStop returns tdl::TimerStop: TimerStop returns tdl::TimerStop: PrefixFragment? AtomicPrefixFragment? 'stop' 'stop' componentInstance=[tdl::ComponentInstance|Identifier] componentInstance=[tdl::ComponentInstance|Identifier] '.' '.' Loading @@ -689,12 +693,11 @@ TimerStop returns tdl::TimerStop: ; ; TimeOut returns tdl::TimeOut: TimeOut returns tdl::TimeOut: PrefixFragment? AtomicPrefixFragment? 'time' 'out' 'on' componentInstance=[tdl::ComponentInstance|Identifier] componentInstance=[tdl::ComponentInstance|Identifier] '.' '.' timer=[tdl::Timer|Identifier] timer=[tdl::Timer|Identifier] //TODO: refine syntax 'times' 'out' ; ; Loading Loading @@ -777,10 +780,25 @@ TestConfiguration returns tdl::TestConfiguration: //## Test Description //## Test Description LocallyOrderedTestDescription returns tdl::TestDescription: PrefixFragment? //TODO: consider better way to specify / indicate local ordering //Make local ordering the default? Needs value converter? //According to the meta-model default shall be global ordering (isLocallyOrdered?='Test') name=Identifier ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')' )? 'uses' testConfiguration=[tdl::TestConfiguration|Identifier] (behaviourDescription=BehaviourDescription)? ; TestDescription returns tdl::TestDescription: TestDescription returns tdl::TestDescription: PrefixFragment? PrefixFragment? 'TestDescription' 'TestDescription' //TODO: consider better way to specify / indicate local ordering //TODO: consider better way to specify / indicate local ordering //Make local ordering the default? Needs value converter? //According to the meta-model default shall be global ordering (isLocallyOrdered?='Implementation')? (isLocallyOrdered?='Implementation')? name=Identifier name=Identifier ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')' )? ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')' )? Loading Loading @@ -939,25 +957,25 @@ AtomicBehaviour returns tdl::AtomicBehaviour: Break returns tdl::Break: Break returns tdl::Break: {tdl::Break} {tdl::Break} PrefixFragment? AtomicPrefixFragment? 'break' 'break' ; ; Stop returns tdl::Stop: Stop returns tdl::Stop: {tdl::Stop} {tdl::Stop} PrefixFragment? AtomicPrefixFragment? 'terminate' 'terminate' ; ; VerdictAssignment returns tdl::VerdictAssignment: VerdictAssignment returns tdl::VerdictAssignment: PrefixFragment? AtomicPrefixFragment? 'set' 'verdict' 'to' 'set' 'verdict' 'to' verdict=DataUse verdict=DataUse ; ; Assertion returns tdl::Assertion: Assertion returns tdl::Assertion: {tdl::Assertion} {tdl::Assertion} PrefixFragment? AtomicPrefixFragment? 'assert' 'assert' condition=DataUse condition=DataUse ('on' componentInstance=[tdl::ComponentInstance|Identifier])? ('on' componentInstance=[tdl::ComponentInstance|Identifier])? Loading @@ -966,12 +984,13 @@ Assertion returns tdl::Assertion: ; ; Interaction returns tdl::Interaction: Interaction returns tdl::Interaction: Message | ProcedureCall | ProcedureCallResponse Message | ReceiveMessage | ProcedureCall | ProcedureCallResponse ; ; Message returns tdl::Message: Message returns tdl::Message: PrefixFragment? AtomicPrefixFragment? sourceGate=[tdl::GateReference|IdentifierDot] sourceGate=[tdl::GateReference|IdentifierDot] // | sourceGate=[tdl::GateReference|Identifier] ('sends' | (isTrigger?='triggers')) ('sends' | (isTrigger?='triggers')) argument=DataUse argument=DataUse 'to' 'to' Loading @@ -991,13 +1010,45 @@ ValueAssignmentMessage returns tdl::ValueAssignment: //TODO: ambiguity? //TODO: ambiguity? //PrefixFragment? //PrefixFragment? //TODO: check what the correct syntax shall be //TODO: check what the correct syntax shall be 'where' 'it' 'is' 'assigned' 'to' variable=[tdl::Variable|Identifier] //'where' 'it' 'is' 'assigned' 'to' variable=[tdl::Variable|Identifier] //WithNameFragment? //WithNameFragment? ; ; ProcedureCall returns tdl::ProcedureCall: ReceiveMessage returns tdl::Message: AtomicPrefixFragment? //TODO: make sure scoping works with this as well target+=ReceiveTargetMessage //( "," target+=ReceiveTargetMessage)* 'receives' (isTrigger?='trigger')? argument=DataUse 'from' sourceGate=[tdl::GateReference|IdentifierDot] // | sourceGate=[tdl::GateReference|Identifier] ; ReceiveTargetMessage returns tdl::Target: //TODO: ambiguity? //TODO: ambiguity? //PrefixFragment? //PrefixFragment? (valueAssignment+=ReceiveValueAssignmentMessage)? targetGate=[tdl::GateReference|IdentifierDot] //TODO: check what the correct syntax shall be //WithNameFragment? ; ReceiveValueAssignmentMessage returns tdl::ValueAssignment: //TODO: ambiguity? //PrefixFragment? variable=[tdl::Variable|Identifier] '=' //WithNameFragment? ; ProcedureCall returns tdl::ProcedureCall: //TODO: ambiguity? AtomicPrefixFragment? //TODO: async await pattern? -> it is actually sync //TODO: async await pattern? -> it is actually sync sourceGate=[tdl::GateReference|IdentifierDot] sourceGate=[tdl::GateReference|IdentifierDot] 'calls' 'calls' Loading @@ -1009,6 +1060,8 @@ ProcedureCall returns tdl::ProcedureCall: ; ; ProcedureCallResponse returns tdl::ProcedureCall: ProcedureCallResponse returns tdl::ProcedureCall: AtomicPrefixFragment? //TODO: this shall probably be switched (replyTo=[tdl::ProcedureCall|Identifier] ':')? (replyTo=[tdl::ProcedureCall|Identifier] ':')? sourceGate=[tdl::GateReference|IdentifierDot] sourceGate=[tdl::GateReference|IdentifierDot] 'responds' 'responds' Loading Loading @@ -1038,8 +1091,7 @@ ValueAssignmentProcedure returns tdl::ValueAssignment: ; ; TestDescriptionReference returns tdl::TestDescriptionReference: TestDescriptionReference returns tdl::TestDescriptionReference: //TODO: ambiguity? AtomicPrefixFragment? //PrefixFragment? 'execute' 'execute' testDescription=[tdl::TestDescription|Identifier] testDescription=[tdl::TestDescription|Identifier] //TODO: mandatory parentheses? //TODO: mandatory parentheses? Loading @@ -1063,7 +1115,7 @@ ActionBehaviour returns tdl::ActionBehaviour: ; ; ActionReference returns tdl::ActionReference: ActionReference returns tdl::ActionReference: PrefixFragment? AtomicPrefixFragment? //TODO: simplify syntax further //TODO: simplify syntax further 'perform' //'action' 'perform' //'action' action=[tdl::Action|Identifier] action=[tdl::Action|Identifier] Loading @@ -1072,7 +1124,7 @@ ActionReference returns tdl::ActionReference: ; ; InlineAction returns tdl::InlineAction: InlineAction returns tdl::InlineAction: PrefixFragment? AtomicPrefixFragment? //TODO: simplify syntax further //TODO: simplify syntax further 'perform' 'action' ':' 'perform' 'action' ':' body=EString body=EString Loading @@ -1080,12 +1132,11 @@ InlineAction returns tdl::InlineAction: ; ; Assignment returns tdl::Assignment: Assignment returns tdl::Assignment: PrefixFragment? AtomicPrefixFragment? //TODO: shall be mandatory? (componentInstance=[tdl::ComponentInstance|Identifier] '->')? variable=VariableUse variable=VariableUse '=' '=' expression=DataUse expression=DataUse ('on' componentInstance=[tdl::ComponentInstance|Identifier])? ; ; Loading @@ -1104,7 +1155,7 @@ Assignment returns tdl::Assignment: //Use: inline block - within other blocks, e.g. with other contents //Use: inline block - within other blocks, e.g. with other contents fragment WithCommentFragment returns tdl::Element: fragment WithCommentFragment returns tdl::Element: 'With:' 'with' BEGIN BEGIN (comment+=Comment)+ (comment+=Comment)+ //SHall this be '*'? Ambiguity? //SHall this be '*'? Ambiguity? Loading @@ -1112,7 +1163,7 @@ fragment WithCommentFragment returns tdl::Element: ; ; fragment WithNameFragment returns tdl::Element: fragment WithNameFragment returns tdl::Element: 'With:' 'with' BEGIN BEGIN //At least one element shall be provided? Ambiguity? //At least one element shall be provided? Ambiguity? NameFragment? NameFragment? Loading @@ -1121,7 +1172,7 @@ fragment WithNameFragment returns tdl::Element: ; ; fragment WithBehaviourFragment returns tdl::Behaviour: fragment WithBehaviourFragment returns tdl::Behaviour: 'With:' 'with' BEGIN BEGIN //At least one element shall be provided? Ambiguity? //At least one element shall be provided? Ambiguity? NameFragment? NameFragment? Loading @@ -1130,29 +1181,36 @@ fragment WithBehaviourFragment returns tdl::Behaviour: END END ; ; fragment TDPrefixFragment returns tdl::TestDescription: TDObjectiveFragment? ('@' annotation+=Annotation)+ (comment+=Comment)* ; fragment WithTDFragment returns tdl::TestDescription: fragment WithTDFragment returns tdl::TestDescription: 'With:' 'with' BEGIN BEGIN //At least one element shall be provided? Ambiguity? //At least one element shall be provided? Ambiguity? TDObjectiveFragment? (comment+=Comment)* END END ; ; fragment AtomicPrefixFragment returns tdl::AtomicBehaviour: ObjectiveFragment? (comment+=Comment)* ('@' annotation+=Annotation)+ ; fragment WithAtomicFragment returns tdl::AtomicBehaviour: fragment WithAtomicFragment returns tdl::AtomicBehaviour: 'With:' 'with' BEGIN BEGIN //At least one element shall be provided? Ambiguity? NameFragment? NameFragment? ObjectiveFragment? TimeLabelFragment? TimeLabelFragment? TimeConstraintFragment? TimeConstraintFragment? (comment+=Comment)* END END ; ; fragment WithCombinedFragment returns tdl::CombinedBehaviour: fragment WithCombinedFragment returns tdl::CombinedBehaviour: 'With:' 'with' BEGIN BEGIN //At least one element shall be provided? Ambiguity? //At least one element shall be provided? Ambiguity? NameFragment? NameFragment? Loading @@ -1178,11 +1236,11 @@ fragment NameFragment returns tdl::Element: ; ; fragment TimeLabelFragment returns tdl::AtomicBehaviour: fragment TimeLabelFragment returns tdl::AtomicBehaviour: 'TimeLabel:' timeLabel=TimeLabel timeLabel=TimeLabel '=now' ; ; fragment TimeConstraintFragment returns tdl::AtomicBehaviour: fragment TimeConstraintFragment returns tdl::AtomicBehaviour: 'TimeConstraints:' timeConstraint+=TimeConstraint ( "," timeConstraint+=TimeConstraint)* LBrace timeConstraint+=TimeConstraint ( "," timeConstraint+=TimeConstraint)* RBrace ; ; //Use: for packageable elements only? or for all instead of 'With' fragments? (backwards compatibility?) //Use: for packageable elements only? or for all instead of 'With' fragments? (backwards compatibility?) Loading @@ -1191,6 +1249,11 @@ fragment PrefixFragment returns tdl::Element: ('@' annotation+=Annotation)+ ('@' annotation+=Annotation)+ ; ; fragment PrefixCommentFragment returns tdl::Element: ('@' comment+=Comment)* ('@' annotation+=Annotation)+ ; fragment ConstraintFragment returns tdl::DataType: fragment ConstraintFragment returns tdl::DataType: LBrace (constraint+=Constraint)+ RBrace LBrace (constraint+=Constraint)+ RBrace ; ; Loading Loading @@ -1244,7 +1307,7 @@ IdentifierDot returns ecore::EString: ; ; QIdentifier returns ecore::EString: QIdentifier returns ecore::EString: ID ('.' ID)+ ID ('.' ID)* ; ; //Retain Braces even in indentation-based //Retain Braces even in indentation-based Loading