- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
词法分析程序设计和自动构造
武汉理工大学计算机科学系陈天煌 词法分析程序设计与自动构造 彭德巍 2011.10.12 主要内容 词法分析程序设计 词法分析程序自动构造 1.词法分析程序设计 词法分析总控程序见图1。 界限符 运算符 字母 数字 结束符“#” 开始 到输入流中读下一字符?Char Char是什么? 初始化 标识符和关键字 词法分析子程序 无符号数 词法分析子程序 运算符 词法分析子程序 界限符 词法分析子程序 结束 图1 词法分析总控程序 若对自动机的每一个状态赋予一定的功能,并把其边上的符号视为转移条件,那么自动机就成为一个程序了。以无符号数为例:给定语法图2,构造自动机见图3。 d . d e + - d 图2 无符号数的语法图 图3 无符号数的自动机 1 2 3 4 5 6 0 ? d d + ε - . e d . other other d d other e d 7 e 开始 0?N,P,j; 1?e 数字?d; N*10+d?N 是数字? Y 读字符?char N Y N 整型量 标记?C1 是’-’吗? 读字符?char 是’e’吗? 是’-’吗? -1?e 读字符?char Y N Y N 读字符?char 是数字? Y 数字?d;N*10+d?N; j+1?j 是数字? Y 读字符?char ERROR N N 实型量 标记?C1 是数字? Y 数字?d; P*10+d?P Y 读字符?char ERROR N N 实型量标记?C1 N*10e*P-j? t 结束 Y N 整数部分 小数部分 是’.’吗? 是数字? 指数部分 N 图4 无符号数词法分析流程图 最后可得到无符号数分析算法流图见图4。 2.词法分析程序设计自动构造 Flex简介 Flex源文件分析 Flex词法分析程序设计自动构造演示 实验任务和要求 2.1 Flex简介 ?FLEX通过读取一个有规定格式的文本文件,输出一个如下所示的C语言源程序。 Flex源文件格式 ?LEX对源文件的格式要求非常严格,所以书写时一定要注意。 ???LEX的源文件由三个部份组成,每个部分之间用顶行的“%%”分割,其格式如下: ???定义部份 ???%% ???规则部份 ???%% ???用户附加C语言部份 定义部分 定义部份由C语言代码、模式的宏定义组成。 除宏定义外,定义部分的其余代码必须用符号%{ 和 %} 括起来。另外,flex使用的C语言库文件和外部变量以及部分声明的函数,也应分别置于%{ 和 %} 之内。 例如下面是一个flex语言的说明部分: %{ #include “stdio.h” int num = 0 %} DIGIT [0-9] ID [A-Za-z][A-Za-z0-9_]* %% 注意:这里起标识符作用的%%和%{ 、%}必须要顶行写 规则部分 规则部份是LEX源文件的核心部份,它包括一组模式和在生成分析器识别相应模式后对相应模式进行处理的C语言动作(Action)。格式如下: ???C语言代码 ???模式1 动作1 ???模式2 | ???模式3 动作3 用户附加C语言部份 支持规则动作部分所需要的处理过程,是对规则部分中动作的补充。 FLEX对此部份不作任何处理,仅仅将其直接拷贝到输出文件lex.yy.c的尾部。 Flex中模式的定义 digit [0-9] number (-|+)?{digit}+ hexnumber 0x({digit}|[a-fA-F])+ letter [a-zA-Z] identifier ({letter}|_)({number}|{letter}|_)* newline [\n] whitespace [ \t]+ string \[^]*\ comment #[^#]*# Flex中模式的定义-PL/0语言 digit [0-9] letter [a-zA-Z] number {digit}+ identifier {letter}({letter}|{digit})* wrongid ({digit}+){letter}({letter}|{digit})* newline [\n] whitespace [\t]+ Lex.yy.c中的全局变量和函数 File *yyin?? /* 指向词法分析器要接收的待分析程序的指 针。如果不指定则默认指向标准输入终端(
您可能关注的文档
- 让生命之花绽放–5.ppt
- 议论文是事论据使用.ppt
- 训练助力开门红–寿功.ppt
- 议论文写作素材指教–.ppt
- 议论文阅读指教教学课件.ppt
- 记事本程序的设计与实现〔实验版〕.ppt
- 记叙文写作_顺序和描写.ppt
- 记叙文答题技巧〔中考〕.ppt
- 记叙文立意〔万翠竹讲座〕.ppt
- 记叙文写作指导︰审题与选材.ppt
- 教科版(2017秋)科学二年级上册2.6 做一顶帽子 教学设计.docx
- 河北高频考点专训四 质量守恒定律的应用教学设计---2024-2025学年九年级化学人教版(2024)上册.docx
- 大单元教学【核心素养目标】6.3 24时计时法教学设计 人教版三年级下册.docx
- 河南省商城县李集中学2023-2024学年下学期九年级历史中考模拟八(讲评教学设计).docx
- 第18章 第25课时 正方形的性质2023-2024学年八年级下册数学课时分层作业教学设计( 人教版).docx
- Module 8 模块测试 教学设计 2024-2025学年英语外研版八年级上册.docx
- 2024-2025学年小学数学五年级下册浙教版教学设计合集.docx
- 2024-2025学年小学劳动四年级下册人民版《劳动》(2022)教学设计合集.docx
- 2024-2025学年小学数学三年级上册冀教版(2024)教学设计合集.docx
- 2024-2025学年高中生物学必修1《分子与细胞》人教版教学设计合集.docx
文档评论(0)