词法分析14-3.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
词法分析14-3重点讲义

例3-5 scan( )的实现算法 1. 读入当前字符 ? ch 2. while ch 是空格 do //跳过空格 3. 下一字符 ? ch 4. case ch of 5. isdigit(ch): //是数字字符 6. ch?buf; 下一字符?ch 7. while isdigit(ch) do 8. ch?buf; 下一字符?ch 9. 回送 ch 10. 将buf数字字符串变成数 ? attr 11. 返回 NUM //整数 12. isalpha(ch): //是字母 13. ch?buf; 下一字符?ch 14. while isalpha(ch) or isdigit(ch) 15. do ch?buf; 下一字符?ch 16. 回送 ch; 17. key = isKeyword(buf); 18. if key = 0 return key; 19. Lookup( buf ) ? attr 20. 返回 IDN //标识符 21. : : 下一字符→ch; 22. if ch等于= return ASG; 23. error; 24. + : return ADD; 25. - : return SUB; 26. * : return MUL; 27. / : return DIV; 28. = : return EQ; 29. : return GT; 30. : return LT; 31. ( : return LP; 32. ) : return RP; 33. ; : return SEMI; 33. other : error; 34. end of case; 符号表与标识符 标识符 程序中的名字(变量名、函数名、常数名) 符号表的结构 表项:标识符的相关信息(结构体) 符号表:结构体数组 标识符的表示:数组下标(入口指针) Lookup的功能 返回入口指针,如果不存在则构造表项 其他实现问题: 词法分析效率低(逐个字符处理) 缓冲区预处理 超前有哪些信誉好的足球投注网站,减少I/O操作 识别效率 优化多路选择的开销 词法错误处理 报告出错位置(行列信息) 3) 小结 词法分析问题求解 词法描述 解决方案 分析算法的设计 程序的实现 正规式 ?正规文法 ↓ 状态图 / NFA ↓ DFA ↓ 识别过程的实现算法 ↓ 程序实现和测试 词法分析技术的其他应用: 查询语言,信息检索系统 识别由正规式描述的字符串 命令语言 识别命令格式 报文的处理 识别报文格式 应用范围: 可以用正规式或3型文法描述。 习题:教科书 P63-65 作业题: P63 – 2 P64 – 8(1)(2),12(a) 补充题: 构造下列正规式的状态图,并以五元组的形式构造对应的 DFA a ( a b | a b* a )* b 上机题 合并例3-3 和例3-4 的状态图,设计并实现词法分析函数 每次返回一个单词种别和属性 考虑关键字if、then、while、do的处理 编制主程序完成测试 输入:源程序 输出:单词序列(二元组序列) 第三章 词法分析 3.1 词法分析的任务 把构成源程序的字符串转换成语义上关联的单词符号的序列 输入:源程序;输出:单词符号 单词符号 token 按照最小的语义单位设计, 表示为二元组(单词种别,属性值) 1) 单词符号的表示 单词种别 通常按照语法分析的需要设置. 常用:各种关键字,标识符,常数,各种运算符,各种分界符(逗号、分号…) 属性值 用于语义分析和翻译,补充说明单词的语义 常用:常数的值,标识符的名字等 例3-1: 单词符号序列 while( *p != \0 ) { p++; } while (WHILE, _ ) ( (SLP, _ ) * (FETCH, _ ) p (IDN, 符号表入口指针 ) != (RELOP, NE ) \0 (CONST, 0 ) ) (SRP, _) { (LP, _ ) p (IDN, 符号表入口指针 ) ++ (INC, _ ) ; (SE

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档