




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
名称 词法分析器 版本 1 0 作者 2015 4 2 include include include include include define LENGTH1 10 type reserved word size FILE fp NULL outstream Pointer FILE fw NULL instream pointer char character char token 32 The character array to store the sequence of characters has been read Code table char CODE identifier constant keyword cnt ifp ptr character 处理保留字 对存放在 token 中的字符串查保留字 若查到 则返回该保留字的类别编 码 否则返回 0 int reserve char k int i for i 0 i LENGTH1 i if strcmp token k i 0 return i 1 return 0 处理标识符 对存放在 token 中的字符串查找符号表 若查到 则返回它在符号表的位 置 存入常数表中 并返回它在常数表中的位置编号 int symbol identifier id int i for i 0 ilen i if strcmp token id I i 0 return i 1 if id len 256 assert 0 id I id len token id len return id len 将数字字符串转化为整数 int strtonumber int i int sum 0 for i 0 icont con len strtonumber con len return con len 将整数值转化为字符串 char numbertoString int num char s 3 int i num 10 while i 0 char c i 0 strcat s return s 将结果写入到文件并且输出到屏幕 void returntofile int num int val identifier id constnumber con int i int num num char c c putc c fw printf c c i num 10 while i 0 num num 10 i c i 0 printf c c putc c fw i num 10 c num 0 printf c c putc c fw printf putc fw 如果是标识符或常数 则放入括号内 if num 1 处理标识符 printf s id I val 1 printf printf n fputs id I val 1 fw putc fw putc n fw if num 2 处理常数 num con cont val 1 i num 10 while i 0 num num 10 i c i 0 printf c c putc c fw i num 10 c num 0 printf c c printf printf n putc c fw putc fw putc n fw if num 3 保留字 printf printf printf printf printf s k val 1 printf printf n putc fw putc fw fputs fw putc fw fputs k val 1 fw putc fw putc n fw if num 3 处理界符 printf printf printf printf printf s CODE num 1 printf printf n putc fw putc fw fputs fw putc fw fputs CODE num 1 fw putc fw putc n fw 将错误写入到文件或输出到屏幕 void error printf ERROR printf c character printf printf n fputs ERROR fw putc character fw putc fw putc n fw 词法分析函数 void LexAnalyze char k char CODE identifier id constnumber con FILE fp FILE fw int num val strcpy token getNextChar fp getnbc fp switch character case a case b case c case d case e case f case g case h case i case j case k case l case m case n case o case p case q case r case s case t case u case v case w case x case y case z case A case B case C case D case E case F case G case H case I case J case K case L case M case N case O case P case Q case R case S case T case U case V case W case X case Y case Z while letter digit concat getNextChar fp retract fp num reserve k 保留字 if num 0 returntofile 3 num id con else val symbol id returntofile 1 val id con break case 0 case 1 case 2 case 3 case 4 case 5 case 6 case 7 case 8 case 9 while digit concat getNextChar fp retract fp val constant con returntofile 2 val id con break case getNextChar fp if character returntofile 11 0 id con else retract fp returntofile 10 0 id con break case getNextChar fp if character returntofile 13 0 id con else retract fp returntofile 14 0 id con break case getNextChar fp if character returntofile 12 0 id con else error break case returntofile 4 0 id con break case returntofile 5 0 id con break case returntofile 6 0 id con break case returntofile 7 0 id con break case returntofile 15 0 id con break case returntofile 16 0 id con break case returntofile 17 0 id con break case returntofile 18 0 id con break case returntofile 19 0 id con break case returntofile 20 0 id con break case returntofile 21 0 id con break case returntofile 22 0 id con break case returntofile 23 0 id con break case returntofile 23 0 id con break case returntofile 25 0 id con break case returntofile 26 0 id con break case returntofile 27 0 id con break case break case returntofile 29 0 id con break case returntofile 32 0 id con break case returntofile 33 0 id con break case returntofile 34 0 id con break case returntofile 35 0 id con break default error main int argc char argv 初始化标识符和常数结构体 identifier id identifier malloc sizeof identifier constnumber con constnumber malloc sizeof constnumber con len 0 id len 0 argc 3 argv 1 E file1 txt 待分析的文件 argv 2 E file2 txt 保存分析结果的文件 从打开目标文件流 if fp fopen argv 1 r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年注册验船师资格考试(A级船舶检验法律法规)考前模拟试题及答案二
- 2025年殡仪服务职业认证考试面试要点及模拟题集
- 桃花心木课件教学
- 公务员应变面试题及答案
- 2025年艺术设计领域招聘考试试题预测及备考策略
- 2025年国家历史局选拔考试复习题目与答案详解
- 公务员面试题及答案最佳
- 公务员面试题及答案扶贫
- 莫言小说中的民俗元素呈现及其意义
- 2025年环境科学与管理专业高级考试题库及答案
- 矿山基金管理办法
- 肥料登记证授权合同范本
- 工业厂房租赁管理办法
- 辽宁动物检疫管理办法
- 肺癌免疫治疗病例分享
- 2025年汽车智能驾驶技术及产业发展白皮书-清华大学
- 2025云南师范大学辅导员考试题库
- 2025年国考行测试题及答案解析
- 财务岗位安全培训课件
- 2025年贵州省中考语文试卷真题(含答案)
- 2025至2030中国电容膜片真空计行业发展趋势分析与未来投资战略咨询研究报告
评论
0/150
提交评论