【问题标题】:Is it possible to run rascal programs from the command line?是否可以从命令行运行流氓程序?
【发布时间】:2015-01-20 13:43:44
【问题描述】:

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

当我尝试以下操作时,出现解析错误:

$ 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的内容:

module mymodule

println("hello world");

我做错了什么?

【问题讨论】:

    标签: command-line rascal


    【解决方案1】:

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

    module mymodule
    
    import IO;
    
    value main(list[value] args) {
        println("hello world");
    }
    

    奖励:您还应该添加import IO; 以使println 功能可用。

    【讨论】:

    • 谢谢!我完全忘记了你不能在函数之外有正常的语句。我添加了一个void main(list[str] args) 函数来包含我的“hello world”,它可以工作!然而令人困惑的是,Eclipse 中的控制台不需要我在println 之前输入import IO;,而没有它,模块内的代码将无法工作。此外,当我使用“Run As Rascal Application”运行时,我收到以下错误:The called signature: main(), does not match the declared signature: void main(list[value]);。为什么预期的签名与我从命令行调用模块时不同?
    • (1) Inside Eclipse IO 会自动导入,以方便用户使用。与命令行的不兼容确实很烦人。 (2) 调用应为main([])(参数为空列表)。
    • 关于控制台应用程序中的main方法,您也可以使用关键字参数main(str bar ="foobar"),在命令行中可以使用-bar barfoo
    • 是否可以抑制解释器发出的“版本:X”行?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多