Commit 6df7115e authored by Martti Käärik's avatar Martti Käärik
Browse files

Composable reduction chains in PostfixExpression

parent 6d27ff79
Loading
Loading
Loading
Loading
+19 −12
Original line number Diff line number Diff line
@@ -435,7 +435,10 @@ UnaryMinusExpression returns tdl::DataUse:

PostfixExpression returns tdl::DataUse:
    DataUseWrapped
    ('as' {tdl::CastDataUse.dataUse=current} dataType=[tdl::DataType|Identifier])?
    (
        reduction+=MemberReference
        | 'as' {tdl::CastDataUse.dataUse=current} dataType=[tdl::DataType|Identifier]
    )*
;

DataUseWrapped returns tdl::DataUse:
@@ -490,7 +493,7 @@ DataInstanceUse returns tdl::DataInstanceUse:
    	'instance' dataInstance=[tdl::DataInstance|Identifier]
    	UnassignedFragment?
    	ParameterBindingFragment?
    	ReductionFragment?
    	// ReductionFragment now handled by PostfixExpression
    )
    |
    (
@@ -538,7 +541,8 @@ LiteralValueUse returns tdl::LiteralValueUse:
    //Note overloaded syntax with constraints, in a sense this is a constraint too..
	(
		LBrace dataType=[tdl::DataType|Identifier] RBrace
		(ParameterBindingFragment | ReductionFragment)?
		ParameterBindingFragment?
		// ReductionFragment now handled by PostfixExpression
	)?
	CheckFragment?
;
@@ -552,7 +556,8 @@ CastDataUse returns tdl::CastDataUse:
	//TODO: causes ambiguity
//	'as' dataType=[tdl::DataType|Identifier]
    RParen
	(ParameterBindingFragment | ReductionFragment)?
	ParameterBindingFragment?
	// ReductionFragment now handled by PostfixExpression
;


@@ -571,19 +576,21 @@ DynamicDataUse returns tdl::DynamicDataUse:
FunctionCall returns tdl::FunctionCall:
    'instance' 'returned' 'from' function=[tdl::Function|Identifier]
    ParameterBindingFragment
    ReductionFragment?
    // ReductionFragment now handled by PostfixExpression
;

//TODO: deprecated?
FormalParameterUse returns tdl::FormalParameterUse:
    'parameter' parameter=[tdl::FormalParameter|Identifier]
    (ParameterBindingFragment | ReductionFragment)?
    ParameterBindingFragment?
    // ReductionFragment now handled by PostfixExpression
;

VariableUse returns tdl::VariableUse:
    componentInstance=[tdl::ComponentInstance|Identifier]
    '::' variable=[tdl::Variable|Identifier]
    (ParameterBindingFragment | ReductionFragment)?
    ParameterBindingFragment?
    // ReductionFragment now handled by PostfixExpression
;

PredefinedFunctionCall returns tdl::PredefinedFunctionCall:
@@ -623,7 +630,7 @@ DataElementUse returns tdl::DataElementUse:
	    dataElement=[tdl::NamedElement|Identifier]
	    UnassignedFragmentNamedElement?
		ParameterBindingFragment?
		ReductionFragment?
		// ReductionFragment now handled by PostfixExpression
		->CollectionItemFragment?
		CheckFragment?
	)