Loading plugins/Prototypes/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/TDLtx.xtext +113 −106 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import "http://www.etsi.org/spec/TDL/1.3.1/configurations" as extendedconfigurat //NamedElement : Abstract //Needs to be the first rule Package returns tdl::Package: {tdl::Package} PrefixFragment? Loading Loading @@ -438,62 +439,6 @@ AnonymousDataInstanceUse returns tdl::DataInstanceUse: // //WithNameFragment? //; fragment ReductionFragment returns tdl::DataUse: (->reduction+=CollectionReference)? ('.' reduction+=GenericMemberReference)* ; fragment ParameterBindingFragment returns tdl::DataUse: =>'(' BareParameterBindingFragment ')' ; fragment BareParameterBindingFragment returns tdl::DataUse: =>(argument+=ParameterBinding ( "," argument+=ParameterBinding)*) ; fragment UnassignedFragment returns tdl::DataInstanceUse: //TODO: added angle brackets for disambiguation =>'<' unassignedMember=UnassignedMemberTreatment '>' ; //fragment ReferencedDataInstance returns tdl::DataInstanceUse: // //referenced DataInstance, arguments or reduction optional // dataInstance=[tdl::DataInstance|Identifier] // UnassignedFragment? // ( // ParameterBindingFragment // //TODO: reduction problematic // | // ( (->reduction+=CollectionReference)? // ('.' reduction+=MemberReference)* // ) // )? //; // //fragment AnonymousDataInstanceWithType returns tdl::DataInstanceUse: // //anonymous with data type, arguments mandatory, only structured data types // ('a' dataType=[tdl::StructuredDataType|Identifier])? // UnassignedFragment? // ParameterBindingFragment //; // //fragment AnonymousDataInstanceWithoutType returns tdl::DataInstanceUse: // //anonymous with no data type, arguments mandatory, otherwise AnyValue, only structured data types // //type assumed from context // //TODO: ambiguity -> placehodler keyword? // UnassignedFragment? // ParameterBindingFragment //; // //fragment AnonymousCollection returns tdl::DataInstanceUse: // //TODO: Not standardised: inline collections, no type needed? (only when used in interaction?) // ('a' dataType=[tdl::CollectionDataType|Identifier])? // UnassignedFragment? // //TODO: Only static? // '[' (item+=StaticDataUse ("," item+=StaticDataUse)*)? ']' //; SpecialValueUse returns tdl::SpecialValueUse: OmitValue | AnyValue | AnyValueOrOmit Loading Loading @@ -1146,19 +1091,28 @@ Assignment returns tdl::Assignment: //All fragments shall be optional at the point of access //Use: contained/standalone block //fragment WithFragmentNested returns tdl::Element: // BEGIN // WithCommentFragment // END //; //Element : Abstract //Use: for packageable elements only? or for all instead of 'With' fragments? (backwards compatibility?) fragment PrefixFragment returns tdl::Element: ('@' annotation+=Annotation)+ ; fragment PrefixCommentFragment returns tdl::Element: ('@' comment+=Comment)* ('@' annotation+=Annotation)+ //TODO: Shall this be '*'? Ambiguity? ; fragment NameFragment returns tdl::Element: 'Name:' name=Identifier ; //Use: inline block - within other blocks, e.g. with other contents fragment WithCommentFragment returns tdl::Element: 'with' BEGIN (comment+=Comment)+ //SHall this be '*'? Ambiguity? //TODO: Shall this be '*'? Ambiguity? END ; Loading @@ -1171,6 +1125,81 @@ fragment WithNameFragment returns tdl::Element: END ; //DataType: Abstract fragment ConstraintFragment returns tdl::DataType: LBrace (constraint+=Constraint)+ RBrace ; //DataUse: Abstract fragment ReductionFragment returns tdl::DataUse: (->reduction+=CollectionReference)? ('.' reduction+=GenericMemberReference)* ; fragment ParameterBindingFragment returns tdl::DataUse: =>'(' BareParameterBindingFragment ')' ; fragment BareParameterBindingFragment returns tdl::DataUse: =>(argument+=ParameterBinding ( "," argument+=ParameterBinding)*) ; fragment UnassignedFragment returns tdl::DataInstanceUse: //TODO: added angle brackets for disambiguation =>'<' unassignedMember=UnassignedMemberTreatment '>' ; //fragment ReferencedDataInstance returns tdl::DataInstanceUse: // //referenced DataInstance, arguments or reduction optional // dataInstance=[tdl::DataInstance|Identifier] // UnassignedFragment? // ( // ParameterBindingFragment // //TODO: reduction problematic // | // ( (->reduction+=CollectionReference)? // ('.' reduction+=MemberReference)* // ) // )? //; // //fragment AnonymousDataInstanceWithType returns tdl::DataInstanceUse: // //anonymous with data type, arguments mandatory, only structured data types // ('a' dataType=[tdl::StructuredDataType|Identifier])? // UnassignedFragment? // ParameterBindingFragment //; // //fragment AnonymousDataInstanceWithoutType returns tdl::DataInstanceUse: // //anonymous with no data type, arguments mandatory, otherwise AnyValue, only structured data types // //type assumed from context // //TODO: ambiguity -> placehodler keyword? // UnassignedFragment? // ParameterBindingFragment //; // //fragment AnonymousCollection returns tdl::DataInstanceUse: // //TODO: Not standardised: inline collections, no type needed? (only when used in interaction?) // ('a' dataType=[tdl::CollectionDataType|Identifier])? // UnassignedFragment? // //TODO: Only static? // '[' (item+=StaticDataUse ("," item+=StaticDataUse)*)? ']' //; //Member fragment MemberConstraintFragment returns tdl::Member: LBrace (constraint+=Constraint)+ RBrace ; //Behaviour : Abstract fragment WithBehaviourFragment returns tdl::Behaviour: 'with' BEGIN Loading @@ -1181,19 +1210,24 @@ fragment WithBehaviourFragment returns tdl::Behaviour: END ; fragment ObjectiveFragment returns tdl::Behaviour: 'Objective:' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])* ; //TestDescription fragment TDPrefixFragment returns tdl::TestDescription: TDObjectiveFragment? ('@' annotation+=Annotation)+ (comment+=Comment)* ; fragment WithTDFragment returns tdl::TestDescription: 'with' BEGIN //At least one element shall be provided? Ambiguity? END fragment TDObjectiveFragment returns tdl::TestDescription: 'Objective:' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])* ; //AtomicBehaviour : Abstract fragment AtomicPrefixFragment returns tdl::AtomicBehaviour: ObjectiveFragment? (comment+=Comment)* Loading @@ -1209,6 +1243,17 @@ fragment WithAtomicFragment returns tdl::AtomicBehaviour: END ; fragment TimeLabelFragment returns tdl::AtomicBehaviour: timeLabel=TimeLabel '=now' ; fragment TimeConstraintFragment returns tdl::AtomicBehaviour: LBrace timeConstraint+=TimeConstraint ( "," timeConstraint+=TimeConstraint)* RBrace ; //CombinedBehaviour : Abstract fragment WithCombinedFragment returns tdl::CombinedBehaviour: 'with' BEGIN Loading @@ -1222,45 +1267,7 @@ fragment WithCombinedFragment returns tdl::CombinedBehaviour: END ; fragment TDObjectiveFragment returns tdl::TestDescription: 'Objective:' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])* ; fragment ObjectiveFragment returns tdl::Behaviour: 'Objective:' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])* ; fragment NameFragment returns tdl::Element: 'Name:' name=Identifier ; fragment TimeLabelFragment returns tdl::AtomicBehaviour: timeLabel=TimeLabel '=now' ; fragment TimeConstraintFragment returns tdl::AtomicBehaviour: LBrace timeConstraint+=TimeConstraint ( "," timeConstraint+=TimeConstraint)* RBrace ; //Use: for packageable elements only? or for all instead of 'With' fragments? (backwards compatibility?) fragment PrefixFragment returns tdl::Element: //('@' comment+=Comment | '@' annotation+=Annotation)+ ('@' annotation+=Annotation)+ ; fragment PrefixCommentFragment returns tdl::Element: ('@' comment+=Comment)* ('@' annotation+=Annotation)+ ; fragment ConstraintFragment returns tdl::DataType: LBrace (constraint+=Constraint)+ RBrace ; fragment MemberConstraintFragment returns tdl::Member: LBrace (constraint+=Constraint)+ RBrace ; //fragment PrefixNameFragment returns tdl::Element: Loading Loading
plugins/Prototypes/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/TDLtx.xtext +113 −106 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import "http://www.etsi.org/spec/TDL/1.3.1/configurations" as extendedconfigurat //NamedElement : Abstract //Needs to be the first rule Package returns tdl::Package: {tdl::Package} PrefixFragment? Loading Loading @@ -438,62 +439,6 @@ AnonymousDataInstanceUse returns tdl::DataInstanceUse: // //WithNameFragment? //; fragment ReductionFragment returns tdl::DataUse: (->reduction+=CollectionReference)? ('.' reduction+=GenericMemberReference)* ; fragment ParameterBindingFragment returns tdl::DataUse: =>'(' BareParameterBindingFragment ')' ; fragment BareParameterBindingFragment returns tdl::DataUse: =>(argument+=ParameterBinding ( "," argument+=ParameterBinding)*) ; fragment UnassignedFragment returns tdl::DataInstanceUse: //TODO: added angle brackets for disambiguation =>'<' unassignedMember=UnassignedMemberTreatment '>' ; //fragment ReferencedDataInstance returns tdl::DataInstanceUse: // //referenced DataInstance, arguments or reduction optional // dataInstance=[tdl::DataInstance|Identifier] // UnassignedFragment? // ( // ParameterBindingFragment // //TODO: reduction problematic // | // ( (->reduction+=CollectionReference)? // ('.' reduction+=MemberReference)* // ) // )? //; // //fragment AnonymousDataInstanceWithType returns tdl::DataInstanceUse: // //anonymous with data type, arguments mandatory, only structured data types // ('a' dataType=[tdl::StructuredDataType|Identifier])? // UnassignedFragment? // ParameterBindingFragment //; // //fragment AnonymousDataInstanceWithoutType returns tdl::DataInstanceUse: // //anonymous with no data type, arguments mandatory, otherwise AnyValue, only structured data types // //type assumed from context // //TODO: ambiguity -> placehodler keyword? // UnassignedFragment? // ParameterBindingFragment //; // //fragment AnonymousCollection returns tdl::DataInstanceUse: // //TODO: Not standardised: inline collections, no type needed? (only when used in interaction?) // ('a' dataType=[tdl::CollectionDataType|Identifier])? // UnassignedFragment? // //TODO: Only static? // '[' (item+=StaticDataUse ("," item+=StaticDataUse)*)? ']' //; SpecialValueUse returns tdl::SpecialValueUse: OmitValue | AnyValue | AnyValueOrOmit Loading Loading @@ -1146,19 +1091,28 @@ Assignment returns tdl::Assignment: //All fragments shall be optional at the point of access //Use: contained/standalone block //fragment WithFragmentNested returns tdl::Element: // BEGIN // WithCommentFragment // END //; //Element : Abstract //Use: for packageable elements only? or for all instead of 'With' fragments? (backwards compatibility?) fragment PrefixFragment returns tdl::Element: ('@' annotation+=Annotation)+ ; fragment PrefixCommentFragment returns tdl::Element: ('@' comment+=Comment)* ('@' annotation+=Annotation)+ //TODO: Shall this be '*'? Ambiguity? ; fragment NameFragment returns tdl::Element: 'Name:' name=Identifier ; //Use: inline block - within other blocks, e.g. with other contents fragment WithCommentFragment returns tdl::Element: 'with' BEGIN (comment+=Comment)+ //SHall this be '*'? Ambiguity? //TODO: Shall this be '*'? Ambiguity? END ; Loading @@ -1171,6 +1125,81 @@ fragment WithNameFragment returns tdl::Element: END ; //DataType: Abstract fragment ConstraintFragment returns tdl::DataType: LBrace (constraint+=Constraint)+ RBrace ; //DataUse: Abstract fragment ReductionFragment returns tdl::DataUse: (->reduction+=CollectionReference)? ('.' reduction+=GenericMemberReference)* ; fragment ParameterBindingFragment returns tdl::DataUse: =>'(' BareParameterBindingFragment ')' ; fragment BareParameterBindingFragment returns tdl::DataUse: =>(argument+=ParameterBinding ( "," argument+=ParameterBinding)*) ; fragment UnassignedFragment returns tdl::DataInstanceUse: //TODO: added angle brackets for disambiguation =>'<' unassignedMember=UnassignedMemberTreatment '>' ; //fragment ReferencedDataInstance returns tdl::DataInstanceUse: // //referenced DataInstance, arguments or reduction optional // dataInstance=[tdl::DataInstance|Identifier] // UnassignedFragment? // ( // ParameterBindingFragment // //TODO: reduction problematic // | // ( (->reduction+=CollectionReference)? // ('.' reduction+=MemberReference)* // ) // )? //; // //fragment AnonymousDataInstanceWithType returns tdl::DataInstanceUse: // //anonymous with data type, arguments mandatory, only structured data types // ('a' dataType=[tdl::StructuredDataType|Identifier])? // UnassignedFragment? // ParameterBindingFragment //; // //fragment AnonymousDataInstanceWithoutType returns tdl::DataInstanceUse: // //anonymous with no data type, arguments mandatory, otherwise AnyValue, only structured data types // //type assumed from context // //TODO: ambiguity -> placehodler keyword? // UnassignedFragment? // ParameterBindingFragment //; // //fragment AnonymousCollection returns tdl::DataInstanceUse: // //TODO: Not standardised: inline collections, no type needed? (only when used in interaction?) // ('a' dataType=[tdl::CollectionDataType|Identifier])? // UnassignedFragment? // //TODO: Only static? // '[' (item+=StaticDataUse ("," item+=StaticDataUse)*)? ']' //; //Member fragment MemberConstraintFragment returns tdl::Member: LBrace (constraint+=Constraint)+ RBrace ; //Behaviour : Abstract fragment WithBehaviourFragment returns tdl::Behaviour: 'with' BEGIN Loading @@ -1181,19 +1210,24 @@ fragment WithBehaviourFragment returns tdl::Behaviour: END ; fragment ObjectiveFragment returns tdl::Behaviour: 'Objective:' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])* ; //TestDescription fragment TDPrefixFragment returns tdl::TestDescription: TDObjectiveFragment? ('@' annotation+=Annotation)+ (comment+=Comment)* ; fragment WithTDFragment returns tdl::TestDescription: 'with' BEGIN //At least one element shall be provided? Ambiguity? END fragment TDObjectiveFragment returns tdl::TestDescription: 'Objective:' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])* ; //AtomicBehaviour : Abstract fragment AtomicPrefixFragment returns tdl::AtomicBehaviour: ObjectiveFragment? (comment+=Comment)* Loading @@ -1209,6 +1243,17 @@ fragment WithAtomicFragment returns tdl::AtomicBehaviour: END ; fragment TimeLabelFragment returns tdl::AtomicBehaviour: timeLabel=TimeLabel '=now' ; fragment TimeConstraintFragment returns tdl::AtomicBehaviour: LBrace timeConstraint+=TimeConstraint ( "," timeConstraint+=TimeConstraint)* RBrace ; //CombinedBehaviour : Abstract fragment WithCombinedFragment returns tdl::CombinedBehaviour: 'with' BEGIN Loading @@ -1222,45 +1267,7 @@ fragment WithCombinedFragment returns tdl::CombinedBehaviour: END ; fragment TDObjectiveFragment returns tdl::TestDescription: 'Objective:' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])* ; fragment ObjectiveFragment returns tdl::Behaviour: 'Objective:' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])* ; fragment NameFragment returns tdl::Element: 'Name:' name=Identifier ; fragment TimeLabelFragment returns tdl::AtomicBehaviour: timeLabel=TimeLabel '=now' ; fragment TimeConstraintFragment returns tdl::AtomicBehaviour: LBrace timeConstraint+=TimeConstraint ( "," timeConstraint+=TimeConstraint)* RBrace ; //Use: for packageable elements only? or for all instead of 'With' fragments? (backwards compatibility?) fragment PrefixFragment returns tdl::Element: //('@' comment+=Comment | '@' annotation+=Annotation)+ ('@' annotation+=Annotation)+ ; fragment PrefixCommentFragment returns tdl::Element: ('@' comment+=Comment)* ('@' annotation+=Annotation)+ ; fragment ConstraintFragment returns tdl::DataType: LBrace (constraint+=Constraint)+ RBrace ; fragment MemberConstraintFragment returns tdl::Member: LBrace (constraint+=Constraint)+ RBrace ; //fragment PrefixNameFragment returns tdl::Element: Loading