0

私はこの IScope メソッドを持っています:

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 | ')'))))
;
4

1 に答える 1

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);
    }
于 2013-01-02T09:24:39.543 に答える