技术开发 频道

递归下降分析程序构造


【IT168技术文档】

#include <iostream> using namespace std; char A[100]; //用于存放符号串 int i=0; //扫描指针 char sym; //用于保存当前要判断的字符 bool flag=0; //用于判断该输入是否匹配 void E(); // E void EE(); // E' void T(); // T void TT(); // T' void F(); // F void advance(); //从字符串数组中读入一个字符 void main( ) { cout<<"\n多读入的结束字符为#\n\n"; cin>>A; cout<<"\n***************************************\n\n"; sym=A[0]; E(); if(sym!='#'){ if(flag==1) { cout<<"\n该输入串不匹配\n\n"; } else { cout<<"\n该输入串匹配\n\n"; } } } void E() { T(); EE(); } void EE() { if(sym=='+') { advance(); T(); EE(); } } void T() { F(); TT(); } void TT() { if(sym=='*') { advance(); F(); TT(); } } void F() { if(sym=='i') advance(); else { if(sym=='(') { advance(); E(); if(sym==')') advance(); else flag=1; } else flag=1; } } void advance() { i++; sym=A[i]; if(sym=='#') { if(flag==1) { cout<<"\n该输入串不匹配\n\n"; } else { cout<<"\n该输入串匹配\n\n"; } } }
0
相关文章