编译原理课程设计

编译原理课程设计

ID:13456540

大小:373.50 KB

页数:21页

时间:2018-07-22

编译原理课程设计_第1页
编译原理课程设计_第2页
编译原理课程设计_第3页
编译原理课程设计_第4页
编译原理课程设计_第5页
资源描述:

《编译原理课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编译原理课程设计报告课题名称:使用lex工具实现C/C++语言词法分析器专业:计算机科学与技术班级:xxxx指导老师:xxxx小组成员成员学号xxxXxxxxXxxXxxxxXxxXxxxxxxXxx-2-目录1.课程设计题目名称-2-2.课程设计需实现的功能及目标-2-3.课程设计所涉及的知识介绍-3-4.课程设计环境设置-5-5.程序设计-5-6.程序运行结果和测试报告-6-7.总结及改进建议-9-附件一-9-附件二-13--2-1.课程设计题目名称使用lex工具实现C/C++语言词法分析器2.课程设计需实现的功能

2、及目标u实现功能:完成C/C++语言的词法分析器(C语言词法记号及其含义详见附件一)u词法分析器的作用如下:1.读入源程序字符序列2.对源程序进行预处理,如删除注释和回车换行符,宏展开等3.识别源程序中的单词符号,创建符号表并在相应的符号表中登录信息4.输出单词符号序列5.要求使用Lex编程来自动生成词法分析器。6.要求能识别8进制、16进制数据。-2-1.课程设计所涉及的知识介绍uLex介绍Lex是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义。

3、一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记。当Lex接收到文件或文本形式的输入时,它试图将文本与常规表达式进行匹配。它一次读入一个输入字符,直到找到一个匹配的模式。如果能够找到一个匹配的模式,Lex就执行相关的动作(可能包括返回一个标记)。另一方面,如果没有可以匹配的常规表达式,将会停止进一步的处理,Lex将显示一个错误消息。uLex编程Lex编程可以分为三步:1.以Lex可以理解的格式指定模式相关的动作。一个Lex程序分为三个段:ü第一段是C和Lex的全局声明;ü第二段包括模式(C代码)

4、,即一系列规则;ü第三段是补充的C函数。例如,第三段中一般都有main()函数。注:这些段以%%来分界。那么,回到字数统计的Lex程序,让我们看一下程序不同段的构成。2.在这一文件上运行Lex,生成扫描器的C代码。3.编译和链接C代码,生成可执行的扫描器。uLex常规正则表达式字符含义A-Z,0-9,a-z构成了部分模式的字符和数字。.匹配任意字符,除了。-用来指定范围。例如:A-Z指从A到Z之间的所有字符。[]一个字符集合。匹配括号内的 任意 字符。如果第一个字符是 ^ 那么它表示否定模式。例如:[abC]匹配a

5、,b,和C中的任何一个。-20-*匹配 0个或者多个上述的模式。+匹配 1个或者多个上述模式。?匹配 0个或1个上述模式。$作为模式的最后一个字符匹配一行的结尾。{}指出一个模式可能出现的次数。例如:A{1,3}表示A可能出现1次或3次。用来转义元字符。同样用来覆盖字符在此表中定义的特殊意义,只取字符的本意。^否定。

6、表达式间的逻辑或。"<一些符号>"字符的字面含义。元字符具有。/向前匹配。如果在匹配的模版中的“/”后跟有后续表达式,只匹配模版中“/”前面的部分。如:如果输入A01,那么在模版A0/1中的A0是匹配的

7、。()将一系列常规表达式分组。uLEX常用函数及变量说明Lex变量yyinFILE*类型。它指向lexer正在解析的当前文件。yyoutFILE*类型。它指向记录lexer输出的位置。缺省情况下,yyin和yyout都指向标准输入和输出。yytext匹配模式的文本存储在这一变量中(char*)。yyleng给出匹配模式的长度。yylineno提供当前的行数信息。(lexer不一定支持。)Lex函数yylex()这一函数开始分析。它由Lex自动生成。yywrap()这一函数在文件(或输入)的末尾调用。如果函数的返回值是1

8、,就停止解析。-20-因此它可以用来解析多个文件。代码可以写在第三段,这就能够解析多个文件。方法是使用yyin文件指针(见上表)指向不同的文件,直到所有的文件都被解析。最后,yywrap()可以返回1来表示解析的结束。yyless(intn)这一函数可以用来送回除了前�n?个字符外的所有读出标记。yymore()这一函数告诉Lexer将下一个标记附加到当前标记后。1.课程设计环境设置实验所需软件及文件:mingw-get-inst-20110316.exebison.exeflex.exebison.hairybiso

9、n.simple环境设置:(1)安装软件mingw-get-inst-20110316.exe,安装目录D:BYYL(2)将bison.exeflex.exe复制到目录D:BYYL下(3)将文件bison.hairybison.simple复制到目录D:BYYL下(4)设置环境变量:变量名:BISON_HAIRY变量值:D:

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

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

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