一、词法分析

更新时间:2024-06-10 09:33:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 编译预处理和词法分析

实验目的:

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 #include void pro_process(char *); void main() {

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++]='#'; }

本文来源:https://www.bwwdw.com/article/7vb6.html

Top