编译原理词法分析程序设计实验报告Word下载.docx

上传人:b****4 文档编号:18282227 上传时间:2022-12-15 格式:DOCX 页数:15 大小:172.29KB
下载 相关 举报
编译原理词法分析程序设计实验报告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

=int<

}

=’{’[<

;

]<

语句序列>

’}’

语句>

|<

赋值语句>

条件语句>

循环语句>

函数调用语句>

表达式>

=[+|-]<

项>

加法运算符>

因子>

乘法运算符>

无符号整数>

=+|-

=*|/

=if<

条件>

’{’<

’}’[else’{’<

’}’]

关系运算符>

===|!

=|>

|>

=|<

=

=for’(’<

’)’’{’<

}|<

空>

’)’

字母>

数字>

=a|b|c|…|X|Y|Z

=0|1|2|…|8|9

单词分类情况

关键字:

intifelsefor

标识符:

以字母开头的字母和数字的组合

关系运算符:

==|!

=

加法运算符:

+|-

乘法运算符:

*|/界符:

,;

{}()

2.设计单词的输出形式,单词的种类和值的表示方法

种别码单词值

如:

1int

3.编写词法分析程序cffx.c

实现基本的词法分析器,能够分析关键字、标识符、数字、运算符(需要有“==”或“:

=”之类需要超前搜索的运算符)以及其他一些符号。

//编译原理词法分析程序.cpp

#include<

stdio.h>

stdlib.h>

string.h>

typedefstructwords

{

intid;

charname[20];

charvalue[20];

}word;

charinteger[20]={'

i'

'

n'

t'

};

chariff[20]={'

f'

charelsee[20]={'

e'

l'

s'

charforr[20]={'

o'

r'

intmain()

charcode[10000];

charwords[20],ch;

inti,j,p,count,n,m;

intk=0;

wordsymbol[500];

printf("

种别码:

1类别:

关键字int\n"

);

2类别:

关键字if\n"

3类别:

关键字else\n"

4类别:

关键字for\n"

5类别:

标识符\n"

6类别:

计算运算符\n"

7类别:

关系运算符\n"

8类别:

界符\n"

while

(1)

{

gets(code);

n=strlen(code);

for(m=0,j=0;

m<

n;

m++)

{

if((code[m]>

='

a'

&

code[m]<

z'

)||(code[m]>

0'

9'

))

words[j]=code[m];

j++;

}

else

if(words[0]=='

words[1]=='

words[2]=='

words[3]=='

\0'

{

symbol[k].id=1;

for(i=0;

i<

20;

i++)

{

symbol[k].value[i]=words[i];

}

k++;

}

elseif(words[0]=='

symbol[k].id=2;

symbol[k].value[i]=iff[i];

words[4]=='

symbol[k].id=3;

symbol[k].value[i]=elsee[i];

symbol[k].id=4;

symbol[k].value[i]=forr[i];

else

symbol[k].id=5;

for(p=0;

p<

p++)

words[p]=0;

j=0;

if(code[m]=='

+'

symbol[k].id=6;

symbol[k].value[0]='

for(i=1;

symbol[k].value[i]=0;

-'

*'

/'

code[m+1]!

code[m+1]=='

symbol[k].id=7;

symbol[k].value[1]='

for(i=2;

m++;

!

'

>

symbol[k].id=8;

('

)'

{'

}'

count=k;

system("

cls"

for(i=0;

count;

printf("

%d"

symbol[i].id);

%s\n"

symbol[i].value);

}

return0;

}

4.生成并输出单词符号表

识别单词的状态转换图:

5.流程图

6.源程序清单

inta,b,c;

a=b+c;

7.测试结果

8.实验心得:

此次实验让我了解了如何设计、编制并调试词法分析程序,并加深了我对词法分析器原理的理解;

熟悉了直接构造词法分析器的方法和相关原理,并学会使用c语言直接编写词法分析器;

同时更熟练的掌握用c语言编写程序,实现一定的实际功能。

通过本次实验,使我更深层次的掌握了词法分析。

从刚开始的无从下手到后来渐渐的突破了各个难关,虽然花了大量的时间和精力,但在我看来这绝对是值得的。

起码让我明白了,光有理论是苍白无力的,我们必须将他附注于实践才能升华。

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

当前位置:首页 > PPT模板

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

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