词法分析器的设计与实现Word格式文档下载.docx

上传人:b****6 文档编号:20560201 上传时间:2023-01-24 格式:DOCX 页数:15 大小:123.89KB
下载 相关 举报
词法分析器的设计与实现Word格式文档下载.docx_第1页
第1页 / 共15页
词法分析器的设计与实现Word格式文档下载.docx_第2页
第2页 / 共15页
词法分析器的设计与实现Word格式文档下载.docx_第3页
第3页 / 共15页
词法分析器的设计与实现Word格式文档下载.docx_第4页
第4页 / 共15页
词法分析器的设计与实现Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

词法分析器的设计与实现Word格式文档下载.docx

《词法分析器的设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《词法分析器的设计与实现Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

词法分析器的设计与实现Word格式文档下载.docx

#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);

运行结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1