Scala中用于外部DSL评估的库

Scala中用于外部DSL评估的库,scala,dsl,parser-combinators,kiama,Scala,Dsl,Parser Combinators,Kiama,在scala中评估外部DSL需要哪些步骤,有哪些库可用于这些步骤 在深入研究之后,我能够使用解析器组合器创建一个case外的AST类。该过程的下一步是什么?我查看了kiama(),但从文档中似乎不清楚(可能是因为我的语言处理知识有限)如何维护符号表,如何将操作绑定到dsl语句等。我同意,对于kiama中的公共语言处理任务,最好有更多教程式的文档。我们正在努力,但我目前没有具体的报告 同时,我能提供的只是Kiama发行版中的示例。特别是,minijava示例是一个可合理访问的编译器,适用于Java

在scala中评估外部DSL需要哪些步骤,有哪些库可用于这些步骤


在深入研究之后,我能够使用解析器组合器创建一个case外的AST类。该过程的下一步是什么?我查看了kiama(),但从文档中似乎不清楚(可能是因为我的语言处理知识有限)如何维护符号表,如何将操作绑定到dsl语句等。

我同意,对于kiama中的公共语言处理任务,最好有更多教程式的文档。我们正在努力,但我目前没有具体的报告

同时,我能提供的只是Kiama发行版中的示例。特别是,minijava示例是一个可合理访问的编译器,适用于Java的非平凡子集。它进行名称和类型分析(参见SemanticAnalysis.scala)并生成JVM字节码。语义分析使用一个简单的模型,将环境从声明传递到名称的使用。如果您有关于示例如何工作的具体问题,请随时在此处或Kiama邮件列表上与我们联系


Oberon-0示例也是从命令式语言到C语言的完整编译器,包括语义分析。

根据我的经验,Kiama的学习曲线确实相当陡峭。但是,它附带了许多很好的示例,其中包括如何使用符号表。我只为一种小语言实现了一个前端,但我非常喜欢使用Kiama。你试过使用g8模板吗?基亚玛很漂亮。我只使用了基于策略的术语重写模块,但在使用一阶逻辑转换方面,这是一个巨大的进步。谢谢期待。另外,我无法加入谷歌集团,该集团总是回应没有权限。对不起,刚刚看到这条消息。谷歌集团要求你申请会员资格,以防止垃圾邮件发送者等,但我通常反应很快。你申请成为会员了吗?