【问题标题】:Undeclared type: createM3FromEclipseProject (Rascal)未声明的类型:createM3FromEclipseProject (Rascal)
【发布时间】:2017-03-08 20:41:55
【问题描述】:

在以下模块中,我尝试添加 myModel 以进行调试以查看 AST。

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|

我不明白错误是什么。

【问题讨论】:

    标签: import abstract-syntax-tree rascal


    【解决方案1】:

    我认为问题出在

    alias myModel = createM3FromEclipseProject(loc project);

    你想用这个别名来达到什么目的?我认为您不想使用别名,而是想这样做:

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

    println(m);

    【讨论】:

    • 我只想添加一个变量说 m = createM3FromEclipseProject(loc project);并打印出来。
    • myModel = createM3FromEclipseProject(loc project);在我的项目中声明它时,我得到了解析。然而,它在我的控制台中工作。
    • 对不起,我听不懂你的意思。
    【解决方案2】:

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

    您可以使用aliastypes 创建一个新名称,而createM3FromEclipseProject(loc project) 似乎是一个函数的声明。如果你想调用一个你似乎正在做的函数,你需要提供一个变量/值作为参数:createM3FromEclipseProject(|project://eLib|) 如果你想从 Eclipse 项目“eLib”“创建一个 M3” ”。

    【讨论】:

      【解决方案3】:

      两个答案都是正确的,你不能为全局变量使用别名。如果你想创建一个全局变量(在大多数情况下我们不建议这样做),你必须给出该变量的类型。我们只允许对局部变量进行类型推断。

      所以在你的具体情况下应该是:

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

      在大多数情况下,您希望在 main 方法中而不是在模块导入时执行此操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多