我正在考虑写自己的小语言。
我找到了一些选项,但可以随意提出更多建议。
许多语言都在使用JVM,但除非你编写一个Java-ish语言,否则stdlib给你的所有功能都会让你感到难过;它在动态的东西上也不是很好。
Parrot似乎是开发语言的好VM,但它有一点废弃/未完成/爱好的项目气味。
OSA是Applescript的推动力,而不是一个特别知名的虚拟机,但我使用的是Mac,它提供了良好的系统集成。
CLR + Mac似乎不是一个很好的组合...
我的语言将成为面向对象的功能并发数据流语言,具有强类型和Python和Lisp语法的混合。 听起来不错,嗯?
[编辑]
我现在接受了Python,但我想更多地了解OSA和Parrot。
答案 0 :(得分:5)
我玩过的一种方法是使用Python ast模块构建一个表示要运行的代码的抽象语法树。 Python compile
函数可以将AST编译为Python字节码,然后可以运行exec
。这比直接生成字节码要高一些,但是你必须处理一些Python语言的怪癖(例如,语句和表达式之间的根本区别)。
在执行此操作时,我还编写了一个“deparse”模块,该模块尝试将AST转换回等效的Python源代码,仅用于调试。如果您有兴趣,可以在psil存储库中找到代码。
答案 1 :(得分:4)
看看LLVM。它不是一个纯粹的虚拟机,更像是一个拥有自己的红外线的框架,可以让你构建高级虚拟机。有很好的东西,如静态代码分析和JIT支持
答案 2 :(得分:2)
上述两个选项都可以访问有用的标准库,这些库可以节省您的工作,并且使用相对干净且模块化的C进行编码,因此它们不应该很难连接。
那就是说,我不同意Parrot被遗弃/爱好。它已经非常成熟,并且有一些非常强大的开发人员正在开发它。此外,它特别是一个旨在成为多种动态语言目标的VM。因此,设计时考虑到了灵活性。
答案 3 :(得分:1)