www.pudn.com > redown.rar > redown.cpp


#include 
#include 
#include 
#include 
#include 
using namespace std; 
 
class recurdown 
{ 
public: 
  recurdown() 
  {    input(); 
	  init();  
  } 
  void input(); 
  void init(); 
  void E() 
  { 
	  T();E1(); 
  } 
  void E1() 
  { 
	  AND();T();E1(); 
  } 
  void T() 
  { 
	  F();T1(); 
  } 
  void T1() 
  { 
	  MUL();F();T1(); 
  } 
  void F(); 
  void AND(); 
  void MUL(); 
  void get_s(); 
  void error(); 
  int priority(char c); 
  void output() 
  { cout< z; 
  char sym; 
  int n; 
}; 
 
void recurdown::input() 
{ 
	cout<<"input:"<>s; 
} 
void recurdown::init() 
{ 
	while(!z.empty()) 
		z.pop(); 
	z.push('#'); 
	n=0;sym='#';s=r='\0'; 
} 
void recurdown::AND() 
{ 
	if(sym=='+') 
		  { get_s();} 
	else  
		if(sym=='-') 
		{   get_s();} 
	       else 
			   error(); 
} 
 
void recurdown::MUL() 
{ 
     if(sym=='*') 
	 {get_s();} 
	else  if(sym=='/') 
		          get_s(); 
	       else 
			   error(); 
} 
 
void recurdown::F() 
{ 
  if(sym=='(') 
  {  
	  get_s(); E(); 
	  if(sym==')') 
		   get_s(); 
	  else  error(); 
  } 
  else 
	if(sym=='i')     
	   {r+=sym;	get_s();} 
	else  error(); 
} 
 
void recurdown::error() 
{ 
  cout<<"Failed Recognization"<>c; 
	if(c=='y') goto l; 
}