Commit 2ec7a105 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ grammar version for september drafts

parent 07983f72
Loading
Loading
Loading
Loading
+29 −40
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ Comment returns tdl::Comment:
;

Annotation returns tdl::Annotation:
    key=[tdl::AnnotationType|Identifier]
    '@' key=[tdl::AnnotationType|Identifier]
    (':' value=EString)?
;

@@ -87,12 +87,10 @@ AnnotationType returns tdl::AnnotationType:
TestObjective returns tdl::TestObjective:
    AnnotationCommentFragment
    'TestObjective' name=Identifier
    (
        BEGIN
    (BEGIN
        ('Description:' description=EString)?
        ('References:' objectiveURI+=EString (',' objectiveURI+=EString)*)?
        END
    )?
    END)?
;

Extension returns tdl::Extension:
@@ -127,11 +125,10 @@ DataElementMapping returns tdl::DataElementMapping:
    ('to' elementURI=EString)?
    'in' dataResourceMapping=[tdl::DataResourceMapping|Identifier]
    'as' name=Identifier
    ( 
        BEGIN 
    (BEGIN
        //TODO: separator 
        (parameterMapping+=ParameterMapping)*
        END
    )?
    END)?
;

ParameterMapping returns tdl::ParameterMapping:
@@ -159,9 +156,7 @@ StructuredDataType returns tdl::StructuredDataType:
    ConstraintFragment?
    'Type' name=Identifier
    extension=Extension?
    '('
        (member+=Member (',' member+=Member)*)?
    ')'
    '(' (member+=Member (',' member+=Member)*)? ')'
;

Member returns tdl::Member:
@@ -179,9 +174,7 @@ StructuredDataInstance returns tdl::StructuredDataInstance:
    name=Identifier
    //TODO: use keywords for unassigned member treatment?
    (unassignedMember=UnassignedMemberTreatment)?
    '('
        (memberAssignment+=MemberAssignment (',' memberAssignment+=MemberAssignment)*)?
    ')'
    '(' (memberAssignment+=MemberAssignment (',' memberAssignment+=MemberAssignment)*)? ')'
;

MemberAssignment returns tdl::MemberAssignment:
@@ -190,10 +183,6 @@ MemberAssignment returns tdl::MemberAssignment:
    '=' memberSpec=StaticDataUse
;

//TODO: stick with existing syntax and address urgent issues or
//      invent new parts? -> stick with existing and refine!!!! 
//      currently: a bit of reinvention

CollectionDataType returns tdl::CollectionDataType:
    AnnotationCommentFragment
    ConstraintFragment?
@@ -205,6 +194,7 @@ CollectionDataInstance returns tdl::CollectionDataInstance:
    AnnotationCommentFragment
    dataType=[tdl::DataType|Identifier] 
    name=Identifier
    //TODO: separators?
    '[' item+=StaticDataUse* ']'
;

@@ -293,7 +283,7 @@ EnumDataType returns tdl::EnumDataType:
    AnnotationCommentFragment
    'Enumerated' name=Identifier
    BEGIN
        //TODO: without type specification?
        //TODO: without type specification? separator?
        (value+=SimpleDataInstance)+
    END
;
@@ -332,7 +322,6 @@ DataInstanceUse returns tdl::DataInstanceUse:
    ('a' dataType=[tdl::StructuredDataType|Identifier]))
    UnassignedFragment?
    ParameterBindingFragment?
    //TODO: what if PrefixFragment?
    ReductionFragment
;

@@ -385,7 +374,7 @@ AnyValue returns tdl::AnyValue:
    ('of' 'type' dataType=[tdl::DataType|Identifier])?
;

AnyValueOrOmit returns tdl::OmitValue:
AnyValueOrOmit returns tdl::AnyValueOrOmit:
    name='*'
;

@@ -394,7 +383,6 @@ OmitValue returns tdl::OmitValue:
;

