岗位职责 实施方案 自查报告 整改措施 先进事迹材料 应急预案 工作计划 调研报告 调查报告 工作汇报 其他范文
首页 > 其他范文 > 其他范文

编译原理实验指导书-实验六

作者:l136518时间:2021-01-05 下载本文

实验 六 词法分析((二))一、实验目的 1. 掌握识别程序中整数数字的方法,并编程实现,为词法分析打基础。

2. 掌握处理程序中的分隔符的方法,并编程实现,为词法分析打基础。

二、实验要求 输入一段类 C 语言程序,程序中的每个单词用空格分隔,要求识别出程序中的数字及分隔符(如“+、—、×、/、(、)、#、;”等)。

三、实验步骤 原理及思路:

写一段类 C 代码,保存成文件。这次实验需要编写一段程序,称分析程序。由分析程序识别代码中的数字和分隔符,并将这些数字和分隔符输出。可在分析程序中预先定义分隔符列表,然后将代码文件打开,逐个读入单词,将单词和分隔符做比较,如果发现单词是某个分隔符,则输出该单词,否则读入下一个单词。

输入一段类 C 程序,例如:

main begin int sum = 100 for int i = 1 to 103 do begin sum=sum+i end /*end for*/ printf sum is d sum end 将这段类 C 程序保存成一个文件,如 A.c。

关键 代码 提示:

1. 定义分隔符表。可以考虑用字符数组定义。

代码提示:

char singleword[keywordSum]="+-*()=,.#;";这里根据需要自行添加关键字。其中 keywordSum 表示定义了多少个分隔符,程序实现的时候用常量说明,方便修改。

2. 定义一个输出关键字的缓冲区。用字符数组实现即可。长度可暂定为 40。

代码提示:

char ch,id[40];//ch 为每次读入的字符,id 用于保存识别出的单词。

3. 打开代码文件。

代码提示:

if((fin=fopen(PL0Scanin,"r"))==NULL)//判断输入文件名是否正确 { printf("n 打开词法分析输入文件出错!n");return(1);//输入文件出错返回错误代码 1 } 这里有两个变量需要预先说明。一个是 fin,一个是 PL0Scanin。说明如下:

File *fin;//用于指向输入文件的指针 char PL0Scanin[300] //用于接收输入输出文件名。这个变量的取值可以在程序运行后指定,代码如下:

printf("请输入源程序文件名(包括路径):");scanf("%s",PL0Scanin);4. 从文件中读入单词 ch = getc(fin);//从文件中读入一个字符。

可以将下列两个语句放到循环体中 id[j++] = ch;ch = getc(fin);5. 判断单词是否是数字 可使用 isdigit(ch)函数。当 ch 是数字时,返回非零值。否则返回零值。

同学们可以以实验五的代码为基础完成本次实验。

编译原理实验指导书

编译原理实验三

编译原理实验_词法分析实验-LL1文法分析实验

实验(三)指导书

IRM实验指导书

《IRM实验指导书.docx》
IRM实验指导书
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
相关文章
猜你喜欢