编译原理第4讲.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《编译原理第4讲.ppt》由会员分享,可在线阅读,更多相关《编译原理第4讲.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、温故知新温故知新正规式正规式计算机计算机计算机计算机实现实现实现实现状态转换图状态转换图不确定有不确定有不确定有不确定有限自动机限自动机限自动机限自动机确定有限确定有限确定有限确定有限自动机自动机自动机自动机等价等价等价等价子集构造法子集构造法子集构造法子集构造法最简确定最简确定最简确定最简确定有限自动有限自动有限自动有限自动机机机机等价等价等价等价非形式化非形式化非形式化非形式化描述的语描述的语描述的语描述的语言言言言状态列举法状态列举法状态列举法状态列举法合并不可区别状态合并不可区别状态合并不可区别状态合并不可区别状态手工实现手工实现手工实现手工实现用正规式语法结构来指导构造过程用正规式语
2、法结构来指导构造过程用正规式语法结构来指导构造过程用正规式语法结构来指导构造过程?词法分析器的生成器词法分析器的生成器词法分析器的生成器词法分析器的生成器2.5词法分析器的生成器词法分析器的生成器 用用Lex建立词法分析器的步骤建立词法分析器的步骤Lex编译器编译器Lex源程序源程序lex.llex.yy.cC编译器编译器lex.yy.ca.outa.out输入流输入流记号序列记号序列2.5词法分析器的生成器词法分析器的生成器LexLex程序包括三个部分程序包括三个部分 声明声明声明声明 翻译规则翻译规则翻译规则翻译规则 辅助过程辅助过程辅助过程辅助过程Lex程序的翻译规则程序的翻译规则 p
3、p1 1 动作动作动作动作11 p p2 2 动作动作动作动作22 p pn n 动作动作动作动作n n 2.5词法分析器的生成器词法分析器的生成器例例-声明部分声明部分%/*常常常常量量量量LT,LT,LE,LE,EQ,EQ,NE,NE,GT,GT,GE,GE,WHILE,WHILE,DO,DO,ID,ID,NUMBER,RELOPNUMBER,RELOP的定义的定义的定义的定义*/%/*正规定义正规定义正规定义正规定义*/delimdelimtntnwsws delimdelim+letterletterAA ZaZa zzdigitdigit00 99idid letter(letter
4、|digitletter(letter|digit)*numbernumberdigitdigit+(.(.digitdigit+)?(E)?(E+?digit?digit+)?)?2.5词法分析器的生成器词法分析器的生成器例例-翻译规则部分翻译规则部分 wsws/*没有没有没有没有动动动动作,也不返回作,也不返回作,也不返回作,也不返回*/whilewhilereturn(WHILE);return(WHILE);dodoreturn(DO);return(DO);idid yylvalyylval=install_idinstall_id();return(ID);();return(ID
5、);numbernumber yylvalyylval=install_numinstall_num();return);return(NUMBER);(NUMBER);“”“”yylvalyylval=LT;return(RELOP);=LT;return(RELOP);“=”“=”yylvalyylval=LE;return(RELOP);=LE;return(RELOP);“=”“=”yylvalyylval=EQ;return(RELOP);=EQ;return(RELOP);“”“”yylvalyylval=NE;return(RELOP);=NE;return(RELOP);“”“
6、”yylvalyylval=GT;return(RELOP);=GT;return(RELOP);“=”“=”yylvalyylval=GE;return(RELOP);=GE;return(RELOP);2.5词法分析器的生成器词法分析器的生成器例例-辅助过程部分辅助过程部分install_id()install_id()/*把把把把词词词词法法法法单单单单元装入符号表并返回指元装入符号表并返回指元装入符号表并返回指元装入符号表并返回指针针针针。yytextyytext指向指向指向指向该词该词该词该词法法法法单单单单元的第一个字符,元的第一个字符,元的第一个字符,元的第一个字符,yyleng
7、yyleng给给给给出的它的出的它的出的它的出的它的长长长长度度度度*/install_numinstall_num()()/*类类类类似似似似上上上上面面面面的的的的过过过过程程程程,但但但但词词词词法法法法单单单单元元元元不不不不是是是是标标标标识识识识符符符符而而而而是是是是数数数数*/用用Lex定义常规表达式定义常规表达式.匹配任意字符,除了匹配任意字符,除了n-指范围指范围A-Za-z0-9$行的结尾行的结尾模式可能出现的次数,例如模式可能出现的次数,例如A1,3表示可表示可能出现能出现1次或次或3次次1.表示行的开始;表示行的开始;2.否定否定,操作符操作符只能出只能出现在左中括号
8、后的第一个字符位置处现在左中括号后的第一个字符位置处abc,表示除了,表示除了abc外的其他字符。外的其他字符。*|?+等等常用的闭包,逻辑或等操作常用的闭包,逻辑或等操作2.5词法分析器的生成器词法分析器的生成器 LexLex中重要的外部变量中重要的外部变量 yytext:外部字符数外部字符数组组,其内容是当前被某,其内容是当前被某个个规则规则匹配的字符串匹配的字符串yyleng:当前当前yytext中的字符的个数中的字符的个数例:例:a-zA-Z+printf(“word=%s,length=%d”,yytext,yyleng);另外另外a-zA-Z+printf(“%s”,yytext)
9、;可以可以简简写成写成a-zA-Z+ECHO;2.5词法分析器的生成器词法分析器的生成器 LexLex中识别规则二义性处理中识别规则二义性处理 能匹配最多字符的能匹配最多字符的规则优规则优先先能匹配相同数目的字符的能匹配相同数目的字符的规则规则,书书写写顺顺序序在前的在前的优优先先eg:integerkeywordaction.;integerkeywordaction.;azaz+identifieraction.;+identifieraction.;当输入为当输入为当输入为当输入为integersintegers时,匹配时,匹配时,匹配时,匹配 azaz+Lex中识别规则二义性处理假设需
10、要计算输入文本中假设需要计算输入文本中she和和he的个数的个数shes+;REJECT;heh+;n|.;“|”表示本行采取的动作和下面一行采取的表示本行采取的动作和下面一行采取的动作相同。动作相同。2.5词法分析器的生成器词法分析器的生成器简单的例子简单的例子删除输入中每行结尾处所有空白符删除输入中每行结尾处所有空白符%t+$;如果要将字符串中的空格或者制表符转换为单如果要将字符串中的空格或者制表符转换为单个空格,需要增加一条规则:个空格,需要增加一条规则:%t+$;t+printf(“”);2.5词法分析器的生成器词法分析器的生成器简单的例子简单的例子在每行前面插入行号在每行前面插入行号
11、 intyylineno=0;%(.*)nprintf(%4dt%s,yylineno+,yytext);%main()yylex();2.5词法分析器的生成器词法分析器的生成器 intint num_linesnum_lines=0,=0,num_charsnum_chars=0;=0;%n+n+num_linesnum_lines;+;+num_charsnum_chars;.+.+num_charsnum_chars;%main()main()yylexyylex();();printfprintf(#oflines=%d,#ofchars=%(#oflines=%d,#ofchars=
12、%dndn,num_lines,num_charsnum_lines,num_chars););上机实验例子上机实验例子上机实验例子上机实验例子example.lexample.l2.5词法分析器的生成器词法分析器的生成器hello worldwo ai tian an men hello world i love上机实验例子上机实验例子上机实验例子上机实验例子example.lexample.llex.yylex.yy.exe.exe#of lines=3,#of chars=49作业作业1 1、从、从、从、从ftpftp下载下载下载下载“软件学院编译原理实践软件学院编译原理实践软件学院编译
13、原理实践软件学院编译原理实践.zip.zip”,阅读教程中,阅读教程中,阅读教程中,阅读教程中有关有关有关有关PL/0PL/0词法分析器的源代码。词法分析器的源代码。词法分析器的源代码。词法分析器的源代码。2 2、从从从从ftpftp下载下载下载下载“LexLex和和和和YaccYacc简明教程简明教程简明教程简明教程.pdfpdf ”,了解,了解,了解,了解lexlex程序的程序的程序的程序的写法。写法。写法。写法。2 2、从、从、从、从ftpftp下载下载下载下载“lexlex_ _实验实验实验实验.zip.zip”,按照,按照,按照,按照 “flex flex 说明说明说明说明.txt”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内