当前位置: 首页 > 其他范文 > 其他范文

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

作者:l136518 | 发布时间:2021-01-05 12:44:44 收藏本文 下载本文

实验 六 词法分析((二))一、实验目的 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实验指导书

本文标题: 编译原理实验指导书-实验六
链接地址:https://www.dawendou.com/fanwen/qitafanwen/359414.html

版权声明:
1.大文斗范文网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《编译原理实验指导书-实验六》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。

重点推荐栏目

关于大文斗范文网 | 在线投稿 | 网站声明 | 联系我们 | 网站帮助 | 投诉与建议 | 人才招聘 | 网站大事记
Copyright © 2004-2025 dawendou.com Inc. All Rights Reserved.大文斗范文网 版权所有