gpt4 book ai didi

scheme - 具有非 Lisp 语法的 CL/Scheme DSEL

转载 作者:行者123 更新时间:2023-12-02 07:12:25 26 4
gpt4 key购买 nike

我最近对 ​​DSL 很好奇,特别是如何在 Lisp 中实现它们,因为与其他替代方案相比,它看起来就像小菜一碟。

在互联网上寻找信息时,我找不到 Lisp 中非 Lisp DSEL 的任何证据。

所以我的问题是:

  • 是否可以使用宏在 Lisp 中实现非 Lisp 语法的 DSL?
  • 这是如何实现的?

  • lisp 的阅读器可以被将代码转换为 lisp 结构的自定义阅读器替换吗?

    • 如果前者为真:这是实现“非 lispy”DSEL 的常见方法吗?

最佳答案

简短版本:Racket这样做。

更详细地说:Racket,Scheme 的后代,这里有一个经过深思熟虑的故事。 Racket 模块/文件可以以语言声明开头,例如

#lang algol60

...然后文件的其余部分可以用给定的语言编写。 (是的,algol60 is built in。)

为了开发自己的语言,您需要编写一个语言规范包,它展示了如何将该语言的语法扩展为基础语言(在本例中为 Racket)的语法。任何人都可以编写这样的包,然后分发它们以允许其他人用这种语言编写程序。 Racket 中包含此类语言规范的示例,例如前面提到的 algol 60 示例。

我认为这正是您所要求的?

ObDisclaimer:是的,我是 Racket 开发者。

关于scheme - 具有非 Lisp 语法的 CL/Scheme DSEL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com