山东科技大学学生课程设计
str = ch; ch=myf.get(); if(ch == '=') {
str += ch;
input.push_back(str); ch=myf.get(); str = \ } else {
input.push_back(str); } }
else if(ch=='+' || ch=='-' || ch=='*' || ch=='/') {
if(str != \ {
input.push_back(str); str = \ }
str += ch;
input.push_back(str); ch=myf.get(); str = \ } else {
str += ch; ch=myf.get(); } }
myf.close(); /*读文件结束*/
/*进行词法分析,并输出*/
for(iter = input.begin();iter != input.end();iter++) {
14
山东科技大学学生课程设计
int sign = 0;
for(int i=0;i if(Rword[i] == *iter) { cout<<\ sign = 1; break; } } if(sign == 0)//判断是否为运算符 { for(int i=0;i if(Opear[i] == *iter) { cout<<\ sign = 1; break; } } } if(sign == 0)//判断是否为分隔符 { for(int i=0;i if(Separ[i] == (*iter)) { cout<<\ sign = 1; break; } } } 15 山东科技大学学生课程设计 } if(sign == 0)//判断是否为无符号型常数或者变量 { if((*iter)[0]>'0' && (*iter)[0]<='9') cout<<\ else cout<<\ } } /*判断结束,程序结束*/ 四、运行结果及分析 1.测试数据 测试数据为test.txt文件内的数据: 16 山东科技大学学生课程设计 2.测试输出的结果 3.设计和思考 本程序的设计是基于C++实现的词法分析程序,较为方便的使用了迭代器,对open的文件进行循环读取数据、分析、判断之后进行输出。难点在于对思路的整理和理解. 17
相关推荐: