词法分析器设计与实现.docx

上传人:b****0 文档编号:9930461 上传时间:2023-05-22 格式:DOCX 页数:18 大小:109.08KB
下载 相关 举报
词法分析器设计与实现.docx_第1页
第1页 / 共18页
词法分析器设计与实现.docx_第2页
第2页 / 共18页
词法分析器设计与实现.docx_第3页
第3页 / 共18页
词法分析器设计与实现.docx_第4页
第4页 / 共18页
词法分析器设计与实现.docx_第5页
第5页 / 共18页
词法分析器设计与实现.docx_第6页
第6页 / 共18页
词法分析器设计与实现.docx_第7页
第7页 / 共18页
词法分析器设计与实现.docx_第8页
第8页 / 共18页
词法分析器设计与实现.docx_第9页
第9页 / 共18页
词法分析器设计与实现.docx_第10页
第10页 / 共18页
词法分析器设计与实现.docx_第11页
第11页 / 共18页
词法分析器设计与实现.docx_第12页
第12页 / 共18页
词法分析器设计与实现.docx_第13页
第13页 / 共18页
词法分析器设计与实现.docx_第14页
第14页 / 共18页
词法分析器设计与实现.docx_第15页
第15页 / 共18页
词法分析器设计与实现.docx_第16页
第16页 / 共18页
词法分析器设计与实现.docx_第17页
第17页 / 共18页
词法分析器设计与实现.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

词法分析器设计与实现.docx

《词法分析器设计与实现.docx》由会员分享,可在线阅读,更多相关《词法分析器设计与实现.docx(18页珍藏版)》请在冰点文库上搜索。

词法分析器设计与实现.docx

词法分析器设计与实现

合肥学院

计算机科学与技术系

 

课程实验报告

2016~2017学年第二学期

课程

软件编译技术

学生姓名

罗萱(组长)

学号

1404092012

学生姓名

郑李

学号

1404092013

学生姓名

丁希林

学号

1404092016

专业班级

14软工2班

指导教师

吴晓琴

2017年3月

小组分工:

郑李(完成数据的输入和出错输出等操作,并完善代码),丁希林(负责进行组员分工及写识别出常数、运算符、界符等的实验代码和正常输出操作),罗萱(负责写出关键字和变量表结构等的识别代码)

姓名

完成工作

郑李

1.在main函数中进行输入流和输出流的控制;

2.代码整合

丁希林

3.写常数识别的方法IsDigit()供lexicalAnalysis()输出方法进行调用;

4.完成lexicalAnalysis()输出方法中的运算符识别的代码;

5.写标识符识别的方法IsLetter()供lexicalAnalysis()输出方法进行调用;

罗萱

6.写将关键字存储在数组中的方法InitReserveTable();

7.加入变量名方法AddReserve()和变量表识别方法IsReserve()

成绩:

姓名

教师评阅

签字:

年月日

实验序号及名称:

实验一词法分析器的设计与实现

姓名:

郑李实验时间:

2017年3月25日

1、实验目的和要求

1.实验目的:

通过设计并实现的词法分析器,掌握对正规文法、正规式、有穷自动机、不确定的有穷自动机(NFA)到确定的有穷自动机(NFA)转换,DFA最小化等单词符号分析工具的具体设计实现,更进一步加深对程序设计语言源程序进行词法分析方法和原理理解,能初步达到设计编制和调试编译系统中词法分析器的能力,增强解决实际问题的实践能力。

2.实验要求:

①从输入的源程序中,识别出各个具有独立意义的单词符号(保留字、标识符、常数、运算符、界符)五大类。

单词符号

种别编码

关键字(保留字)

1

标识符

2

常数

3

运算符

4

界符

5

②依次以二元式(单词种别码,单词符号的属性值)输出各个单词符号,如遇到错误单词符号时可显示“Error,出错的位置”,然后跳过错误部分继续显示)。

例:

如源程序为C语言,输入:

main()

{inta,b,c;a=8;

b=6;

c=a+b;

}

以文本文件输出(output1.txt):

(2,”main”)

(5,”(“)

(5,”)“)

(5,”{“)

(1,”int”)

(2,”a”)

(5,”,”)

(2,”b”)

(5,”;”)

(2,”a”)

(4,”=”)

(3,”10”)

(5,”;”)

(2,”b”)

(4,”=”)

(2,”a”)

(4,”+”)

(3,”20”)

(5,”;”)

(5,”}“)

2、实验环境和仪器设备

Eclipse

3、相关资料和参考文献(教材和实验指导书以外)

4、实验任务

词法分析器设计与实现

5、实验内容(步骤)

