欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    编译原理实验报告(词法&语法分析).doc

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

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

    编译原理实验报告(词法&语法分析).doc

    1、课 程 实 验 报 告课程名称: 编译原理 专业班级: 学 号: 姓 名: 指导教师: 报告日期: word文档 可自由复制编辑目 录实验一 词法分析31 实验概述32 系统分析43 系统设计53.1词法分析DFA53.2系统流程图64 系统实现74.1 Head.h文件74.2 Main.c文件95 系统评价195.1关键字分析195.2标识符分析205.3常量分析205.4界符分析205.5运算符分析215.6其他字符分析215.7错误记录225.8完整词法分析输出22实验二 语法分析241 问题描述242 算法和数据结构设计243 C语言程序实现254 程序测试415 实验总结及心得体会

    2、44实验一 词法分析1 实验概述此次实验要实现词法分析器,要求输入单词序列,输出是别的单词的二元组序列。选择计算机高级程序语言比如C语言,运用恰当的词法分析技术线路,设计和实现其对应的词法分析器。建议编程语言,选择计算机程序设计课程所采用的语言。要求分析器输出结果存入到磁盘文件中,具有出错处理功能。提示技术线路选择如下两种之一: 正则式NFADFAmin DFA程序设计或 正则文法NFADFAmin DFA程序设计2 系统分析拿到实验要求后,首先进行了背景分析。由于这次实验选择做C语言的词法分析,首先对C语言的单词分类进行了解。C语言单词分为标识符、关键字、常量(整型常量、浮点型常量)、运算符

    3、、界符,另外还有一些其他字符。单词种类定义或内容标识符以字母或下划线打头的,字母、数字、下划线串关键字”include”,”auto”,”break”,”case”,”char”,”const”,”continue”,”default”,”do”,“double”,”else”,”enum”,”extern”,”float”,”for”,”goto”,”if”,”int”,”long”,“register”,”return”,”short”,”signed”,”sizeof”,”static”,”struct”,”switch”,“typedef”,”union”,”unsigned”,”vo

    4、latile”,”while”,”main”,”void”,”int”,“char”,”printf”,”scanf”常量数字串(整型),或者两个数字串中间用小数点链接形成的串(浮点型)运算符+,-,*,/,=,=,=!&|;char sigopLENSIGOP = ;char otherLENOTHER = #.%;char word20,ch;int flag;int flag1;FILE *fp;FILE *out;FILE *fpkey;FILE *fpid;FILE *fpdigi;FILE *fpdel;FILE *fpop;FILE *fpother;FILE *fperr;in

    5、t Deals1(char *word);int Deals2Int(char *word);int Deals2Float(char *word);int DealDel(ch);int DealOp(char *word);int DealErr(char ch);int DealErrString(char *word);int DealOther(char ch);int IsSigOp(char ch);int IsDblOp(char ch);int IsOp(char *word);int IsAlpha(char c);int IsNum(char c);int IsKey(c

    6、har *word);int IsOther(char ch);int IsDel(char ch);4.2 Main.c文件#include #include #include #include #include head.h/*return 1 if c is alpha*/*else return 0*/int IsAlpha(char c) if(c = a) & (c = A) & (c = 0) & (c = 9) return 1; else return 0;/*return 2 if word is key*/*return 1 if word is id*/*else re

    7、turn 0*/int IsKey(char *word) int m,i; for(i=0;iLENKEY-2;i+) if(strcmp(word, keyi) = 0) if(i = 0) return 2; return 1; return 0;/*return 1 if c is Del*/*else return 0*/int IsDel(char ch) int i; for(i=0;i=LENDEL;i+) if(ch = deli) return 1; return 0;/*return 1 if c is Other*/*else return 0*/int IsOther

    8、(char ch) int i; for(i=0;i=LENOTHER-2;i+) if(ch = otheri)return 1; return 0;/*return 1 if word is op*/*else return 0*/int IsOp(char *word) int i; for(i=0;i=LENOP-2;i+) if(strcmp(word, opi) = 0)return 1; return 0;/*return i+1 if the first character of word is sigop*/*else return 0*/int IsSigOp(char c

    9、h) int i; for(i=0;i=LENSIGOP-2;i+) if(ch = sigopi)return i+1; return 0;/*return i+1 if the first character of word is dblop*/*else return 0*/int IsDblOp(char ch) int i; for(i=0;i=LENDBLOP-2;i+) if(ch = dblopi)return i+1; return 0;/*printf key or id*/int Deals1(char *word) int i; for(i=0;i=LENKEY-2;i

    10、+) if(strcmp(word, keyi) = 0) /fprintf(out, %st%dt1(关键字)n,word,i+1); /fprintf(fpkey, %st%dt1(关键字)n,word,i+1); fprintf(out, %st1(关键字)n,word); fprintf(fpkey, %st1(关键字)n,word); return i+1; fprintf(out, %st2(标识符)n,word); fprintf(fpid, %st2(标识符)n,word); return 0;/*printf digi int*/int Deals2Int(char *wor

    11、d) fprintf(out, %st3.1(整型常量)n,word); fprintf(fpdigi, %st3.1(整型常量)n,word); return 0;/*printf digi float*/int Deals2Float(char *word) fprintf(out, %st3.2(浮点型常量)n,word); fprintf(fpdigi, %st3.2(浮点型常量)n,word); return 0;/*printf del*/int DealDel(ch) int i; for(i=0;i=LENDEL;i+) if(ch = deli) /fprintf(out,

    12、%ct%dt4界符n,ch,i+1); /fprintf(fpdel, %ct%dt4界符n,ch,i+1); fprintf(out, %ct4(界符)n,ch); fprintf(fpdel, %ct4(界符)n,ch); return i+1; return 0;/*printf op*/int DealOp(char *word) int i; for(i=0;i=LENOP-2;i+) if(strcmp(word, opi) = 0) /fprintf(out, %st%dt5运算符n,word, i+1); /fprintf(fpop, %st%dt5运算符n,word, i+1

    13、); fprintf(out, %st5(运算符)n,word); fprintf(fpop, %st5(运算符)n,word); return i+1; return 0;/*printf other*/int DealOther(char ch) int i; for(i=0;i-*/i(#”用1表示,“”用-1表示,“=”用0表示,而表中的空格部分用2表示。3.程序框架图2.1 图2.1 程序框架图3 C语言程序实现#include #include #include #define TRUE 1#define FALSE 0#define RULE_NUM 3#define VT_NU

    14、M 8typedef int bool;char analyse_Stack30;/char *firstVT(char c);/char *lastVT(char c);/bool test_vt(char c);void grammar_analysis();bool isVN(char c);bool isVT(char c);char relation(char,char);int locate(char);int rule_match(char *);/void word_analysis();void scanner(void);bool letter_or_underline(char);/judge if ch is az or A Zbool digit(char); /judge if ch is 09bool test_seperator(char);char grammar1020;char rules78;char priorit


    注意事项

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922