如何从文件创建 Rascal AST
How to create an Rascal AST from file
我在 Rascal 网站上找到了文档:
http://tutor.rascal-mpl.org/Rascal/Libraries/lang/java/m3/AST/createAstFromFile/createAstFromFile.html
但老实说,我不知道如何应用它。有人可以给我一个如何在代码中应用它的例子吗?
我已经尝试了一些东西,但是要么得到 missing modifier "java" 要么 undeclared variables 错误,这对我一点帮助都没有。
我目前停留在:
ast = createAstFromFile(l,true,"1.8");
另外两个问题:"Declaration" 在这里添加了什么?在这种情况下,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|
}
我也有过类似的运气,但找到了以下解决方法:
import lang::java::jdt::m3::AST;
createAstsFromEclipseProject(|project://myProject|,true)
这将为您提供该项目的所有 asts,您可以 select 从中找到您需要的。
问题与编译器参数(类路径等)有关。当给定一个项目时,该函数可以从项目配置中获取元信息,从而使其正常工作。
- collectBindings 意味着文件不仅会被解析,还会执行名称绑定和类型绑定。这很有用,但需要更多时间。
Declaration
只是声明某物的一般类型。
我在 Rascal 网站上找到了文档: http://tutor.rascal-mpl.org/Rascal/Libraries/lang/java/m3/AST/createAstFromFile/createAstFromFile.html 但老实说,我不知道如何应用它。有人可以给我一个如何在代码中应用它的例子吗? 我已经尝试了一些东西,但是要么得到 missing modifier "java" 要么 undeclared variables 错误,这对我一点帮助都没有。
我目前停留在:
ast = createAstFromFile(l,true,"1.8");
另外两个问题:"Declaration" 在这里添加了什么?在这种情况下,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|
}
我也有过类似的运气,但找到了以下解决方法:
import lang::java::jdt::m3::AST;
createAstsFromEclipseProject(|project://myProject|,true)
这将为您提供该项目的所有 asts,您可以 select 从中找到您需要的。
问题与编译器参数(类路径等)有关。当给定一个项目时,该函数可以从项目配置中获取元信息,从而使其正常工作。
- collectBindings 意味着文件不仅会被解析,还会执行名称绑定和类型绑定。这很有用,但需要更多时间。
Declaration
只是声明某物的一般类型。