程序语言基础:解释程序基本原理笔记

1、解释程序的概念

解释程序是在运行用户程序时,直接执行源程序或源程序的中间表示。解释程序不产生源程序的目标程序。

解释程序实现高级语法的三种方式如下图:

             

方式A:直接对整个源程序进行逐个字符的检查、进行词法、语法分析和语义分析后就执行程序语句规定的动作。特点是反复扫描源程序来实现程序的运行效率很低。

方式B:解释程序先将源程序翻译成某种中间代码形式,然后对中间代码进行解释和实现用户程序的运行。

方式C:解释程序采用的中间代码更接近机器语言。

2、解释程序的结构

解释程序分为:分析部分、解释部分。

分析部分:主要包括词法分析、语法分析、语义分析程序。把源程序翻译成中间代码,中间代码常采用逆波兰方式表示。

解释部分:对解释部分的中间代码进行解释执行。

3、编译与解释方式对比

对比内容

编译方式

解释方式

效率

编译翻译一次多次运行,效率高

需要反复扫描源程序,效率低

灵活性

灵活性高

灵活性低

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软登录界面加载不出_微软要硬了,做出这个目前最好用的浏览器

众所周知,微软能打造出一个全球通用的系统,但就是做不出一个能用的浏览器。IE 浏览器的黑历史就不提了,即使后来洗心革面,推出了基于 Win 10 的 Edge 浏览器,也还是难以挽尊市场份额甚至不如老前辈 IE。Edge 虽然功能比…

阻塞队列(BlockingQueue)

阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添…

一维数组对象转成二维数组

一、关于PHP把装着item为对象的一维数组转成二维数组的疑问 背景:新增帖子的时候,选择标签时,可以选择多个,后端接口是需要传入的是一个二维数组。 /*** Title 修改精选内容* Params $id 记录ID* Params $tags …

电脑操作系统维护10条基础知识!

电脑操作系统是电脑的核心,我们平时如何维护电脑操作系统?下面是小编分享是电脑系统维护基础知识,一起来看一下吧。1、经常进行“磁盘清理”和磁盘碎片整理”当硬盘用久了,无数次的新增、更改和删除程序和文件后,就会造成很多断断…

光子浏览器_烟台招聘信息烟台光子信息科技有限公司招聘(五险一金,餐补)...

↑烟台招聘信息网点击关注哦汇集烟台市招聘信息,含盖烟台人才网,烟台招聘会,烟台招聘网、烟台优秀企业、事业单位等优质工作岗位及招聘信息,烟台求职找工作和烟台兼职资讯平台… 【温馨提示】:因网络诈骗现象较多&…

DES加密

DES采用了64位的分组长度和56位的密钥长度,是对称加密的一种。 DES的理论进化主线是 1945年Shannon大神提出的交替使用混淆(使密文与密钥的统计关系变复杂)和扩散(使明文与密文的统计关系变复杂)的乘积密码&#xff08…

计算机系统基础:输入输出技术知识笔记

1、内存与接口的编址方式 1.1 内存和接口地址独立编址方法 内存地址和接口地址是两个完全独立和相互隔离的地址空间。访问数据的指令也不同,接口只有读写指令,其余都是内存指令。 特点:接口和内存指令容易区分,但接口指令太少、功…

小米max2 android p,这就是小米Max2?6.4英寸超大屏幕配置大升级

标签:小米手机(3463)小米(3233)虽说今年上半年小米6的重磅机型会是小米6,但随着小米Max在官方商城的下架,这款巨屏手机的更新换代产品已经在网络上浮出水面。根据知名图形测试网站GFXBench最新公布的信息显示,一款代号为Oxygen的小…

winform直接控制云台_速学指南,2分钟学会Feiyu pocket口袋云台的隐藏功能操作

上周三,Feiyu pocket口袋云台相机正式发布,重量仅115g,单手可持,可拍摄 4K/60fps高清画面;6轴混合防抖技术加持,赋予轨迹延时、全域模式、慢动作、全跟随等模式更专业、高效的拍摄体验。Feiyu pocket口袋云…

ThreadPoolTaskExecutor和ThreadPoolExecutor区别

初学者很容易看错,如果没有看到spring或者JUC源码的人肯定是不太了解的。 ThreadPoolTaskExecutor是spring core包中的,而ThreadPoolExecutor是JDK中的JUC。ThreadPoolTaskExecutor是对ThreadPoolExecutor进行了封装处理。 ThreadPoolExecutor ThreadP…

电脑技巧:如何解决大部分的电脑防弹窗广告

相信很多人都有这种情况,打开电脑,电脑上全部各种广告弹窗,或者在办公、追剧的时候,电脑突然就弹出了一条,是不是很烦人,这几招不用借助软件,就能解决弹窗的方法不防一试。 方法一: 第一种方法,可以对付部分…

hades武器第四形态解锁_凯多的第四个技能预告——冰冻!

在《海贼王》中,四皇凯多被誉为“海陆空最强生物”,能够变成神龙,如果不出意外的话,凯多应该是动物系幻兽种神龙果实的能力者。毕竟凯多的海贼团就叫做“百兽海贼团”,手下也都是动物系果实能力者,能够降服…

解决git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Pleas

今天用idea提交代码到github上,push后报错 gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 一:原因分析 Permission denied (publickey) 没…

转载------------java equals 方法

作者:海子出处:http://www.cnblogs.com/dolphin0520/浅谈Java中的equals和 在初学Java时,可能会经常碰到下面的代码: 1 String str1 new String("hello"); 2 String str2 new String("hello"); 3 …

计算机系统基础:校验码知识笔记

1、校验码概念 校验码主要是为了解决计算机各部件进行数据传输和交换,确保传送过程的正确无误,一是为了提高硬件电路的可靠性,二是提高代码的校验能力。通常会用校验码来检查传送的数据是否正确。 校验码编码分为两类:合法编码、错…

qml与HTML数据交互,GitHub - toby20130333/QtQuickHtmlBridge: 基于QtQuick的C++,qml,Html三者的Bridge交互...

基于QtQuick的C,qml,Html三者的Bridge交互主要功能自定义C对象并注册到QML可以在QML中继续扩展C对象的属性和方法 信号等将C对象注入到WebChannelHtml中引入C对象JavaScript与C直接交互示例代码说明main.cpp://该实例必须直接继承自Object的 QWidget的忽略qmlRegisterType(&quo…

html为什么要进行表单验证_化学锚栓为什么要进行拉拔试验?

点击箭头处“蓝色字”,关注我们哦!!化学锚栓是继膨胀锚栓之后出现的一种新型紧固材料,由化学药剂与金属杆体组成,是通过特制的化学粘接剂,将螺杆胶结固定于砼基材钻孔中,以实现对固定件锚固的复…

电路基础知识讲解(太全面了)

IT技术分享社区个人博客网站:https://programmerblog.xyz文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基…

github设置仓库可见性 私人仓库设置

一:点击Setting 二:点击Make private 三:阅读关于将仓库设为私有的警告。 入您要设为私有的仓库的名称,例如 accountname/reponame。 单击 I understand, make this repository private(我已了解,请将此仓库设为私有)