如何从 Rust 调用 Rascal 函数

问题描述 投票:0回答:1

我正在开发一个 Rust CLI(使用 Clap)来与我的 Rascal DSL 一起使用,问题是这样的。如何在 Rust CLI 代码中调用 Rascal 函数(定义我的 DSL 的函数)?我之前在 Python 中实现了这个 CLI(使用 Click),并使用 JPype 实现了 Rascal 和 Python 之间的互操作,但性能非常糟糕。我希望通过用 Rust 重写 CLI 来提高性能,但我不确定如何实现 Rascal 和 Rust 之间的互操作。如果有人能帮助我,我会很高兴。

rust rascal
1个回答
0
投票

我认为获得快速结果和合理性能的最佳方法是使用 rascal 在标准库的

util::Webserver
中内置的 Web 应用服务器。

  1. 使用
    lang::json::IO
    可以快速方便地在 json 值和 Rascal 值之间进行映射。
  2. 服务器可以直接串流json。
  3. 通过同步或异步http请求连接rust程序,并使用Rust库来绑定JSON值。使用 LOC 值来识别事物。

这基本上也是 LSP 服务的工作方式。我们计划稍后将网络套接字添加到

util::Webserver

另一种更具创意的路线是使用语言参数 LSP 服务器;使用 rascal-lsp 库,您可以启动 LSP 服务器并在其中加载 Rascal 服务实现。要使用的主要模块是

util::LanguageServer
。如果您的功能属于协议范围内,那么您可以在 VScode 中开发和测试它,并将其连接到基于 Rust 或 C 的 LSP 客户端。

我会选择第一个,因为你很快就会启动并运行它。

© www.soinside.com 2019 - 2024. All rights reserved.