编译原理实验词法分析c语言,编译原理,词法分析,实验报告

一、实验目的

通过设计、开发一个高级语言的词法分析程序,加深对课堂教学内容(包括正规文法、正规表达式、有限自动机、NFA到DFA的转换、DFA的最小化)的理解,提高词法分析方法的实践能力。

二、实验要求

(1)深入理解、掌握有限自动机及其应用;

(2)掌握根据语言的词法规则构造识别其单词的有限自动机的方法;

(3)掌握NFA到DFA的等价变换方法、DFA最小化的方法;

(4)掌握设计、编码、调试词法分析程序的技术与方法,具体实现S语言的词法分析程序。

2.1 待分析的简单的词法

(1)关键字:

begin if then while do end 所有的关键字都是小写。

(2)运算符和界符

: : = + - * /

<

<=

<>

>

>= = ; ( ) #

(3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义:

ID = letter (letter |

digit)*

NUM = digit

digit*

(4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。

2.2 各种单词符号对应的种别码

表2.1 各种单词符号对应的种别码

单词符号

种别码

单词符号

种别码

begin

1

17

if

2

:

=

18

then

3

<

20

while

4

<>

21

do

5

<=

22

end

6

>

23

letter

(letter | digit)*

10

>=

24

digit

digit*

11

=

25

+

13

;

26

-

14

(

27

*

15

)

28

/

16

#

0

2.3 词法分析程序的功能

输入:所给文法的源程序字符串。

输出:二元组(syn,token或sum)构成的序列。

其中:syn为单词种别码;

token为存放的单词自身字符串;

sum为整型常数。

例如:对源程序

begin x:=9: if x>9 then x:=2*x+1/3; end

#的源文件,经过词法分析后输出如下序列:

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值