本类下载TOP10
Lex程序的剖析毕业设计
全文下载
Word文件格式下载
6 文钱
文钱不够?
摘 要 程序设计语言从机器语言到今天的像PASCAL、C等这样的高级语言,使人们可以摆脱与机器有关的细节进行程序设计。但是用高级语言写程序时程序员必须在程序中详尽地告诉计算机系统怎样去解决某个问题,这在某种程度上说也是一件很复杂的工作。人们希望有新的工具,用这种工具,程序员仅仅需要告诉计算机系统要解决什么问题,计算机系统能自动地从这个问题的描述去寻求解决问题的途径,或者说将这个问题的描述自动地转换成用某种高级语言如C、FORTRAN表示的程序。这个程序就可以解决给定的问题。这种希望虽然还没有能够完全变成现实,但是在某些具体的问题领域里已经部分的实现了。这里要介绍的LEX和YACC就是在编译程序设计这个领域里的两种非常有用的工具,用它们可以很方便的生成词法分析器和语法分析器,并自动地产生出相应的高级语言(C)的程序。 目录: 1 自动构造工具LEX简介 1 1.1 Lex概述 1 1.2lex& yacc与编译器 2 2 LEX的使用方法 3 2.1 Lex源程序的格式 3 2.1.1模式 3 2.1.2定义部分 6 2.1.3规则部分 7 2.1.4 用户代码部分 7 2.2 Lex 的常规表达式 8 2.3 Lex正则表达式 9 2.4 Lex的工作原理 10 2.5 Lex 编程 11 3 LEX程序分析 12 3.1 LEX源程序中的动作 12 3.1.1 yymore( ) 12 3.1.2 yyless(n) 12 3.1.3 yywrap( ) 13 3.2 识别模式后处理 13 3.3 识别规则的二义性 14 3.4 LEX源程序中的辅助定义部分 15 4 程序结构图 16 5 程序流程图 19 5.1 main.c程序主要函数数据结构及流程图 19 5.1.1 main( )函数流程图 19 5.1.2 flexinit( )函数流程图 21 5.1.3 readin( )函数流程图 24 5.2 scan.c/lex.yy.c程序主要流程图 26 5.2.1 set_input_file(file)函数流程图 26 5.2.2 yywrap()函数流程图 26 5.3 yylex.c程序主要流程图 27 5.3.1 yylex()函数流程图 27 5.4 gen.c程序主要流程图 29 5.4.1 genecs()函数流程图 29 5.5 nfa .c程序主要流程图 31 5.5.1 add_accept()函数流程图 31 5.5.2 dumpnfa()函数流程图 31 5.5.3 mark_beginning_as_normal ()函数流程图 32 5.6 ecs .c程序主要流程图 34 5.6.1 mkechar ()函数流程图 34 5.6.2 ccl2ecl ()函数流程图 34 5.7tblcmp.c程序主要流程图 36 5.7.1 inittbl()函数流程图 36 5.7.2 stack1()函数流程图 37 致 谢 38 附录A 外文翻译 40 附录B 原文部分 44 附录C主要源程序 48