开发PLO编译器过程的一些体会
2015-12-15 12:40
183 查看
学了c++有一段时间了,一直没有适合的项目练手,刚好最近编译原理课程设计要求做一个pl0编译器,于是决定选择c++来编写。
一路上可叫一个坎坷啊,要么是逻辑错误,要么是语言特性方面不熟悉而导致编译不通过,或者程序出错。可以说,三分之一的开发时间都在测试c++的用法= = 。不过还好坚持下来也做完了,其中各种数据结构,各种用,如堆栈,list,map,二维数组,vector等,让我熟悉了一下这些常用的数据结构,这个编译器的开发确实让我收获不少。
接下来,我说下几点我自己的心得体会:
1.首先一定要充分透彻的理解课本原理,在脑子(或纸上)构建好整体的框架,再开始动手写代码。
2.分功能,模块,逐部分完成,例如,词法分析->语法分析->语义分析->目标代码生成。
3.代码出现死循环,栈溢出等问题,debug找出问题出处,再分析造成这个问题的原因。
4.保持一个良好的心态(个人认为最重要)。不要为出bug烦躁,不要为找不到bug烦躁(我经常这样,需改正),累了就休息休息,不要因为写代码而破坏自己的生物钟。还有一点很重要的是,不要因为别人写得快而感到自卑,感到压力,自己和自己比,把握进度,适当休息。
最后,附上源代码:https://github.com/Downey-W/MyPL0Compiler (= = ,可以说是自己第一个c++项目,可能当中有不少地方不规范,希望大家能指出。)
一路上可叫一个坎坷啊,要么是逻辑错误,要么是语言特性方面不熟悉而导致编译不通过,或者程序出错。可以说,三分之一的开发时间都在测试c++的用法= = 。不过还好坚持下来也做完了,其中各种数据结构,各种用,如堆栈,list,map,二维数组,vector等,让我熟悉了一下这些常用的数据结构,这个编译器的开发确实让我收获不少。
接下来,我说下几点我自己的心得体会:
1.首先一定要充分透彻的理解课本原理,在脑子(或纸上)构建好整体的框架,再开始动手写代码。
2.分功能,模块,逐部分完成,例如,词法分析->语法分析->语义分析->目标代码生成。
3.代码出现死循环,栈溢出等问题,debug找出问题出处,再分析造成这个问题的原因。
4.保持一个良好的心态(个人认为最重要)。不要为出bug烦躁,不要为找不到bug烦躁(我经常这样,需改正),累了就休息休息,不要因为写代码而破坏自己的生物钟。还有一点很重要的是,不要因为别人写得快而感到自卑,感到压力,自己和自己比,把握进度,适当休息。
最后,附上源代码:https://github.com/Downey-W/MyPL0Compiler (= = ,可以说是自己第一个c++项目,可能当中有不少地方不规范,希望大家能指出。)
相关文章推荐
- TCP 的那些事儿(上)
- Apache Commons工具集简介
- Jacobian矩阵和Hessian矩阵
- android反编译相关
- ios 下拉刷新
- 使用注解编写WebMagic爬虫
- nginx常用模块
- iOS视图边框的简单做法
- 对象list转化
- Leetcode 编程训练
- Mysql中判断一个字段是不是为null注意点
- 防作弊
- 【日常】std::sort
- JavaScript为事件句柄绑定监听函数实例详解
- redis数据库理解
- java获取客户端的ip地址
- LeetCode - Container With Most Water
- 数学常用希腊字母念法(附字母表)
- 二叉树常用操作(创建、查找、求高度、遍历、打印)
- 谈离职和跳槽