【问题标题】:Interpreter design in Python [closed]Python中的解释器设计[关闭]
【发布时间】:2012-08-10 07:46:26
【问题描述】:

我是 Python 新手,我想用它制作一个小型解释器/编译器。最初只是一个爱好项目。我想知道完成这样的工作与 c/c++ 相比有多好?它内置了高效的字符串处理库。所以我猜一开始很容易开始(见下面的链接),但是当复杂性真的变得很高时,构建一种语言会做得很好吗?

一些资源

http://www.jayconrod.com/posts/37/a-simple-interpreter-from-scratch-in-python-part-1

这个真的很简单,但很好开始:

http://www.jroller.com/languages/entry/python_writing_a_compiler_and

另一个值得参观的地方:

http://morepypy.blogspot.in/2011/04/tutorial-writing-interpreter-with-pypy.html

http://morepypy.blogspot.in/2011/04/tutorial-part-2-adding-jit.html

第一个使用 pypy。我不熟悉它。我正在使用 cpython

【问题讨论】:

  • 真正的问题是什么? Python 非常适合原型设计,但你的里程可能会根据你对 C++ 的熟练程度而有所不同。
  • 您已经回答了自己的问题。这对任务很好。
  • 正如我所提到的。我相信这对于开始或你所说的“原型设计”来说是很好的。但我的问题主要是关于功能齐全的语言如何?对不起,如果我错误地提出了这个问题。

标签: python compiler-construction programming-languages interpreter pypy


【解决方案1】:

当复杂度真的很高时,构建一门语言会做得很好吗?

随着复杂性的增加,您将感谢您选择用 Python 而不是 C/C++ 来实现它。我唯一建议的是使用解析库,比如 PyParsing,来减少你需要做的工作量(除非你也想学习如何实现解析器)。

【讨论】:

  • 虽然 ply 采用更传统的方法来生成解析器(python 中的 lex/yacc 工具链),但 PyParsing 看起来也很有前途。我宁愿尝试在两者中进行简单的语法实现并进行一些基准测试。我认为这会很好。顺便说一句,您的建议,感谢您的建议。
【解决方案2】:

这真的取决于你的语言有多复杂。我不会将 Python 用于 C++ 编译器,但我发现编写代码生成器以解析一种语言的代码(特别是 SQL 的数据定义子集)以生成另一种语言的代码非常方便。

考虑使用解析器生成器,而不是全部手动完成。我觉得PLY很方便。

【讨论】:

  • +1 用于解析器生成器。 Python 非常适合字符串工作,但结构化语言更难,而且正式的方法确实有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 2011-06-13
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
相关资源
最近更新 更多