python学习吧 关注:15,464贴子:75,616
  • 12回复贴,共1

如何用Python写一个Python解释器,你了解吗?

只看楼主收藏回复

在我们开始之前,让我们缩小我们所说的“解释器”。“翻译”可以用在各种不同的方式在讨论Python。有时指的是Python解释器REPL,交互式提示你输入Python在命令行。有时人们用“Python解释器”或更少的互换与“Python”谈执行Python代码从开始到完成更多。在这一章中,“翻译”有一个更窄的意义:它是一个Python程序执行过程的最后一步。
翻译接管之前,Python执行三步骤:词法分析,句法分析,并编制。在一起,这些步骤将程序员的源代码行的文本转化为结构化<em>的代码对象</em>包含指令解释器,可以理解。翻译的工作是把这些代码对象和遵循指示。
你可能会惊讶地听到编译在执行Python代码的步骤。Python通常被称为“解释”的语言如Ruby和Perl,而“编译”的语言如C或生锈。然而,这个术语不精确的可能。大多数的解释语言,如Python,也涉及一个编译步骤。因为Python是所谓的“解释”是编译步骤也相对较少的工作(和翻译确实比较多)比编译语言。我们将在本章稍后,Python编译器比C编译器不太关心程序的行为信息。


1楼2018-03-23 23:30回复
    Python解释器
    Byterun是一个Python解释器Python写的。你或许会觉得奇怪,但没有更多的奇数比编写一个C编译器在C.(事实上,广泛使用的C编译器gcc是用C写的)你可以写一个Python解释器在几乎任何语言。
    用Python编写Python解释器的既有优点也有缺点。最大的缺点是速度:执行代码通过执行Byterun比CPython慢得多,在解释器是用C和精心优化。然而,Byterun最初是作为一个练习,所以速度并不重要,我们。最大的好处是,我们可以使用Python的解释器<em>就</em>更容易实现,而不是其他的Python运行时,特别是对象系统。例如,Byterun可以回到“真实”的Python的时候需要创建一个类。另一个优势是,Byterun是很容易理解的,因为它是用高级语言(Python!)许多人发现很容易读。(我们也排除解释器优化在Byterun再次有利于速度。简单明了)


    2楼2018-03-23 23:33
    回复
      因为我们不关心的词法、语法分析器,和编译器在这一章中,它并没有多么的指令集的产生。你可以想象写作7 + 5有一个编译器发出组合这三个指令。或者,如果你有正确的编译器,你可以写Lisp的语法,变成了同样的指令组合。翻译不在乎。重要的是,我们的翻译是一个很好的指示安排形成。
      这是小编的,大家如果需要学习资料可以关注我。


      3楼2018-03-23 23:36
      回复



        4楼2018-03-23 23:47
        回复
          Python雁横(py_0123)


          来自Android客户端6楼2018-04-05 12:53
          回复
            Python_666


            来自Android客户端7楼2018-04-05 12:53
            回复
              1941066681


              来自Android客户端8楼2018-04-05 12:53
              回复


                来自Android客户端9楼2018-04-05 19:06
                回复
                  资料都给你们了,学习了吗?


                  10楼2018-04-06 01:16
                  回复
                    感谢大家的支持,我接下来就不写这个了


                    来自Android客户端12楼2018-04-06 16:09
                    回复
                      哈哈


                      来自Android客户端13楼2018-04-17 08:44
                      回复


                        来自Android客户端14楼2018-05-02 15:11
                        回复


                          来自Android客户端15楼2018-05-03 20:17
                          回复