实验一 编译预处理和词法分析
实验目的:
1. 从编译程序的角度理解程序设计语言,并进行编译的预处理。 2. 识别程序设计语言源程序的单词符号。
实验内容:
项目1、编写程序,输入为某一C语言源程序
(1)输出的结果不对源程序行改变,仅去掉所有注释的内容;
(2)把C语言中定义的符号常量能采用对应的常量来替换。#DEFINE PI 3.14
项目2、参考:本教材P32描写TEST语言的单词符号;P218附录B的词法分析程序。 编写程序,输入为某一TEST语言源程序,能分别输出所有标识符、保留字、无符号整数、分界符。(通过修改附录B的词法分析程序,添加保留字do,双分界符&&和||以及单分界符!的处理)。
实验报告:
每位同学撰写一份试验报告,并提交电子版的源程序和报告。 实验报告的要求:
项目1:源程序、流程图、运行结果的截图 项目2:源程序、流程图、运行结果的截图
实验报告命名规则:
个人:2013-14(1)医智(1)1107505101蔡菲菲实验一 交各班课代表汇总后,由课代表打包后,发送至老师的邮箱 班级命名规则:2013-14医智(1)实验一 截止日期:第14周周五晚11点30分
实验提示:
(项目1)以下是一个C++程序,请试着写出它的功能。 #include
char buf[4048]={'\\0'}; pro_process(buf); cout< void pro_process(char *buf) { ifstream cinf(\ int i=0; char old_c='\\0',cur_c; bool in_comment=false; while(cinf.read(&cur_c,sizeof(char))) { switch(in_comment){ case false: if(old_c=='/'&&cur_c=='*'){ i--; in_comment=true; } else{ if(old_c=='\\\\'&& cur_c=='\\n') i--; else{ if(cur_c>='A'&&cur_c<='Z') cur_c+=32; if(cur_c=='\\t'||cur_c=='\\n') cur_c=' '; buf[i++] =cur_c; } } break; case true: if(old_c=='*'&&cur_c=='/') in_comment=false; } old_c=cur_c; } buf[i++]='#'; }