实现C语言小子集程序的词法分析.doc

实现C语言小子集程序的词法分析.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

沈阳航空航天大学

编译实验报告

实验名称:实现C语言小子集程序的词法分析

院(系):计算机学院

专业:计算机科学与技术

班级:

学号:

姓名:

完成日期:

一.实验要求:

(1)功能:实现C语言小子集程序的词法分析。

(2)输入:C语言小子集的程序片段。

(3)输出:单词序列。

二.单词的属性和表格

单词的属性主要分为五大部分:

1.关键字,是由程序语言定义的具有固有意义的标示符。有时称为保留字或基

本字。如:void,int,float,char,if,else,while,do,return。

2.标识符,用来表示各种名字,如变量名,数组名等。

3.常量,常量的类型一般有整型,实型,布尔型,文字型等等。

4.运算符,如+,-,*,/,%等

5.界符,如逗号,分号,括号等等。

表1C语言小子集的定义表

种别码

符号

种别码

符号

种别码

符号

0

无定义

11

=

22

}

1

标示符

12

==

23

;

2

整数

13

!=

24

,

3

+

14

25

void

4

-

15

||

26

int

5

*

16

=

27

float

6

/

17

(

28

char

7

%

18

)

29

if

8

19

[

30

else

9

=

20

]

31

while

10

21

{

32

do

33

return

字母流程图

开始

读取字母c

读取字母c

ACZ

ACZ

N

Y

返回1返回0

返回1

返回0

结束

结束

开始数字流程图

开始

读取数字

读取数字

返回00C9N

返回0

0C9

Y

返回1

返回1

结束

结束

四.测试运行

1.屏幕输出

文件源代码如下

编码实现词法分析程序

程序源代码

#includestdio.h

#includestring.h

#includestdlib.h

char*g[9]={void,int,float,char,if,else,while,do,return};

intnm[9]={25,26,27,28,29,30,31,32,33};

FILE*fP;

intikey(charstr[])

{

inti,m;

for(i=0;i9;i++)

{

if(strcmp(str,g[i])==0)

{

m=nm[i];

returnm;

}

}

return0;

}

intword(charc)

{

if((c=Ac=Z)||(c=ac=z))

return1;

else

return0;

}

intnum(charc)

{

if(c=0c=9)

return1;

else

return0;

}

voidap()

{

intn;

charc;

inti=0;

charstr[100];

while((c=fgetc(fP))!=EOF)

{

if(c==||c==\t)

continue;

elseif(c==\n)

printf(\n);

elseif(num(c)==1)

{

while(num(c))

{

str[i]=c;

i++;

c=fgetc(fP);

}

str[i]=\0;

fseek(fP,-1,SEEK_CUR);

printf(2,);

printf(%s,str);

文档评论(0)

188****0197 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档