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

+ improved data handling in TO, #225

parent f5173510
Loading
Loading
Loading
Loading
Loading
+35 −13
Original line number Diff line number Diff line
@@ -1747,6 +1747,12 @@ AssignmentQualifier returns tdl::Comment:
    body=Assignments
;

//or add to assignments?
ContainmentQualifier returns tdl::Comment:
    body=Containments
;


CommonWordQualifier returns tdl::Comment:
    body='before' 
    | body='after' 
@@ -2086,7 +2092,9 @@ LiteralValueAsBinding returns to::LiteralValue:
fragment LiteralValueFragment returns to::LiteralValue:
    comment+=Qualifier*
    (name=TOIdentifier | name=NIdentifier | name=EString)
    ('containing'
    (
        comment+=ContainmentQualifier
//        'containing'
        BEGIN
            content+=DataContent (',' content+=DataContent)*
        END
@@ -2101,7 +2109,10 @@ DataContent returns to::Content:
    comment+=Qualifier*
    (name=TOIdentifier | name=NIdentifier)
    (
        ('containing' 
        (
            //TODO: add constraint for collection-like / structure-like content? -> not distinguishable
            comment+=ContainmentQualifier
//            'containing'  
            BEGIN
                content+=DataContent (',' content+=DataContent)* 
            END
@@ -2200,7 +2211,7 @@ TODataUse returns tdl::DataUse:
;

fragment TOParameterBindingFragment returns tdl::DataUse:
    'containing' BEGIN argument+=TOParameterBinding ( ',' argument+=TOParameterBinding)* END
    'containing' BEGIN (argument+=TOParameterBinding ( ',' argument+=TOParameterBinding)*)? END
;

fragment TOMemberReferenceFragment returns tdl::DataUse:
@@ -2217,24 +2228,30 @@ TOMemberReference returns tdl::MemberReference:
//ParameterBinding
TOParameterBinding returns tdl::ParameterBinding:
    parameter=[tdl::Parameter|TOIdentifier]
    (   
        (   
           comment+=AssignmentQualifier
    	   dataUse=TODataUse
    	)
    	|
    	(
    	   dataUse=TOAnonymousDataElementUse    
        )
    )
;

//DataElementUse
TODataElementUse returns tdl::DataElementUse:
    dataElement=[tdl::NamedElement|TOIdentifier]
    //UnassignedFragmentNamedElement?
    (TOParameterBindingFragment | TOCollectionItemFragment | TOMemberReferenceFragment)?
	//ReductionFragment?
	//TODO: for some reason the fragment breaks serialisation..
	//(reduction+=MemberReference)*
	//->CollectionItemFragment?
	//CheckFragment?
;

TOAnonymousDataElementUse returns tdl::DataElementUse:
    (TOParameterBindingFragment | TOCollectionItemFragment) 
;

fragment TOCollectionItemFragment returns tdl::DataElementUse:
    'containing' BEGIN item+=TODataElementUse (',' item+=TODataElementUse)* END
    'including' BEGIN (item+=TODataUse (',' item+=TODataUse)*)? END
;

//# Time
@@ -2445,6 +2462,11 @@ Assignments:
    | '='
;

Containments:
    'containing' 
    | 'including'
;

References:
    'corresponding' 'to' 
    | 'derived' 'from'