语言处理程序

什么是语言处理程序?

它是一类系统软件的总称。还是不懂?那好吧,我们把它给拆了?    拆完后=“语言”+“处理”+“程序”

首先。是什么类型的语言呢?是编程语言;处理即操作。程序
就不用说了吧。

这里事实上是给大家买了一个关子。简单的说语言处理程序就是:用来对编程语言进行处理的一类程序。

那么为什么要对编程语言进行操作呢?这不得不说到编程语言的发展了。

一、编程语言的发展

机器语言:一開始,人类和计算机打交道用的是机器指令(机器语言),我们都知道机器指令太“简单”了,简单到仅仅剩下“0”和“1”。

汇编语言:为了符合人类的编程思维习惯,我们開始用一些简单的。常识符号来当作指令进行编程,即汇编语言,汇编语言包括:指令语句,伪指令语句,和宏指令语句。

指令和伪指令的差别:指令进过解释后能够直接变成机器指令,而伪指令即为指令语句的运行提供服务,比如分配内存空间等操作。宏指令即批处理指令。

高级语言:为了是编程变得简单,符合人们的理解习惯。接着发展到了第三个大阶段。高级语言阶段。这时候的编程语言层出不穷,c,c++。java等被我们熟知了。

高级语言极大的方便了编程。可是机器还是比較“简单”的,它识别不了复杂的人类社会,所以高级语言和机器之间的沟通这个时候须要有人来解决——语言处理程序。

语言处理程序的主要目的就是将汇编语言和高级编程语言翻译成机器语言,让机器识别,达到执行的目的。

二、语言处理程序

如今有三种语言处理程序:汇编程序、解释程序、编译程序。

汇编程序

将汇编语言编写的源程序翻译成机器指令程序。

汇编程序的工作内容:转换指令,处理伪指令。

步骤:两次扫描

第一次:定义符号的值,创建一个符号表ST

第二次:产生目标程序

编译程序(编译器)

将源程序编译成目标语言程序

工作原理例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3lvbmd4aWE5MjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

以上的工作流程依照逻辑划分能够分成两个部分:编译前端和编译后端。

前端

从词法分析——》中间代码生成

与机器无关部分

与编程语言有关

后端

中间代码优化——》目标代码生成,优化

与机器有关

与编程语言无关

这样划分的优点:对于机器来说。底层机器不同,机器语言不同,那么要生成的目标代码就会不同;

针对上层。不同的编程语言转换成中间代码的语法,词法,语义检查不同,把编译器切割成前端和后端,就能够灵活应对对上层编程语言和底层机器的需求。针对不同语言设计有不同的前端,针对不同机器设计不同后端,依据须要组合使用。

编译步骤

如图:词法分析,语法分析。语义检查……这么一步一步走到目标代码生成。在图的两側能够看到有“符号表管理”和“出错处理”。

这两个表示从编译開始就一直存在的。

符号表中记录了源程序中各个符号的必要信息。以辅助语义的正确性检查和代码生成,个人感觉这就好比一个“转换字典”,是源程序和目标代码之间的一个对比表。

出错处理:源程序在编译中出现错误是再正常只是的一件事情。在编译中出现错误,就会进入到编译器自己主动进行的“出错处理”机制中,进行修复策略。

中间代码:是一种简单的且含义明白的记号系统,前边讲过,它属于编译前端。与机器无关。

经常使用的是与汇编语言很相似的三地址码,採用四元式实现;

中间代码优化在此阶段完毕

原则:等价变化规则

表示形式

后缀式,树式——适用解释器

三元式

四元式——适用于编译器

目标代码生成

目标代码属于编译后端,生成与详细的机器有关。一般包括:绝对指令代码。可重定位指令代码,指令代码

目标代码形式:汇编语言形式,机器指令形式

须要考虑的两个因素:寄存器的分配。计算次序的选择。

解释程序(解释器)

一种:直接解释运行源程序

还有一种:将源程序翻译成某种中间代码,再运行

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3lvbmd4aWE5MjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

差别:B,C不同是中间代码级别不同。C 更接近于机器语言。

三、编译程序 VS
解释程序

同:在解释程序中相同存在词法。语法,语义检查——与编译程序基本相同

异:与编译程序的差别——不产生目标程序,执行的时候须要源程序和解释程序參与。

从例如以下三个方面进行讨论

1、效率

编译效率高

时间:解释程序重复扫描源程序

空间:解释执行源程序须要很多其它的内存

