Command line 可以从命令行运行流氓程序吗?

Command line 可以从命令行运行流氓程序吗?,command-line,rascal,Command Line,Rascal,我知道如何在eclipse中运行rascal代码以及如何使用REPL,但我不知道如何从命令行将rascal文件(或一组rascal文件)作为程序运行 当我尝试以下操作时,我得到一个解析错误: $ java -Xmx1G -Xss32m -jar rascal-shell-stable.jar mymodule.rsc Version: 0.7.2.201501130937 Parse error in cwd:///mymodule.rsc from <1,11> to <1,

我知道如何在eclipse中运行rascal代码以及如何使用REPL,但我不知道如何从命令行将rascal文件(或一组rascal文件)作为程序运行

当我尝试以下操作时,我得到一个解析错误:

$ java -Xmx1G -Xss32m -jar rascal-shell-stable.jar mymodule.rsc
Version: 0.7.2.201501130937
Parse error in cwd:///mymodule.rsc from <1,11> to <1,12>

我做错了什么?

好吧,您的
mymodule.rsc
实际上在语法上是不正确的,并且会在Eclipse IDE中给出解析错误。以下是一个改进的版本:

module mymodule

import IO;

value main(list[value] args) {
    println("hello world");
}

奖励:您还应该添加
导入IO
使
println
功能可用。

谢谢!我完全忘记了函数外不能有普通语句。我添加了一个
void main(list[str]args)
函数来封装我的“hello world”,它可以工作!然而,令人困惑的是,eclipse内部的控制台不需要我
导入IO在一个
println
之前,而没有它模块内的代码就不能工作。另外,当我使用“以流氓身份运行应用程序”运行时,会出现以下错误:
调用的签名:main(),与声明的签名:void main(list[value])不匹配。为什么预期的签名与我从命令行调用模块时不同?(1)Eclipse IO内部会自动导入,以方便用户。与命令行的不兼容确实令人讨厌。(2) 调用应该是
main([])
(参数是一个空列表)。关于控制台应用程序中的main方法,您还可以使用关键字参数
main(str bar=“foobar”)
,该参数在命令行中可用为
-bar barfoo
,是否可以抑制解释器发出的“Version:X”行?
module mymodule

import IO;

value main(list[value] args) {
    println("hello world");
}