LiteralValueUse returns tdl::LiteralValueUse:
    //NOTE: Reduction and argument are excluded
    (value=STRING | intValue=BIGINTEGER | boolValue=BOOLEAN)
    //TODO: add option to have the type after wards without any keyword e.g. 100 s?
    ('of' 'type' dataType=[tdl::DataType|Identifier])?
@@ -785,7 +773,6 @@ Interaction returns tdl::Interaction:
Message returns tdl::Message:
    AtomicPrefixFragment
    sourceGate=[tdl::GateReference|IdentifierDot]
//    | sourceGate=[tdl::GateReference|Identifier]
    ('sends' | (isTrigger?='triggers')) 
    argument=DataUse
    'to' target+=TargetMessage ( "," target+=TargetMessage)* 
@@ -794,7 +781,6 @@ Message returns tdl::Message:
TargetMessage returns tdl::Target:
    //NOTE: No name, annotations or comments
    targetGate=[tdl::GateReference|IdentifierDot]
    //TODO: check what the correct syntax shall be
    (valueAssignment+=ValueAssignmentMessage)?
;

@@ -887,7 +873,6 @@ ActionReference returns tdl::ActionReference:

InlineAction returns tdl::InlineAction:
    AtomicPrefixFragment
    //TODO: simplify syntax further
    'perform' 'action' ':' body=EString
    ('on' componentInstance=[tdl::ComponentInstance|Identifier])?
;
@@ -906,12 +891,12 @@ Assignment returns tdl::Assignment:

//Element : Abstract
fragment AnnotationFragment returns tdl::Element:
    ('@' annotation+=Annotation)*
    (annotation+=Annotation)*
;

fragment AnnotationCommentFragment returns tdl::Element:
    (comment+=Comment)*
    ('@' annotation+=Annotation)*
    (annotation+=Annotation)*
;

fragment NameFragment returns tdl::Element:
@@ -937,9 +922,18 @@ fragment WithNameFragment returns tdl::Element:
//DataType: Abstract

fragment ConstraintFragment returns tdl::DataType:
    //TODO: put braces into constraint?
    LBrace (constraint+=Constraint)+ RBrace
;

//Member

fragment MemberConstraintFragment returns tdl::Member:
    //TODO: put braces into constraint?
    LBrace (constraint+=Constraint)+ RBrace
;


//DataUse: Abstract

fragment ReductionFragment returns tdl::DataUse:
@@ -955,6 +949,7 @@ fragment BareParameterBindingFragment returns tdl::DataUse:
    =>(argument+=ParameterBinding ( "," argument+=ParameterBinding)*)
;

//DataInstanceUse: Abstract

fragment UnassignedFragment returns tdl::DataInstanceUse:
    //TODO: added angle brackets for disambiguation
@@ -1000,11 +995,6 @@ fragment UnassignedFragment returns tdl::DataInstanceUse:



//Member

fragment MemberConstraintFragment returns tdl::Member:
    LBrace (constraint+=Constraint)+ RBrace
;


//Behaviour : Abstract
@@ -1012,7 +1002,6 @@ fragment MemberConstraintFragment returns tdl::Member:
fragment WithBehaviourFragment returns tdl::Behaviour:
    'with'
    BEGIN
        //At least one element shall be provided? Ambiguity?
        NameFragment?
        ObjectiveFragment?
        (comment+=Comment)*
@@ -1028,7 +1017,7 @@ fragment ObjectiveFragment returns tdl::Behaviour:
fragment TDPrefixFragment returns tdl::TestDescription:
    (comment+=Comment)*
    TDObjectiveFragment?
    ('@' annotation+=Annotation)*
    (annotation+=Annotation)*
;

fragment TDObjectiveFragment returns tdl::TestDescription:
@@ -1040,7 +1029,7 @@ fragment TDObjectiveFragment returns tdl::TestDescription:
fragment AtomicPrefixFragment returns tdl::AtomicBehaviour:
    ObjectiveFragment?
    (comment+=Comment)*
    ('@' annotation+=Annotation)*
    (annotation+=Annotation)*
;

fragment WithAtomicFragment returns tdl::AtomicBehaviour: