c语言小子集编译程序源代码,实现C语言小子集程序的词法分析.doc

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

沈阳航空航天大学

编 译 实 验 报 告

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

院(系):计算机学院

专 业:计算机科学与技术

班 级:

学 号:

姓 名:

完成日期:

一.实验要求:

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

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

(3)输出:单词序列。

二.单词的属性和表格

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

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

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

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

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

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

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

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

种别码符号种别码符号种别码符号0无定义11>=22}1标示符12==23;2整数13!=24,3+14&&25void4-15||26int5*16=27float6/17(28char7%18)29if8<19[30else9<=20]31while10>21{32do33return

三.总控流程图

N

Y

主程序流程图

在主程序中,打开文件,调用函数,当文件中的读完后,结束程序。

关键码流程图

字母流程图

N

Y

数字流程图

N

Y

四.测试运行

1.屏幕输出

文件源代码如下

编码实现词法分析程序

程序源代码

#include

#include

#include

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

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

FILE *fP;

int ikey( char str[])

{

int i,m;

for(i=0; i<9; i++)

{

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

{

m = nm[i];

return m;

}

}

return 0;

}

int word(char c)

{

if((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))

return 1;

else

return 0;

}

int num(char c)

{

if(c >= '0' && c <= '9')

return 1;

else

return 0;

}

void ap()

{

int n;

char c;

int i=0;

char str[100];

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

{

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

continue;

else if( c == '\n')

printf("\n");

else if(num(c)==1)

{

while(num(c))

{

str[i]= c;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值