山东科技大学编译原理课程设计 联系客服

发布时间 : 星期六 文章山东科技大学编译原理课程设计更新完毕开始阅读

山东科技大学学生课程设计

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