编译原理 词法分析_第1页
编译原理 词法分析_第2页
编译原理 词法分析_第3页
编译原理 词法分析_第4页
编译原理 词法分析_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一:词法分析器一、 实验目的:1强化对系统软件综合工程实现能力的训练;2加强对词法分析原理、方法和基本实现技术的理解;二、 实验内容:用C语言或者其他的高级语言作为宿主语言完成C1语言的词法分析器的设计和实现。 三、 实验要求:1. 编写C0语言的词法分析器的源程序并调试通过。其中词法分析程序既可以自己手动去完成,也可以利用LEX自动生成。2. 通过测试程序的验收; 3.实验报告按照提供的模板填写:(1)功能描述:该程序具有什么功能?(2)程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;另外可以附加函数之间的调用关系图、程序总体执行流程图。(3)实验总结:你在编程过程中花时多少

2、?多少时间在纸上设计?多少时间上机输入和调试?多少时间在思考问题?遇到了哪些难题?你是怎么克服的?你对你的程序的评价?你的收获有哪些?四、 评判标准:1. 输出正确的实验结果;2. 代码清晰,格式良好;3. 提交报告,报告阐述清楚。五、 程序工作说明:(以C0语言为例)程序的输入文件是任何一个目录下的文件格式的C0语言程序段。程序的输出文件是以xml格式表示的词法分析的结果。该输出将作为下个实验语法分析的输入文件。(注意:也可以自定义格式,但需要在报告中给出格式说明)词法分析结果输出成xml文件格式为<root><Token lineno=xx type= string= &

3、gt;</Token><Token lineno=xx type= string=></Token></root>程序输入/输出示例:如源程序为如下:1 void f1(int a,int b) 2 a = 1;3 b = a+b;4 5 void main() 6 7 int a100;8 int b;9 float c;10 ab=a;11 if(c<b)12 f1(a,b);13 14 则要求得到如下输出文件:<?xml version="1.0"?><root> <token lin

4、e="1" type="VOID" string="void" /> <token line="1" type="ID" string="f1" /> <token line="1" type="LPAREN" string="(" /> <token line="1" type="INT" string="int" /&

5、gt; <token line="1" type="ID" string="a" /> <token line="1" type="COMMA" string="," /> <token line="1" type="INT" string="int" /> <token line="1" type="ID" string="

6、b" /> <token line="1" type="RPAREN" string=")" /> <token line="1" type="LBRACE" string="" /> <token line="2" type="ID" string="a" /> <token line="2" type="ASSIGN"

7、; string="=" /> <token line="2" type="NUMBER" string="1" /> <token line="2" type="SEMI" string="" /> <token line="3" type="ID" string="b" /> <token line="3" type=&quo

8、t;ASSIGN" string="=" /> <token line="3" type="ID" string="a" /> <token line="3" type="ADD" string="+" /> <token line="3" type="ID" string="b" /> <token line="3"

9、type="SEMI" string="" /> <token line="4" type="RBRACE" string="" /> <token line="5" type="VOID" string="void" /> <token line="5" type="ID" string="main" /> <token lin

10、e="5" type="LPAREN" string="(" /> <token line="5" type="RPAREN" string=")" /> <token line="6" type="LBRACE" string="" /> <token line="7" type="INT" string="int" /

11、> <token line="7" type="ID" string="a" /> <token line="7" type="ASSIGN" string="=" /> <token line="7" type="LSQUAR" string="" /> <token line="7" type="NUMBER" string=

12、"100" /> <token line="7" type="RSQUAR" string="" /> <token line="7" type="SEMI" string="" /> <token line="8" type="INT" string="int" /> <token line="8" type="ID&

13、quot; string="b" /> <token line="8" type="SEMI" string="" /> <token line="9" type="FLOAT" string="float" /> <token line="9" type="ID" string="c" /> <token line="9" ty

14、pe="SEMI" string="" /> <token line="10" type="ID" string="a" /> <token line="10" type="LSQUAR" string="" /> <token line="10" type="ID" string="b" /> <token line="

15、;10" type="RSQUAR" string="" /> <token line="10" type="ASSIGN" string="=" /> <token line="10" type="ID" string="a" /> <token line="10" type="SEMI" string="" /> <

16、token line="11" type="IF" string="if" /> <token line="11" type="LPAREN" string="(" /> <token line="11" type="ID" string="c" /> <token line="11" type="LT" string="<&

17、quot; /> <token line="11" type="ID" string="b" /> <token line="11" type="LBRACE" string="" /> <token line="12" type="ID" string="f1" /> <token line="12" type="LPAREN"

18、 string="(" /> <token line="12" type="ID" string="a" /> <token line="12" type="COMMA" string="," /> <token line="12" type="ID" string="b" /> <token line="12" type=&qu

19、ot;SEMI" string="" /> <token line="13" type="RBRACE" string="" /> <token line="14" type="RBRACE" string="" /></root>六、 相关知识:词法分析器任务:输入源程序;扫描、分解字符串,识别出一个个单词(定义符、标识符、运算符、界符、常数)。单词符号的表示:1) 需要对单词分类,每一个识别出来的单词都属于不同的类型public enum TokenType /关键字IF,ELSE,WHILE,RETURN,VOID,INT, /运算符 + - * / = < <= > >= != PLUS,MINUS,STAR,SLASH, LT,LTEQ,GT,GTEQ,EQ,NEQ,ASSIGN,/界符 ; , ( ) /* */SEMI,COMMA,LPAREN,RPAREN,LSQUAR,RSQUAR,LBRACE,RBRACE,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论