Commit 52d82162 authored by Philip Makedonski's avatar Philip Makedonski Committed by Philip Makedonski
Browse files

+ timing

parent a2ae79f1
Loading
Loading
Loading
Loading
+46 −13
Original line number Diff line number Diff line
@@ -287,18 +287,50 @@ EventOccurrence returns to::EventOccurrence:
;

fragment EventTimingPrefix returns to::EventOccurrence:
    //TODO: shall be 0..*
    //TODO: change to specific time labels / constraints, or use generic TDL ones?
    (    (timeLabel=TimeLabel 
            (    (',' timeConstraint+=TimeConstraint)
                | ':'
            )
        ) 
    (   
        (
            (timeLabel=PrefixTimeLabel (',' timeConstraint+=PrefixTimeConstraint)?)
            |
        (timeConstraint+=TimeConstraint)
            timeConstraint+=TimeConstraint
        )
        ':'
    )    
;

fragment EventTimingSuffix returns to::EventOccurrence:
    'with'
    BEGIN
        EventTimeLabelFragment?
        EventTimeConstraintFragment?
    END
;

fragment EventTimeLabelFragment returns to::EventOccurrence:
    timeLabel=TimeLabel 
;

fragment EventTimeConstraintFragment returns to::EventOccurrence:
    LBrace timeConstraint+=TimeConstraint ( ',' timeConstraint+=TimeConstraint)* RBrace
;


PrefixTimeLabel returns tdl::TimeLabel:
    {tdl::TimeLabel}
    '(.)' 'at' 'time' 'point' 
    name=Identifier
;

PrefixTimeConstraint returns tdl::TimeConstraint:
    {tdl::TimeConstraint}
    '(!)' 
    (comment+=Qualifier)*
    comment+=TimeConstraintQualifier
    //TODO: ambiguity
//    (comment+=(Qualifier | CommonWordQualifier | ArticleQualifier))*
    timeConstraintExpression=DataUse
;


FirstEventOccurrenceSpecification returns to::EventOccurrenceSpecification:
    EventOccurrenceSpecificationFragment
;
@@ -309,7 +341,6 @@ EventOccurrenceSpecification returns to::EventOccurrenceSpecification:
;

fragment EventOccurrenceSpecificationFragment returns to::EventOccurrenceSpecification:
    //TODO: currently ambiguous
//    EventTimingPrefix?
    entityReference=EntityReference?
    eventReference=EventReference
@@ -317,6 +348,7 @@ fragment EventOccurrenceSpecificationFragment returns to::EventOccurrenceSpecifi
    (oppositeEntityReference+=OppositeEntityReference 
        (',' oppositeEntityReference+=OppositeEntityReference)*
    )?
    EventTimingSuffix?
    (comment+=Comment)*
;

@@ -511,13 +543,14 @@ EventTemplateOccurrence returns to::EventTemplateOccurrence:
;

fragment EventTemplateOccurrenceFragment returns to::EventTemplateOccurrence:
    //TODO: currently ambiguous
//    EventTimingPrefix?
    'event' 
    eventTemplate=[to::EventSpecificationTemplate|Identifier]
    'occurs'
    ('with' 
    BEGIN
        EventTimeLabelFragment?
        EventTimeConstraintFragment?
        (entityBinding+=EntityBinding (',' entityBinding+=EntityBinding)*)?
        ('argument' 'replaced' 'by' occurrenceArgument=Argument)?
    END