词法分析器的设计与实现Word格式文档下载.docx
- 文档编号:20560201
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:15
- 大小:123.89KB
词法分析器的设计与实现Word格式文档下载.docx
《词法分析器的设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《词法分析器的设计与实现Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
#include<
iostream>
cstdio>
cstring>
usingnamespacestd;
intk=0;
structword
{
charname[10];
intkind;
}word[1000];
charkey[35][10]={"
scanf"
"
short"
int"
long"
float"
double"
char"
struct"
union"
"
printf"
typedef"
const"
unsigned"
signed"
extern"
register"
static"
volatile"
void"
if"
else"
switch"
case"
for"
do"
while"
goto"
continue"
break"
default"
sizeof"
return"
include"
bool"
};
boolcmp(chara[])
inti;
for(intk=0;
k<
35;
k++)
{
if(strcmp(a,key[k])==0)
return1;
}
return0;
}
intmain()
#ifdefLOCAL
freopen("
in.txt"
"
r"
stdin);
out.txt"
w"
stdout);
#endif
intp,q,flag;
chara[1000],b[10],ch;
while(gets(a))
p=0;
intlen=strlen(a);
while(p<
len)
ch=a[p];
memset(b,0,sizeof(b));
while(ch=='
'
)
p++;
if((ch>
='
a'
&
ch<
z'
)||(ch>
A'
Z'
)||ch=='
_'
flag=0;
q=0;
while((ch>
||(ch>
0'
9'
))
flag=1;
b[q++]=ch;
if(flag==1)
strcpy(word[k].name,b);
word[k++].kind=1;
elseif(flag==0)
if(ch=='
\'
'
||ch=='
"
word[k++].kind=2;
elseif(cmp(b)==1)
word[k++].kind=3;
else
elseif((ch>
-'
intt=p-1;
if(a[t]>
a[t]<
||a[t]>
b[0]='
;
b[1]=ch;
word[k++].kind=5;
ch=a[++p];
.'
elseif(ch=='
('
)'
['
]'
{'
}'
'
:
)//ch=='
||
b[0]=ch;
word[k++].kind=4;
%'
^'
+'
*'
/'
b[0]=b[1]='
>
<
!
b[1]='
|'
for(inti=0;
i<
k;
i++)
switch(word[i].kind)
case1:
printf("
(标识符,"
);
break;
case2:
(常量,"
case3:
(关键字,"
case4:
(界符,"
case5:
(运算符,"
%s)\n"
word[i].name);
inta1=0,a2=0,a3=0,a4=0,a5=0;
i<
i++)
if(word[i].kind==1)
a1++;
elseif(word[i].kind==2)
a2++;
elseif(word[i].kind==3)
a3++;
elseif(word[i].kind==4)
a4++;
elseif(word[i].kind==5)
a5++;
标识符:
%d\n常量:
%d\n关键字:
%d\n界符:
%d\n运算符:
%d\n"
a1,a2,a3,a4,a5);
运行结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 词法 分析器 设计 实现