编译机制与自动机——浅显的理解
来源:互联网 发布:电脑清理软件 知乎 编辑:程序博客网 时间:2024/06/04 01:27
上篇博客中介绍了语言处理程序,这篇接着介绍语言处理程序编译原理,只是个人的浅显理解,往读者多多指正。
一、工作流程
首先我们来梳理一下语言处理程序的工作思路:
1、语言处理程序的对象——程序设计语言
2、对操作对象进行逐步检查。
3、生成目标代码(以编译程序为例)
语言处理程序需要对程序设计语言编写的源程序进行操作处理。还是这张图,包含了语言处理程序要进行的所有工作。
怎么理解这张图呢?为什么要进行这些所谓的“词法”,“语法”,“语义”等一系列的检查呢?
这就需要看我们操作的对象的组成了。要对之进行分析,操作,变化,必须清楚其构造。
二、程序设计语言定义——知其构造,方能改造之。
通用语言的形成
程序语言不外乎也是这样的逻辑,也是有基本的符号按照规则形成,单词,形成句子……
那我们就来看看程序语言中的这些定义:
词法
由基本字符(a,b……)构成的符号(单词)书写的规则
单词拼写是否正确
语法
由程序语言的基本符号组成程序中的各个语法成分的一组规则
关注的是句子的结构
语义
按照语法构成的各个语法成分(句子)的含义,关注的句子的含义
静态:在编译时期发现
动态:在运行时期发现
语用
设计语境,适不适合在这里使用。(一般不使用)
这样对比发现,编译机制中的工作流程是这么的来的,并不是空穴来风。
三、自动机和形式语言的出现————这里不懂
在词法,语法分析的过程中,是如何进行的呢?一句话,程序语言是怎么形成的,其解析过程就是其“逆袭”的过程。
这就到了形式语言和自动机的舞台。
形式语言:按一定规律构成的句子或符号串的有限或无限的集合,是为了描述语言的一种理论模型。它只考虑语法,词法,而不考虑语义。
在形式语言中,有字母表,有状态集合,有从字母到字符串的规则,这其中包含,文法。字母表中的字母按照文法构成句子。文法又有不同的要求等级,对应的可以构成不同的语言,例如三型文法,构成正则语言。计算机语言学中为了识别文法构成的不同,引入自动机,把自动机作为语言识别器,用来研究各种形式语言。
总之,形式语言,自动机都是编译程序拿来检测程序设计语言的工具。我们只要明白这个就够了。
后记:这次软考,给了我很好的学习计划,在软考之前,没有想太多,只是想着要好好看书。可是当接触到软考教材后,发现这本书真的是把我这几年学习计算机积累的好多问题都给解决了。例如,编译原理,计算机组成原理,操作系统等,以前涉及到也会对应的去查,可是总是连不起来,而现在,这本书,我个人觉得,内容关,知识的难易程序拿捏的恰好,读完之后,有一种豁然开朗的感觉。
- 编译机制与自动机——浅显的理解
- UITableView 的浅显理解
- IOC与DI的浅显易懂的理解
- ThreadLocal的直观浅显理解
- 对于递归的浅显理解
- socket浅显的自我理解
- 对MQ的浅显理解
- RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解
- KMP算法最浅显理解——一看就明白
- KMP算法最浅显理解——一看就明白
- KMP算法最浅显理解——一看就明白
- 对this的浅显的理解
- 对Ajax的一些浅显理解
- 浅显易懂的理解java中的接口
- ASP.NET MVP架构的浅显理解
- 浅显理解之c语言的声明
- 关于移动设备系统的浅显理解
- 对TCP/IP的浅显理解
- [Linux下Hadoop部署] CentOS6.4_64位下部署Hadoop2.2.0
- uva 11902 - Dominator
- 第九周剩余的题目
- 项目1-存储班长信息的学生类
- POJ_1961 KMP next的典型应用 类似于 poj2406
- 编译机制与自动机——浅显的理解
- RO05 – 如何创建RemObjects SDK 服务(Delphi Version)
- 常用的SQL语句
- ajax请求txt文档
- mini2440裸机小结
- 在U盘里建立git仓库
- ZOJ-1056
- JNI总管——JNIEnv
- CSS基础