ch03--词法分析-lex

ch03--词法分析-lex

ID:5262922

大小:305.82 KB

页数:18页

时间:2017-12-07

ch03--词法分析-lex_第1页
ch03--词法分析-lex_第2页
ch03--词法分析-lex_第3页
ch03--词法分析-lex_第4页
ch03--词法分析-lex_第5页
资源描述:

《ch03--词法分析-lex》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第3章词法分析——LEXLIWensheng,SCST,BUPT使用LEX的流程LEX源文件格式LEX工作原理一、使用LEX的流程LEX源程序LEX编译器Lex.yy.clex.llex.yy.cC编译器Lex.yy.o或a.out字符流源程序a.out记号序列WenshengLiBUPT2二、LEX源程序一个LEX源程序由三部分组成:1.说明部分2.翻译规则3.辅助过程说明部分%%翻译规则%%WenshengLiBUPT辅助过程31.说明部分包括:–变量说明–标识符常量说明–正规定义正规定义中的名字可在翻译规则中用作正规表达式的成分Wensh

2、engLiBUPTC语言的说明必须用分界符“%{”和“%}”括起来。42.翻译规则形式:P1{动作1}P2{动作2}…Pn{动作n}Pi是一个正规表达式,描述一种记号的模式。WenshengLiBUPT动作i是C语言的程序语句,表示当一个串匹配模式Pi时,词法分析器应执行的动作。53.辅助过程对翻译规则的补充翻译规则部分中某些动作需要调用的过程,如果不是C语言的库函数,则要在此给出具体的定义。这些过程也可以存入另外的程序文件中,单独编译,然后和词法分析器连接装配在一起。WenshengLiBUPT6LEX源程序举例正规定义式:if

3、ifthenthenelseelserelop<

4、<=

5、=

6、<>

7、>

8、>=idletter(letter

9、digit)*numdigit+(.digit+)?(E(+

10、-)?digit+)?WenshengLiBUPT7相应的LEX源程序框架/*说明部分*/%{#include/*C语言描述的标识符常量的定义,如LT、LE、EQ、NE、GT、GE、IF、THEN、ELSE、ID、NUMBER、RELOP*/externyylval;%}/*正规定义式*/delim[t]ws{delim}+letter[A-Za-z

11、]WenshengLiBUPTdigit[0-9]id{letter}({letter}

12、{digit})*num{digit}+(.{digit}+)?(E[+-]?{digit}+)?%%8相应的LEX源程序框架/*规则部分*/{ws}{/*没有动作,也不返回*/}if{return(IF);}then{return(THEN);}else{return(ELSE);}{id}{yylval=install_id();return(ID);}{num}{yylval=install_num();return(NUMBER);}“<”{yyl

13、val=LT;return(RELOP);}“<=”{yylval=LE;return(RELOP);}“=”{yylval=EQ;return(RELOP);}WenshengLiBUPT“<>”{yylval=NE;return(RELOP);}“>”{yylval=GT;return(RELOP);}“>=”{yylval=GE;return(RELOP);}%%如果没有return语句,则,处理完整个输入之后才会返回!!9相应的LEX源程序框架/*辅助过程*/intinstall_id(){/*把单词插入符号表并返回该单词在符号表中的位置y

14、ytext指向该单词的第一个字符yyleng给出它的长度*/}intinstall_num(){/*类似于上面的过程,但单词是常数*/}WenshengLiBUPT10二、LEX的工作原理1.LEX的工作过程2.处理二义性问题的两条规则3.LEX工作过程举例4.控制执行程序WenshengLiBUPT111.工作过程扫描每一条翻译规则Pi,为之构造一个非确定的有限自动机NFAMi将各条翻译规则对应的NFAMi合并为一个新的NFAMq1NFAM1p1开始0q2NFAM1p2qnNFAM1pnWenshengLiBUPT将NFA

15、M确定化为DFAD,并生成该DFAD的状态转换矩阵和控制执行程序。122.二义性处理最长匹配原则–在识别单词符号过程中,当有几个规则看来都适用时,则实施最长匹配的那个规则优先匹配原则–如有几条规则可以同时匹配一字符串,并且匹配的长度相同,则实施最上面的规则。WenshengLiBUPT133.工作过程举例%%a{}abb{}{a}*b{b}*{}%%WenshengLiBUPT14读LEX源程序,分别生成非确定的有限自动机开始aa12abb开始abb3456ab{a}*b{b}*开始7b8WenshengLiBUPT15合并为一个NFAMa2

16、1开始abb03456abb78WenshengLiBUPT16将该NFAM确定化为DFADDFAD=({a,b},{

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

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

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