2017-03-08 6 views
0

다음 모듈에서 AST를보기 위해 디버깅 목적으로 myModel을 추가하려고했습니다.선언되지 않은 유형 : createM3FromEclipseProject (Rascal)

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| 

내가 실수가 무엇인지 이해가 안 : 나는 장난 꾸러기 콘솔에서 위의 모듈을 가져올 때

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); 
.... 

, 나는 다음과 같은 오류가 발생합니다.

답변

1

나는 문제는이 별명에 달성하기 위해 노력하고 무엇

alias myModel = createM3FromEclipseProject(loc project);

에게 있습니다 생각하십니까? 내가 대신이 작업을 수행하려면, 당신이 별칭을 사용하지 않을 생각 :

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

println(m);

+0

변수를 추가하고 싶습니다. m = createM3FromEclipseProject (loc project); 인쇄하십시오. –

+0

내 대답을 편집했습니다. – Kasper

+0

myModel = createM3FromEclipseProject (loc 프로젝트); 프로젝트에서 선언 할 때 구문 분석이 표시됩니다. 반면, 그것은 내 콘솔에서 작동합니다. –

1

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

당신은 유형의 새 이름을 만들 alias을 사용할 수 있습니다

인 반면 createM3FromEclipseProject(loc project)은 함수의 선언 인 것 같습니다. 함수를 호출하려면 이클립스 프로젝트 "eLib"에서 "M3"를 만들려면 변수/값을 매개 변수로 제공해야합니다 (createM3FromEclipseProject(|project://eLib|)).

1

두 답변이 모두 옳다. 전역 변수에 별명을 사용할 수 없습니다. 전역 변수 (대부분의 경우 우리가 조언하는)를 만들고 싶다면 그 변수의 유형을 지정해야합니다. 지역 변수에 대해서만 타입 유추를 허용합니다.

그래서 특정 경우에 그것은해야한다 : 대부분의 경우

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

당신이 당신의 주요 방법 대신 모듈 가져 오기 시간에이 작업을 수행 할 수.