如何用Python创建编程语言

19 投票
2 回答
21027 浏览
提问于 2025-04-17 10:14

我看到很多关于如何制作编程语言的教程,但用Python来写编程语言的教程却很少。我想知道怎么用Python相对简单地创建一个编程语言。

2 个回答

22

我不太明白你说的“创建一种编程语言”是什么意思。不过我觉得你可能会喜欢彼得·诺维格写的这篇很棒的文章(如何用Python写一个(Lisp)解释器)。这篇文章展示了你只需要用90行Python代码就能构建一个Lisp解释器!

理解了这些之后,可以试试(一个(更好)的Lisp解释器(用Python写))

16
  1. 想象一下你想要的编程语言。它应该是什么样子的?需要具备哪些功能?
  2. 找一个现有的编程语言,尽量和你想要的语言相似。虽然关键词可以不同,但如果你想做Python,就不要去参考Lisp,因为它们的结构差别很大。
  3. 为你在第二步选择的语言找到一个现有的语法规则。我建议你去这个网站看看:http://www.antlr3.org/grammar/list.html。如果找不到,就回去重新做第二步。
  4. 使用ANTLR(或者其他能理解你在第三步找到的语法的解析器生成器),构建一个Python模块,让它能理解你在第二步选择的语言。ANTLR对Python有一定的支持,这意味着生成的解析器代码会用Python写。如果你遇到C语言的解析器代码(可能会有),可以为它写Python的绑定(用Boost Python可能最简单,但如果你对C和Python都很熟悉,也可以直接用Python C API)。
  5. 开始对第三步的语法进行修改(刚开始可以小幅度调整),让它更接近你在第一步设计的语言。

仔细而有计划地做这些事情,经过几天的努力,你可能会有一个还不错的语言解析器。接下来,你需要处理解析器的输出(如果使用ANTLR,可以考虑使用它生成的抽象语法树,简称AST)。然后,你需要把解析后的语法转换成目标语言,比如x86汇编语言,或者一些中间字节码,比如Java、Lua、Microsoft .NET等使用的字节码。

祝你好运,不过要提前警告你:这个过程需要花费很长时间才能做好。

撰写回答