- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理实验一
一、实验目的设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。二、基本知识1、正则表达式2、正则表达式到有限自动机的转换3、有限自动机的确定化与最小化三、实验环境1、Windows操作系统2、C/C++/Java语言四、实验要求1、做好实验预习,掌握并熟悉本实验中所使用的编程、测试环境及相应的软件2、写出实验报告五、实验内容1、待分析的C语言子集的词法1) 关键字 main if else int return void while (都是小写)2) 专用符号 = + — * / = = = = != ; : ,{ } [ ] ( )3) 其他标记 STRING::= [^]* ID::=letter(letter|digit)* INT::=digit digit* letter::= a|…|z|A|…|Z digit::= 0|…|94)空格由空白、制表符和换行符组成 空格一般用来分隔ID、NUM、专用符号和关键字,词法分析阶段通常被忽略。2、部分单词符号对应的种别码单词符号种别码 单词符号种别码main1:17int2:=18reture320if421else5=22end623lettet(letter|digit)*10=24dight dight*11=25+13;26—14(27{15)28}16#03、词法分析程序的功能输入:所给文法的源程序字符串输出:二元组(syn, token或sum)构成的序列。其中syn 为单词种别码;token 为存放的单词自身字符串;sum为整型常量(作为常量的值)。实现时,可将单词的二元组用结构进行处理设置3个变量:①token用来存放构成单词符号的字符串;②sum用来整型单词;③syn用来存放单词符号的种别码。4 程序源代码#include stdio.h#include string.hchar prog[80],token[8],ch;int syn,p,m,n,sum;char *rwtab[6]={main,int,return,if,else,end};void scaner();main(){p=0; printf(\n please input a string(end with #):/n); do{ scanf(%c,ch); prog[p++]=ch; } while(ch!=#); p=0; do{ scaner(); switch(syn) {case 11:printf(( %-10d%5d )\n,sum,syn); break; case -1:printf(you have input a wrong string\n); return 0 ; default: printf(( %-10s%5d )\n,token,syn); break; } }while(syn!=0); return 0; }//扫描查找函数 void scaner() { sum=0; for(m=0;m8;m++)token[m++]=NULL; ch=prog[p++]; m=0; while((ch== )||(ch==\n))ch=prog[p++]; if(((ch=z)(ch=a))||((ch=Z)(ch=A))) { while(((ch=z)(ch=a))||((ch=Z)(ch=A))||((ch=0)(ch=9))) {token[m++]=ch; ch=prog[p++]; } p--; syn=10; for(n=0;n6;n++) if(strcmp(token,rwtab[n])==0) { syn=n+1; break; } } else if((ch=0)(ch=9)) { while((ch=0)(ch=9)) { sum=sum*10+ch-0; ch=prog[p++]; } p--; syn=11; } else switch(ch) { case :token[m++]=ch; ch=prog[p++]; if(ch===) { syn=22; token[m++
您可能关注的文档
- 贝叶斯例子1.docx
- 贝叶斯信念网络.doc
- 贝叶斯信用评估模型.docx
- 贝叶斯网络参数的在线学习算法及应用.doc
- 背包问题九讲和源程序(答案).doc
- 被历史谈忘的民族英雄胡宗宪.doc
- 贲门失驰缓症诊治新进展.docx
- 苯溴马隆的药物经济学评价-.doc
- 鼻腔恶性黑色素瘤-a.doc
- 鼻饲病人的饮食护理.doc
- 2024年学校党总支巡察整改专题民主生活会个人对照检查材料3.docx
- 2025年民主生活会个人对照检查发言材料(四个带头).docx
- 县委常委班子2025年专题生活会带头严守政治纪律和政治规矩,维护党的团结统一等“四个带头方面”对照检查材料四个带头:.docx
- 巡察整改专题民主生活会个人对照检查材料5.docx
- 2024年度围绕带头增强党性、严守纪律、砥砺作风方面等“四个方面”自我对照(问题、措施)7.docx
- 2025年度民主生活会领导班子对照检查材料(“四个带头”).docx
- 国企党委书记2025年度民主生活会个人对照检查材料(五个带头).docx
- 带头严守政治纪律和政治规矩,维护党的团结统一等(四个方面)存在的问题整改发言提纲.docx
- 党委书记党组书记2025年带头增强党性、严守纪律、砥砺作风方面等“四个带头”个人对照检查发言材料.docx
- 2025年巡视巡察专题民主生活会对照检查材料.docx
文档评论(0)