如何在Python中创建编程语言

eli*_*eac 16 python programming-languages

我已经看过许多用于编写编程语言的教程,但很少用Python编写.我想知道如何(相对容易地)使用Python创建编程语言.

Tim*_*ker 18

不确定"创建编程语言"是什么意思.但我想你可能想阅读Peter Norvig的优秀文章(如何编写一个(Lisp)解释器(在Python中)).这显示了如何只用90行Python构建一个Lisp解释器!

一旦你理解了这一点,试试(An((更好)Lisp)解释器(用Python)).


Joh*_*nck 10

  1. 想象一下你的语言.你想要它看起来像什么?应该具备哪些功能?
  2. 考虑一种与您想要的语言尽可能相似的现有语言.如果关键字都不同,那就好了,但是如果你决定使用Python,那么你不会从Lisp开始,因为结构基本上是非常不同的.
  3. 找到您在步骤2中选择的语言的现有语法.我在这里查看:http://www.antlr3.org/grammar/list.html.如果找不到,请再次执行第2步.
  4. 使用ANTLR(或任何解析器生成器理解您在步骤3中找到的语法),构建一个Python模块,该模块了解您在步骤2中选择的语言.ANTLR对Python"目标"有一定程度的支持(意味着解析器代码将在Python中,而不是使解析器理解Python语言).如果您遇到C中的解析器代码(可能),请为其编写Python绑定(使用Boost Python可能最简单,但如果您对C和Python非常熟悉,则可以直接使用Python C API).
  5. 开始对步骤3中的语法进行修改(首先是小步骤),使其更像您在步骤1中设计的语言.

仔细而有意识地做这些事情,经过几天的工作,你可能会为你的语言提供一个中等程度的解析器.然后你需要使用解析器的输出(如果使用ANTLR,考虑使用它可以为你生成的抽象语法树或AST).然后,您需要将解析后的语法转换为目标语言,例如x86程序集或某些中间字节码,例如Java,Lua,Microsoft .NET或其他任何使用的字节码.

祝你好运,并预先警告:这个过程需要很长时间才能做好.