资源简介
编译原理课程设计
for循环
用LR法实现
中间代码用三元式表示
代码片段和文件信息
#include“init.h“
int main(){
input();//输入
scanner();//扫描输入串进行词法分析,词法分析存于tokenList中,有单词和类型码
grammar();//语法分析和语义分析,二者穿插进行
outfile1.close();//关闭打开的文件
outfile2.close();//关闭打开的文件
outfile3.close();//关闭打开的文件
return 0;
}
void input(){//输入函数,以#控制
char c;
cout<<“******************BEGIN*******************“< cout<<“* for循环语句的分析 *“< cout<<“* *“< cout<<“*包括的内容如下: *“< cout<<“*1.词法分析 *“< cout<<“*2.语法分析 *“< cout<<“*3.语义分析 *“< cout<<“* *“< cout<<“*****************END**********************“< cout< cout<<“请输入for循环语句并以#结束:“< do{
c=cin.get();
s+=c;
}while(c!=‘#‘);//不以#结尾则重新输入
}
void scanner(){
int t;
while(num switch(sort(s[num])){
case 0:
error();
num++;
break;
case 1:
t=recog_id(s[num]);
if(t==-1)error();
break;
case 2:t=recog_dig(s[num]);
if(t==-1)error();
break;
case 3:t=recog_delimeter(s[num]);
if(t==-1)error();
break;
case 4:t=recog_oper(s[num]);
if(t==-1)error();
break;
case 5:
num++;
break;
}
}
write_token();
}
int sort(char ch){//排序函数
if(isalpha(ch) || ch==‘_‘)return 1;//标识符以字母或下划线开始
else if(isdigit(ch))return 2;//数字
else if(isin(chdelimeter12))return 3;//若是‘,则是字符常数
else if(isin(choper10))return 4;//若是其他符号
else if(ch==‘ ‘ || ch==9)return 5;//9表示水平制表符
else return 0;
}
int recog_id(char ch){//ch为给定字符串的第一个字符
char state=‘0‘;//出示状态为0
while(state!=‘2‘){
switch(state){
case ‘0‘://若当前是状态0,读入一个字母或下划线,转向状态1
if(isalpha(ch) || ch==‘_‘){
state=‘1‘;
tokenList[count].word.push_back(ch);
tokenList[count].token=0;
}
else return -1;
break;
case ‘1‘://若当前是状态1,读入字母或数字或下划线,仍为状态1
if(isalpha(ch) || isdigit(ch) || ch==‘_‘){
state=‘1‘;
tokenList[count].word.push_back(ch);
}
else{
state=‘2‘;
tokenList[count].token=2;
num--;//退回当前读入的字符
}
}
ch=s[++num];
}
string str;//截取字符串,并判断是否是关键字
for(int i=0;i str+=tokenList[count].word[i];
}
if(isin(strkeyword33))tokenList[count].token=1;
count++;
return 0;
}
int recog_dig(char ch){//识别常数
char state=‘0‘;//初始状态为0
while(state!=‘7‘){
switch(state){
case ‘0‘:
if(isdigit(ch)){
state=‘1‘;
tokenList[count].word.push_back(ch);
tokenList[count].token=0;
}
else return -1;
break;//读入一个数字
case ‘1‘:
if(isdigit(ch)){
state=‘1‘;
tokenList[count].word.push_back(ch);
}//仍然读入数字
else if(ch==‘.‘){
state=‘2‘;
tokenList[count].word.push_back(ch);
}//读入小数点,识别实数
else if(ch==‘e‘ || ch==‘E‘){
state=‘4‘;
tokenList[count].word.push_back(ch);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 630821 2009-06-18 19:40 编译原理课程设计for循环\Debug\for.exe
文件 853372 2009-06-18 19:40 编译原理课程设计for循环\Debug\for.ilk
文件 2568072 2009-06-18 18:53 编译原理课程设计for循环\Debug\for.pch
文件 1188864 2009-06-18 19:08 编译原理课程设计for循环\Debug\for.pdb
文件 434801 2009-06-18 19:40 编译原理课程设计for循环\Debug\main.obj
文件 82944 2009-06-18 19:41 编译原理课程设计for循环\Debug\vc60.idb
文件 135168 2009-06-18 19:08 编译原理课程设计for循环\Debug\vc60.pdb
文件 4308 2009-06-18 19:39 编译原理课程设计for循环\for.dsp
文件 529 2009-06-18 18:52 编译原理课程设计for循环\for.dsw
文件 41984 2009-06-18 19:42 编译原理课程设计for循环\for.ncb
文件 53760 2009-06-18 19:42 编译原理课程设计for循环\for.opt
文件 871 2009-06-18 19:40 编译原理课程设计for循环\for.plg
文件 4733 2009-06-18 18:53 编译原理课程设计for循环\init.h
文件 20628 2009-06-21 19:44 编译原理课程设计for循环\main.cpp
文件 219 2009-06-18 01:03 编译原理课程设计for循环\产生式.txt
文件 350 2009-06-18 19:40 编译原理课程设计for循环\词法分析结果.txt
文件 186 2009-06-18 19:40 编译原理课程设计for循环\语义分析结果.txt
文件 1694 2009-06-18 19:40 编译原理课程设计for循环\赋值语句分析过程.txt
文件 524 2009-06-18 19:40 编译原理课程设计for循环\过程分析.txt
目录 0 2009-06-19 12:11 编译原理课程设计for循环\Debug
目录 0 2009-06-22 02:04 编译原理课程设计for循环
----------- --------- ---------- ----- ----
6023828 21
- 上一篇:udp丢包率统计
- 下一篇:ls -R 递归显示
相关资源
- 软件测试实验报告——LR
- Thales(泰勒兹基于模型的系统工程方
- halcon中使用一种新思路来模板匹配的
- 一种基于LBM的气液固三相流多尺度模
- 基于超声导波的多损伤层析检测方法
- Flac3D5.0 64位破解版含破解方法
- spss统计分析方法及应用第三版光盘数
- gensim包的tfidf方法计算中文文本相似度
- 剔除测量数据中异常值的若干方法+
- 数学物理方法梁昆淼
- IT项目风险管理理论与方法研究_方德
- 默罕默德-格子玻尔兹曼方法书籍
- BI 实施方法论非常好的资料
- 安全评价方法在电焊工艺危险因素分
- 石油裂解气中总汞采样方法的改进
- 矿用带式输送机张紧力预测方法
- 论文研究 - 柔性臂机器人的自适应鲁
- PCB Layout爬电距离、电气间隙的确定方
- 一种含转动副间隙多连杆机构非线性
- 钢管轻集料混凝土抗弯刚度计算方法
- 集料表面微观纹理的三维数值模型重
- 细集料沥青混合料试件湿度养生方法
- 细集料沥青混合料蠕变柔量主曲线绘
- 淮南矿区硬岩穿层钻孔钻进方法对比
- 基于模拟多光谱遥感影像的大气校正
- .net MVC+Bootstrap下使用localResizeIMG上传图
- →,在扰动QCD方法中次领先的阶跃
- α稳定噪声下SCLD和OFDM的盲识别新
- 黔西松河井田煤层气合层开发层段优
- 龙山选煤厂高灰细煤泥回收方法研究
评论
共有 条评论