1.实验内容:

①单词的BNF表示

<标识符>→<字母>|<字母数字>

<字母数字>→<字母><字母数字>|<数字><字母数字>|_<字母数字>||$<字母数字>|ε

<字母数字>→<字母>|<数字>

<字母>→a|b|......|z

<数字>→0|1|......|9

<常量>→<无符号整数>

<无符号整数>→<数字><数字串>

<数字串>→<数字><数字串>|ε

<运算符>→+|-|*/|=|<|=|<=|!

=|>

<关键字>→main|if|then|while|do

<界符>→{|}|(|)|;

说明:

产生式中<,>括起来的部分表示非终结符号。

②将以文法转换成有穷自动机。

③实现有穷自动机识别单词符号

2.实验步骤

①根据词法规则总结出每种单词符号的结构特征

②设计每种单词符号有穷自动机(状态转换图)

③将几种单词符号的状态转换图进行合并成唯一的初态,构造一个能识别所有种类的单词符号NFA

④NFA确定化DFA,再最小化DFA

⑤将DFA构造状态矩阵;

⑥用状态矩阵设计出一个词法分析程序。

6、完整的实验结果(程序、电路或相关的数据等)记录(不够可在第四页续)

输入:

main()                               {inta,b;

a=10;

b=a+20;

}

实验结果:

 

main2

(5

)5

{5

int0

a2

5

b2

5

c2

;5

a2

=4

83

;5

b2

=4

63

;5

c2

=4

a2

+4

b2

;5

}5

7、实验结果分析

在编写词法分析器的过程中我们虽然没有真的把所有的状态转换图建立出来,但是这里面主要用到的思想还是根据状态转换图实现对单词的识别。

我们变量表进行数据存储,然后,每输入一个字符就检测应该进入什么状态,并将该字符传到lexicalAnalysis()中进行while循环对应,完成输出操作后contine再次循环查询。

直至最后完成全部的识别。

实验序号及名称:

实验一词法分析器的设计与实现

姓名:

丁希林实验时间:

2017年3月25日

一、实验目的和要求

1.实验目的:

通过设计并实现的词法分析器,掌握对正规文法、正规式、有穷自动机、不确定的有穷自动机(NFA)到确定的有穷自动机(NFA)转换,DFA最小化等单词符号分析工具的具体设计实现,更进一步加深对程序设计语言源程序进行词法分析方法和原理理解,能初步达到设计编制和调试编译系统中词法分析器的能力,增强解决实际问题的实践能力。

2.实验要求:

①从输入的源程序中,识别出各个具有独立意义的单词符号(保留字、标识符、常数、运算符、界符)五大类。

单词符号

种别编码

关键字(保留字)

1

标识符

2

常数

3

运算符

4

界符

5

②依次以二元式(单词种别码,单词符号的属性值)输出各个单词符号,如遇到错误单词符号时可显示“Error,出错的位置”,然后跳过错误部分继续显示)。

例:

如源程序为C语言,输入:

main()

{inta,b,c;a=8;

b=6;

c=a+b;

}

以文本文件输出(output1.txt):

(2,”main”)

(5,”(“)

(5,”)“)

(5,”{“)

(1,”int”)

(2,”a”)

(5,”,”)

(2,”b”)

(5,”;”)

(2,”a”)

(4,”=”)

(3,”10”)

(5,”;”)

(2,”b”)

(4,”=”)

(2,”a”)

(4,”+”)

(3,”20”)

(5,”;”)

(5,”}“)

二、实验环境和仪器设备

Eclipse

三、相关资料和参考文献(教材和实验指导书以外)

四、实验任务

词法分析器设计与实现

五、实验内容(步骤)

2.实验内容:

①单词的BNF表示

<标识符>→<字母>|<字母数字>

<字母数字>→<字母><字母数字>|<数字><字母数字>|_<字母数字>||$<字母数字>|ε

<字母数字>→<字母>|<数字>

<字母>→a|b|......|z

<数字>→0|1|......|9

<常量>→<无符号整数>

<无符号整数>→<数字><数字串>

<数字串>→<数字><数字串>|ε

<运算符>→+|-|*/|=|<|=|<=|!

=|>

<关键字>→main|if|then|while|do

<界符>→{|}|(|)|;

说明:

产生式中<,>括起来的部分表示非终结符号。

②将以文法转换成有穷自动机。

③实现有穷自动机识别单词符号

2.实验步骤

①根据词法规则总结出每种单词符号的结构特征

②设计每种单词符号有穷自动机(状态转换图)

③将几种单词符号的状态转换图进行合并成唯一的初态,构造一个能识别所有种类的单词符号NFA

