本文整理汇总了C++中Automate::popAndDeleteSymbole方法的典型用法代码示例。如果您正苦于以下问题:C++ Automate::popAndDeleteSymbole方法的具体用法?C++ Automate::popAndDeleteSymbole怎么用?C++ Automate::popAndDeleteSymbole使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Automate
的用法示例。
在下文中一共展示了Automate::popAndDeleteSymbole方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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;
}
示例2:
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;
}
示例3:
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;
}