2016年秋季《编译原理》课程实验(2014级)表达式语法分析——递归子程序法
2016-11-15 11:27
423 查看
#include<stdio.h> #include<string> #include<iostream> #include<algorithm> #include<stack> using namespace std; int num; stack<char> A; stack<char> B; int f(char x,char y) { if(x == 'E') { cout<<num<<" "<<"E-->TG"<<endl; A.pop(); A.push('G'); A.push('T'); num++; return 1; } else if(x == 'G'&&y=='+') { cout<<num<<" "<<"G-->+TG"<<endl; A.pop(); A.push('G'); A.push('T'); A.push('+'); num++; return 1; } else if(x == 'G'&&y!='+') { cout<<num<<" "<<"G-->&"<<endl; A.pop(); num++; return 1; } else if(x == 'T') { cout<<num<<" "<<"T-->FS"<<endl; A.pop(); A.push('S'); A.push('F'); num++; return 1; } else if(x =='S' && y == '*') { cout<<num<<" "<<"S-->*FS"<<endl; A.pop(); A.push('S'); A.push('F'); A.push('*'); num++; return 1; } else if(x =='S' && y !='*')//保持不变,E题不同 { cout<<num<<" "<<"S-->&"<<endl; A.pop(); num++; return 1; } else if(x == 'F' && y == 'i') { cout<<num<<" "<<"F-->i"<<endl; A.pop(); A.push('i'); num++; return 1; } else if(x == 'F' && y == '(') { cout<<num<<" "<<"F-->(E)"<<endl; A.pop(); A.push(')'); A.push('E'); A.push('('); num++; return 1; } else { if(x == y) { A.pop(); B.pop(); return 1; } else { return 0; } } } void reset() { num = 0; while(!A.empty()) { A.pop(); } A.push('#'); A.push('E'); while(!B.empty()) { B.pop(); } } int main() { string s; while(cin>>s) { reset(); int len =s.length(); for(int i = len -1;i >= 0;i--) { B.push(s[i]); } while(1) { if(A.top() == '#'&& B.top() == '#') { cout<<"accept"<<endl; break; } else { int key = f(A.top(),B.top()); if(key == 0) { cout<<"error"<<endl; break; } } } } return 0; }
//与E题不同也在G和S,为G时候不为‘+’,就G->&, S也一样
相关文章推荐
- 表达式语法分析——递归子程序法
- 2147 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- SDUT 2147 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- 语法分析:算术表达式递归下降分析程序设计
- 1217实验四 递归下降语法分析程序设计
- 实验四 递归下降语法分析程序设计
- 1217 实验四 递归下降语法分析程序设计
- 【现代编译器】语法分析——正则表达式,上下文无关文法,递归下降分析,分析树
- 语法分析:算术表达式递归下降分析程序设计
- 1217 实验四 递归下降语法分析程序设计
- Atitit 表达式原理 语法分析 原理与实践 解析java的dsl 递归下降是现阶段主流的语法分析方法
- 实验四递归下降语法分析程序设计
- 语法分析:算术表达式递归下降分析程序设计
- 递归下降语法分析实验