从REPL外部运行Rascal程序

时间:2015-04-14 18:43:12

标签: rascal

我真的希望能够从REPL之外运行一些Rascal程序(例如,作为脚本的一部分,或从另一个程序调用)。在大型框架中,我使用Rascal的是中间阶段,所以我想知道从另一个程序集成执行Rascal代码的最佳方法是什么。

2 个答案:

答案 0 :(得分:3)

现在最好的方法是将代码与Rascal shell可执行jar打包在一起。调用Rascal代码有一个便利类JavaToRascal。有时需要考虑使用IRascalSearchPathContributor将自己的模块添加到Rascal搜索路径,但如果包含具有正确属性的RASCAL.MF文件,则所有文件都应自动进行。

如果您正在考虑使用Eclipse插件,那么最好的方法是让您的插件依赖于rascal-eclipse插件并使用ProjectEvaluatorFactory来访问解释器。

警告:由于我们正在转向已编译的系统,因此为这种集成编写的代码将会发生变化。这就是我们尚未记录用于从Java调用Rascal的API的原因。

答案 1 :(得分:1)

当我在思考同样的问题时,这是我想出的(也许是微不足道的)答案:

java -jar /path/to/rascal-shell-stable.jar path/to/myProgram.rsc

您必须知道,Rascal会从当前目录计算模块名称(不知道它是否支持Java的CLASS_PATH之类的东西),因此在上面的示例中,myProgram.rsc的模块声明应为module path::to::myProgram 。计算和声明的模块名称必须匹配。