当前位置: 首页>>代码示例>>C++>>正文


C++ Automate::popAndDeleteState方法代码示例

本文整理汇总了C++中Automate::popAndDeleteState方法的典型用法代码示例。如果您正苦于以下问题:C++ Automate::popAndDeleteState方法的具体用法?C++ Automate::popAndDeleteState怎么用?C++ Automate::popAndDeleteState使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Automate的用法示例。


在下文中一共展示了Automate::popAndDeleteState方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1:

bool Etat23::transition(Automate & automate, Symbole * s ){
	int idSym = *s ; 
	switch (idSym) {
		case pf :
		case add :
		case moins :
		case fois :
		case divise :
		case pv :
			//Reduction r20 : F -> num
		{
			Num* num= (Num*) automate.getNthSymbole(0);
			num->setF();

			automate.popAndDeleteState();
			automate.popSymbole();

			automate.reduction(num);
			break;
		}
			
		default : break;
	}
	return false;
}
开发者ID:Salma-El-Alaoui,项目名称:GL,代码行数:25,代码来源:etat23.cpp

示例2:

bool Etat20::transition(Automate & automate, Symbole * s ){
	int idSym = *s ; 
	switch (idSym) {
		case fois :
			automate.decalage(s, new Etat33("33"));
		break;
		case divise :
			automate.decalage(s, new Etat34("34"));
		break;
		case pf :
		case add :
		case moins :
		case pv :
		{
			//TODO : r16 E → T
			Expression* expr = (Expression*)automate.getNthSymbole(0);
			expr->setE();

			automate.popAndDeleteState();
			automate.popSymbole();

			automate.reduction(expr);
			break;
		}
		case OM : 
			automate.decalage(s, new Etat32("32"));
		break;
		default:
		break;
	}
	return false;
}
开发者ID:Salma-El-Alaoui,项目名称:GL,代码行数:32,代码来源:etat20.cpp

示例3: OpParenthese

bool Etat41::transition(Automate & automate, Symbole * s ){
	int idSym = *s ; 
	switch (idSym) {
		// R21 : F -> ( E )
		case pf :
		case add :
		case moins :
		case fois :
		case divise :
		case pv :
		{
			int nbSymboles = 3;
			Expression* expr = (Expression*) automate.getNthSymbole(1);
			OpParenthese* opPar = new OpParenthese(expr);

			for (unsigned int i = 0; i < nbSymboles; ++i)
			{
				automate.popAndDeleteState();
			}

			automate.popAndDeleteSymbole();
			automate.popSymbole(); // on garde E
			automate.popAndDeleteSymbole();

			automate.reduction(opPar);
		}
		break;
		default:

		break;
	}
	return false;
}
开发者ID:Salma-El-Alaoui,项目名称:GL,代码行数:33,代码来源:etat41.cpp

示例4:

bool Etat16::transition(Automate & automate, Symbole * s ){
	int idSym = *s ; 
	switch (idSym) {
		case id :
		case r :
		case w : 
		case dollar :
		{
			// TODO r10 LI → LI I pv
			int nbSymboles = 3;
			Instruction* inst = (Instruction*) automate.getNthSymbole(1);
			BlocInstruction* blocInst = (BlocInstruction*) automate.getNthSymbole(2);
			blocInst->addInstruction(inst);

			// réduction manuelle ici
			for (unsigned int i = 0; i < nbSymboles; ++i) 
			{
				automate.popAndDeleteState();
			}

			automate.popAndDeleteSymbole();
			automate.popSymbole(); // on garde I
			automate.popSymbole(); // on le pop sans le supprimer car il s'agit de blocDec

			automate.reduction(blocInst); // réduction manuelle
			break;
		}
		default : break;
	}
	return false;
}
开发者ID:Salma-El-Alaoui,项目名称:GL,代码行数:31,代码来源:etat16.cpp

示例5:

bool Etat38::transition(Automate & automate, Symbole * s ){
	int idSym = *s ; 
	switch (idSym) {
		case v :
		case pv :
		{
			//Regle R8 : V → V v id
			int nbSymboles = 3;
			Identificateur* identif = (Identificateur*) automate.getNthSymbole(0);
			DeclarationVar* declaV = ((DeclarationVar*) automate.getNthSymbole(2));
			declaV->addIdentificateur(identif);

			// check doublons
			bool ok = Identificateur::checkDouble((string)*identif);
			if (!ok)
			{
				return false;
			}

			// réduction manuelle ici
			for (unsigned int i = 0; i < nbSymboles; ++i) 
			{
				automate.popAndDeleteState();
			}

			automate.popSymbole(); // id
			automate.popAndDeleteSymbole();
			automate.popSymbole(); // on le pop sans le supprimer car il s'agit de declaV

			automate.reduction(declaV); // réduction manuelle
			break;
		}
		default : break;
	}
	return false;
}
开发者ID:Salma-El-Alaoui,项目名称:GL,代码行数:36,代码来源:etat38.cpp


注:本文中的Automate::popAndDeleteState方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。