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

* factored out common fragments

parent 08dcf3fc
Loading
Loading
Loading
Loading
+12 −54
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ Package returns tdl::Package:
;

PackageableElement returns tdl::PackageableElement:
    AnnotationType | TestObjective
    (AnnotationType | TestObjective
     | ConstraintType
     | DataResourceMapping | DataElementMapping
     | SimpleDataType_Impl | SimpleDataInstance 
@@ -41,7 +41,8 @@ PackageableElement returns tdl::PackageableElement:
     | ComponentType | GateType 
     | TestConfiguration 
     | TestDescription 
     
    )
    WithCommentFragment? 
//    | PredefinedAnnotationType
;

@@ -89,7 +90,6 @@ AnnotationType returns tdl::AnnotationType:
    'AnnotationType'
    name=Identifier
    extension=Extension?
    WithCommentFragment?
;

TestObjective returns tdl::TestObjective:
@@ -103,7 +103,6 @@ TestObjective returns tdl::TestObjective:
            ('References:' (objectiveURI+=EString)+)?
        END
    )?
    WithCommentFragment?
;

Extension returns tdl::Extension:
@@ -138,7 +137,6 @@ DataResourceMapping returns tdl::DataResourceMapping:
    'Use'
    resourceURI=EString
    'as' name=Identifier
    WithCommentFragment?
;

DataElementMapping returns tdl::DataElementMapping:
@@ -153,7 +151,6 @@ DataElementMapping returns tdl::DataElementMapping:
            (parameterMapping+=ParameterMapping)*
        END
    )?
    WithCommentFragment?
;

ParameterMapping returns tdl::ParameterMapping:
@@ -170,14 +167,12 @@ SimpleDataType_Impl returns tdl::SimpleDataType:
    'Type'
    ConstraintFragment?
    name=Identifier
    WithCommentFragment?
;

SimpleDataInstance returns tdl::SimpleDataInstance:
    PrefixFragment?
    dataType=[tdl::DataType|Identifier]
    name=Identifier
    WithCommentFragment?
;

//TODO: alternative specification dialects?
@@ -192,7 +187,6 @@ StructuredDataType returns tdl::StructuredDataType:
    BEGIN
        (member+=Member)*
    END
    WithCommentFragment?
;

Member returns tdl::Member:
@@ -217,7 +211,6 @@ StructuredDataInstance returns tdl::StructuredDataInstance:
        //TODO: align with data use
        (memberAssignment+=MemberAssignment)*
    END
    WithCommentFragment?
;

MemberAssignment returns tdl::MemberAssignment:
@@ -238,7 +231,6 @@ CollectionDataType returns tdl::CollectionDataType:
    ConstraintFragment?
    'of' itemType=[tdl::DataType|Identifier]
    //TODO: use angle brackets instead of 'of'?
    WithCommentFragment?
;

CollectionDataInstance returns tdl::CollectionDataInstance:
@@ -246,7 +238,6 @@ CollectionDataInstance returns tdl::CollectionDataInstance:
    dataType=[tdl::DataType|Identifier] 
    name=Identifier
    '[' item+=StaticDataUse* ']'
    WithCommentFragment?
;

ProcedureSignature returns tdl::ProcedureSignature:
@@ -254,7 +245,6 @@ ProcedureSignature returns tdl::ProcedureSignature:
    'Signature'
    name=Identifier
    '(' parameter+=ProcedureParameter ( "," parameter+=ProcedureParameter)* ')'
    WithCommentFragment? 
;

ProcedureParameter returns tdl::ProcedureParameter:
@@ -298,7 +288,6 @@ Action_Impl returns tdl::Action:
    name=Identifier
    ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')')?
    (':' body=EString)?
    WithCommentFragment?
    ;
    
Function returns tdl::Function:
@@ -308,7 +297,6 @@ Function returns tdl::Function:
    ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')')?
    'returns' returnType=[tdl::DataType|Identifier]
    (':' body=EString)?
    WithCommentFragment?
;

enum UnassignedMemberTreatment returns tdl::UnassignedMemberTreatment:
@@ -323,7 +311,6 @@ PredefinedFunction returns tdl::PredefinedFunction:
        | name=PredefinedIdentifierSize
    )
    ('returns' returnType=[tdl::DataType|Identifier])?
    WithCommentFragment?
;

PredefinedIdentifierBinary returns ecore::EString:
@@ -348,7 +335,6 @@ EnumDataType returns tdl::EnumDataType:
        //TODO: without type specification?
        (value+=SimpleDataInstance)+
    END
    //WithCommentFragment?
;

//## Data Use
@@ -617,7 +603,6 @@ Time returns tdl::Time:
    PrefixFragment?
    'Time'
    name=Identifier
    WithCommentFragment?
;

