Commit e18313ff authored by Philip Makedonski's avatar Philip Makedonski
Browse files

* rearranged all fragments to the same place

parent 471f3b89
Loading
Loading
Loading
Loading
+113 −106
Original line number Diff line number Diff line
@@ -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?
@@ -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 
@@ -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
;

@@ -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
@@ -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)*
@@ -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
@@ -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: