python编译器与解释器_python – 编译器与解释器(基于构造和设计)

博客探讨了编译器和解释器的区别,聚焦于它们的构造和内部工作机制。编译器将源代码转换成机器代码,而解释器逐行执行输入。对于Python,它的编译器生成字节码,由虚拟机解释。作者询问关于设计Python字节码编译器的问题,包括是否需要管理内存以及这将如何与传统编译器或解释器不同。文章还涉及词法分析器、解析器、中间代码生成和堆栈管理等概念。
摘要由CSDN通过智能技术生成

在查看了很多关于编译器和解释器之间差异的帖子后,我仍然无法弄清楚它们的构造和内部机制的区别.

我读到的最常见的区别是编译器生成一个可执行的目标程序{意味着机器代码作为其输出},它可以在系统上运行而不是输入.

而解释器只是逐行运行输入{这里究竟发生了什么?}并产生输出.

我的主要疑虑是:

1)编译器由词法分析器,解析器,中间代码生成器和代码生成器组成,但是解释器的哪些部分?

2)谁给出了解释语言的运行时支持,我的意思是谁管理堆和递归函数的堆栈?

3)这是Python语言特有的:

Python包含编译器阶段和解释器阶段

编译器生成一些字节代码,并且该字节代码由其虚拟机解释.

如果我只设计Python的编译器(Python – >字节码)

a)我是否必须为它管理内存{编写代码以管理堆栈和堆}?

b)这个编译器将如何与传统编译器或解释器不同?

我知道这里要问的很多,但我真的很想了解这些细节.

我指的是Alfred V. Aho的编译器书

根据反馈和一些进一步的研究,我认为我应该修改我的问题

编译器不需要仅生成机器代码作为其输出

但有一个问题仍然困扰着我

假设我想设计一个(Python->字节码)编译器,然后字节码将被虚拟机解释..(如果我错了,请纠正我).

然后我将为Python编写一个词法分析器,然后编写一个解析器,它将生成某种抽象语法树..在此之后,我必须生成一些中间代码(龙书中提到的3个地址代码)或直接字节码指令(我想在VM的文档中给出)?

我是否必须编写用于处理堆栈的代码以提供对递归和范围的支持?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值