开发PLO编译器过程的一些体会
学了c++有一段时间了,一直没有适合的项目练手,刚好最近编译原理课程设计要求做一个pl0编译器,于是决定选择c++来编写。
一路上可叫一个坎坷啊,要么是逻辑错误,要么是语言特性方面不熟悉而导致编译不通过,或者程序出错。可以说,三分之一的开发时间都在测试c++的用法= = 。不过还好坚持下来也做完了,其中各种数据结构,各种用,如堆栈,list,map,二维数组,vector等,让我熟悉了一下这些常用的数据结构,这个编译器的开发确实让我收获不少。
接下来,我说下几点我自己的心得体会:
1.首先一定要充分透彻的理解课本原理,在脑子(或纸上)构建好整体的框架,再开始动手写代码。
2.分功能,模块,逐部分完成,例如,词法分析->语法分析->语义分析->目标代码生成。
3.代码出现死循环,栈溢出等问题,debug找出问题出处,再分析造成这个问题的原因。
4.保持一个良好的心态(个人认为最重要)。不要为出bug烦躁,不要为找不到bug烦躁(我经常这样,需改正),累了就休息休息,不要因为写代码而破坏自己的生物钟。还有一点很重要的是,不要因为别人写得快而感到自卑,感到压力,自己和自己比,把握进度,适当休息。
最后,附上源代码:https://github.com/Downey-W/MyPL0Compiler (= = ,可以说是自己第一个c++项目,可能当中有不少地方不规范,希望大家能指出。)
开发PLO编译器过程的一些体会相关推荐
- 升讯威微信营销系统开发实践:(3)功能介绍与此项目推广过程的一些体会( 完整开源于 Github)...
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...
- AI开发者十问:10分钟了解AI开发的基本过程
摘要:从AI开发模型.框架.工具,到提升开发效率的学习办法,为AI开发者逐一解答. 本文分享自华为云社区<10分钟了解AI开发的基本过程>,作者:简单坚持. 1.AI开发究竟在开发什么? ...
- 用 Go 开发 Go 编译器
Google的Go编程语言开发者Russ Cox在Go开发者大会GopherCon 2014上谈论了Go 编译器从C语言移植到Go语言.Go编译器最早是用C写的,原因是 1) Go不存在:2) Go不 ...
- 基于Windows 7旗舰版搭建WinCE6.0开发环境的过程
首先感谢JeffreyLi提供了更简便的安装WinCE6.0 R3的方法,今天验证过了,确实比我之前整理的<WinCE6.0 R3的安装步骤>方便很多,十分感谢! 为了方便大家参考,重新整 ...
- linux上 arm开发环境搭建,详解 LINUX下QT For ARM开发环境搭建过程
LINUX下QT For ARM开发环境搭建过程是本文介绍的内容,不多说,先来看内容.在PC上,我们需要得到两个版本的Qt,分别是:Qt-4.5.2和QtEmbedded-4.5.2-arm.前者包括 ...
- 实验1的运行过程及心得体会
实验1的运行过程及心得体会 本次实验是从学习c++开始的第一次实验,实验内容比较简单也比较基础,通过对书本自学以及自己的摸索基本可以完成此次实验.这次实验主要的目的是让我们熟悉c++的编程环境,体验c ...
- 再次学习MOOC《Geogebra的教学应用》的过程记录与体会(1)
再次学习MOOC<Geogebra教学应用>的过程记录与体会(1) 一.为什么再次学习Geogebra教学应用这门MOOC 虽然参加了这门MOOC的第一期的学习,成绩也相当不错,在之后的工 ...
- 第六章SQL数据库开发--TSQL—储存过程
第六章SQL数据库开发--TSQL-储存过程 6.1 TSQL-存储过程说明 存储过程 (Stored Procedure) 是在大型数据库系统中 , 一组为了完成特定功能的 SQL 语句集 , 存储 ...
- upupw 5.4配置的php,《Zend studio 12 + UPUPW+PHP5.4开发平台配置过程》,upupwzendguard_PHP教程...
<Zend studio 12 + UPUPW+PHP5.4开发平台配置过程>,upupwzendguard 一.安装Zend studio 12 安装过程比较简单,就不简述. 二.修改P ...
- upupw 5.4配置的php,《Zendstudio12+UPUPW+PHP5.4开发平台配置过程》,upupwzendguard_PHP教程...
<Zend studio 12 + UPUPW+PHP5.4开发平台配置过程>,upupwzendguard 一.安装Zend studio 12 安装过程比较简单,就不简述. 二.修改P ...
最新文章
- 理解GloVe模型(Global vectors for word representation)
- windows 10 代理服务器出现问题
- wxWidgets:wxSymbolPickerDialog类用法
- 不放弃WM,依旧开发WM应用
- java输入月份求天数_java输入年份,月份,输出当月天数
- 百米路由器2登陆地址_腾达无线路由器怎么安装,真的不错
- 单台web服务器性能,单台web服务器如何尽可能的提高网站性能
- 关于jupyter出现kernel dead问题
- 刚刚发现的 xaml里面颜色的定义方式
- Vrep当中的一些好用的工具(未完)
- emui内核支持kvm吗_Linux专题—使用kvm搭建虚拟机
- 基于DEAP库的python进化算法-1
- SDOI2015 约数个数和
- 信息搜集快捷导航工具bug修复-光速启动
- HTTP协议入门 状态码大全
- Android第三方系统有哪些,第三方安卓定制系统LineageOS 14.1支持6款新设备:包括一加3T...
- 用计算机弹琴琴谱,在电脑上弹钢琴的软件
- xml开发笔记(一):tinyXml2库介绍、编译和工程模板
- 水晶头的制作的学习经历
- 制作QQ2011绿色版不求人
热门文章
- VT100 终端控制码
- 为什么银行的现钞买入价低于现汇买入价?
- 干货分享!软考中高项案例分析10大管理领域理论背诵要点
- Crazy Bird
- k8s使用命令报错:error: You must be logged in to the server (Unauthorized)
- 谷物割捆一体农用车系统整体设计
- C语言 结构体指针强制转换,c中结构体指针的强制类型转换
- wireshark蓝牙数据包分析_Wireshark数据包分析
- 当前的安全设置不允许从该位置下载文件--解决方法
- 2020牛客寒假算法基础集训营4 - G 音乐鉴赏-全概率公式