首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将自定义DSL和提供的语言与GraalVM / Truffle框架结合起来

将自定义DSL和提供的语言与GraalVM / Truffle框架结合起来
EN

Stack Overflow用户
提问于 2022-08-25 13:54:25
回答 1查看 49关注 0票数 1

我正在使用GraalVM上的Truffle框架来实现DSL的原型。目前,我的代码应用程序使用ASM直接将DSL编译成JVM字节码,然后动态加载生成的类。为了使它更易于维护和更容易扩展,我想用我的语言来代替。

目前,我还通过提供的组件通过GraalVM / Truffle使用Python。我怎样才能使我的语言与提供的语言一起工作?根据文档,我需要设置"-Dgraalvm.locatorDisabled=true“才能找到我的语言实现--这是可行的。没有它,我就不能使用它。但是,当我启用它时,我就无法使用JS和Python。文档还说,“为了仍然使用内置语言,通过将模块路径指向所有需要的语言家园(例如$GRAALVM/ languages /js),将它们添加到模块路径中。”

这对我没用。我得到了一个错误: java.lang.module.ResolutionException:模块org.graalvm.js没有读取导出com.oracle.truffle.api的模块

我怎么能解决这个问题。或者,是否有更好的方法来使用我的语言和提供的语言?在我看来,在构建语言实现类时,应该有一种通过上下文“注册”我的语言的编程方法。

我无法将我的语言部署为一个组件,因为它非常特定于主机应用程序,并且只能在进程中处理我的应用程序。将其构建为一个组件将使构建和部署过程复杂化,并需要包括大量额外的JARS,并将其暴露在与其无关的更广泛的系统中。

对于上下文,所讨论的DSL是一种查询语言(think ),它使用户能够为系统定义查询,从而有效地与内存缓存交互。

谢谢你,特洛伊

EN

回答 1

Stack Overflow用户

发布于 2022-08-26 09:36:03

理智检查:您是否使用来自maven的松露-api.jar,如文档中所建议的那样

Maven Central上的语言API JAR在其模块-info中导出所有API包。将--升级模块路径选项与-Dgraalvm.locatorDisabled=true和此JAR一起应用于导出语言API包:

代码语言:javascript
复制
-Dgraalvm.locatorDisabled=true --module-path=<yourModulePath>:${truffle.dir} --upgrade-module-path=${truffle.dir}/truffle-api.ja
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73488802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档