| Home » Archived » M2M (model-to-model transformation) » [ATL]Bug report : crash when compilation error
 Goto Forum:| 
| [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
 |  |  |  |  |  |  |  | 
 
 
 Current Time: Thu Oct 30 22:58:20 EDT 2025 
 Powered by FUDForum . Page generated in 0.04504 seconds |