Instruction* Analyseur::ToInstruction(QString s) const

{
    if (EstOperateurBinaire(s))
    {
        return ToOperateurBinaire(s);

    }

    if (EstOperateurUnaire(s))
    {
        return ToOperateurUnaire(s);

    }
    if (EstOperateurPile(s))
    {
        return ToOperateurPile(s);

    }
    if (EstConstante(s))
    {
        return ToConstante(s);

    }


    throw Exception("Ce n'est pas une instruction !");


}
示例#2
0
//Imprime le type d'une operation dans une chaine
void SprintTypeOp(char buf[], Operation op)
{
    if (EstOperateurBinaire(op))
        strncpy(buf, "Binaire", MAX_EXPR-1);
    else if (EstOperateurUD(op))
        strncpy(buf, "Unaire droite", MAX_EXPR-1);
    else if (EstOperateurUG(op))
        strncpy(buf, "Unaire gauche", MAX_EXPR-1);
    else strncpy(buf, "Inconnu", MAX_EXPR-1);
}
bool Analyseur::EstOperateur(QString s) const
{
    if (EstOperateurBinaire(s) || EstOperateurUnaire(s) || EstOperateurPile(s))
    {
        return true;
    }

    else
    {
        return false;
    }
}
OperateurBinaire* Analyseur::ToOperateurBinaire(QString s) const
{
    if (EstOperateurBinaire(s))
    {
        return new OperateurBinaire(s);

    }

    else
    {
        throw Exception("Ce n'est pas une instruction !");

    }
}