Command line 可以从命令行运行流氓程序吗?
我知道如何在eclipse中运行rascal代码以及如何使用REPL,但我不知道如何从命令行将rascal文件(或一组rascal文件)作为程序运行 当我尝试以下操作时,我得到一个解析错误: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,
$ 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");
}