资源描述
,啊,啊,啊,啊,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,的实现,单个正则表达式,词法分析器,处理多样的,REs,将所有的正则表达式的,NFA,联合在一起,变成一个单一的有限自动机,LEX,二义性的处理方法,REs+,优先匹配原则,+,最长匹配规则,=,词法分析器的定义,词法分析器,输出端是,Token,流,将,tokens,和终态联系在一起。,当到达一个终态时,就将相应的,token,输出。,最长匹配,当到达一个终态时,要查看是否存在更进一步的转换。如果不存在,则返回当前终态对应的,token,优先级规则,当终态对应多个,token,的时候,有可能会有相同的最长匹配的,token,将这个终结状态和最高优先级的,token,联系起来。,LEX,举例,LEX,举例,NFA,确定化,给出状态转换表,LEX,程序举例,词法分析总结,DFA,最小化,Thanks for your time!,Questions&Answers,
展开阅读全文