TimeLabel returns tdl::TimeLabel:
@@ -668,7 +653,6 @@ Wait returns tdl::Wait:
    ( 'component' componentInstance=[tdl::ComponentInstance|Identifier])
    'waits' 'for'
    period=DataUse
    WithAtomicFragment?
;

Quiescence returns tdl::Quiescence: 
@@ -680,7 +664,6 @@ Quiescence returns tdl::Quiescence:
    )
    'is' 'quiet' 'for'
    period=DataUse 
    WithAtomicFragment?
;


@@ -695,7 +678,6 @@ TimerStart returns tdl::TimerStart:
    '.'
    timer=[tdl::Timer|Identifier]
    'for' period=DataUse
    WithAtomicFragment?
;

TimerStop returns tdl::TimerStop:
@@ -704,7 +686,6 @@ TimerStop returns tdl::TimerStop:
    componentInstance=[tdl::ComponentInstance|Identifier]
    '.'
    timer=[tdl::Timer|Identifier]
    WithAtomicFragment?
;

TimeOut returns tdl::TimeOut:
@@ -714,7 +695,6 @@ TimeOut returns tdl::TimeOut:
    timer=[tdl::Timer|Identifier]
    //TODO: refine syntax
    'times' 'out'
    WithAtomicFragment?
;


@@ -728,7 +708,6 @@ GateType returns tdl::GateType:
    (extension=Extension)?
    //TODO: revert to 'accepts'
    'accepts' dataType+=[tdl::DataType|Identifier] ( "," dataType+=[tdl::DataType|Identifier])*
    WithCommentFragment?  
;

enum GateTypeKind returns tdl::GateTypeKind:
@@ -752,7 +731,6 @@ ComponentType returns tdl::ComponentType:
        (variable+=Variable)*
        (gateInstance+=GateInstance)* 
    END
    WithCommentFragment?  
;

ComponentInstance returns tdl::ComponentInstance:
@@ -793,7 +771,6 @@ TestConfiguration returns tdl::TestConfiguration:
        (componentInstance+=ComponentInstance)* 
        (connection+=Connection)* 
    END
    WithCommentFragment?
;

//# Test Behaviour
@@ -808,11 +785,7 @@ TestDescription returns tdl::TestDescription:
    name=Identifier
    ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')' )?
    'uses' testConfiguration=[tdl::TestConfiguration|Identifier]
    (
        behaviourDescription=BehaviourDescription
    )?
    //TODO: ambiguity
    //WithTDFragment?
    (behaviourDescription=BehaviourDescription)?
;

BehaviourDescription returns tdl::BehaviourDescription:
@@ -855,7 +828,8 @@ LocalExpression returns tdl::LocalExpression:
;

CombinedBehaviour returns tdl::CombinedBehaviour:
    SingleCombinedBehaviour | MultipleCombinedBehaviour
    (SingleCombinedBehaviour | MultipleCombinedBehaviour)
    =>WithCombinedFragment?
;

SingleCombinedBehaviour returns tdl::SingleCombinedBehaviour:
@@ -869,7 +843,6 @@ CompoundBehaviour returns tdl::CompoundBehaviour:
    //TODO: ambiguity
    //PrefixFragment?
    block=Block
    WithCombinedFragment?
;

BoundedLoopBehaviour returns tdl::BoundedLoopBehaviour:
@@ -877,21 +850,18 @@ BoundedLoopBehaviour returns tdl::BoundedLoopBehaviour:
    'repeat'
    numIteration+=LocalExpression 'times' (',' numIteration+=LocalExpression 'times')*
    block=Block
    WithCombinedFragment?
;

UnboundedLoopBehaviour returns tdl::UnboundedLoopBehaviour:
    PrefixFragment?
    'repeat'
    block=Block
    WithCombinedFragment?
;

OptionalBehaviour returns tdl::OptionalBehaviour:
    PrefixFragment?
    'optionally'
    block=Block
    WithCombinedFragment?
;

MultipleCombinedBehaviour returns tdl::MultipleCombinedBehaviour:
@@ -906,7 +876,6 @@ ConditionalBehaviour returns tdl::ConditionalBehaviour:
    (=>('else' block+=Block)
    | (('else' 'if' block+=Block)* 
       ('else' block+=Block)))? 
    WithCombinedFragment?
;

AlternativeBehaviour returns tdl::AlternativeBehaviour:
@@ -915,7 +884,6 @@ AlternativeBehaviour returns tdl::AlternativeBehaviour:
    block+=Block
    //TODO: enforce 2+? 
    ('or' block+=Block)* 
    WithCombinedFragment?
;

