编译原理词法分析实验一词法分析扫描器的设计实现Word格式文档下载.docx
- 文档编号:19178891
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:19
- 大小:88.26KB
编译原理词法分析实验一词法分析扫描器的设计实现Word格式文档下载.docx
《编译原理词法分析实验一词法分析扫描器的设计实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《编译原理词法分析实验一词法分析扫描器的设计实现Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
typedefstructToken
{
charname[20];
intstate;
//状态,为0是标识符,为1是字符,为2是字符串,为3是数字,为4是关键字,为5是界符
}Token;
typedefstructSTR//
intcode;
}STR;
STRiT[10];
STRcT[20];
STRsT[20];
STRCT[20];
STRKT[10]={{"
int"
4},{"
main"
5},{"
void"
6},{"
if"
7},{"
else"
8},{"
char"
9}};
STRPT[30]={{"
>
="
10},{"
<
11},{"
=="
12},{"
13},{"
"
14},{"
15},{"
+"
16},{"
-"
17},{"
*"
18},{"
/"
19},
{"
{"
20},{"
}"
21},{"
"
22},{"
;
23},{"
("
24},{"
)"
25},
["
26},{"
]"
27}};
/***********全局变量声明*********/
TokenCurrentToken;
//正在读的token
Tokentoken[200];
FILE*fp;
//源文件指针
charch;
//读取字符
intstate=0;
//0表示标识符,1表示字符,2表示字符串
intiT_i=0;
//iT结构体数组下标
intcT_i=0;
intsT_i=0;
intCT_i=0;
intindex=0;
//token的下标
/***函数声明***/
//读的是字母,关键字和标示符
//,;
+-
/******************主函数**********************/
intmain()
inti=0;
if((fp=fopen("
source.txt"
r"
))==NULL)
{
cout<
cannotopenthesourcefile!
\n"
endl;
exit
(1);
}
ch=fgetc(fp);
//文件中读一个字符
while(ch!
='
#'
)
for(i=0;
i<
20;
i++)
CurrentToken.name[i]='
\0'
//将单词缓冲区初始化
if((ch>
0'
)&
&
(ch<
9'
))//数字
IsNumber();
elseif(((ch>
a'
z'
))||((ch>
A'
Z'
))||(ch=='
_'
))//关键字和标识符
IsAlpha();
elseif(ch=='
'
||ch=='
\n'
else
IsOther();
i<
=index;
i++)
cout<
token[i].name<
"
;
finish"
return0;
}
/************数字处理****************/
voidIsNumber()
intk=0;
while(((ch>
)))
CurrentToken.name[k++]=ch;
//将数字放入单词缓冲区
boolflag=1;
if(ch=='
.'
if(((ch<
'
)||(ch>
flag=0;
if(flag==1)
strcpy(CT[CT_i++].name,CurrentToken.name);
strcpy(token[index].name,CurrentToken.name);
token[index++].state=3;
//cout<
CurrentToken.name<
<
03>
error>
/************是否为关键字****************/
voidIsAlpha()
inti=0;
if(state==0)
boolflag=0;
))||ch=='
)//将完整的单词放入单词缓冲区
CurrentToken.name[i++]=ch;
//判断是否是关键字
7;
if(strcmp(CurrentToken.name,KT[i].name)==0)
flag=1;
//printf("
%s<
%02d>
CurrentToken.name,KT[i].code);
strcpy(token[index].name,CurrentToken.name);
token[index++].state=4;
printf("
KT[i].code);
break;
if(flag!
=1)
||((ch>
00>
CurrentToken.name);
);
strcpy(token[index].name,CurrentToken.name);
token[index++].state=0;
inttag=0;
for(intj=0;
j<
iT_i;
j++)
{
if(strcmp(CurrentToken.name,iT[j].name)==0)
{
tag=1;
break;
}
}
if(tag==0)
strcpy(iT[iT_i].name,CurrentToken.name);
iT[iT_i++].code=0;
/***************其它************/
intIsOther()
inti;
//将缓冲区初始化
switch(ch)
case'
:
CurrentToken.name[0]='
if(ch=='
CurrentToken.name[1]='
+'
-'
*'
/'
{'
}'
'
('
)'
['
]'
case'
\'
ch<
))
CurrentToken.name[1]=ch;
CurrentToken.name[2]='
01>
strcpy(token[index].name,CurrentToken.name);
token[index++].state=1;
inttag=0;
for(intj=0;
=cT_i;
{
if(strcmp(cT[cT_i].name,CurrentToken.name)==0)
tag=1;
}
if(tag==0)
strcpy(cT[cT_i++].name,CurrentToken.name);
error1"
error2"
\"
intj=1;
while((ch>
CurrentToken.name[j++]=ch;
CurrentToken.name[j++]='
02>
=sT_i;
if(strcmp(sT[sT_i].name,CurrentToken.name)==0)
tag=1;
}if(tag==0)
strcpy(sT[sT_i++].name,CurrentToken.name);
error3"
if(CurrentToken.name[0]!
if(strcmp(CurrentToken.name,PT[i].name)==0)
%d>
CurrentToken.name,PT[i].code);
PT[i].code);
strcpy(token[index].name,CurrentToken.name);
token[index++].state=PT[i].code;
//while(ch=='
)ch=fgetc(fp);
程序运行结果:
(截屏)
输入:
Source.txt文本
intmain(void)
inta=1,d=2,c;
if(a<
=d)
{
c=a;
a=d;
d=c;
charch[10]="
ok"
charx,y='
c=a+d;
#
输出:
目录
第一章项目总论-1-
§
1.1项目简介-1-
1.2可行性研究的范围-2-
1.3编制依据-2-
第二章项目建设背景及必要性-3-
2.1橡胶密封件项目提出的背景-3-
2.2国家产业政策-6-
2.3项目建设的必要性-8-
第三章项目优势-11-
3.1市场优势-11-
3.2技术优势-16-
3.3组织优势-17-
3.4政策优势:
关中—天水经济区发展规划-17-
3.5区域投资环境优势-17-
第四章产品介绍与技术介绍-20-
4.1橡胶密封件产品介绍-20-
4.2产品标准-21-
4.3产品特征及材质-21-
4.4产品方案-26-
4.5产品技术来源-27-
第五章项目产品发展预测-28-
5.1产品行业关联环境分析-28-
5.2行业竞争格局与竞争行为-33-
5.3竞争力要素分析-39-
5.4项目发展预测-41-
5.5竞争结构分析及预测-43-
第六章项目产品规划-47-
6.1项目产品产能规划方案-47-
6.2产品工艺规划方案-47-
6.3项目产品营销规划方案-51-
第七章项目建设规划-58-
7.1项目建设总规-58-
7.2项目项目建设环境保护方案-61-
7.3项目建设节能方案-65-
7.4项目建设消防方案-66-
7.5项目建设生产劳动安全方案-69-
第八章项目组织实施情况-73-
8.1项目组织-73-
8.2项目劳动定员和人员培训-74-
8.3项目管理与实施进度安排-77-
8.4工程招标-80-
第九章项目财务评价分析-82-
9.1项目总投资及资金筹措-82-
9.2项目财务评价依据及相关说明-83-
9.3项目总成本费用估算-84-
9.4销售收入、销售税金及附加和增值税估算-84-
9.5利润分配估算-85-
9.6借款偿还计划-85-
9.7现金流估算-85-
9.8不确定性分析-86-
9.9风险分析-88-
第十章项目经济、社会效益评价-90-
10.1经济效益评价-90-
10.2社会效益评价-90-
第十一章可行性研究结论与建议-91-
11.1研究结论-91-
11.2建议-91-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 词法 分析 实验 扫描器 设计 实现