④NFA确定化DFA,再最小化DFA

⑤将DFA构造状态矩阵;

⑥用状态矩阵设计出一个词法分析程序。

六、完整的实验结果(程序、电路或相关的数据等)记录(不够可在第四页续)

输入:

main()                               {inta,b;

a=10;

b=a+20;

}

实验结果:

 

main2

(5

)5

{5

int0

a2

5

b2

5

c2

;5

a2

=4

83

;5

b2

=4

63

;5

c2

=4

a2

+4

b2

;5

}5

七、实验结果分析

在编写词法分析器的过程中我们虽然没有真的把所有的状态转换图建立出来,但是这里面主要用到的思想还是根据状态转换图实现对单词的识别。

我们变量表进行数据存储,然后,每输入一个字符就检测应该进入什么状态,并将该字符传到lexicalAnalysis()中进行while循环对应,完成输出操作后contine再次循环查询。

直至最后完成全部的识别。

实验序号及名称:

实验一词法分析器的设计与实现

姓名:

罗萱实验时间:

2017年3月25日

一、实验目的和要求

1.实验目的:

通过设计并实现的词法分析器,掌握对正规文法、正规式、有穷自动机、不确定的有穷自动机(NFA)到确定的有穷自动机(NFA)转换,DFA最小化等单词符号分析工具的具体设计实现,更进一步加深对程序设计语言源程序进行词法分析方法和原理理解,能初步达到设计编制和调试编译系统中词法分析器的能力,增强解决实际问题的实践能力。

2.实验要求:

①从输入的源程序中,识别出各个具有独立意义的单词符号(保留字、标识符、常数、运算符、界符)五大类。

单词符号

种别编码

关键字(保留字)

1

标识符

2

常数

3

运算符

4

界符

5

②依次以二元式(单词种别码,单词符号的属性值)输出各个单词符号,如遇到错误单词符号时可显示“Error,出错的位置”,然后跳过错误部分继续显示)。

例:

如源程序为C语言,输入:

main()

{inta,b,c;a=8;

b=6;

c=a+b;

}

以文本文件输出(output1.txt):

(2,”main”)

(5,”(“)

(5,”)“)

(5,”{“)

(1,”int”)

(2,”a”)

(5,”,”)

(2,”b”)

(5,”;”)

(2,”a”)

(4,”=”)

(3,”10”)

(5,”;”)

(2,”b”)

(4,”=”)

(2,”a”)

(4,”+”)

(3,”20”)

(5,”;”)

(5,”}“)

二、实验环境和仪器设备

Eclipse

三、相关资料和参考文献(教材和实验指导书以外)

四、实验任务

词法分析器设计与实现

五、实验内容(步骤)

3.实验内容:

①单词的BNF表示

<标识符>→<字母>|<字母数字>

<字母数字>→<字母><字母数字>|<数字><字母数字>|_<字母数字>||$<字母数字>|ε

<字母数字>→<字母>|<数字>

<字母>→a|b|......|z

<数字>→0|1|......|9

<常量>→<无符号整数>

<无符号整数>→<数字><数字串>

<数字串>→<数字><数字串>|ε

<运算符>→+|-|*/|=|<|=|<=|!

=|>

<关键字>→main|if|then|while|do

<界符>→{|}|(|)|;

说明:

产生式中<,>括起来的部分表示非终结符号。

②将以文法转换成有穷自动机。

③实现有穷自动机识别单词符号

2.实验步骤

①根据词法规则总结出每种单词符号的结构特征

②设计每种单词符号有穷自动机(状态转换图)

③将几种单词符号的状态转换图进行合并成唯一的初态,构造一个能识别所有种类的单词符号NFA

④NFA确定化DFA,再最小化DFA

⑤将DFA构造状态矩阵;

⑥用状态矩阵设计出一个词法分析程序。

六、完整的实验结果(程序、电路或相关的数据等)记录(不够可在第四页续)

输入:

main()                               {inta,b;

a=10;

b=a+20;

}

实验结果:

 

main2

(5

)5

{5

int0

a2

5

b2

5

c2

;5

a2

=4

83

;5

b2

=4

63

;5

c2

=4

a2

+4

b2

;5

}5

七、实验结果分析

在编写词法分析器的过程中我们虽然没有真的把所有的状态转换图建立出来,但是这里面主要用到的思想还是根据状态转换图实现对单词的识别。

我们变量表进行数据存储,然后,每输入一个字符就检测应该进入什么状态,并将该字符传到lexicalAnalysis()中进行while循环对应,完成输出操作后contine再次循环查询。

直至最后完成全部的识别。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2