www.pudn.com > ll1Analysis.rar > ll1.cpp


#include  
#include  
#include  
#include  
# define SIZE 40 
 
/*int char_num(char ch) 
{ 
	switch(ch) 
	{ 
	case '+':return 0; 
	case '-':return 1; 
	case '*':return 2; 
	case '/':return 3; 
	case '(':return 4; 
	case ')':return 5; 
	case 'i':return 6; 
	case '#':return 7; 
	 
	default :return -1; 
	} 
} 
int expression_num(char ch) 
{ 
	switch(ch) 
	{ 
 
	case 'E':return 0; 
	case 'T':return 1; 
	case 'G':return 2; 
	case 'F':return 3; 
	case 'S':return 4; 
	default :return -1; 
	} 
}*/ 
 
int char_num(char ch) 
{ 
	switch(ch) 
	{ 
	case 'i':return 0; 
	case '+':return 1; 
	case '*':return 2; 
	case '(':return 3; 
	case ')':return 4; 
	case '#':return 5; 
	default :return -1; 
	} 
} 
int expression_num(char ch) 
{ 
	switch(ch) 
	{ 
	case 'E':return 0; 
	case 'G':return 1; 
	case 'T':return 2; 
	case 'S':return 3; 
	case 'F':return 4; 
	default :return -1; 
	} 
} 
struct anay_str { 
	char *str; 
}; 
 
struct analysis_stack { 
	char *base; 
	char *top; 
	int stacksize; 
}; 
 
char Pop(analysis_stack& S) 
{ 
	if(S.base==S.top) cout<<"字符栈为空,不能输出"; 
	char x=*(--S.top); 
	//cout<<"出栈字符为"<=0) 
			{ 
				if(*(m.top-1)==In_putstr[j]) 
				{ 
			    	Pop(m); 
			        cout<<"\""<"<=0;i--)  /////////////////////// 
				   Push(m,store[num1][num2].str[i]); 
			    
			 
			  if(*(m.top-1)=='e') 
			  { 
				Pop(m); 
				continue; 
			  }     
			} 
		} 
	} 
	if(*(m.top-1)=='#'&&In_putstr[j]=='#') 
	{ 
		cout<