
编译原理
laomai
扫尽风残雨败叶,尢剩傲雪斗霜枝
展开
-
编译原理程序设计实践(三) 错误处理和词法分析代码
/* 出错处理过程error *//* 参数:n:出错代码 */void error(int n){ cout<<"****"<<setw(cc-1)<<'!'<<setw(2)<<n<<endl; /* 在屏幕cc-1位置显示!与出错代码提示,由于cc 是行缓冲区指针,所以!所指位置即为出错位原创 2013-03-13 21:43:07 · 5742 阅读 · 0 评论 -
编译原理程序设计实践(四)一些辅助函数
/* 目标代码生成过程gen *//* 参数:x:要生成的一行代码的助记符 *//* y, z:代码的两个操作数 *//* 本过程用于把生成的目标代码写入目标代码数组,供后面的解释器解释执行 */void gen(fct x,int y, int z){ if (cx > cxmax) /* 如果cx>cxmax表示当前生成的代码行号大于允许的最大代码行数 *原创 2013-03-13 21:46:22 · 1401 阅读 · 0 评论 -
编译原理程序设计实践(七)解释器的相关代码
/* 目标代码生成过程gen *//* 参数:x:要生成的一行代码的助记符 *//* y, z:代码的两个操作数 *//* 本过程用于把生成的目标代码写入目标代码数组,供后面的解释器解释执行 */void gen(fct x,int y, int z){ if (cx > cxmax) /* 如果cx>cxmax表示当前生成的代码行号大于允许的最大代码行数 *原创 2013-03-13 21:54:43 · 2063 阅读 · 0 评论 -
编译原理程序设计实践(二) 全局变量定义
以下各节的代码根据教材P288的附录A中的pascal代码改写而来。改写时的要求是1、尽量使用原有的变量名和类型名、函数名和参数名2、对c++中未提供的运算符或者函数,则额外实现3、尽量不改动原有的处理流程。此外,代码中的注释基本摘自技术高手李凡希的博客。地址为http://blog.youkuaiyun.com/lifanxi/article/details/3833 这里向这位技术大牛原创 2013-03-13 21:25:36 · 2115 阅读 · 0 评论 -
编译原理程序设计实践(一) 项目描述
最近在辅导学生编译原理,x是实现PL0语言的词法分析器、语法分析器、语义分析器、代码生成器和代码模拟器。本着以身作则的思想,自己先花了两周时间完成了以上工作。这里将各阶段的主要工作成果发出来,供后来者参考。 相关参考资料1、《编译原理》教材作者:吕映芝 张素琴 蒋维杜 出版社:清华大学出版社 出版日期:1998年1月2、PL/0语言编译程序分析作者李凡希地址:htt原创 2013-02-28 01:35:49 · 1994 阅读 · 0 评论 -
编译原理程序设计实践(九) 编译和测试
1、下载和按照MinGW,下载页面为:http://sourceforge.net/projects/mingw/files/latest/download?source=files,安装的时候最好全部安装,这样就带了一个最新的g++编译器,支持很多新特性。2、把makefile和main.cpp文件拷贝到同一目录下3、在MinGW Shell里用cd命令进入代码所在目录,再执行make命原创 2013-03-13 22:06:23 · 2433 阅读 · 0 评论 -
编译原理程序设计实践(八)— 主程序代码和makefile文件
int main(int argc, char* argv[]){ for (char ch = ' ';ch <= '^';++ch) /* 这个循环把ssym数组全部填nul */ ssym[ch - ' '] = nul ; /* changed because of different character set note the typos below in the原创 2013-03-13 21:57:25 · 2075 阅读 · 0 评论 -
用lex处理C语言的注释
最近在实践中遇到一个需求:需要把一个C语言代码文件中的注释中的非空白字符全部替换为空格(目的是让新文件的行数和原来的一样,以便调试)..用flex鼓捣了两个小时,得到了下面的代码%{ #include<iostream>#include<sstream>#include<fstream>#include <iterator>#incl...原创 2019-03-20 22:53:20 · 3185 阅读 · 0 评论 -
VS2017中使用flex+bison
本文参考了https://blog.youkuaiyun.com/tankloverainbow/article/details/866530441.下载地址https://jaist.dl.sourceforge.net/project/winflexbison/win_flex_bison-latest.zip然后解压2.在vs中新建一个控制台项目3.向工程中添加win-flex_bison软...原创 2019-03-26 12:30:10 · 4147 阅读 · 1 评论