Ger*_*ago 2 dsl scheme common-lisp
我最近对DSL很感兴趣,特别是如何在Lisp中实现它们,因为它看起来像是替代品中的小菜一碟.
寻找信息我在互联网上的Lisp中找不到任何非lisp DSEL的证据.
所以我的问题是:
这是如何实现的?
lisp的读者可以用自定义读取器替换,将代码转换为lisp结构吗?
简短版本:Racket这样做.
更详细:Racket是Scheme的后代,在这里有一个经过深思熟虑的故事.Racket模块/文件可以以语言声明开头,例如
#lang algol60
...然后文件的其余部分可以用给定的语言编写.(是的,algol60是内置的.)
为了开发自己的语言,您需要编写一个语言规范包,该包展示了如何将该语言的语法扩展为底层语言的语法(在本例中为Racket).任何人都可以编写这样的包,然后分发它们以允许其他人用这种语言编写程序.Racket中包含此类语言规范的示例,例如前面提到的algol 60示例.
我想这正是你所要求的?
ObDisclaimer:是的,我是一名球拍开发者.
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |