2012-12-18 8 views
0

나는이 IScope 방법에있어 : ​​Xtext : 범위 메서드가 실행되지 않습니까?

IScope scope_Assignment(AssignmentOrFBCall a, EReference ref){ 
    System.out.println(a.toString()); 
    return IScope.NULLSCOPE; 
} 

을하지만 어떤 결과를 생성하지 않습니다. println 및 내용 도우미가있는 출력의 내용은 변경되지 않습니다. 그래서 나는 그것이 실행되지 않았다고 생각했지만, 중단 점을 추가하려고하면 그것을 넘을 것입니다.

그래서 문제가 어디에 있습니까?

문법 규칙은 이것이다 :이 범위 제공 업체에 해결

AssignmentOrFBCall: 
    (((variable=[VariableDefinition]) | 
    ((variableArray=[ArrayDefinition]'['index=ExpressionIndex']')('.'internalVariable=InternalRecursive)?) | 
    (variableStructOrFB=[VariableDefinition]'.')(internalVariable=InternalRecursive)) 
    ((':='expression=Expression)|('('(parameter=FBParameter | ')')))) 
; 
+0

이해가 안 : 한 손으로 더 출력이 다른 한편으로 중단 점에에, 없다라고 도시 된 방법이 교차된다. 이것은 제정신이 아닐 수 있습니다. 중단 점을 초과하면 _some_ 출력이 있어야합니다 (빈 줄이면 이벤트). 명확히하십시오. –

답변

0

:

@Override 
    protected IScope createLocalVarScope(IScope parentScope, 
      LocalVariableScopeContext scopeContext) { 
     if (scopeContext != null && scopeContext.getContext() != null) { 
      EObject context = scopeContext.getContext(); 
      if (context instanceof Program) { 
       Program program = (Program) context; 
       return Scopes.scopeFor(program.getDeclarations()); 
      } 
     } 

     return super.createLocalVarScope(parentScope, scopeContext); 
    }