Home » Archived » M2M (model-to-model transformation) » [ATL]Bug report : crash when compilation error 
| [ATL]Bug report : crash when compilation error [message #52366] | 
Fri, 13 July 2007 04:01   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Originally posted by: tristan.faure.c-s.fr 
 
Hi i have a probleme with my ATL transformation 
 
sometimes when i have a compilation error (example a quote missing)  
eclipse crashes and i cannot reopen my ATL file except in text editor. 
 
i hope you'll have the same error 
 
the file is : 
(compilation error = line 29 quote missing) 
 ============================================================ ======= 
-- @atlcompiler atl2006 
module umlFW2if; -- Module Template 
create out : _IF from _in : UML; 
 
 ------------------------------------------------------------ ---------- 
-- STRING CONSTANTS  
 ------------------------------------------------------------ ---------- 
 
helper def: defaultGuardProvided : String =  
'(({u2i__group_manager}u2i__leader).u2i__stack_length = 0)' ; 
helper def : var_leader : String = 'u2i__leader' ; 
helper def : fpar_callerObj : String = 'u2i__callerObj' ; 
helper def : fpar_caller : String = 'u2i__caller' ; 
helper def : fpar_waiting : String = 'u2i__waiting' ; 
helper def : fpar_callee : String = 'u2i__callee' ; 
helper def : fpar_leader : String = 'u2i__leader' ; 
helper def : var_tmp : String = 'u2i__parvar_u2i__oid' ; 
helper def : var_callerObj : String = 'u2i__parvar_callerObj' ; 
helper def : var_caller : String = 'u2i__parvar_caller' ; 
helper def : var_waiting : String = 'u2i__parvar_waiting' ; 
helper def : var_obs_by : String = 'u2i__by' ; 
helper def : var_obs_vars : String = 'u2i__vars' ; 
helper def : var_obs_tmp : String = 'u2i__tmp_vars' ; 
helper def : sig_callerObj : String = 'callerObj'; 
helper def : sig_caller : String = 'caller' ; 
helper def : sig_callee : String = 'callee' ; 
helper def : sig_waiting : String = 'waiting' ; 
helper def : pre_call : String = 'u2i__call_' ; 
helper def : pre_handler : String =	'u2i__handler_' ; 
helper def : pre_observers_type : String = 'u2i__observer_vars_ ; 
helper def : ster_class : String = 'FwClass' ; 
helper def : ster_state_machine : String = 'FwStateMachine' ; 
helper def : ster_trigger_operation : String = 'FwTriggerOperation' ; 
helper def : ster_create : String = 'Create' ; 
helper def : ster_constructor_root : String = 'OMEGAconstructorRoot' ; 
helper def : ster_observer : String = 'OMEGAobserver' ; 
helper def : state_default_top : String = 'u2i__default_top_state' ; 
helper def : state_model_top : String = 'u2i__model_top_state' ; 
helper def : action_language_name : String = 'OMAL' ; 
 
 ------------------------------------------------------------ ---------- 
-- HELPERS 
 ------------------------------------------------------------ ---------- 
 
helper context UML!Operation def : getqualifiedNameIF : String = 
	self.getQualifiedName().replaceAll(':','_') 
; 
 
helper context UML!Class def : getqualifiedNameIF : String = 
	self.getQualifiedName().replaceAll(':','_') 
; 
 
helper context UML!Package def : getqualifiedNameIF : String = 
	self.getQualifiedName().replaceAll(':','_') 
; 
 
helper context UML!Property def : myGetOpposite () : UML!Property = 
	self.getOpposite () 
; 
 
helper context UML!Operation def : isConstructor : Boolean = 
	self.isStereotyped(thisModule.ster_create) or  
self.isStereotyped(thisModule.ster_constructor_root) 	 
; 
 
helper def : getVarsFromAssociations (c : UML!Class) :  
Sequence(UML!Property) = 
	UML!Association.allInstances() 
		->select(a | (a.memberEnd.first().type = c and  
a.memberEnd.last().isNavigable())) 
		->collect(a | a.memberEnd.last()) 
; 
	 
helper def : getVarsFromCompositions (c : UML!Class) :  
Sequence(UML!Property) = 
	UML!Association.allInstances() 
		->select(a | (a.memberEnd.first().type = c and  
a.memberEnd.last().isNavigable() and a.memberEnd.last().aggregation =  
#composite)) 
		->collect(a | a.memberEnd.last()) 
; 
 
helper def: getParametersMode(p : String) : IF!ParametersMode = 
	if (p = 'null') then 
		#null 
	else 
		if (p = 'out') then 
			#out 
		else 
			#null 
		endif 
	endif 
; 
 
helper context UML!Operation def : getBodyAction () : String = 
	if (not self.method.oclIsUndefined()) then 
		if (not self.method.first().oclIsUndefined()) then 
			if  
(self.method.first().language->indexOf(thisModule.action_language_name) >  
0) then 
				self.method.first().body->at(self.method.first().language->indexOf(thisModule.action_language_name))  
			else  
				'' 
			endif 
		else  
			'' 
		endif 
	else 
		'' 
	endif 
; 
 
helper context UML!Transition def : getBodyAction () : String = 
	if (not self.effect.oclIsUndefined()) then 
		if (self.effect.body.size() > 0) then 
			if (self.effect.language->indexOf(thisModule.action_language_name) <>  
0) then 
				self.effect.body->at(self.effect.language->indexOf(thisModule.action_language_name)) 
			else 
				'' 
			endif 
		else 
			'' 
		endif 
	else  
		'' 
	endif 
; 
 
helper context UML!State def : getOptionForState() : _IF!stateOptionType = 
	if (self.incoming.first().source.oclIsTypeOf(UML!Pseudostate)) then 
		#start 
	else 
		#null 
	endif 
; 
 
helper def : getDeadLine(type : String) : _IF!deadlineType = 
	if (type = 'lazy') then 
		#lazyO 
	else 
		#undefined 
	endif 
	 
; 
 
helper context String def : getType () : String =  
( 
	if (self = 'Integer') then 
		'integer' 
	else 
		'pid'	 
	endif 
) ; 
 
 
-- get all which become a Process : Class and Operations 
helper context UML!Package def : getProcesses() : Set(UML!Element) =  
( 
	self.getClass().union( 
		self.getOperations()->select(o | not  
o.isStereotyped(thisModule.ster_trigger_operation)) 
	)->flatten() 
); 
 
helper context UML!Package def : getOperations() : Sequence(UML!Operation)  
=  
( 
	self.ownedMember->select(a|a.oclIsTypeOf(UML!Class))->collect(a |  
a.ownedOperation)->flatten()--->select(o | not  
o.isStereotyped(thisModule.ster_trigger_operation)) 
); 
 
helper context UML!Package def : getClass() : Sequence(UML!Class) =  
( 
	self.ownedMember 
		->select(a|a.oclIsTypeOf(UML!Class)  
		and not a.isStereotyped(thisModule.ster_observer))->flatten() 
); 
 
helper context UML!Package def : getObservers() : Sequence(UML!Class) =  
( 
	self.ownedMember 
		->select(a|a.oclIsTypeOf(UML!Class)  
		and a.isStereotyped(thisModule.ster_observer))->flatten() 
); 
 
-- test if the stereotype provided is present 
helper context UML!Element def : isStereotyped (s : String) : Boolean = 
( 
	self.getAppliedStereotypes()->exists(e | e.name = s) 
); 
 
helper def : gettingProcessOwner (e : _IF!Element) : IF!Process =  
( 
	if (e.oclIsUndefined()) then 
		e 
	else 
		if (e.oclIsTypeOf(_IF!Process)) then 
			e 
		else 
			if (e.oclIsTypeOf(_IF!State)) then 
				if (e.ownerState.oclIsUndefined ()) then 
					thisModule.gettingProcessOwner (e.owner) 
				else 
					thisModule.gettingProcessOwner (e.ownerState) 
				endif 
			else  
				thisModule.gettingProcessOwner (e.owner) 
			endif 
		endif 
	endif 
); 
 
-- GLOBAL DATA 
 
helper def: mapSignals : Map(String, _IF!Signal) = Map{}; 
 
helper def: mapProcess : Map(String, _IF!Process) = Map{}; 
 
helper def : seqVarsGroupManager : Sequence(String) = Sequence {} ; 
 
helper def : getCount : Integer = 1000 ; 
 
 ------------------------------------------------------------ ---------- 
-- MATCHED RULES 
 ------------------------------------------------------------ ---------- 
 
-- first Transformation => Package UML 2 a System IF 
-- associated transformations : Class2Process 
rule Package2System { 
	from 
		p : UML!Package (p.oclIsTypeOf(UML!Package)) 
	using { 
		seqOperations : Sequence(UML!Operation) = p.getOperations() ; 
		seqClass : Sequence (UML!Class) = p.getClass() ; 
		priority_rules_umlprio_manager : String = '' ; 
		priority_rules_umlprio_token : String = '' ; 
	} 
	to 
		s : _IF!_System ( 
			id <- p.name, 
			signal <- completesignal, 
			process <- p.getProcesses(), 
			process <- p.getObservers()->collect(o | thisModule.Class2Observer(o)), 
			process <- seqClass 
				->select (c | not c.ownedOperation->exists(o |  
o.isStereotyped(thisModule.ster_constructor_root)))	 
				->collect(c | thisModule.Class2DefaultConstProcess(c)), 
			-- constant for the array TODO see if the number has to be parameterized 
			constants <- thisModule.newConstant('MULT_STAR_MAX','10'), 
			signal <- seqOperations->collect(o |  
thisModule.Operation2CallSignal(o)), 
			signal <- seqOperations->collect(o |  
thisModule.Operation2ReturnSignal(o)), 
			signal <- seqClass->collect(o |thisModule.Class2DefaultConstSignal(o)) 
		), 
		completesignal : _IF!Signal ( 
			id <- 'u2i__complete' 
		) 
	do { 
		thisModule.mapSignals <-  
 thisModule.mapSignals.including(completesignal.id,completesi gnal) ; 
		s.process <- seqClass 
				->select (c | c.ownedOperation->exists(o |  
o.isStereotyped(thisModule.ster_constructor_root))) 
				->collect(c | thisModule.Class2DefaultConstRootProcess(c)) ; 
		s.process <- thisModule.createGroupManager(p) ; 
		for (c in seqClass){ 
			if (priority_rules_umlprio_manager.size()=0){ 
				priority_rules_umlprio_manager <- 
					'(y instanceof ' + c.getqualifiedNameIF +  ' and (({' +  
c.getqualifiedNameIF + '}y).u2i__leader = x))' ; 
			} 
			else { 
				priority_rules_umlprio_manager <-  
					'(' + priority_rules_umlprio_manager + ') or ' 
					+	'(y instanceof ' + c.getqualifiedNameIF +  ' and (({' +  
c.getqualifiedNameIF + '}y).u2i__leader = x))' ; 
			} 
			if (priority_rules_umlprio_token.size() = 0){ 
				priority_rules_umlprio_token <- 
					'(x instanceof ' + c.getqualifiedNameIF + ' and  
(({u2i__group_manager}({'+ c.getqualifiedNameIF  
+'}x).u2i__leader).u2i__running = y))' ; 
			} 
			else { 
				priority_rules_umlprio_token <-  
					'(' + priority_rules_umlprio_token + ') or ' 
					+ '(x instanceof ' + c.getqualifiedNameIF + ' and  
(({u2i__group_manager}({'+ c.getqualifiedNameIF  
+'}x).u2i__leader).u2i__running = y))' ; 
			} 
		} 
		priority_rules_umlprio_manager <- 'x < y if (' +  
priority_rules_umlprio_manager + ' or false)' ; 
		priority_rules_umlprio_token <- 'x < y if (' +  
priority_rules_umlprio_token + ' or false)' ; 
		s.rules <- thisModule.newPriorityRule ( 
			'umlprio_manager_rule', 
			priority_rules_umlprio_manager 
		) ; 
		s.rules <- thisModule.newPriorityRule ( 
			'umlprio_running_token_rule', 
			priority_rules_umlprio_token 
		) ; 
	} 
} 
 
-- Transformation => Class UML 2 a Process IF 
-- associated transformations : State2State 
--								Property2Variables 
rule Class2Process { 
	from 
		c : UML!Class (c.oclIsTypeOf(UML!Class)  
			and c.isStereotyped(thisModule.ster_class) 
			and not c.isStereotyped(thisModule.ster_observer)) --and c.isActive 
	using { 
			aPriorityRule : _IF!PriorityRule = _IF!PriorityRule ;  
	} 
	to 
		s : _IF!Process ( 
			id <- c.getqualifiedNameIF, 
			nbInstancesToStart <- '0', 
			variables <-  
c.ownedMember->select(a|a.oclIsTypeOf(UML!Property))->collect(p |  
thisModule.Property2Variables(p)), 
			-- default variables for a process 
			variables <- Sequence {  
				thisModule.newVariable (thisModule.var_leader,'pid',true), 
				thisModule.newVariable (thisModule.var_callerObj,'pid',false), 
				thisModule.newVariable (thisModule.var_caller,'pid',false), 
				thisModule.newVariable (thisModule.var_waiting,'pid',false) 
			}, 
			--variables <- thisModule.getVarsFromAssociations(c)->collect(o |  
thisModule.Property2Variables(o)), 
			ancestor <- #class, 
			 ------------------------------------------------------------ --- 
			--states <- thisModule.newFinalState, 
			states <- defaultState, 
			baseName <- c.owner.getqualifiedNameIF 
		), 
		defaultState : _IF!State ( 
			id <- thisModule.state_default_top, 
			options <- #start, 
			transition <- c.ownedOperation 
							->select(o | not o.isStereotyped(thisModule.ster_trigger_operation) and  
not o.isConstructor) 
							->collect(o | thisModule.Operation2Transition(o)), 
			subState <- c.ownedMember->select(e |  
e.isStereotyped(thisModule.ster_state_machine)) 
		) 
	do { 
		thisModule.manageAssociations(c,s); 
	} 
} 
 
rule StateMachine2State { 
	from  
		fsm : UML!StateMachine (fsm.isStereotyped(thisModule.ster_state_machine)) 
	to  
		s : _IF!State ( 
			id <- thisModule.state_model_top, 
			options <- #start, 
			-- TODO modifiy for pseudo state 
			subState <- fsm.region.first().subvertex->select (s |  
s.oclIsTypeOf(UML!Pseudostate))->select(s | s.kind = #initial)->collect(s  
| thisModule.InitialState2State(s)), 
			subState <- fsm.region.first().subvertex->select (s | not  
s.oclIsTypeOf(UML!Pseudostate)) 
		)		 
} 
 
-- Transformation => State UML 2 a State IF 
-- associated transformations : Transition2Transition 
rule State2State { 
	from  
		v : UML!State (v.oclIsTypeOf(UML!State) and not  
v.oclIsTypeOf(UML!Pseudostate)) 
	to  
		s : _IF!State ( 
			id <- v.name, 
			options <- #null, -- v.getOptionForState(), 
			transition <- v.owner.transition->select(t | t.source = v)->collect(t |  
thisModule.Transition2Transition(t)) 
		) 
} 
 
 
 
-- Transformation => Trigger UML 2 a Trigger IF 
-- associated transformations : CallEvent2Signal 
--								OpaqueExpression2Guard 
rule Trigger2Trigger { 
	from 
		tri1 : UML!Trigger (tri1.event.oclIsTypeOf(UML!CallEvent)) 
	using { 
			i : Integer = 0 ; 
			processTmp : _IF!Process = _IF!Process ;  
			signalName : String = thisModule.pre_call +  
tri1.event.operation.getqualifiedNameIF ; 
			 
	} 
	to 
		tri2 : _IF!Trigger ( 
			input <- sc 
		), 
		sc : _IF!SignalCall ( 
			-- getting the signal generated from the operation 
			signalReferenced <-  thisModule.mapSignals.get(signalName), 
			effectiveParameters <- Sequence { 
				thisModule.newVariable('void','null',false), 
				thisModule.newVariable(thisModule.var_caller,'null',false), 
				 thisModule.newVariable(thisModule.var_callerObj,'null',false ), 
				thisModule.newVariable('void','null',false) 
			}, 
			effectiveParameters <- tri1.event.operation.ownedParameter->select(p |  
p.direction <> #return)->collect(o | thisModule.Property2Variables(o)) 
		) 
	do { 
		 
	 
		 
		processTmp <- thisModule.gettingProcessOwner(sc) ; 
		processTmp.variables <- tri1.event.operation.ownedParameter 
				->select(p | p.direction <> #return  
					and not processTmp.variables->collect(v | v.name)->includes(p.name)) 
				->collect(o | thisModule.Property2Variables(o)) ; 
		 
	} 
} 
 
rule Constraint2Guard { 
	from 
		s : UML!Constraint (s.oclIsTypeOf(UML!Constraint)) 
	using { 
		guard : String =  
s.specification.body->at(s.specification.language->indexOf(thisModule.action_language_name))  
; 
	} 
	to 
		g : _IF!Guard ( 
			expression <- '(' + guard +') ' --and ' +  
thisModule.defaultGuardProvided 
		) 
} 
 
rule Operation2Process { 
	from  
		o : UML!Operation (o.oclIsTypeOf(UML!Operation) and not  
o.isStereotyped(thisModule.ster_trigger_operation)) 
	using { 
		defaultStateOfProcessOwner : _IF!State = _IF!State ; 
		tmpState : _IF!State = _IF!State ; 
	} 
	to  
		p : _IF!Process ( 
			id <- thisModule.pre_handler + o.getqualifiedNameIF, 
			states <-  Sequence{w,a,e} , 
			fParameters <- Sequence { 
				 thisModule.newVariable(thisModule.fpar_waiting,'pid',false), 
				thisModule.newVariable(thisModule.fpar_caller,'pid',false), 
				 thisModule.newVariable(thisModule.fpar_callerObj,'pid',false ), 
				thisModule.newVariable(thisModule.fpar_leader,'pid',false) 
			}, 
			variables <- Sequence { 
				thisModule.newVariable(thisModule.fpar_callee,'pid',false), 
				thisModule.newVariable('newOne','pid',false) 
			}, 
			ancestor <- #operation, 
			wasAFunction <- o.ownedParameter->select(p | p.direction =  
#return).size() = 1, 
			fParameters <- o.ownedParameter->select(p | p.direction <>  
#return)->collect(o | thisModule.Property2Variables(o)), 
			processCallee <- o.owner, 
			isConstructor <- o.isStereotyped(thisModule.ster_create), 
			nbInstancesToStart <- 	if  
(o.isStereotyped(thisModule.ster_constructor_root)) then 
										'1' 
									else 
										'0' 
									endif, 
			baseName <- o.owner.owner.getqualifiedNameIF 
		), 
		w : _IF!State ( 
			id <- 'w', 
			options <- #start, 
			transition <- wTransition 
		), 
		a : _IF!State ( 
			id <- 'a', 
			options <- #unstable, 
			transition <- aTransition 
		), 
		aTransition : _IF!Transition ( 
			--deadline <- thisModule.getDeadLine(), 
			-- TODO faire ca plus propre que je check le bon langage 
			statement <-  
				o.getBodyAction(), 
			ifcode <- false, 
			nextState <- e 
		), 
		wTransition : _IF!Transition ( 
			--deadline <- thisModule.getDeadLine(), 
			statement <-  if (o.isConstructor) then 
							'informal "--call default constructor of ' +  
o.owner.getqualifiedNameIF + '-- " ; \n ' 
							+ 'fork u2i__default_constructor_' + o.owner.getqualifiedNameIF +  
'(self, self, u2i__leader, true) ;' 
						else 
							'' 
					endif, 
			ifcode <- o.isConstructor 
		), 
		e : _IF!State ( 
			id <- 'e', 
			options <- #unstable, 
			transition <- eTransition 
		), 
		eTransition : _IF!Transition ( 
			ifcode <- true  
		) 
	do { 
		eTransition.statement <- 'task ({u2i__group_manager}({' +  
o.owner.getqualifiedNameIF + '}u2i__callee).u2i__leader).u2i__stack_length  
:= (({u2i__group_manager}({' + o.owner.getqualifiedNameIF +  
'}u2i__callee).u2i__leader).u2i__stack_length - 1);\n' ;		 
		if (o.isConstructor) { 
			eTransition.statement <- eTransition.statement  
							+ '\tinformal "--return --";\n' 
    						+ '\toutput u2i__return_' + o.getqualifiedNameIF + '(newOne,  
newOne) to u2i__caller;\n' ; 
			tmpState <- thisModule.createDefaultStateW(o,a) ; 
			p.states <- tmpState ; 
			wTransition.nextState <- tmpState ; 
		} 
		else { 
			wTransition.nextState <- a ; 
		} 
		 
    	eTransition.statement <- eTransition.statement  
							+ '\tinformal "--yelding control from ' +  
o.owner.getqualifiedNameIF + '--";\n' 
    						+ '\toutput u2i__complete() to u2i__waiting;\n' ; 
		tmpState <- thisModule.newFinalState () ; 
		p.states <- tmpState ; 
		eTransition.nextState <- tmpState ; 
	} 
} 
 
 ------------------------------------------------------------ ---------- 
-- CALLED RULES 
 ------------------------------------------------------------ ---------- 
	 
rule newEmptyGuard(){ 
	to  
		g : _IF!Guard ( 
			expression <- ''--thisModule.defaultGuardProvided 
		) 
	do { 
		g ; 
	} 
} 
 
rule newFinalState () { 
	to  
		s : _IF!FinalState () 
	do { 
		s ; 
	} 
} 
 
rule newState(sid : String, start : Boolean) { 
	to  
		s : _IF!State ( 
			id <- sid, 
			options <- 	if (start) then 
						 #start 
						else 
						 #null 
						endif 
		) 
	do { 
		s ; 
	} 
} 
 
rule newVariable(sid : String, thetype : String, public : Boolean) { 
	to  
		v : _IF!Vars ( 
			name <- sid, 
			type <- thetype, 
			isPublic <- public 
		) 
	do { 
		v ; 
	} 
} 
 
rule newVariableWithOwner(sid : String, thetype : String, public :  
Boolean, owner : String) { 
	to  
		v : _IF!Vars ( 
			name <- sid, 
			type <- thetype, 
			isPublic <- public, 
			ownerName <- owner 
		) 
	do { 
		v ; 
	} 
} 
 
rule newPriorityRule(sid : String,exp : String) { 
	to  
		p : _IF!PriorityRule ( 
			id <- sid, 
			expression <- exp 
		) 
	do { 
		p ; 
	} 
} 
 
rule newConstant(sid : String, val : String) { 
	to  
		v : _IF!Vars ( 
			name <- sid, 
			value <- val 
		) 
	do { 
		v ; 
	} 
} 
 
rule newType (id : String, statement : String) { 
	to  
		t : _IF!PersonnalType ( 
			name <- id, 
			declaration <- statement 
		) 
	do { 
		t ; 
	} 
} 
 
rule newTransition () { 
	to  
		t : _IF!Transition ( 
			 
		) 
	do { 
		t ; 
	} 
} 
 
rule newTrigger (signal : String, parameters : Sequence(String)) { 
	to  
		t : _IF!Trigger ( 
			input <- aSc 
		), 
		aSc : _IF!SignalCall ( 
			signalReferenced <- thisModule.mapSignals->get(signal) 
		) 
	do { 
		if (not parameters->isEmpty()) { 
			for (s in parameters){ 
				aSc.effectiveParameters <- thisModule.newConstant(s,'') ; 
			} 
		} 
		 
		t ; 
	} 
} 
 
rule createGroupManager (pack : UML!Package) { 
	using { 
		seqOperations : Sequence(UML!Operation) = pack.getOperations() ; 
		max : Integer = 0 ; 
		i : Integer = 1 ; 
		name : String = '' ; 
	} 
	to 
		p : _IF!Process ( 
			id <- 'u2i__group_manager', 
			nbInstancesToStart <- '0', 
			variables <- thisModule.newVariable ('u2i__running','pid',true), 
			variables <- thisModule.newVariable  
('u2i__stack_length','integer',true), 
			variables <- thisModule.newVariable ('u2i__parvar_caller','pid',false), 
			variables <- thisModule.newVariable  
('u2i__parvar_callerObj','pid',false), 
			variables <- thisModule.newVariable ('u2i__parvar_callee','pid',false), 
			-- TODO manage u2i parvar 
			states <- w 
		), 
		w : _IF!State ( 
			id <- 'w', 
			options <- #start, 
			transition <- seqOperations 
				->select(o | not o.isStereotyped(thisModule.ster_create) and not  
o.isStereotyped(thisModule.ster_constructor_root)) 
				->collect(o | thisModule.Operation2GroupManagerTransition(o)) 
		) 
	do { 
		--seq <- seqOperations->collect(o | o.ownedParameter->select(p |  
p.direction <> #return).size()) ; 
		for (v in thisModule.seqVarsGroupManager){ 
			name <- thisModule.var_tmp+ i.toString() ; 
			i <- i + 1 ; 
			p.variables <- thisModule.newVariable(name,v,false) ; 
			 
		} 
		--max <- seq->iterate(e ; res : Integer = 0 |  
		--	if (e > res) then 
		--		e 
		--	else 
		--		res 
		--	endif 
		--); 
		--while (i <= res){ 
--			p.variables <- thisModule.newVariable(thisModule.var_tmp +  
i.toString(),'pid',) 
			-- refaire en prenant compte le type de param !!! 
		--	i <- i + 1 ; 
		--} 
		 
		p ; 
	} 
} 
 
rule manageAssociations (c : UML!Class, s : IF!Process){ 
	using { 
			type : String = '' ; 
			typeStatement : String = '' ; 
			typeVar : String = '' ; 
	} 
	do { 
		for (a in thisModule.getVarsFromAssociations(c)){ 
		typeVar <- a.type.name.getType() ; 
		if (a.upper.toString() = '1') { 
			type <- typeVar ; 
		} 
		else { 
			type <- 'u2i__assoc_MULT_STAR_MAXary___af__' +  
thisModule.getCount.toString(); 
			thisModule.getCount <- thisModule.getCount + 1 ; 
			if (a.upper.toString() = '-1') { 
				typeStatement <- 'array[MULT_STAR_MAX] of ' + typeVar +' ;'  ; 
				s.types <- thisModule.newType(type,typeStatement); 
			} 
			else { 
				s.types <- thisModule.newType(type,'array[' + a.upper.toString() + ']  
of ' + a.type.name.getType() + ';'); 
			} 
			 
		} 
		s.variables <-  
 thisModule.newVariableWithOwner(a.name,type,true,a.type.getq ualifiedNameIF)  
;			 
	} 
	} 
	 
} 
 
rule createDefaultStateW (o : UML!Operation, a : _IF!State){ 
	to  
		w1 : _IF!State ( 
			id <- 'w1', 
			transition <- w2TransitionReturnConstructor, 
			transition <- w2Complete 
		), 
		w2TransitionReturnConstructor : _IF!Transition ( 
			--deadline <- thisModule.getDeadLine(), 
			statement <- 'task u2i__callee := newOne ;\n' 
						+ '\tinformal "-- getting new object --" ;', 
			ifcode <- true, 
			trigger <- tReturnDefaultConstructor 
		), 
		w2Complete : _IF!Transition ( 
			--deadline <- thisModule.getDeadLine(), 
			statement <- 'informal "-- getting back control --" ; ', 
			ifcode <- true, 
			nextState <- a, 
			trigger <- tComplete 
		), 
		tReturnDefaultConstructor : _IF!Trigger ( 
			input <- scReturnDefaultConstructor 
		), 
		tComplete : _IF!Trigger ( 
			input <- scComplete 
		), 
		scReturnDefaultConstructor : _IF!SignalCall ( 
			signalReferenced <-  
 thisModule.mapSignals.get('u2i__return_default_constructor_' +  
o.owner.getqualifiedNameIF), 
			effectiveParameters <- thisModule.newVariable('newOne','',true), 
			effectiveParameters <- thisModule.newVariable('newOne','',true) 
		), 
		scComplete : _IF!SignalCall ( 
			signalReferenced <-thisModule.mapSignals.get('u2i__complete') 
		) 
	do { 
		w1 ; 
	} 
} 
 
 ------------------------------------------------------------ ---------- 
-- LAZY RULES 
 ------------------------------------------------------------ ---------- 
 
-- Transformation => Transition UML 2 a Transition IF 
-- associated transformations : Trigger2Trigger 
lazy rule Transition2Transition { 
	from  
		t : UML!Transition (t.oclIsTypeOf(UML!Transition)) 
	to 
		t2 : _IF!Transition ( 
			trigger <- t.trigger.first(), 
			statement <- t.getBodyAction (), 
			discreteGuard <-  
				if (t.ownedRule.size() = 0) then 
					thisModule.newEmptyGuard() 
				else  
					if  
(t.ownedRule.first().specification.language->indexOf(thisModule.action_language_name)  
< 1) then 
						thisModule.newEmptyGuard() 
					else 
						t.ownedRule.first() 
					endif 
				endif, 
			deadline <- thisModule.getDeadLine('lazy'), 
			nextState <- t.target, 
			fromStateMachine <- true, 
			running <- thisModule.gettingProcessOwner(t).oclIsKindOf(_IF!Process) 
		) 
} 
 
lazy rule InitialState2State { 
	from  
		s : UML!Pseudostate (s.kind = #initial) 
	to  
		si : _IF!State ( 
			id <- 'u2i__init', 
			options <- #start, 
			transition <- s.owner.transition->select(t | t.source = s)->collect(t |  
thisModule.Transition2Transition(t)) 
		) 
} 
 
lazy rule Operation2Transition { 
	from  
		o : UML!Operation (not  
o.isStereotyped(thisModule.ster_trigger_operation)) 
	using { 
		signalName : String = thisModule.pre_call + o.getqualifiedNameIF; 
		processOwner : _IF!Process = _IF!Process ; 
		nbVarOid : Integer = 0 ; 
		nbParams : Integer = 0 ; 
		indice : Integer = 1 ;  
	} 
	to 
		t : _IF!Transition ( 
			deadline <- #lazyO, 
			statement <- 'informal "--dynamic linking to ' + o.owner.name + '::' +  
o.name +' --"; \n' + 
						'\t\tfork ' + thisModule.pre_handler + o.getqualifiedNameIF  
+'(u2i__parvar_waiting, u2i__parvar_caller, u2i__parvar_callerObj, self', 
			trigger <- aTrigger, 
			ifcode <- true 
		), 
		aTrigger : _IF!Trigger ( 
			input <- sc 
		), 
		sc : _IF!SignalCall ( 
			signalReferenced <-  thisModule.mapSignals.get(signalName), 
			effectiveParameters <- Sequence { 
				 thisModule.newVariable(thisModule.var_waiting,'null',false), 
				thisModule.newVariable(thisModule.var_caller,'null',false), 
				 thisModule.newVariable(thisModule.var_callerObj,'null',false ), 
				thisModule.newVariable('void','null',false) 
			} 
		) 
	do { 
		'test'.toString().println() ; 
		processOwner <- _IF!Process.allInstances() 
			->select(p | p.id = o.owner.getqualifiedNameIF).first() ; 
		--processOwner <- thisModule.gettingProcessOwner(t) ; 
		if (not processOwner.oclIsUndefined()) { 
			-- counting the actual number of temp var 
			nbVarOid <- processOwner.variables 
					->select(v | v.name.startsWith(thisModule.var_tmp)).size() ; 
			nbParams <- o.ownedParameter->select(p | p.direction <> #return).size()  
; 
			-- for each parameter adding the host temp var  
			for (p in o.ownedParameter->select(p | p.direction <> #return)){ 
				t.statement <- t.statement + ', ' + thisModule.var_tmp +  
indice.toString() ; 
				sc.effectiveParameters <- thisModule.newVariable(thisModule.var_tmp +  
indice.toString(),p.type.name.getType(),false) ; 
				if (indice > nbVarOid) { 
					processOwner.variables <- thisModule.newVariable(thisModule.var_tmp +  
indice.toString(),p.type.name.getType(),false) ; 
				} 
				indice <- indice + 1 ; 
			}	 
		} 
		t.statement <- t.statement + ') ;' ; 
	} 
} 
 
lazy rule Property2Variables { 
	from  
		p : UML!Property (p.oclIsTypeOf(UML!Property)) 
	to 
		v : _IF!Vars ( 
			name <- p.name, 
			type <- p.type.name.getType(), 
			isPublic <- true, 
			ownerName <- p.owner.getqualifiedNameIF 
		) 
	do { 
		--v.name.println () ; 
		--p.direction.toString().println() ; 
	} 
} 
 
 
 
lazy rule Operation2ReturnSignal { 
	from  
		o : UML!Operation 
	to  
		s : _IF!Signal ( 
			id <- 'u2i__return_' + o.getqualifiedNameIF, 
			-- default parameters for a return signal 
			fparameters <- if (o.isConstructor) then  
				Sequence { 
					thisModule.newVariable (thisModule.sig_callerObj,'pid',false), 
					thisModule.newVariable (thisModule.sig_callee,'pid',false) 
				} 
			else 
				Sequence { 
					thisModule.newVariable (thisModule.sig_callerObj,'pid',false), 
					thisModule.newVariable (thisModule.sig_callee,'pid',false), 
					o.ownedParameter->select(e | e.direction = #return)->collect(o |  
thisModule.Property2Variables(o)) 
				} 
			endif, 
			processFromSameAncestor <- o 
		) 
	do { 
		thisModule.mapSignals <- thisModule.mapSignals.including(s.id,s) ;		 
	} 
} 
 
lazy rule Operation2CallSignal { 
	from  
		o : UML!Operation 
	to  
		s : _IF!Signal ( 
			id <- thisModule.pre_call + o.getqualifiedNameIF, 
			-- default parameters for a call signal 
			fparameters <- Sequence {  
				thisModule.newVariable (thisModule.sig_waiting,'pid',false), 
				thisModule.newVariable (thisModule.sig_callee,'pid',false), 
				thisModule.newVariable (thisModule.sig_callerObj,'pid',false), 
				thisModule.newVariable (thisModule.sig_callee,'pid',false), 
				o.ownedParameter->select(e | e.direction <> #return)->collect(p |  
thisModule.Property2Variables(p)) 
			}, 
			processFromSameAncestor <- o 
			 
		) 
	do { 
		thisModule.mapSignals <- thisModule.mapSignals.including(s.id,s) ;		 
	} 
} 
 
lazy rule Class2DefaultConstSignal { 
	from  
		c : UML!Class 
	to  
		s : _IF!Signal ( 
			id <- 'u2i__return_default_constructor_' + c.getqualifiedNameIF, 
			fparameters <- Sequence { 
				thisModule.newVariable ('proc','pid',false), 
				thisModule.newVariable (thisModule.var_leader,'pid',false) 
			} 
		) 
	do { 
		thisModule.mapSignals <- thisModule.mapSignals.including(s.id,s) ;	 
	} 
} 
 
lazy rule Operation2GroupManagerTransition { 
	from  
		o : UML!Operation 
	using { 
		signalName : String = thisModule.pre_call + o.getqualifiedNameIF ; 
		i : Integer = 1 ; 
		processOwner : _IF!Process = _IF!Process ; 
		tmpName : String = '' ; 
		tmpVar : _IF!Vars = _IF!Vars ; 
	} 
	to  
		t : _IF!Transition ( 
			deadline <- thisModule.getDeadLine('lazy'), 
			ifcode <- true, 
			statement <-  
					'\t\tinformal "--manager forwarding call--";\n' 
				+ 	'\t\ttask u2i__running := u2i__parvar_callee;\n', 
			discreteGuard <- g, 
			trigger <- tr 
		), 
		g : _IF!Guard ( 
			expression <- '(u2i__stack_length = 0)' 
		), 
		tr : _IF!Trigger ( 
			input <- sc 
		), 
		sc : _IF!SignalCall ( 
			signalReferenced <- thisModule.mapSignals.get(signalName) 
		) 
	do { 
		i <- thisModule.seqVarsGroupManager.size() + 1 ; 
		sc.effectiveParameters <- Sequence { 
			thisModule.newConstant('void',''), 
			thisModule.newConstant('u2i__parvar_caller',''), 
			thisModule.newConstant('u2i__parvar_callerObj',''), 
			thisModule.newConstant('u2i__parvar_callee','') 
		} ; 
		t.statement <- t.statement + 
			'\t\toutput ' + signalName + '(nil, u2i__parvar_caller,  
u2i__parvar_callerObj, u2i__parvar_callee' ;  
		for (p in o.ownedParameter->select(p | p.direction <> #return)){ 
			tmpName <- thisModule.var_tmp + i.toString() ; 
			i <- i + 1 ; 
			thisModule.seqVarsGroupManager <-  
 thisModule.seqVarsGroupManager.including(p.type.name.getType ()); 
			sc.effectiveParameters <- thisModule.newConstant(tmpName,''); 
			t.statement <- t.statement + ', ' + tmpName ; 
		} 
		t.statement <- t.statement + ') to u2i__parvar_callee ;' ; 
	} 
} 
 
lazy rule Class2DefaultConstProcess { 
	from  
		c : UML!Class 
	using { 
		stateFinal : _IF!FinalState = thisModule.newFinalState() ; 
	} 
	to 
		p : _IF!Process ( 
			id <- 'u2i__default_constructor_' + c.getqualifiedNameIF, 
			fParameters <- Sequence { 
				thisModule.newVariable (thisModule.fpar_waiting,'pid',false), 
				thisModule.newVariable (thisModule.fpar_caller,'pid',false), 
				thisModule.newVariable (thisModule.var_leader,'pid',false), 
				thisModule.newVariable ('u2i__inside_user_constructor','boolean',false) 
			}, 
			variables <- Sequence { 
				thisModule.newVariable('newOne','pid',false), 
				thisModule.newVariable('child','pid',false) 
			}, 
			states <- stateFinal, 
			states <- stateWithBody 
		), 
		stateWithBody : _IF!State ( 
			id <- 'w', 
			options <- 	#start, 
			transition <- aTransition 
		), 
		aTransition : _IF!Transition ( 
			deadline <- thisModule.getDeadLine(''), 
			nextState <- stateFinal, 
			statement <-  
			 
			if (c.isActive) then 
				-- default code for the default constructor of an active Class 
				'informal "--create new ' + c.getqualifiedNameIF + ' " ; \n' + 
				'\tnewOne := fork ' + c.getqualifiedNameIF + '() ; \n' + 
				'\t({' + c.getqualifiedNameIF + '}newOne).u2i__leader := fork  
u2i__group_manager();\n' + 
				'\tif u2i__inside_user_constructor then\n' + 
      			'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +  
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +  
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 2);\n' + 
   				'\telse \n' + 
      			'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +  
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +  
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 1);\n' + 
    			'\tendif \n' + 
   				'\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +  
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +  
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length - 1);\n' + 
    			'\tinformal "--return --";\n' + 
    			'\toutput u2i__return_default_constructor_' + c.getqualifiedNameIF  
+ '(newOne, newOne) to u2i__caller;\n'+ 
    			'\tinformal "--yelding control --";\n' + 
   				'\toutput u2i__complete() to u2i__waiting;\n' 
			else 
				-- default code for the default constructor of a Class 
				'informal "--create new ' + c.getqualifiedNameIF + ' " ; \n' + 
				'\tnewOne := fork ' + c.getqualifiedNameIF + '() ; \n' + 
				'\ttask ({' + c.getqualifiedNameIF + '}newOne).u2i__leader :=  
u2i__leader ;\n' + 
				'\tif u2i__inside_user_constructor then\n' + 
      			'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +  
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +  
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 2);\n' + 
   				'\telse \n' + 
      			'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +  
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +  
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 1);\n' + 
    			'\tendif \n' + 
   				'\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +  
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +  
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length - 1);\n' + 
    			'\tinformal "--return --";\n' + 
    			'\toutput u2i__return_default_constructor_' + c.getqualifiedNameIF  
+ '(newOne, newOne) to u2i__caller;\n'+ 
    			'\tinformal "--yelding control --";\n' + 
   				'\toutput u2i__complete() to u2i__waiting;\n' 
   			endif, 
   			ifcode <- true 
		) 
} 
 
lazy rule Class2DefaultConstRootProcess { 
	from  
		c : UML!Class 
	using { 
		stateFinal : _IF!FinalState = thisModule.newFinalState() ; 
		stateTmp : _IF!State = _IF!State ; 
		transitionTmp : _IF!Transition = _IF!Transition ; 
		parameters : Sequence (String) = Sequence{'void','child'} ; 
		parametersEmpty : Sequence (String) = Sequence {} ; 
		i : Integer = 1 ;  
		defaultConstName : String = '' ; 
	} 
	to 
		p : _IF!Process ( 
			id <- 'u2i__default_constructor_' + c.getqualifiedNameIF, 
			fParameters <- Sequence { 
				thisModule.newVariable (thisModule.fpar_waiting,'pid',false), 
				thisModule.newVariable (thisModule.fpar_caller,'pid',false), 
				thisModule.newVariable (thisModule.var_leader,'pid',false), 
				thisModule.newVariable ('u2i__inside_user_constructor','boolean',false) 
			}, 
			variables <- Sequence { 
				thisModule.newVariable('newOne','pid',false), 
				thisModule.newVariable('child','pid',false) 
			}, 
			states <- stateFinal, 
			states <- stateWithBody 
		), 
		stateWithBody : _IF!State ( 
			id <- 'w', 
			options <- 	#start, 
			transition <- aTransition 
		), 
		aTransition : _IF!Transition ( 
			deadline <- thisModule.getDeadLine(''), 
			statement <-  
				'informal "--create new ' + c.getqualifiedNameIF + ' " ; \n' + 
				'\tnewOne := fork ' + c.getqualifiedNameIF + '() ; \n' + 
				'\t({' + c.getqualifiedNameIF + '}newOne).u2i__leader := fork  
u2i__group_manager();\n' + 
				'\tif u2i__inside_user_constructor then\n' + 
      			'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +  
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +  
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 2);\n' + 
   				'\telse \n' + 
      			'\t\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +  
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +  
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length + 1);\n' + 
    			'\tendif \n' 
			, 
   			ifcode <- true 
		) 
	do { 
		transitionTmp <- aTransition ; 
		for (pr in thisModule.getVarsFromCompositions(c)){ 
			if (i <= thisModule.getVarsFromCompositions(c).size()){ 
				if (transitionTmp.statement.oclIsUndefined()) { 
					transitionTmp.statement <- '' ; 
				} 
				transitionTmp.statement <- transitionTmp.statement + 
					  	'\tinformal"--create new sub-component' + pr.type.name +  '--";\n' 
						+ '\tfork u2i__default_constructor_' + pr.type.getqualifiedNameIF  
+'(self, self, ({' + c.getqualifiedNameIF + '}newOne).u2i__leader,  
false);'; 
			} 
			stateTmp <- thisModule.newState('w' + i.toString(),false) ; 
			if (i <= thisModule.getVarsFromCompositions(c).size() ) { 
				transitionTmp.nextState <- stateTmp ; 
			} 
			p.states <- stateTmp ; 
			-- transition for return of default constructor 
			transitionTmp <- thisModule.newTransition() ; 
			transitionTmp.deadline <- thisModule.getDeadLine('') ; 
			transitionTmp.ifcode <- true ; 
			defaultConstName <- 'u2i__return_default_constructor_' +  
pr.type.getqualifiedNameIF ; 
			transitionTmp.trigger <-  
thisModule.newTrigger(defaultConstName,parameters); 
			transitionTmp.statement <- 
					  '\tinformal "-- getting return into ' + pr.name + ' --";\n' 
					+ '\ttask ({' + c.getqualifiedNameIF + '}newOne).' + pr.name + ' :=  
child ;' ;  
			stateTmp.transition <- transitionTmp ; 
			-- transition for return of complete 
			transitionTmp <- thisModule.newTransition() ; 
			transitionTmp.trigger <-  
thisModule.newTrigger('u2i__complete',parametersEmpty) ; 
			transitionTmp.ifcode <- true ; 
			transitionTmp.deadline <- thisModule.getDeadLine('') ; 
			stateTmp.transition <- transitionTmp ; 
			i <- i + 1 ; 
		} 
		transitionTmp.nextState <- stateFinal ; 
		transitionTmp.statement <- 
			    '\tinformal "--getting back control by  
u2i__default_constructor_root--";\n' 
			  + '\ttask ({u2i__group_manager}({' + c.getqualifiedNameIF +  
'}newOne).u2i__leader).u2i__stack_length := (({u2i__group_manager}({' +  
c.getqualifiedNameIF + '}newOne).u2i__leader).u2i__stack_length - 1);\n' 
			  + '\tinformal "--return--";\n' 
			  + '\toutput u2i__return_default_constructor_' + c.getqualifiedNameIF  
+ '(newOne, newOne) to u2i__caller ;\n' 
			  + '\tinformal "--yelding control--";\n' 
			  + '\toutput u2i__complete() to u2i__waiting;' ; 
	} 
} 
 
lazy rule Class2Observer { 
	from 
		c : UML!Class (c.oclIsTypeOf(UML!Class) and  
c.isStereotyped(thisModule.ster_class)) --and c.isActive 
	using { 
			aPriorityRule : _IF!PriorityRule = _IF!PriorityRule ;  
	} 
	to 
		s : _IF!Observer ( 
			id <- c.getqualifiedNameIF, 
			variables <-  
c.ownedMember->select(a|a.oclIsTypeOf(UML!Property))->collect(p |  
thisModule.Property2Variables(p)), 
			-- default variables for a process 
			variables <- Sequence {  
				thisModule.newVariable (thisModule.var_obs_by,'pid',true), 
				thisModule.newVariable (thisModule.var_obs_vars,'pid',false), 
				thisModule.newVariable (thisModule.var_obs_tmp,'pid',false) 
			}, 
			--variables <- thisModule.getVarsFromAssociations(c)->collect(o |  
thisModule.Property2Variables(o)), 
			ancestor <- #class, 
			 ------------------------------------------------------------ --- 
			--states <- thisModule.newFinalState, 
			states <- defaultState, 
			baseName <- c.owner.getqualifiedNameIF 
		), 
		defaultState : _IF!State ( 
			id <- thisModule.state_default_top, 
			options <- #start, 
			transition <- c.ownedOperation 
							->select(o | not o.isStereotyped(thisModule.ster_trigger_operation) and  
not o.isConstructor) 
							->collect(o | thisModule.Operation2Transition(o)), 
			subState <- c.ownedMember->select(e |  
e.isStereotyped(thisModule.ster_state_machine)) 
		) 
	do { 
		thisModule.manageAssociations(c,s) ; 
	} 
} 
 
 ============================================================ =========== 
 
the error is : 
 
ATL Console initiated 
Dumping ASM to D:/workspace/uml2ifATL/umlFW2if.asm 
Warning: one refSetting crashed: 
java.lang.NullPointerException 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:575) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:599) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doIt( EBNFInjector2.java:723) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:272) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:201) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:150) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.inject(EBNFInjec tor2.java:76) 
	at  
 org.eclipse.m2m.atl.engine.AtlParser.parseToModelWithProblem s(AtlParser.java:53) 
	at  
 org.eclipse.m2m.atl.engine.AtlDefaultCompiler.internalCompil e(AtlDefaultCompiler.java:107) 
	at  
 org.eclipse.m2m.atl.engine.AtlDefaultCompiler.compileWithPro blemModel(AtlDefaultCompiler.java:49) 
	at  org.eclipse.m2m.atl.engine.AtlCompiler.compile(AtlCompiler.j ava:78) 
	at  
 org.eclipse.m2m.atl.adt.builder.AtlBuildVisitor.visit(AtlBui ldVisitor.java:71) 
	at  org.eclipse.core.internal.resources.Resource$2.visit(Resourc e.java:105) 
	at  
 org.eclipse.core.internal.resources.Resource$1.visitElement( Resource.java:57) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:81) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:85) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.iterate (ElementTreeIterator.java:126) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:67) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:103) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:87) 
	at  
 org.eclipse.m2m.atl.adt.builder.AtlBuilder.fullBuild(AtlBuil der.java:43) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder$1.run(AtlBuilder. java:32) 
	at  org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1797) 
	at  org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1779) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder.run(AtlBuilder.ja va:53) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder.build(AtlBuilder. java:35) 
	at  
 org.eclipse.core.internal.events.BuildManager$2.run(BuildMan ager.java:624) 
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:166) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:197) 
	at  
 org.eclipse.core.internal.events.BuildManager$1.run(BuildMan ager.java:246) 
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:249) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuildLoop (BuildManager.java:302) 
	at  
 org.eclipse.core.internal.events.BuildManager.build(BuildMan ager.java:334) 
	at  
 org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBu ildJob.java:137) 
	at  
 org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJ ob.java:235) 
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
Warning: one refSetting crashed: 
java.lang.NullPointerException 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:575) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:599) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doIt( EBNFInjector2.java:723) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:272) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:201) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:150) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.inject(EBNFInjec tor2.java:76) 
	at  
 org.eclipse.m2m.atl.engine.AtlParser.parseToModelWithProblem s(AtlParser.java:53) 
	at  
 org.eclipse.m2m.atl.engine.AtlDefaultCompiler.internalCompil e(AtlDefaultCompiler.java:107) 
	at  
 org.eclipse.m2m.atl.engine.AtlDefaultCompiler.compileWithPro blemModel(AtlDefaultCompiler.java:49) 
	at  org.eclipse.m2m.atl.engine.AtlCompiler.compile(AtlCompiler.j ava:78) 
	at  
 org.eclipse.m2m.atl.adt.builder.AtlBuildVisitor.visit(AtlBui ldVisitor.java:71) 
	at  org.eclipse.core.internal.resources.Resource$2.visit(Resourc e.java:105) 
	at  
 org.eclipse.core.internal.resources.Resource$1.visitElement( Resource.java:57) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:81) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:85) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.iterate (ElementTreeIterator.java:126) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:67) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:103) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:87) 
	at  
 org.eclipse.m2m.atl.adt.builder.AtlBuilder.fullBuild(AtlBuil der.java:43) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder$1.run(AtlBuilder. java:32) 
	at  org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1797) 
	at  org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1779) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder.run(AtlBuilder.ja va:53) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder.build(AtlBuilder. java:35) 
	at  
 org.eclipse.core.internal.events.BuildManager$2.run(BuildMan ager.java:624) 
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:166) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:197) 
	at  
 org.eclipse.core.internal.events.BuildManager$1.run(BuildMan ager.java:246) 
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:249) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuildLoop (BuildManager.java:302) 
	at  
 org.eclipse.core.internal.events.BuildManager.build(BuildMan ager.java:334) 
	at  
 org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBu ildJob.java:137) 
	at  
 org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJ ob.java:235) 
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
Warning: one refSetting crashed: 
java.lang.NullPointerException 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:575) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:599) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doIt( EBNFInjector2.java:723) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:272) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:201) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:150) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.inject(EBNFInjec tor2.java:76) 
	at  
 org.eclipse.m2m.atl.engine.AtlParser.parseToModelWithProblem s(AtlParser.java:53) 
	at  
 org.eclipse.m2m.atl.engine.AtlDefaultCompiler.internalCompil e(AtlDefaultCompiler.java:107) 
	at  
 org.eclipse.m2m.atl.engine.AtlDefaultCompiler.compileWithPro blemModel(AtlDefaultCompiler.java:49) 
	at  org.eclipse.m2m.atl.engine.AtlCompiler.compile(AtlCompiler.j ava:78) 
	at  
 org.eclipse.m2m.atl.adt.builder.AtlBuildVisitor.visit(AtlBui ldVisitor.java:71) 
	at  org.eclipse.core.internal.resources.Resource$2.visit(Resourc e.java:105) 
	at  
 org.eclipse.core.internal.resources.Resource$1.visitElement( Resource.java:57) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:81) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:85) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.iterate (ElementTreeIterator.java:126) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:67) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:103) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:87) 
	at  
 org.eclipse.m2m.atl.adt.builder.AtlBuilder.fullBuild(AtlBuil der.java:43) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder$1.run(AtlBuilder. java:32) 
	at  org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1797) 
	at  org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1779) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder.run(AtlBuilder.ja va:53) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder.build(AtlBuilder. java:35) 
	at  
 org.eclipse.core.internal.events.BuildManager$2.run(BuildMan ager.java:624) 
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:166) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:197) 
	at  
 org.eclipse.core.internal.events.BuildManager$1.run(BuildMan ager.java:246) 
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:249) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuildLoop (BuildManager.java:302) 
	at  
 org.eclipse.core.internal.events.BuildManager.build(BuildMan ager.java:334) 
	at  
 org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBu ildJob.java:137) 
	at  
 org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJ ob.java:235) 
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
Warning: one refSetting crashed: 
java.lang.NullPointerException 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:575) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:599) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doIt( EBNFInjector2.java:723) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:272) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:201) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:150) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.inject(EBNFInjec tor2.java:76) 
	at  
 org.eclipse.m2m.atl.engine.AtlParser.parseToModelWithProblem s(AtlParser.java:53) 
	at  
 org.eclipse.m2m.atl.engine.AtlDefaultCompiler.internalCompil e(AtlDefaultCompiler.java:107) 
	at  
 org.eclipse.m2m.atl.engine.AtlDefaultCompiler.compileWithPro blemModel(AtlDefaultCompiler.java:49) 
	at  org.eclipse.m2m.atl.engine.AtlCompiler.compile(AtlCompiler.j ava:78) 
	at  
 org.eclipse.m2m.atl.adt.builder.AtlBuildVisitor.visit(AtlBui ldVisitor.java:71) 
	at  org.eclipse.core.internal.resources.Resource$2.visit(Resourc e.java:105) 
	at  
 org.eclipse.core.internal.resources.Resource$1.visitElement( Resource.java:57) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:81) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.doItera tion(ElementTreeIterator.java:85) 
	at  
 org.eclipse.core.internal.watson.ElementTreeIterator.iterate (ElementTreeIterator.java:126) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:67) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:103) 
	at  org.eclipse.core.internal.resources.Resource.accept(Resource .java:87) 
	at  
 org.eclipse.m2m.atl.adt.builder.AtlBuilder.fullBuild(AtlBuil der.java:43) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder$1.run(AtlBuilder. java:32) 
	at  org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1797) 
	at  org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1779) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder.run(AtlBuilder.ja va:53) 
	at  org.eclipse.m2m.atl.adt.builder.AtlBuilder.build(AtlBuilder. java:35) 
	at  
 org.eclipse.core.internal.events.BuildManager$2.run(BuildMan ager.java:624) 
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:166) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:197) 
	at  
 org.eclipse.core.internal.events.BuildManager$1.run(BuildMan ager.java:246) 
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuild(Bui ldManager.java:249) 
	at  
 org.eclipse.core.internal.events.BuildManager.basicBuildLoop (BuildManager.java:302) 
	at  
 org.eclipse.core.internal.events.BuildManager.build(BuildMan ager.java:334) 
	at  
 org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBu ildJob.java:137) 
	at  
 org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJ ob.java:235) 
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
Warning: one refSetting crashed: 
java.lang.NullPointerException 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:575) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doItF orContext(EBNFInjector2.java:599) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2$RefSetting.doIt( EBNFInjector2.java:723) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:272) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:201) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.performImportati on(EBNFInjector2.java:150) 
	at  
 org.atl.engine.injectors.ebnf.EBNFInjector2.inject(EBNFInjec tor2.java:76) 
	at  
 org.eclipse.m2m.atl.engine.AtlParser.parseToModelWithProblem s(AtlParser.java:53) 
	at  
 org.eclipse.m2m.atl.engine.AtlDefaultCompiler.internalCompil e(AtlDefaultCompiler.java:107) 
	at  
 org.eclipse.m2m.atl.engin
 |  
 |  
  |   |   |   
Goto Forum:
 
 Current Time: Tue Nov 04 05:50:56 EST 2025 
 Powered by  FUDForum. Page generated in 0.03396 seconds  
 |