【问题标题】:How to create an Rascal AST from file如何从文件创建流氓 AST
【发布时间】:2018-12-14 03:05:22
【问题描述】:

我在 Rascal 网站上找到了文档: http://tutor.rascal-mpl.org/Rascal/Libraries/lang/java/m3/AST/createAstFromFile/createAstFromFile.html 但老实说,我不知道如何应用它。有人可以给我一个如何在代码中应用它的例子吗? 我尝试了一些方法,但要么缺少修饰符“java”要么出现未声明的变量错误,这对我没有任何帮助。

我目前被困在:

ast = createAstFromFile(l,true,"1.8");

另外两个问题:“声明”在这里添加了什么?在这种情况下,collectBindings 布尔值是什么意思? (与 Rascal 的这一部分相关的文档不是那么清楚)

附加信息:

rascal>import lang::java::jdt::m3::Core;
ok
rascal>createM3FromEclipseFile(|project://smallsql/src/smallsql/tools/CommandLine.java|);
|plugin://rascal_eclipse/src/org/rascalmpl/eclipse/library/lang/java/jdt/Project.rsc|(276,127,<11,0>,<12,47>): IO("**smallsql does not exist**")
        at somewhere plugin://rascal_eclipse/src/org/rascalmpl/eclipse/library/lang/java/jdt/Project.rsc|(276,127,<11,0>,<12,47>))
        at classPathForProject(|plugin://rascal_eclipse/src/org/rascalmpl/eclipse/library/lang/java/jdt/m3/Core.rsc|(1776,2,<54,55>,<54,57>))
        at $root$(|prompt:///|(0,82,<1,0>,<1,82>))


rascal>projects();
set[loc]: {
  |project://smallsql|,
  |project://MetricsTest|,
  |project://Analysis|,
  |project://hsqldb|
}

【问题讨论】:

    标签: java rascal


    【解决方案1】:

    我也有类似的运气,但找到了以下解决方法:

    import lang::java::jdt::m3::AST;
    createAstsFromEclipseProject(|project://myProject|,true)
    

    这将为您提供项目的所有 ast,您可以从中选择您需要的。

    问题在于编译器参数(类路径等)。当给定一个项目时,该函数可以从项目配置中获取元信息,使其正常工作。

    • collectBindings 意味着文件不仅被解析,而且还执行名称绑定和类型绑定。这很有用,但需要更多时间。
    • Declaration 只是声明某事的一般类型。

    【讨论】:

    • 注意:这个方法目前在 Rascal 中已经不存在了。 Rascal 文档严重过时,包括已删除的方法,例如 getMethodASTEclipse。这些东西在问题跟踪器上已经存在将近 4 年了,并且似乎已放弃更新文档。
    • 同意我们对文档的贡献不足。很难找到时间,但与此同时 stackoverfkow 可以提供帮助。这里提到的函数还在:在这个模块中 lang::java::jdt::m3::AST
    • 您可以在docs.rascal-mpl.org 关注我们的重新文档化进度,该文档来自 CI。在过去的几周里,通过将文档与另一个 Rascal 运行时链接起来解决了许多问题。现在我们正在努力拆分每个库模块的文档并很好地重新集成。由于其他优先事项,这是一个缓慢的过程。
    • 这确实很烦人。我没有意识到它仍然这样做。感谢您的平!如果这让很多人感到困扰,那就应该优先考虑。
    • 原来不是。我很抱歉。
    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2015-07-10
    • 2016-06-28
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多