【发布时间】:2019-01-12 11:38:43
【问题描述】:
我想创建一种新语言,它的语法与打字球拍相同,但执行时会做两件事:
- 以键入的球拍运行给定程序
- 如果类型检查,则将输入翻译成另一种语言(比如 python)。我打算写一个从打字球拍形式到 python 语法的翻译器。
关于如何开始或指向一些骨架代码的任何建议?我读过this tutorial,但它主要是关于创建我不需要的新语法。
我了解如何编写球拍代码以将一种语言翻译成另一种语言,但我不明白我如何能做到以上两项,即首先将其作为另一种语言运行,然后用相同的输入。
【问题讨论】:
-
这不是您想要的,但我认为它可能会有所帮助。 github.com/shinh/elvm 这是一种 IR(中间表示)语言,可以编译为常见的 lisp、python 和其他 30 种语言(其中大部分是小众语言)。并且有一个 C 编译器来输出这个 IR。
-
通常在创建新语言时,步骤是将语法转换为球拍支持的基础语言,然后球拍会完成剩下的工作,但在球拍中创建新语言后似乎不是这样所以我发现这个问题具有误导性。或许你应该学习Whalesong,它更接近你的目标。
标签: racket