欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    编译原理 词法分析 实验报告.doc

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

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

    编译原理 词法分析 实验报告.doc

    计算机与信息工程学院实验报告姓 名 李迪学 号专 业计算机科学与技术班 级09蒙班联 系 电 话Emaillidilxl同 组实验者实验室名 称信息楼403实 验日 期2011-10-20课 程名 称编译原理实 验 序 号实验一实 验项 目词法分析主 讲教 师王斯日古愣辅 导教 师王斯日古愣指 导教 师王斯日古愣实验心得:通过此次实验,让我了解到如何设计、编制并调试词法分析程序,加深对词法分析原理的理解;熟悉了构造词法分析程序的手工方式的相关原理,使用某种高级语言(例如C+语言)直接编写此法分析程序。另外,也让我重新熟悉了C+语言的相关内容,加深了对C+语言的用途的理解。学生签名:李迪 2011 年 10 月 20 日成绩评定及教师评语:成绩: 教师签名: 年 月 日注:硬件类实验报告请按附录1的格式填写;软件类实验报告请按附录2的格式填写。填写时应去掉红色的提示语。软件类实验报告一、 实验内容词法分析二、 实验目的及要求实验目的设计、编制并调式一个词法分析程序,加深对词法分析原理的理解。实验要求: 各种单词符号及对应的种别码:单词符号种别码单词符号种别码begin1:17if2:=18then3<20while4<>21do5<=22end6>23letter(letter|digit)*10>=24digit digit*11=25+13;26-14(27*15)28/16#0三、 实验环境C语言环境四、 算法描述 词法分析主程序示意图:置初值调用扫描子程序输入串结束?输出单词二元组是否结束 词法分析程序流程图: 开始变量初始化是否文件结束?返回拼数Syn=11返回拼字符串是否是关键字?Syn为对应关键字的单词种别码Syn=10给不同的符号相同的 Syn 值报错是否数字字母是否、运算符,界符等其他 五、 源程序清单#include"stdio.h"#include"stdlib.h"#include"string.h"#define _KEY_WORD_END "waiting for your expanding"typedef structint typenum;char * word;WORD;char input255;char token255=""int p_input;int p_token;char ch;char * rwtab="begin","if","then","while","do","end",_KEY_WORD_END;WORD * scaner();void main()int over=1;WORD* oneword=new WORD;printf(" 输入源程序 (以#结束):");scanf("%#s",input);p_input=0;printf("Your words:n%sn",input);while(over<1000&&over!=-1)oneword=scaner();if(oneword->typenum<1000)printf("(%d,%s)",oneword->typenum,oneword->word);over=oneword->typenum;printf("npress # to exit:");scanf("%#s",input);char m_getch()ch=inputp_input;p_input=p_input+1;return(ch);void getbc()while(ch=' '|ch=10)ch=inputp_input;p_input=p_input+1;void concat()tokenp_token=ch;p_token=p_token+1;tokenp_token='0'int letter()if(ch>='a'&&ch<='z'|ch>='A'&&ch<='Z')return 1;elsereturn 0;int digit()if(ch>='0'&&ch<='9')return 1;elsereturn 0;int reserve()int i=0;while(strcmp(rwtabi,_KEY_WORD_END)if(!strcmp(rwtabi,token)return i+1;i=i+1;return 10;void retract()p_input=p_input-1;char * dtp()return NULL;WORD *scaner()WORD *myword=new WORD;myword->typenum=10;myword->word=" "p_token=0;m_getch();getbc();if(letter()while(letter()|digit()concat();m_getch();retract();myword->typenum=reserve(); myword->word=token;return(myword);else if(digit()while(digit()concat();m_getch();retract();myword->typenum=20;myword->word=token;return(myword);else switch(ch)case'=': m_getch(); if(ch='=') myword->typenum=39; myword->word="=" return(myword); retract(); myword->typenum=21; myword->word="=" return(myword); break; case'+': myword->typenum=22; myword->word="+" return(myword); break; case'-': myword->typenum=23; myword->word="-" return(myword); break; case'*': myword->typenum=24; myword->word="*" return(myword); break; case'/': myword->typenum=25; myword->word="/" return(myword); break;case'(': myword->typenum=26; myword->word="(" return(myword); break;case')': myword->typenum=27; myword->word=")" return(myword); break;case'': myword->typenum=28; myword->word="" return(myword); break;case'': myword->typenum=29; myword->word="" return(myword); break;case'': myword->typenum=30; myword->word="" return(myword); break;case'': myword->typenum=31; myword->word="" return(myword); break;case',': myword->typenum=32; myword->word="," return(myword); break;case':': myword->typenum=33; myword->word=":" return(myword); break;case'': myword->typenum=34; myword->word="" return(myword); break;case'>': m_getch(); if(ch='=') myword->typenum=37; myword->word=">=" return(myword); retract(); myword->typenum=35; myword->word=">" return(myword); break; case'<': m_getch(); if(ch='=') myword->typenum=38; myword->word="<=" return(myword); retract(); myword->typenum=36; myword->word="<" return(myword); break; case'!': m_getch(); if(ch='=') myword->typenum=40; myword->word="!=" return(myword); retract(); myword->typenum=-1; myword->word="ERROR" return(myword); break;case'0': myword->typenum=1000; myword->word="OVER" return(myword); break;default: myword->typenum=-1; myword->word="ERROR" return(myword); 六、 运行结果及分析运行结果: 通过此次实验,让我了解到如何设计、编制并调试词法分析程序,加深对词法分析原理的理解;熟悉了构造词法分析程序的手工方式的相关原理。

    注意事项

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

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开