词法分析的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目词法分析的设计与实现

学院

专业名称计算机科学与技术

姓名

导师姓名

2010年12 月

目录

1.课程设计的目的 (1)

2.课程设计的内容 (1)

3、课程设计的要求 (1)

4.课程设计报告内容 (1)

4.1设计功能分析 (1)

4.2 设计思路 (1)

4.3 正规文法 (2)

4.4 状态图 (3)

4.5设计词法分析算法代码 (5)

4.6基本测试数据 (12)

4.7结果截图 (12)

5.设计体会 (12)

6.参考文献 (13)

7.思考题 (13)

词法分析的设计与实现

一、课程设计的目的

1、基本掌握计算机语言的词法分析程序的开发方法。

2、实现一个词法分析程序,将字符串流分解成终结符流供语法分析使用。

3、通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。

4、了解当前常用的软件开发工具Visual C++,熟练掌握基于MFC的程序设计,培养解决实际问题的能力。

5、对C语言和数据结构的进一步巩固加深。

二课程设计的内容

编制一个能够分析三种数、标识符、主要运算符、分隔符和主要关键字的词法分析程序。

三、课程设计的要求

1.根据以下的正规式,编制正规文法,画出状态图;

标识符 <字母>(<字母>|<数字字符>)*

十进制数(0 | 1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(ε|.)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*

八进制数0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*(ε|.)(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*

十六进制

0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)* (ε|.)

(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)* 运算符和分隔符 + - * / > < = ( ) ;

关键字 if then else while do

2.根据状态图,设计词法分析函数int scan( ),完成以下功能:

1)从键盘读入数据,分析出一个单词。

2)返回单词种别(用整数表示),

3)返回单词属性(不同的属性可以放在不同的全局变量中)。

3.编写测试程序,反复调用函数scan( ),输出单词种别和属性。

四、课程设计报告内容

4.1、设计功能分析

程序能够从左到右一个字符一个字符地读入源程序,并对构成的源程序的字符流进行扫描和分解,从而识别出一个个单词,并给出单词的种别和属性。

4.2、设计思路

主函数main()的思想:

先输入一串字符,将字符串用空格打断,若是分隔出的单元不为空,则对此单元继续分析,根据所输入的字符串判断出是标识符、八进制数、十进制数、十六进制数、运算符、分隔符还是关键字,然后赋予那单词的种别和属性。

4.3、正规文法

对于十进制数:

A1——>B1C1

B1——>D1B1|ε

C1——>E1B1

E1——> ε|.

D1——>0|1|2|3|4|5|6|7|8|9

对于八进制数:

A2——>0B2

B2——>C2D2

C2——>E2F2

E2——>1|2|3|4|5|6|7

F2——>GF|ε

D2——>H2F2

H2——> ε|.

D2——>1|2|3|4|5|6|7

G2——>0|1|2|3|4|5|6|7

对于十六进制:

A3——>0xB3

B3——>C3D3

C3——>E3C3|ε

E3——> 0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f

D3——>F3C3

F3——> ε|.

对于运算符和分隔符:

A4——>+|-|*|/|>|<|=|(|)|;

对于标识符和关键字:

A5——>B5C5

B5——>D5E5

D5——>a|b|……|y|z

E5——>F5E5|ε

F5——>a|b|……|y|z|0|1|2|3|4|5|6|7|8|9

C5——>G5E5

G5——> ε|.

综上正规文法为:

S——>A1|A2|A3|A4|A5

A1——>B1C1

B1——>D1B1|ε

C1——>E1B1

E1——> ε|.

D1——>0|1|2|3|4|5|6|7|8|9

A2——>0B2

B2——>C2D2

C2——>E2F2

E2——>1|2|3|4|5|6|7

F2——>GF|ε

D2——>H2F2

H2——> ε|.

D2——>1|2|3|4|5|6|7

G2——>0|1|2|3|4|5|6|7

A3——>0xB3

B3——>C3D3

C3——>E3C3|ε

E3——> 0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f D3——>F3C3

F3——> ε|.

A4——>+|-|*|/|>|<|=|(|)|;

A5——>B5C5

B5——>D5E5

D5——>a|b|……|y|z

E5——>F5E5|ε

F5——>a|b|……|y|z|0|1|2|3|4|5|6|7|8|9 C5——>G5E5

G5——> ε|.

4.4、状态图

相关文档
最新文档