扩展pl0编译器设计——总述
所谓编译器,实际上就是我们编程时将输入的高级语言代码转换成相应的目标代码,从而实现将目标代码转换成汇编码的一种过渡工具。
这种工具根据具体情况不同,可以将不同的高级语言代码转换成不同的目标代码,例如将pascal语言代码转换成自己定义的四元式等。
而一个简单的编译器主要是由以下几个部分组成的:
- 词法分析
- 语法分析
- 语义分析及生成中间代码
- 代码优化
- 生成目标代码
另外还有对于符号表的管理和对错误的处理要贯穿始终,当然如果这样的一个编译器是用来提交课程作业的话,还少不了一个最基本的解释执行器,这样一个编译器的雏形就完成了。
在实际编程的时候,我们除了要对编译器功能部分的编写进行了解,同时我们还需要了解我们处理后的和处理前的数据在程序中的存放形式和使用方式。
关于存放形式,我认为一个简易的pl0编译器需要三个重要的存储空间,如下:
第一个就是运行栈,用来对运行的时候的数据进行栈模式的操作并且同时能够起到作为数据存储的数据栈用途。
第二个就是符号表,这个表顾名思义是用来存储在你做读入程序的过程中得到的标识符、常量、变量等等。
第三个就是指令栈,这个栈同样只有一个用途就是在做一遍扫描的之后填入在不同时刻要求的不同指令,这些指令依次来操控运行栈和符号表以及可能会用到的寄存器的具体操作。
接下来要做的,就是按部就班的添加每一个部分所需要添加的功能了。
这些将会在接下来的几篇博客里进行进一步讲解。
以上内容如有错误或漏洞,希望各位读者能够给予更正,谢谢。
扩展pl0编译器设计——总述的更多相关文章
- 数字逻辑实践4->面向硬件电路的设计思维--FPGA设计总述
本文是对实验课上讲解的"面向硬件电路的设计思维"的总结,结合数字逻辑课本,进行提炼和整理. 主要来源是课件与本人整理,部分参考了网络大佬的博客. 本文主要介绍不同于之前软件设计思维 ...
- Web应用程序系统的多用户权限控制设计及实现-总述【1】
中大型的Web系统开发均需要权限的配置,基于多角色,多用户的操作权限管理是一个系统开发的基础.搭建好一套权限,用户,角色,页面一体的开发架构,可以用于后期业务的开发,同时也可用于不同业务的系统开发. ...
- 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序
很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...
- Linux makefile教程之总述二[转]
Makefile 总述——————— 一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或 ...
- [转] Makefile 基础 (2) —— Makefile 总述
该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...
- 基于ASP.Net Core开发一套通用后台框架记录-(总述)
写在前面 本系列博客是本人在学习的过程中搭建学习的记录,如果对你有所帮助那再好不过.如果您有发现错误,请告知我,我会第一时间修改. 前期我不会公开源码,我想是一点点敲代码,不然复制.粘贴那就没意思了. ...
- 自顶向下深入分析Netty(六)--Channel总述
自顶向下深入分析Netty(六)--Channel总述 自顶向下深入分析Netty(六)--Channel源码实现 6.1 总述 6.1.1 Channel JDK中的Channel是通讯的载体,而N ...
- 编译器设计-RunTime运行时环境
编译器设计-RunTime运行时环境 Compiler Design - Run-Time Environment 作为源代码的程序仅仅是文本(代码.语句等)的集合,要使其活动,它需要在目标计算机上执 ...
- [源码解析] PyTorch分布式(5) ------ DistributedDataParallel 总述&如何使用
[源码解析] PyTorch 分布式(5) ------ DistributedDataParallel 总述&如何使用 目录 [源码解析] PyTorch 分布式(5) ------ Dis ...
随机推荐
- 自定义控件(视图)1期笔记01:View 和 ViewGroup
1.View 和 ViewGroup 图解关系: 2. View 和 ViewGroup 关系和作用: (1) 关系: • 继承关系 • 组合关系 (2) 作用: • View的作用: 提供 ...
- Markdown基础语法
Markdown 的优点如下: 纯文本,所以兼容性极强,可以用所有文本编辑器打开. 让你专注于文字而不是排版. 格式转换方便,Markdown 的文本你可以轻松转换为 html.电子书等. Markd ...
- iOS的崩溃和编译错误
1. Command /bin/sh failed with exit code 127 这是因为mogenerator找不到路径,stackoverflow给出的答案是: If /usr/local ...
- ES 中的那些坑
数组 1. 数组中的 full-text 字段将被 [analyzed] 2. 数组中[所有元素]的数据类型必须一致 3. 数组的数据类型,以其 [第一个元素]为准 映射 1. 数据类型会自动进行转化 ...
- docker 错误
docker search ubuntuGet http:///var/run/docker.sock/v1.20/images/search?term=ubuntu: dial unix /var/ ...
- elfinder-2.x的java servlet后端——elfinder-2.x-servlet
去年在美期间在外导的项目中,需要用到el-finder的完美界面,但苦于没有java后端,因此做了一个elfinder-2.x-servlet. 托管地址:https://github.com/blu ...
- asp下实现多条件模糊查询SQL语句
常写一个简单的模糊查询的SQL语句格式可以如下例: sql="select * from 表名 where 字段名 like ’%" & request.form(&quo ...
- 实现html伪静态竟然那么简单
1.单参数 功能: 把:www.44721.cn/movie.asp?id=123 伪静态为:www.44721.cn/movie.asp?123.html 代码如下: ASP/Visual Basi ...
- 微信公众账号 Senparc.Weixin.MP SDK 开发教程
http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html 微信公众账号 Senparc.Weixin.MP SDK ...
- .Net 组件技术概述
1. 基本原理 组件是组件系统中功能的表现,没有组件就没有功能.特定接口是用于给组件管理程序来操纵.管理该组件,特定功能是组件需要完成的任务.在一个使用组件建立的产品中会随着功能数目的多少而会有多个组 ...