编译原理词法分析程序设计实验报告Word下载.docx
- 文档编号:14249502
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:12
- 大小:22.19KB
编译原理词法分析程序设计实验报告Word下载.docx
《编译原理词法分析程序设计实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《编译原理词法分析程序设计实验报告Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
='
{'
变[量<说明部分>;
]<语句序列>'
}'
<语句序列>:
:
=<语句序列>;
<语句>|<语句>
<语句>:
=<赋值语句>|<条件语句>|<循环语句>|<函数调用语句>
<赋值语句>:
=<标识符>=<表达式>
<表达式>:
=[+|-]<项>{<加法运算符><项>}
<项>:
=<因子>{<乘法运算符><因子>}
<因子>:
=<标识符>|<无符号整数>
<加法运算符>:
=+|-
<乘法运算符>:
=*|/
<条件语句>:
=if<条件>'
{语句序列>'
[else语句序列〉’}'
]
<条件>:
=<表达式><关系运算符><表达式>
<关系运算符>:
===|!
=|>|<|>=|<=
<循环语句>:
=for'
表达式>;
<条件>;
<表达式>'
)”{语句序列>'
<函数调用语句>:
=<标识符>'
(标'
识<符>{,<标识符>}|<空>'
)'
<标识符>:
=<字母>{<字母>|<数字>}
<无符号整数>:
=<数字>{<数字>}
<字母>:
=a|b|c|…|X|Y|Z
<数字>:
=0|1|2|…|8|9
单词分类情况
关键字:
intifelsefor
标识符:
以字母开头的字母和数字的组合
关系运算符:
==|!
加法运算符:
+|-
乘法运算符:
*|/界符:
,;
{}()
2.设计单词的输出形式,单词的种类和值的表示方法种别码单词值如:
1int
3.编写词法分析程序cffx.c
实现基本的词法分析器,能够分析关键字、标识符、数字、运算符(需要有“==”或之类需要超前搜索的运算符)以及其他一些符号。
//编译原理词法分析程序.cpp
#include<stdio.h>
#include<stdlib.h>#include<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
2
3
4
5
6
7
8
类别:
关键字int\n"
);
关键字if\n"
类别:
关键字else\n"
)类别:
关键字for\n"
标识符\n"
计算运算符\n"
关系运算符\n"
界符\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;
{}
k++;
if(words[0]=='
words[4]=='
symbol[k].id=3;
symbol[k].value[i]=elsee[i];
){symbol[k].id=4;
for(i=0;
symbol[k].value[i]=forr[i];
symbol[k].id=5;
{symbol[k].value[i]=words[i];
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;
-'
symbol[k].value[i]=0;
*'
/'
code[m+1]!
symbol[k].value[0]='
for(i=1;
i++){
code[m+1]=='
symbol[k].id=7;
symbol[k].value[1]='
for(i=2;
m++;
}if(code[m]=='
!
'
symbol[k].value[1]='
for(i=2;
>
<
symbol[k].id=8;
('
)'
{'
count=k;
system("
cls"
count;
%d"
symbol[i].id);
%s\n"
symbol[i].value);
return0;
4.生成并输出单词符号表
1
识别单词的状态转换图:
5•流程图
字母
其他符号
1字母或数
1字
0数字2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 词法 分析 程序设计 实验 报告