【发布时间】:2015-06-26 19:30:25
【问题描述】:
我正在研究用 Python 实现 DSL,我正在寻找一种小型 DSL 语言,它对没有设计和实现语言经验的人很友好。到目前为止,我回顾了 Hy 和 Mochi 两个实现。 Hy 实际上是一种 lisp 方言,而 Mochi 似乎与 Elixir 非常相似。两者对我来说都很复杂,因为我的目标是对语言进行原型设计并进行尝试,以发现它是否真的有助于解决问题并适合问题所需的风格。我知道 Python 通过标准库中提供的语言工具得到了很好的支持。到目前为止,我实现了一种非常简单的 lisp 方言,我没有使用任何 python AST,它纯粹是通过字符串处理实现的,这对于我正在寻找的东西绝对不灵活。
除了上面提到的两种语言之外,有没有任何实现,小到可以研究?
关于这个主题有哪些好书(在某种意义上是实用的,不仅限于理论和学术方面)?
什么是学习和使用 Python AST 的好方法?
在实际生成的字节码开销方面,是否存在与基于 Python 构建的语言(如 Hy)相关的任何重大性能问题?
谢谢
【问题讨论】:
-
您是否对可以嵌入到 Python 代码中的语言(即它被 Python 解析器识别)感兴趣,或者您想设计一种独立于 Python 解析器的全新语法?
-
我想设计一种新的语法。
-
好吧,那么 Python 并没有什么特别之处。获取一个解析器(LL(k)、LR(k)、Yacc 等等),编写你的语法,并为其编写操作/转换语义。
-
我在回答中添加了一些细节,以防您可能想跳过语法部分并专注于操作语义部分......