【问题标题】:Setting up a Rascal example project设置一个 Rascal 示例项目
【发布时间】:2023-01-04 17:07:21
【问题描述】:

我如何设置一个 Rascal-MPL 项目来使用用 Rascal 构建的 DSL?

我似乎没有找到任何详细说明如何解决该特定问题的资源

【问题讨论】:

    标签: rascal


    【解决方案1】:

    没有为这种情况编写文档,但这里有:

    • 使用 util::Reflective 中的 newRascalProject 创建基本设置。对于有意义的 DSL 项目和消费项目。
    • mvn install 在 DSL 项目中,如果您没有在 Eclipse 或 VScode 中打开 DSL 项目文件夹,或者如果您正在使用裸机 Unix/Maven。
    • 在客户项目的RASCAL.MF中添加Require-Libraries: |lib://dsl-project|
    • 在客户端项目的 pom.xml 中添加对 DSL jar 的依赖。
    • 为客户端项目的文件重新启动控制台或终端。

    在终端中,将打印解释器路径配置的活动版本。它应该在srcs 列表中包含 DSL 项目。

    在 Rascal LSP 的 VScode 日志中,您可以看到在编译/检查客户端项目中的源文件时打印的路径配置。 DSL 项目应该位于 libs 路径中。

    如果 DSL 项目未编译为出现在目标文件夹中并最终出现在 jar 中的 .tpl 文件,您将在客户端代码中收到虚假的错误消息。在这种情况下,通过保存顶层模块触发 DSL 项目中的编译器,或者再次运行 mvn install。重新访问 pom 文件以获取 rascal-maven-plugin 的设置

    【讨论】:

    • 感谢您的回复,但我需要澄清一下:您是说我需要为该示例创建另一个 Eclipse 项目吗?基本上你能向我解释一下第一步吗?你能把我链接到一个做类似事情的 git/code 存储库吗?这样会更清楚吗?提前致谢
    • 也许我回答的问题与您提出的问题不同 :-) 您所说的“DSL”具体是什么意思?这是我们文档中的示例还是您下载的内容或其他内容?
    • 在 Eclipse 中,您始终可以使用“新建项目向导”,这会为您提供一个干净的项目供您使用。然后您可以使用“新建文件向导”创建一个新文件并从演示库中导入模块,例如:import demo::lang::Pico::Syntax;
    【解决方案2】:

    对于那些登陆此页面并试图找到使用工作参数调用 newRascalProject 的示例...

    第一个参数是“位置”。虽然记录了如何使用此参数 (https://www.rascal-mpl.org/docs/Rascal/Expressions/Values/Location/),但我仍然花了一些时间来弄清楚位置不是常规字符串,并且没有使用双引号 " 而是 |。

    所以如果你尝试:

    newRascalProject ("home:///Projects/rascal_playground", "hello2")
    

    您收到以下错误:

    Advice: |https://www.rascal-mpl.org/docs/Rascal/Errors/CompileTimeErrors/UndeclaredVariable/UndeclaredVariable.html|
    

    包括第二个参数的变量名...

     newRascalProject ("home:///Projects/rascal_playground", name="hello")
    

    ...给出了同样的错误。

    这是正确的例子:

    newRascalProject (|home:///Projects/rascal_playground|, name="hello")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多