ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:252.33KB ,
资源ID:18192737      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18192737.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理词法分析实验文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理词法分析实验文档格式.docx

1、词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符号常常表示成以下的二元式(单词种别码,单词符号的属性值)识别保留字:if、int、else、for、while、do、return、break、continue;单词种别码为1。其他的都识别为标识符, 标识符由字母开头,后面可以是数字、字母和下划线;单词种别码为2。常数为无符号整形数, 无符号的整数由数字开头,后面只包含数字;单词种别码为3。运算符包括:+、-、*、/、=、=、 ;单词种别码为4。分隔符(界符)包括:,、;、(、); 单词种别码为5。程序输入/输出示例:如源程序为C语言。输入如下一段:main()int a, b;a

2、 = 10; b = a + 20;三 实验任务要求输出如图:实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)一实验步骤1.建立一个对话框的C+工程,取工程名为zhaoying。2.输入代码3.执行代码二 算法描述#include string.hstdlib.hstruct test /保留字 char name10; int num;struct oper/运算符与关系运算符 char name4;struct cut /分隔符 char name2;/定义全局变量struct test test9= main,1,if,2,int,3,for,4,while,5, do

3、,6,retuen,7,break,8,continue,9 ;struct oper oper11=+,41,-,42,*,43,/,44,=,45,46, ,47,48,49,=,50,!,51struct cut cut6=,61,;,62,63,64,(,65,),66/包含的函数void menu();/菜单void scansource();/查看源文件void rule();/查看输出规则void analyse();/分析结果显示void explain();void getch(char ch); /读取为字母void getnum(char ch); /读取为数字void

4、getspace(char ch); /读取制表符类void getelse(char ch); /其他字符char ch;char str10;int k=0,i=0;char sourcefile20; /源文件名char objectfile20; /目标文件名FILE *fp;FILE *hp;int main(int argc,char *argv) int choice; /显示菜单 menu(); printf(输入进行词法分析的源文件名:); scanf(%s,sourcefile);n输入分析结果存入的文件名:,objectfile);n输入选项:%d,&choice); f

5、or(; ;) switch(choice) case 1: scansource(); break; case 2: rule(); case 3: analyse(); case 4: explain(); case 5: exit(1); printf(nn menu();输入选择项: scanf( return 0;void menu()/-/n 词法分析器 n 1.查看源文件: n 2.符号种别码: 3.分析结果: 4.程序说明: 5.退出程序:/-/nvoid scansource() FILE *fp; char ch; if(fp=fopen(sourcefile,r)=NUL

6、L)文件打开错误或源文件不存在 !n exit(1); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); fclose(fp);void rule() int i;保留字及其对应种别码: for(i=0;i=a)&(chAZ) getch(ch); else if(ch09) /如果读取的是数字 getnum(ch);else if(ch= )|(ch=rnt getspace(ch); else /其他情况 getelse(ch); k=0; strk=0 while(ch!=EOF); /关闭文件 fclose(hp);void

7、 explain()printf(n提示:本程序是一个进行标准C语言词法分析的程序,在本程序执行的开始,你会看到菜单n为了是程序正确的运行,请按照提示进行正确的输入,比如:输入错误的源文件名会导致n程序因找不到源文件而出错,所以请输入正确的文件名并将源文件与本程序放在同一目录n下,结果将会存入输入的目标文件中,如果目标文件不存在,程序将会自动建立同名文件n可以再程序中或者查看目标文件浏览词法分析结果,谢谢您的使用 !void getch(char ch) for(; strk=ch; str+k=if(!(ch) fseek(fp,-1L,1); if(strcmp(str,testi.nam

8、e)=0) /测试是否为保留字 printf( %d,0 )n,testi.num); fprintf(hp, k=0; break;if(k!=0) /否则为变量 printf( 20,%s ) n,str); fprintf(hp,( 20,%s )n void getnum(char ch) if( !(ch) & (ch) ) fseek(fp,-1L,1);( 30,%s ) n fprintf(hp,( 30,%s )n break;void getspace(char ch) if(!(ch=void getelse(char ch) switch(ch) case ,:( 61,0 )n( 62,0 )n( 63,0 )n( 64,0 )n( 65,0 )n)( 66,0 )n+( 41,0 )n-( 42,0 )n*( 43,0 )n/( 44,0 )n strk=ch; str+k= if(ch! fseek(fp,-1L,1); printf( 45,0 )n else if(ch=( 50,0 )n( 46,0 )n( 48,0 )n( 47,0 )n( 49,0 )n( 51,0 )n三 流程四 结论

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1