getMethodASTEclipse() returns 未声明的变量

getMethodASTEclipse() returns undeclared variable

我是 Rascal 的新手,我正在尝试使用以下代码从 eclipse 项目创建 AST

Module FirstTryAST
import lang::java::m3::Core;
import lang::java::jdt::m3::Core;
import Set;
import Relation;
import IO;  
import List;
import Map;
import Exception;
import ParseTree;

void test(){
    M3 myModel = createM3FromEclipseProject(|project://MyProject/|);
    println("Loaded M3 model, looping through methods..");

    for(m <- methods(model)) mAST = getMethodASTEclipse(m);

    println("Success");
}

当程序(运行 在 eclipse Rascal 控制台中)试图执行

getMethodASTEclipse(m);

它returns:

|plugin://rascal_eclipse/src/org/rascalmpl/eclipse/library/lang/java/jdt/m3/Core.rsc|(1238,18,<40,12>,<40,30>): Undeclared variable: getModelContaining

我该如何解决这个问题/我做错了什么?

我在 Ubuntu 15.04 (Cinnamon) 上使用 Eclipse Mars。 如果您需要更多信息,请告诉我。

Update:

当我使用 getMethodASTEclipse(m, model = myModel) 时它工作正常。 虽然这个解决方法对我有用,但我仍然想知道为什么我会收到这个未声明的变量消息的答案。

这已被翻译成 issue on github。这是一个未使用的功能,我想我们会删除它。

要获得 AST,请使用 lang::java::jdt::m3::AST::createAstsFromEclipseProjectlang::java::jdt::m3::AST::createAstsFromEclipseFile。使用 rascal 模式匹配,你可以找到里面的方法。