欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    C语言词法分析器实验报告Word格式.doc

    • 资源ID:3940370       资源大小:735.50KB        全文页数:22页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言词法分析器实验报告Word格式.doc

    1、4break5else6long7switch8case9enum10register11typedef12char13extern14return15union16const17float18short19unsigned20continue21for22signed23void24default25goto26sizeof27volatile28do29while30static31if32a33b34f35n36t37v3839?4041”42043ddd44 xhh45数字46标识符47#48(49)505152535455*56:5758%5960+61?62=63|64&65!66

    2、81“82%A(A可为dsc)83;84_85/868788899091其他类别99实验流程图(由于流程图过大因此各部分分开写):整体:扫描注释:扫描数字:扫描引号:扫描单词:扫描其他字符:实验环境:需要TC、VC+ 6.0等开发工具作为本次试验的环境。实验步骤:1、准备: 用TC、VC+等开发工具;2、对本实验的任务进行分析,确定实现功能的函数;3、写好程序,仔细修改函数;4、上机操作:输入源程序,修改、调试,运行。5、写好试验报告。实验调试过程及测试结果/*源代码*/#includestdlib.h#include string.hvoid main()FILE *fp,*fp1;int

    3、hanjsq=1;/行计数器,保存行号int guanjz(char ch1);/关键字和标识符判断char ch,infile15,outfile15;/定义输入和输出文件名printf(*Enter the infile name*n);scanf(%s,infile);/输入需要扫描的文件名*Enter the outfile name*n,outfile);/输入需要另存为的文件名if(fp = fopen(infile,r) = NULL)/打开需要扫描的文件printf(cannot open filenexit(0);if(fp1 = fopen(outfile,w) = NUL

    4、L)/打开需要存入的文件n*n* 开始进行词法分析 *n*n行号字符串种别码nfprintf(fp1,while(!feof(fp)ch=fgetc(fp);if(ch=10)hanjsq+;/*扫描头文件单词及保留字*/if(isalpha(ch) | ch=_)/如果第一个字符为字母或下划线则判断为标识符int i=0;char ch130;/假定每个标识符最长为ch1i+=ch;/将ch保存到ch10中并使i自加1while(!ch=fgetc(fp);if(ch=10)hanjsq+;/如果ch为换行符,则行计数器自加1if(isalpha(ch) | isdigit(ch) | ch

    5、=/如果ch为字母、数字或下划线就把ch放到ch1i中并使i自加1ch1i+=ch;if(ch=.)/如果ch为小数点则判断是否为头文件 if(ch=fgetc(fp)=h)/如果小数点后一位为h则判定其为头文件if(ch=10)hanjsq+;ch1i+=ch1i=0/把结束标志放到ch1i中作为单词结束标志printf(line %d:%s83n,hanjsq,ch1);/以字符串形式输出ch1fprintf(fp1,break;else/如果小数点后一位不是h则判定其为标识符fseek(fp,-1,1);/fp回退1%s%dn,hanjsq,ch1,guanjz(ch1);if(!isa

    6、lpha(ch) & !isdigit(ch) & ch!= &/如果ch不为字母、数字、下划线和点时判断其为标识符ch1i=printf(fprintf(fp1,break;/*扫描数字*/if(isdigit(ch) | ch=-)/如果ch为数字或if(isdigit(ch)/如果ch为数字printf(%c,hanjsq,ch);fprintf(fp1,while(!ch=fgetc(fp);/预读一位如果ch为数字和点则循环输出if(isdigit(ch) | ch=%c,ch);else/否则视为数字结束46n/回退一位ch=0/置ch为0,以免影响下面误判并顺利退出扫描数字if(

    7、ch=)/如果ch为/预读一位)/如果ch还是为则判断为自减符-80n,hanjsq);,则判断为结构体运算符-81nif(isdigit(ch)/如果ch为数字则可能为减号或负号fseek(fp,-3,1);/回退3为判断if(isdigit(ch)/如果ch为数字则判断为减号 ch=fgetc(fp);%c79nelse /否则判断为负号ch=fgetc(fp);while(!ch=fgetc(fp);if(isdigit(ch) | ch=printf(fprintf(fp1,else/否则视为数字结束fseek(fp,-1,1);/回退1break;/*扫描注释*/if(ch=/则可能

    8、为注释ch=fgetc(fp);/读下一个字符if(ch=10)hanjsq+;)/如果该字符也为则判断为注释一行while(fgetc(fp)!=10);/直到遇到换行符出现才认为注释结束*)/如果该字符为则判断为注释多行/直到出现*/才认为注释结束if(ch=10)hanjsq+;if(ch=)/出现/且接着出现if(ch=fgetc(fp)=break;else/否则原样输出/83nfseek(fp,-1,1);break;/*扫描引号*/)/出现引号printf(%c82nfprintf(fp1,/先整体输出引号内所有字符并定为第99类i+;/用于积累回退长度if(ch!if(ch!=

    9、32)else break;99nfseek(fp,-i,1);/回退到引号开始for(;i0;i-)if(ch=92)/如果ch为则可能为转义字符char ch513=abfntv?0;/转义字符集for(int k=0;k12;k+)/如果为转义字符则输出if(ch=ch5k)printf(line %d:%c%dn,hanjsq,ch,k+33);fprintf(fp1,d isdigit(fgetc(fp) & isdigit(fgetc(fp)/任意字符转换为三位八进制 fseek(fp,-2,1);%c%c44n,hanjsq,fgetc(fp),fgetc(fp);x isdig

    10、it(fgetc(fp)/任意字符转换为二位十六进制 %c%c45n%)/如果为则可能为%s%c%dchar bfh4=dcsfor(i=0;i3;i+)if(bfhi=ch)%c83n/*扫描其他符号*/if(!char ch214=#()*:%/定义部分单符号集char ch39=+?=|&/定义部分单符号或双符号(前半部分)集char ch49=+=|&=/定义部分双符号(后半部分)for(int i=0;13;/判断单个符号if(ch=ch2i)%c%dn,hanjsq,ch,i+48);for(int j=0;j8;j+)/判断双符号if(ch=ch3j)/如果ch与ch3中第j个字符匹配/if(ch=10)hanjsq+;if(ch=ch4j)/且ch与ch4第j个匹配,则表示ch3j与ch4j连起来为一个双符号%c%c%dn,hanjsq,ch3j,ch4j,i+69); ch3j=)/判断符78nelse/否则表示ch3j为单符号,不是双符号的一部分


    注意事项

    本文(C语言词法分析器实验报告Word格式.doc)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开