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

    编译原理实验词法分析器的设计说明.docx

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

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

    编译原理实验词法分析器的设计说明.docx

    1、编译原理实验词法分析器的设计说明集美大学计算机工程学院实验报告课程名称:编译原理班级:指导教师: : 实验项目编号:实验一学号:实验项目名称:词法分析器的设计实验成绩:一、实验目的 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。二、实验容编写一个词法分析器,从输入的源程序(编写的语言为C语言的一个子集)中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示) 三、实验要

    2、求 1、 词法分析器的功能和输出格式词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符号常常表示成以下的二元式(单词种别码,单词符号的属性值)。单词示例单词种别码要求保留字if、else、int、while、do每个保留字的单词种别都单独为一种标识符以字母开头且包含字母和数字的字符串标识符作为一种常数(只识别无符号整数)123、343无符号整数作为一种运算符+、-、*、/、=、= = 、!=、 、=、 、4分隔符,、;、(、)5本实验所使用的开发语言是C语言,在Test2类中定义了以下几个函数: 2.程序流程图: Y N Y N N Y Y N Y N Y Y N N N Y Y

    3、N N N Y Y Y N Y N3、实验程序#include#include#include#include/判断读入的字符是否为字母bool isLetter(char c) if(c = a & c = A & c =0 & c = 9) return true; else return false; /判断是否为关键字bool isKey(char *string) if(!strcmp(string,void) | !strcmp(string,if)| !strcmp(string,for)| !strcmp(string,while) | !strcmp(string,do)|

    4、!strcmp(string,return)| !strcmp(string,break) | !strcmp(string,main)| !strcmp(string,int)| !strcmp(string,float)| !strcmp(string,char) | !strcmp(string,double)| !strcmp(string,String) return true; else return false;bool isError(char ch) if(ch = | ch = $ | ch = & | ch = # | ch = | ch = ) return true;

    5、 else return false;void main() char string500=;/存放文件中读出来的字符串 char str10=;/存放需要对比的字符串 char ch,c;/ch存放文件中的单个字符(翻译时用),c存放文件中的单个字符(从文件中提取信息时用) char filename20;/文件名 int j=0; printf(请输入文件名进行词法翻译:); scanf(%s,filename); FILE *cfPtr; if(cfPtr=fopen(filename,r)=NULL) printf(文件未找到!); else while(!feof(cfPtr) if

    6、(isspace(c=fgetc(cfPtr)/判断是否是字符串 ; else stringj=c;/从文件中一一提取字符 j+; int m = 0,k=0;/m翻译时用,k是str数组的下标 stringj= ; j+; bool check=true,error=false;/用于判断标识 for(int i = 0;i | ch = ) if(error) printf(%s,此字符无法是识别!n,str); error=false; check=true; else if(!check) printf(2,%s)标示符n,str); check=true; m = 4; else i

    7、f(ch = , | ch = ; | ch = | ch = | ch = ( | ch = ) if(error) printf(%s此字符无法识别n,str); error=false; check=true; else if(!check) printf(2,%s)标示符n,str); check=true; m = 5; else if ( isDigit(ch =stringi) ) ) if(check) memset(str, 0, strlen(str);/清空 k=0; strk=ch; k+; m = 3; check=false; else strk=ch; k+; e

    8、lse if ( isLetter(ch = stringi) ) if(check) check=false; memset(str, 0, strlen(str); k=0; strk=ch; k+; else strk=ch; k+; if(isKey(str) printf(1,%s)关键字n,str); check=true; else if(isError(ch = stringi) if(check) memset(str, 0, strlen(str);/清空 k=0; strk=ch; k+; check=false; error=true; else strk=ch; k+

    9、; error=true; else break; case 3: if(isLetter(ch =stringi) printf(程序有错误!n); strk = ch; k+; error=true; m = 0; break; if(isError(ch = stringi) printf(程序有错误!n); strk = ch; k+; error=true; m = 0; break; if (isDigit(ch =stringi ) ) strk = ch; k+; else if(ch=.) strk=ch; k+; else printf( 3,%s) 数字n,str); i -; m = 0; check=true; break; case 4: i-; printf( 4 ,%c) 运算符n,ch); m = 0; break; case 5: i -; printf( 5 ,%c) 分隔符n,ch); m = 0; break; return;五、实验结果 六、实验小结本次实验中,运用C语言进行实验,实验刚开始的时候,能够对输入的字符进行判断,但是却不能排错以及只能识别全是字母的标识符,后来经过修改程序代码和编程的逻辑最终实现了,既能排错又能分析句子;通过实验掌握了词法分析,能实现对普通程序的语法分析翻译。


    注意事项

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

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




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

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

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


    收起
    展开