编译原理课程第4讲.ppt

编译原理课程第4讲.ppt

ID:52135840

大小:428.00 KB

页数:11页

时间:2020-04-01

编译原理课程第4讲.ppt_第1页
编译原理课程第4讲.ppt_第2页
编译原理课程第4讲.ppt_第3页
编译原理课程第4讲.ppt_第4页
编译原理课程第4讲.ppt_第5页
资源描述:

《编译原理课程第4讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、温故知新正规式计算机实现状态转换图不确定有限自动机确定有限自动机等价子集构造法最简确定有限自动机等价非形式化描述的语言状态列举法合并不可区别状态手工实现用正规式语法结构来指导构造过程?词法分析器的生成器2.5词法分析器的生成器用Lex建立词法分析器的步骤Lex编译器Lex源程序lex.llex.yy.cC编译器lex.yy.ca.outa.out输入流记号序列2.5词法分析器的生成器Lex程序包括三个部分声明%%翻译规则%%辅助过程Lex程序的翻译规则p1{动作1}p2{动作2}……pn{动作n}2.5词法分析器的生成器例---声明部分%{/*常量LT,LE,EQ,NE,G

2、T,GE,WHILE,DO,ID,NUMBER,RELOP的定义*/%}/*正规定义*/delim[t]ws{delim}+letter[AZaz]digit[09]id{letter}({letter}

3、{digit})*number{digit}+(.{digit}+)?(E[+]?{digit}+)?2.5词法分析器的生成器例---翻译规则部分{ws}{/*没有动作,也不返回*/}while{return(WHILE);}do{return(DO);}{id}{yylval=install_id();return(ID);}{number}{yylv

4、al=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);}2.5词法分析器的生成器例---辅助过程部分install_id(){/*把词法单元装入符号表并返回指针。yytext指向该词法单元的第一个字符,yyleng给

5、出的它的长度*/}install_num(){/*类似上面的过程,但词法单元不是标识符而是数*/}2.5词法分析器的生成器intnum_lines=0,num_chars=0;%%++num_lines;++num_chars;.++num_chars;%%main(){yylex();printf("#oflines=%d,#ofchars=%d",num_lines,num_chars);}上机实验例子example.l2.5词法分析器的生成器helloworldwoaitiananmenhelloworldilove上机实验例子example.llex.yy.

6、exe#oflines=3,#ofchars=49本章要点源程序字符流顺序组合词法单元词法记号模式非形式化描述形式化描述正规式字母组合串语言集合集合字母表名字连接指数和LUM连接LM闭包L*正闭包L+计算机实现状态转换图不确定有限自动机确定有限自动机等价子集构造法最简确定有限自动机状态列举法合并不可区别状态手工实现正规式语法结构Lex作业1、从ftp下载“软件学院编译原理实践.zip”,阅读教程中有关PL/0词法分析器的源代码。2、从ftp下载“lex_实验.zip”,按照“flex说明.txt”要求完成如下上机题(选作):1、编写一个词法分析器,它针对输入文件,实现以下功

7、能:1)每遇到你的学号,就输出你的名字,对于其他的串原样输出。2)统计输入文件中字母的数目。例如:(以肖永跃的上机题为例):输入文件如下所示:200213001helloworldwoaitiananmenhelloworldilove200213001输出应该如下所示:肖永钦helloworldwoaitiananmenhelloworldilove肖永钦#ofids=11,#ofchars=66

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。