好文档 - 专业文书写作范文服务资料分享网站

编译原理实验_词法分析器的设计与实现

天下 分享 时间: 加入收藏 我要投稿 点赞

.

南华大学

计算机科学与技术学院

实 验 报 告

( 2018~2019学年度 第二学期 )

课程名称 编译原理

实验名称 词法分析器的设计与

实现

学号

专业

班级

地点

. . .

教师

.

1. 实验目的及要求

实验目的

加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对简单的程序段进行词法分析。

实验要求

1. 对单词的构词规则有明确的定义;

2. 编写的分析程序能够正确识别源程序中的单词符号;

3. 识别出的单词以<种别码,值>的形式保存在符号表中,正确设计和维护

符号表;

4. 对于源程序中的词法错误,能够做出简单的错误处理,给出简单的错误

提示,保证顺利完成整个源程序的词法分析;

2. 实验步骤

1.词法分析规则

<标识符>::=<字母>|<标识符><字母>|<标识符><数字> <常数>::=<数字>|<数字序列><数字>

<数字序列>::=<数字序列><数字>|<数字>|<.> <字母>::=a|b|c|……|x|y|z <数字>::=0|1|2|3|4|5|6|7|8|9

<运算符>::=<关系运算符>|<算术运算符>|<逻辑运算符>|<位运算符>|<赋值运算符>

<算数运算符>::=+|-|*|/|...|-- <关系运算符>::=<|>|!=|>=|<=|== <逻辑运算符>::=&&| || |! <位运算符>::=&| | |! <赋值运算符>::==|+=|-=|/=|*=

<分界符>::=,|;|(|)|{|}|:| // |/**/

<保留字>::=main|if|else|while|do|for|...|void

. . .

.

2.单词符号的编码

单词符号 main if else while do for switch case int double float long void + += ++ - -= -- & && # * *= / /=

. . .

种别码 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 单词符号 > >= < <= ! != = == ( ) { } ; : | || 数字 标识符 , // /**/ 种别码 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 .

3.状态转换图

其它 5 = / * 其它 9 7 + 14 > = 其它 , ( : { ) }

& ; ,

20 其它 16 ....33 22

4.算法分析

①词法分析器工作的第一步是输入源程序文本。为了更好地对单词符号识别,把输入串预处理一下。预处理主要滤掉空格,跳过注释、换行符等。

②对预处理后的输入串依次扫描单个字符,使用if-while嵌套语句和switch case语句判断字符的类型,具体识别方法可看状态转换图。有时为了确定词性,需要超前扫描,若超前扫描的字符对识别当前单词无用处,则需要退还给输入串,以备识别下一单词字符时使用。

. . .

.

③若读入的字符与单词符号编码表的字符匹配不上,则报错,并输出出错行数。对识别处的单词符号以(单词符号,种别码)二元式的形式输出。

3. 实验容 1. 流程图

. . .

编译原理实验_词法分析器的设计与实现

.南华大学计算机科学与技术学院实验报告(2018~2019学年度第二学期)课程名称编译原理实验名称词法分析器的设计与实现学号
推荐度:
点击下载文档文档为doc格式
1wm7q07alk4x67j2pwjr92i2p9mey901doo
领取福利

微信扫码领取福利

微信扫码分享