Commit 3e0bc86c authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ refinements in reduction handling



Change-Id: I69c9e89ac1e1abf5c7a1d5da3acb05837bfc68f9
Signed-off-by: default avatarmakedonski <makedonski@informatik.uni-goettingen.de>
parent adb5f19c
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -234,6 +234,10 @@ MemberReference returns tdl::MemberReference:
	member=[tdl::Member|Identifier] ('[' collectionIndex=DataUse ']')? 
	;

CollectionReference returns tdl::MemberReference:
	'[' collectionIndex=DataUse ']' 
	;


Boolean returns ecore::EBoolean:
	'true' | 'false'
@@ -424,7 +428,9 @@ DataInstanceUse returns tdl::DataInstanceUse:
			(
				('(' argument+=ParameterBinding ( "," argument+=ParameterBinding)* ')' )
				|
				(	(reduction+=CollectionReference)?
					('.' reduction+=MemberReference)*
				)
			)?
		)
	 	|
@@ -530,6 +536,7 @@ FunctionCall returns tdl::FunctionCall:
	'('
	(argument+=ParameterBinding ( "," argument+=ParameterBinding)*)?
	')'
	(reduction+=CollectionReference)?
	('.' reduction+=MemberReference)*
	('with'
	'{'
@@ -759,6 +766,7 @@ FormalParameterUse returns tdl::FormalParameterUse:
	'parameter'
	parameter=[tdl::FormalParameter|Identifier]
	('(' argument+=ParameterBinding ( "," argument+=ParameterBinding)* ')' )?
	(reduction+=CollectionReference)?
	( "." reduction+=MemberReference)*
    (
    'with'
@@ -1093,6 +1101,7 @@ VariableUse returns tdl::VariableUse:
	'->'
	variable=[tdl::Variable|Identifier]
	('(' argument+=ParameterBinding ( "," argument+=ParameterBinding)* ')' )?
	(reduction+=CollectionReference)?
	("." reduction+=MemberReference)*
	('with' 
	'{'
+6 −4
Original line number Diff line number Diff line
@@ -125,11 +125,13 @@ public class TDLan2ScopeProvider extends AbstractDeclarativeScopeProvider {
			} else if (context instanceof MemberReference) {
				if (((DataUse)context.eContainer()).getReduction().indexOf(context)>0) {
					EObject targetContext = ((DataUse)context.eContainer()).getReduction().get(((DataUse)context.eContainer()).getReduction().indexOf(context)-1);
					if (((MemberReference)targetContext).getMember()!=null) {
						if (((MemberReference)targetContext).getMember().getDataType() instanceof StructuredDataType) {
							IScope scope = Scopes.scopeFor(((StructuredDataType)((MemberReference)targetContext).getMember().getDataType()).getMember());
							return scope;
						}
				} else 
					}
				} 
				if (context.eContainer() instanceof DataInstanceUse) {
					if (((DataInstanceUse)context.eContainer()).getDataInstance() instanceof StructuredDataInstance) {
						IScope scope = Scopes.scopeFor(((StructuredDataType)((StructuredDataInstance)((DataInstanceUse)context.eContainer()).getDataInstance()).getDataType()).getMember());