2017-03-08 4 views
0

次のモジュールでは、ASTを表示するためにデバッグ目的でmyModelを追加しようとしました。宣言されていない型:createM3FromEclipseProject(Rascal)

module FlowGraphsAndClassDiagrams 

import analysis::flow::ObjectFlow; 
import lang::java::flow::JavaToObjectFlow; 
// Added to check the M3 model 
import lang::java::jdt::m3::AST; 

import List; 
import Relation; 
import lang::java::m3::Core; 

import IO; 
import vis::Figure; 
import vis::Render; 
import analysis::m3::TypeSymbol; 
alias OFG = rel[loc from, loc to]; 
//To view the M3 model from the whole eclipse project 
alias myModel = createM3FromEclipseProject(loc project); 
.... 

私は与太者コンソールで上記のモジュールをインポートすると、私は次のエラーを取得する:

Reloading module FlowGraphsAndClassDiagrams 
|console:///|:Could not load FlowGraphsAndClassDiagrams 
|console:///|:could not reimport FlowGraphsAndClassDiagrams 
|project://my_project/src/FlowGraphsAndClassDiagrams.rsc|(428,26,<18,16>,<18,42>): Undeclared type: createM3FromEclipseProject 
Advice: |http://tutor.rascal-mpl.org/Errors/Static/UndeclaredType/UndeclaredType.html| 

私は間違いが何であるかを理解していません。

答えて

1

私はこの問題は、あなたがこのエイリアスを達成するために何をしようとしている

alias myModel = createM3FromEclipseProject(loc project);

であると思いますか?私の代わりにこれを行うにしたい、あなたはエイリアスを使用したくないと思う:

m = createM3FromEclipseProject(|project://eLib|);

println(m);

+0

変数を追加したいだけです。m = createM3FromEclipseProject(locプロジェクト)。 と印刷してください。 –

+0

私は私の答えを編集しました。 – Kasper

+0

myModel = createM3FromEclipseProject(locプロジェクト); 私のプロジェクトでそれを宣言するときに解析を受け取りました。それどころか、私のコンソールで動作します。 –

1

http://tutor.rascal-mpl.org/Rascal/Rascal.html#/Rascal/Declarations/Alias/Alias.html

あなたは種類の新しい名前を作成するためにaliasを使用することができますcreateM3FromEclipseProject(loc project)は関数の宣言のようです。 という関数を呼びたい場合は、eclipseプロジェクト "eLib"から "M3を作成"するには、パラメータとして変数/値を指定する必要があります。createM3FromEclipseProject(|project://eLib|)

1

両方の回答が正しい場合、グローバル変数にエイリアスを使用することはできません。大域変数を作成したい場合(ほとんどの場合はこれに対して忠告します)、その変数の型を指定する必要があります。我々はローカル変数の型推論しか許さない。

だからあなたの特定のケースでは、それは次のようになります。あなたは、メインメソッドではなく、モジュールのインポート時にこれをしたい、多くの場合

M3 myModel = createM3FromEclipseProject(|project://eLib|); 

関連する問題