再帰下降構文解析のスケルトン。

int saiki(std::string formula,int& p,int pr){
	int re,a;
	while(formula.size()>p){
		char c=formula[p];
		if(c=='('){
 			p++;
			re=saiki(formula,p,0);
			p++;
		}else if(c==')'){
 			return re;
 		}else if(c=='+' || c=='-'){
 			if(pr>=1){
 				return re;
 			}
 			p++;
 			a=saiki(formula,p,1);
 			//ここに計算を書く
  		}else if(c=='*'){
  			if(pr>=2){
 				return re;
 			}
			p++;
  			a=saiki(formula,p,2);
  			//ここで計算を行う
 		}else if(c=='/'){
 			if(pr>=2){
 				return re;
 			}
 			p++;
 			a=saiki(formula,p,2);
 			//ここで計算を行う
  		}else{
                        //変数や自然数の読み込み
			
 		}
 	}
  	return re;
} 

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2013年02月15日 12:03