- 1
- 0
- 约2.96千字
- 约 28页
- 2017-12-28 发布于河北
- 举报
词法分析--软件开发过程与项目管理综述
数据库原理与Oracle——SQL语言 Part3词法分析 授课:胡静 内容提要 词法分析器的作用 词法分析程序的设计与实现——状态图 词法分析程序的自动生成——有穷自动机 词法分析器的自动产生 LEX工作过程 首先,使用LEX语言写一个定义词法分析器的源程序lex.l。 然后利用LEX编译器将lex.l转换成C语言程序lex.yy.c。它包括从lex.l的正规表达式构造的状态转换图的表格形式以及使用该表格识别词素的标准子程序。 与lex.l中正规表达式相关联的动作是C代码段,这些动作可以直接加入到lex.yy.c中。 最后,lex.yy.c通过C编译器生成目标程序,这个目标程序就是把输入流转换成记号序列的词法分析器。 LEX工作过程 LEX说明 一个LEX程序由如下三部分组成: 声明部分(辅助定义式) %% 转换规则(识别规则) %% 辅助过程 (用户子程序) 声明部分包括变量声明、符号常量声明和正规定义。 声明部分 声明部分举例 LEX识别规则 LEX程序的转换规则是如下形式的语句: P1 {A1} P2 {A2} … pn {An} LEX程序的第三部分包含action所需要的辅助过程。这些过程可以单独编译,并与词法分析器一起装载。 LEX举例 LEX举例 %{ /*符号常数定义 LT, LE, EQ, NE, GT, GE, IF, THEN, ELSE, ID, NUMBER, RELOP */ %} /*正规定义*/ dilim [ \t \n] ws {delim}+ letter [A-Za-z] digit [0-9] id {letter}({letter}|{digit})* number {digit}+(\.{digit}+)?(E[+\-])?{digit}+)? %% LEX举例 %% {ws} {/*没有动作和返回值*/ } if {return(IF);} then {return(THEN);} else {return(ELSE);} {id} {yylval = install_id(); return(ID);} {number} {yylval = install_num(); return(NUMBER);} “” {yylval = LT; return(RELOP);} “=” {yylval = LE; return(RELOP);} “=” {yylval = EQ; return(RELOP);} “” {yylval = NE; return(RELOP);} “” {yylval = GT; return(RELOP);} “=” {yylval = GE; return(RELOP);} %% LEX举例 %% install_id() { /*往符号表填入词素的过程,yytext指向词素的第一个字符,yyleng表示词素的长度。将词素填入符号表,返回指向该词素所在表项的指针*/ } install_num() { /*与填写词素的过程类似,只不过词素是一个数。*/ } LEX举例说明 假设由上面的程序生成的词法分析器被给定的一个由两个制表符、一个if和一个空格组成的输入串。 两个制表符是能与模式ws匹配的初始最长前缀。 与ws相关联的动作不做任何事,因此词法分析器移动词素的开始指针yytext使其指向i,并开始查找下一个记号。 下一个匹配的词素是if。请注意,模式if和{id}均匹配这个词素,并且没有能匹配更长串的模式。由于上面的程序中匹配关键字if的模式先于匹配标识符的模式执行,所以if被匹配成关键字。通常,采用将匹配关键字的模式置于匹配标识符的模式之前的策略,可以简单有效的保留关键字。 假设读入的头两个字符是=。 模式匹配上第一个字符,但它不是能匹配输入字符串的最长前缀的模式。 LEX采用“选择最长匹配前缀的策略”方便的解决了和=之间的冲突。这里,当然=被选择作为下一个记号。 LEX说明 由LEX创建的词法分析器与语法分析器协同工作的方式如下: 词法分析器被语法分析器调用后,从尚未扫描的输入字符串中读字符,每次读入一个字符,直到发现能与某个正规表达式pi匹配的最长前缀。 词法分析器执行Ai。通常Ai会将控制返回给语法分析器。然后如果不将控制交给语法分析器,词法分析可以继续发现更多的词素,直到某个操作将控制返回给语法分析器。 词法分析器这种不断查找词素,直到以显示的return调用结束工作的方式,使其可以方便的处理空白符和注释。 词法分析器只返回记号给语法分析器,带有与词素相关信息的属性值是通过全局变量yylval传递的。
您可能关注的文档
- 自由能与吸附原理.ppt
- 艺术教育特色校汇报1.ppt
- 艾滋病预防小知识基础综合版.ppt
- 英国近代王室.ppt
- 英文演讲-经典电影.ppt
- 英语七年级下册6单元.ppt
- 英语课件:TABLE MANNERS.ppt
- 英语课件:SINGAPORE.ppt
- 茶PPT(英文版)Chinese_Tea_Culture.ppt
- 荧光定量PCR技术报告.ppt
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 浙江省温州市2025-2026学年高三年级上学期期末质量评价语文试卷.docx VIP
- 门窗加工安全操作规程手册.docx VIP
- 人体表面放射性污染去污处理对策研究.docx VIP
- HAIER 海尔 海尔Haier冰箱 BCD-649WE 说明书.pdf
- 公共机构节水管理规范.doc VIP
- 如何找回误删微信好友,微信好友一键恢复.doc VIP
- 2012韩山师范学院专升本插班生考试《数据结构》试卷.pdf VIP
- Dragons: Riders of Berk《驯龙记:伯克岛的龙骑手(2012)》第一季第六集完整中英文对照剧本.docx VIP
- 供电设备、供水设备运行维护管理方案.pdf VIP
- 股票操作手册.pdf VIP
原创力文档

文档评论(0)