




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理程序设计实验报告编译原理程序设计实验报告 词法分析扫描器的设计实现词法分析扫描器的设计实现 班级 计算机班级 计算机 1306 班班姓名 张涛姓名 张涛学号 学号 20133967 实验目标 实验目标 设计一个词法分析扫描程序 实现对所输入源 程序的单词切分和类码翻译功能 完成编译程序的初步工 作 实验内容 实验内容 概要设计 程序总体要实现切分单词和类码翻译两部分 功能 两部分可以同时进行 在词法分析阶段 源程序可 视为单词级语言 所对应的文法为正则文法 故程序的实 现可借助有限状态自动机从左至右逐一扫描字符串 能够 完成从自动机初态扫描至终态即视为正确单词 单词级语 言有关键字 标识符 数字和界符四种形式 扫描至终态为单词的即查关键字表 若为关键字则输出 其对应的类码 否则 查标识符表 如该单词已存在 则输出其标识符类码 否则填入标识符表 并输出类码 扫描到终态为界符的 输出对应类码 扫描到终态为数字的 输出数字类码 数据结构 关键字表 用二维字符数组表示 char keywords 6 10 界符表 用字符数组表示 char bound 13 当前扫描字符 字符类型变量 ch 当前扫描单词 字符数组表示 nowword 10 注 因本实验词法分析阶段尚无需建立完整的符号表系统 故无界符表和常数表 流程图 本程序采用精简状态法 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 state 0一 一 一 一 一 一 ERR 1 ERR false OK true state 4 一 一 一 一 一 一 一 state 0 一 一 一 一 一 一 一 一 一 一 一 一 一 OK 0 OK true一 state 4一 一 一 一 一 一 一 一 一 一 一 一 state 3 state 4 state 0 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 ERR false 一 一 一 一 一 一 一 一 NO YES 一 一 YES NO YES NO 一 一 一 一 一 一 一 OK 1 OK false 一 一 一 一 一 一 YES YES NO OK 1 OK false YES YES NO YES NO NO YES NO YES 关键函数 int IsLetter char ch 判断 ch 是否为字母 int IsDigit char ch 判断 ch 是否为数字 int Iskey char string 判断是否为关键字 int Isbound char ch 判断是否为界符 int Isboundnum char ch 给出界符所在 token 值 源程序代码 源程序代码 include include include include include include using namespace std char ch 当前字符 char nowword 10 当前单词 char keywords 6 10 int main void if char 关键字 char bound 13 界符 int IsLetter char ch 判断 ch 是否为字母 for int i 0 i a return 0 int IsDigit char ch 判断 ch 是否为数字 for int i 0 i 0 return 0 int Iskey char string 判断是否为关键字 for int i 0 i 6 i if strcmp keywords i string return 1 return 0 int Isbound char ch 判断是否为界符 for int i 0 i 13 i if ch bound i return 1 return 0 int Isboundnum char ch 给出界符所在 token 值 for int i 0 i 13 i if ch bound i return i 10 return 0 int main FILE fp int q 0 char sour 200 cout 请将源文件置于以下位置并按以下方式命名 F 1 txt n if fp fopen F 1 txt r NULL 打开文件 cout 文件未找到 n else while feof fp if isspace ch fgetc fp else sour q ch q int state 0 nowlen 0 定义状态 当前单词长度 sour q q bool OK true ERR false for int i 0 i q i 开始扫描 switch state case 0 ch sour i if Isbound ch if ERR cout 无法识别 n ERR false OK true else if OK printf 标识符 n nowword OK true state 4 else if IsDigit ch if OK memset nowword 0 strlen nowword nowlen 0 nowword nowlen ch nowlen state 3 OK false break else nowword nowlen ch nowlen else if IsLetter ch if OK memset nowword 0 strlen nowword nowlen 0 nowword nowlen ch nowlen OK false else nowword nowlen ch nowlen if Iskey nowword printf 关键字 n nowword OK true break case 3 if IsLetter ch printf 错误 n nowword nowlen ch nowlen ERR false state 0 break if IsDigit ch sour i nowword nowlen ch nowlen else printf 数字 n nowword i state 0 OK true break case 4 i printf 界符 n Isboundnum ch ch state 0 break return 0 程序运行结果 程序运行结果 截屏 输入 int main void int a1 1 d 2 c if a d c a a d d c char ch 10 OK char x y a c a d 注 如需运行请将源文件放置 F 盘 并命名为 1 txt 输出 思考问题回答 思考问题回答 在做实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年贵州独山县人民医院招聘医务人员考试真题
- 考点攻克人教版八年级上册物理《长度和时间的测量》专项测评试卷(含答案解析)
- 设备拆除及回收承包合同5篇
- 低空经济2025:倾转旋翼技术在无人机大吨位货运中的市场机遇与风险报告
- 八年级物理上册 第一章 走进实验室 1.1走进实验室:学习科学探究说课稿1 (新版)教科版
- 2025年低空经济无人机农业植保设备市场分析报告:技术创新与市场趋势
- 2025-2030年新能源汽车充电设施市场推广策略与品牌建设报告
- 第二节 创意设计实践和评价说课稿-2025-2026学年高中信息技术华东师大版2020选择性必修5 三维设计与创意-华东师大版2020
- 解析卷-人教版八年级上册物理物态变化《温度》定向测评练习题
- 第7课 尸字旁、户字旁教学设计-2025-2026学年小学书法练习指导五年级下册华文版
- 2024年新华东师大版七年级上册数学全册教案(新版教材)
- 《看图找关系》(教学设计)-2024-2025学年六年级上册数学北师大版
- 合伙人之间合作合同范本
- 电商直播带货的营销策略手册
- CJ/T 123-2016 给水用钢骨架聚乙烯塑料复合管
- LYT 2241-2014 森林生态系统生物多样性监测与评估规范
- 2024年上海市中考语文试题卷(含答案)
- 2024年辽宁省葫芦岛市行政职业能力测验题库加解析答案
- GB/T 2820.9-2024往复式内燃机驱动的交流发电机组第9部分:机械振动的测量和评价
- 热电偶测温系统安装
- 【川教版】《生命 生态 安全》六上第17课《舌尖上的四川》课件
评论
0/150
提交评论