编译程序进行目标代码生成并优化在时间和空间上都比解释程序耗费多。可是更大的优点在一次编译多次执行,所以总体在效率上提高了。

2、灵活性

解释器能够随时更改

3、可移植性

对解释器进行又一次编译。就能够执行在不同环境中



时间: 2024-10-03 13:40:03

语言处理程序的相关文章

软考备战(2)语言处理程序基础

在阅读和学习<软件设计师教程>的过程中,学习到了程序语言基础这块的内容.这一章总共就两节,一共40多页,其中语言处理程序基础这小节就占了30多页,可见本章的主要内容在第二节.但是在我学习的过程中,感到非常的吃力,虽然我在专业课上曾经接触过文法和形式语言的一些东西,但是并没有任何轻松的感觉,相反越看越觉得不对劲,我在想可能是跑偏了,想起师姐曾经特意强调一定要看考纲,于是乎就翻看考纲关于这块知识的考察内容,如下图所示 看了之后决定以考纲为纲领对这块的知识进行一下总结,一是加深自己的印象和理解,同时

编译原理——语言处理程序

概况 程序语言是为了书写计算机程序而人为设计的符号,用于对计算过程进行描述.组织和推导,程序语言分为低级语言和高级语言,低级语言包括计算机硬件能识别的由0.1组成的机器指令语言和用符号组成的指令语言汇编集合的汇编语言,高级语言是人们开发的功能更强.抽象级别更高的语言以支持程序设计,面向各类应用的程序语言. 由于计算机只能理解由0.1序列构成的机器语言,因此高级程序语言需要翻译,即将高级语言或汇编语言编写的程序翻译成某种机器语言好曾向,担负这一任务的程序称为"语言处理程序",语言处理程序

软考笔记第七天之程序设计语言与语言处理程序基础

内容: 编译与解释 文法 正规式(几乎每次考到) 有限自动机(重点) 表达式(偶尔考到) 传值与传址(考到频率高) 多种程序语言特点 编译过程: 编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了. 解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢. C/C++等都是编译型语言,而Java,C#等都是解释型语言. 虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是将它编译成

(8)程序设计语言与语言处理程序基础

重点 1编译过程 2文法定义 一颗语法树 有限自动机 正规式 7 数据类型与程序控制结构 8表达式 9传值与传址 传址调用 10各程序语言特点 原文地址:https://www.cnblogs.com/buchizaodian/p/9016799.html

程序设计语言 语言处理程序

《JavaScript语言精粹》笔记

Function.prototype.method=function(name,func){    this.prototype[name]=func;    return this;}//1.注释最好使用双斜杠而不是带*斜杠/*2.数字,js不区分整数类型,1和1.0是相等的 * NaN是一个数值,它表示一个不能产生正常结果的运算结果.NaN不等于任何值,包括它自己,可用isNaN(number)检查 * 值Infinity表示所有大于1.79769313486231570e+308的值 */

二、程序语言基础知识

1.语言概述 基本概念 机器指令程序,最基本的计算机语言,二进制的机器指令序列: 汇编语言,书写格式取决于特定计算机的机器指令. 以上皆是低级语言,面向机器的语言. 高级语言:不依赖于机器硬件的程序语言.如:java.c.c++.php.python…… 语言处理程序:将高级语言或汇编语言翻译为机器语言. 方式分为:汇编.解释.翻译    源程序 解释程序:即解释器,将源程序翻译为中间代码 编译程序:即编译器,将源程序翻译成目标语言程序 区别:解释器,不生成独立的目标程序,解释程序和源程序(或其

java语言基础知识

一.什么是计算机 基于百度百科 1.简介 计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能.是能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备. 2.组成 计算机是由硬件系统(hardware system)和软件系统(software system)两部分组成的. 传统电脑系统的硬体单元一般可分为输入单元.输出单元.算术逻辑单元.控制单元及记忆单元,其中算术逻辑单元和控制单元合称中央处理单元(Cent

程序语言基础知识总结

语言实现了人与人之间的沟通,那么人与电脑之间怎么沟通呢?当然也是语言,它是程序语言.计算机是01的世界,通过程序语言,把人类的大千世界语计算机融合在了一起,amazing. 机器语言由01组成,直接用机器语言可读性差,难以理解,由此逐渐产生了汇编语言和高级语言.程序设计语言面向人,人们用它写出源程序,目标程序面向机器,语言处理程序充当翻译的角色,联通了人与机器. 语言程序是如何将源程序变为目标程序呢?下面是理论支持 文法和语言的形式描述: 上面导图是理论依据,下面是程序语言的大概构架 程序语言基