ParallelBehaviour returns tdl::ParallelBehaviour:
@@ -925,7 +893,6 @@ ParallelBehaviour returns tdl::ParallelBehaviour:
    //TODO: simplify keywords / syntax
    ('in' 'parallel' 'to' block+=Block)?
    ('and' block+=Block)*
    WithCombinedFragment?
;

ExceptionalBehaviour returns tdl::ExceptionalBehaviour:
@@ -959,35 +926,33 @@ PeriodicBehaviour returns tdl::PeriodicBehaviour:
//## Atomic Behaviour

AtomicBehaviour returns tdl::AtomicBehaviour:
    TimerOperation
    (TimerOperation
    | TimeOperation
    | Break | Stop
    | VerdictAssignment | Assertion
    | Interaction
    | TestDescriptionReference 
    | ActionBehaviour 
    | Assignment 
    | Assignment)
    WithAtomicFragment? 
;

Break returns tdl::Break:
    {tdl::Break}
    PrefixFragment?
    'break'
    WithAtomicFragment?
;

Stop returns tdl::Stop:
    {tdl::Stop}
    PrefixFragment?
    'terminate'
    WithAtomicFragment?
;

VerdictAssignment returns tdl::VerdictAssignment:
    PrefixFragment?
    'set' 'verdict' 'to'
    verdict=DataUse
    WithAtomicFragment?
;

Assertion returns tdl::Assertion:
@@ -998,7 +963,6 @@ Assertion returns tdl::Assertion:
    ('on' componentInstance=[tdl::ComponentInstance|Identifier])?
    //TODO: simplify syntax
    ('otherwise' 'set' 'verdict' 'to' otherwise=DataUse)?
    WithAtomicFragment?
;

Interaction returns tdl::Interaction: 
@@ -1012,7 +976,6 @@ Message returns tdl::Message:
    argument=DataUse
    'to' 
    target+=TargetMessage ( "," target+=TargetMessage)* 
    WithAtomicFragment?
;

TargetMessage returns tdl::Target:
@@ -1043,7 +1006,6 @@ ProcedureCall returns tdl::ProcedureCall:
    'on' 
    target+=TargetProcedure
    //TODO: pull out name?
    WithAtomicFragment?
;

ProcedureCallResponse returns tdl::ProcedureCall:
@@ -1054,7 +1016,6 @@ ProcedureCallResponse returns tdl::ProcedureCall:
    '('argument+=ParameterBinding ("," argument+=ParameterBinding)*')'
    'to' 
    target+=TargetProcedure
    WithAtomicFragment?
;

TargetProcedure returns tdl::Target:
@@ -1064,6 +1025,7 @@ TargetProcedure returns tdl::Target:
    //TODO: check what the correct syntax shall be
    (valueAssignment+=ValueAssignmentProcedure ("," valueAssignment+=ValueAssignmentProcedure)*)?
    //WithNameFragment?
    //TODO: handle name fragment separately?
;

ValueAssignmentProcedure returns tdl::ValueAssignment:
@@ -1085,7 +1047,6 @@ TestDescriptionReference returns tdl::TestDescriptionReference:
        //TODO: commas? 
        componentInstanceBinding+=ComponentInstanceBinding+
    END)?
    WithAtomicFragment?
;

ComponentInstanceBinding returns tdl::ComponentInstanceBinding:
@@ -1093,7 +1054,7 @@ ComponentInstanceBinding returns tdl::ComponentInstanceBinding:
    //PrefixFragment?
    'bind' formalComponent=[tdl::ComponentInstance|Identifier]
    'to' actualComponent=[tdl::ComponentInstance|Identifier]
    WithNameFragment?
    WithCommentFragment?
;

ActionBehaviour returns tdl::ActionBehaviour: 
@@ -1107,7 +1068,6 @@ ActionReference returns tdl::ActionReference:
    action=[tdl::Action|Identifier]
    ('(' actualParameter+=ParameterBinding ( "," actualParameter+=ParameterBinding)* ')' )?
    ('on' componentInstance=[tdl::ComponentInstance|Identifier])?
    WithAtomicFragment?
;

InlineAction returns tdl::InlineAction:
@@ -1116,7 +1076,6 @@ InlineAction returns tdl::InlineAction:
    'perform' 'action' ':'
    body=EString
    ('on' componentInstance=[tdl::ComponentInstance|Identifier])?
    WithAtomicFragment?
;

Assignment returns tdl::Assignment:
@@ -1126,7 +1085,6 @@ Assignment returns tdl::Assignment:
    variable=VariableUse
    '=' 
    expression=DataUse
    WithAtomicFragment?
;


@@ -1188,7 +1146,7 @@ fragment WithAtomicFragment returns tdl::AtomicBehaviour:
        ObjectiveFragment?
        TimeLabelFragment?
        TimeConstraintFragment?
        (comment+=Comment)+
        (comment+=Comment)*
    END
;