示例#1
0
bool E1::Transition ( Automate & automate, Symbole * s )
{
    switch(*s)
    {
        case VAR:
        {
            automate.Decalage(s, new E4);
            return true;
        }
        case CONST:
        {
            automate.Decalage(s, new E5);
            return true;
        }
        case LIRE:
        case ECRIRE:
        case ID:
        case FIN:
        {
            automate.Reduction(new PartieInstructions, 0);
            return true;
        }
        case D:
        {
            automate.Decalage(s, new E3);
            return true;
        }
        case PI:
        {
            automate.Decalage(s, new E2);
            return true;
        }
    }
    return false;
}
bool GeneratedState1122::Transition (Automate & automate, Symbole *s)
{   
    // Generated code :
    switch ((int)*s) {
    case OUVRE_PAR:
        automate.Consommer();
        automate.Decalage(s, new GeneratedState114);
        break;
    case FACTEUR:
        automate.Decalage(s, new GeneratedState11221);
        break;
    case IDENTIFIANT:
        automate.Consommer();
        automate.Decalage(s, new GeneratedState115);
        break;
    case VALEUR:
        automate.Consommer();
        automate.Decalage(s, new GeneratedState116);
        break;
    default:
        automate.SetErreur();
        break;
    }
    return false;
}
bool GeneratedState1::Transition (Automate & automate, Symbole *s)
{
    // Generated code :
    switch ((int)*s) {
    case FIN:
        automate.Reduction(2);
        break;
    case ECRIRE:
        automate.Consommer();
        automate.Decalage(s, new GeneratedState11);
        break;

    case IDENTIFIANT:
        automate.Consommer();
        automate.Decalage(s, new GeneratedState13);
        break;
    case LIRE:
        automate.Consommer();
        automate.Decalage(s, new GeneratedState12);
        break;
    default:
        automate.SetErreur();
        break;
    }
    return false;

}
bool GeneratedState0::Transition (Automate & automate, Symbole *s)
{
    // Generated code :
    switch ((int)*s) {
    case CONST:
        automate.Reduction(0);
        break;
    case ECRIRE:
         automate.Reduction(0);
        break;
    case IDENTIFIANT:
         automate.Reduction(0);
        break;
    case LIRE:
         automate.Reduction(0);
        break;
    case PDECL:
        automate.Decalage(s, new GeneratedState0p);
        break;
    case VAR:
        automate.Reduction(0);
        break;
    case PROGRAMME:
        automate.Consommer();
        Programme* progSymbole;
        progSymbole = static_cast<Programme*>(s);
        automate.Accepter(progSymbole);
        break;
    default:
        automate.SetErreur();
        break;
    }
    return false;

}
示例#5
0
bool E29::Transition ( Automate & automate, Symbole * s )
{
    switch(*s)
    {
        case FERMEPAR:
        {
            automate.Decalage(s, new E36);
            return true;
        }
        case OPA:
        {
            automate.Decalage(s, new E27);
            return true;
        }
    }
    return false;
}
示例#6
0
bool E4::Transition ( Automate & automate, Symbole * s )
{
    switch(*s)
    {
        case ID:
        {
            automate.Decalage(s, new E12);
            return true;
        }
        case LID:
        {
            automate.Decalage(s, new E11);
            return true;
        }
    }
    
    return false;
}
示例#7
0
bool E2::Transition ( Automate & automate, Symbole * s )
{
    switch(*s)
    {
        case LIRE:
        {
            automate.Decalage(s, new E7);
            return true;
        }
        case ECRIRE:
        {
            automate.Decalage(s, new E8);
            return true;
        }
        case ID:
        {
            automate.Decalage(s, new E9);
            return true;
        }
        case FIN:
        {
            PartieInstructions * pi = (PartieInstructions *) automate.PopSymbole();
            PartieDeclarative * pd = (PartieDeclarative *) automate.PopSymbole();
            
            Programme * prog = new Programme(pd->GetDeclarations(), pi->GetInstructions());
            
            delete pi;
            delete pd;
            
            //réduire R0
            automate.Reduction(prog, 2);
            
            return true;
        }
        case I:
        {
            automate.Decalage(s, new E6);
            return true;
        }
    }
    return false;
}
示例#8
0
bool E26::Transition ( Automate & automate, Symbole * s )
{
    switch(*s)
    {
        case VAL:
        {
            automate.Decalage(s, new E33);
            return true;
        }
    }
    return false;
}
示例#9
0
bool E6::Transition ( Automate & automate, Symbole * s )
{
    switch(*s)
    {
        case POINT_VIRGULE:
        {
            automate.Decalage(s, new E15);
            return true;
        }
    }
    
    return false;
}
bool GeneratedState12p::Transition (Automate & automate, Symbole *s)
{
    // Generated code :
    switch ((int)*s) {
    case POINT_VIRGULE:
        automate.Consommer();
        automate.Decalage(s, new GeneratedState12s);
        break;
    default:
        automate.SetErreur();
        break;
    }
    return false;

}
示例#11
0
bool E13::Transition ( Automate & automate, Symbole * s )
{
    switch(*s)
    {
        case VIRGULE:
        {
            automate.Decalage(s, new E25);
            return true;
        }
        case POINT_VIRGULE:
        {
            ListeIdentifiantsValeurs * lidv = (ListeIdentifiantsValeurs *) automate.PopSymbole();
            lidv->SetIdent(D);
            //Symbole * constante = 
            delete automate.PopSymbole();

            //réduire R4
            automate.Reduction(lidv, 2);
            return true;
        }
    }
    return false;
}
示例#12
0
bool E8::Transition ( Automate & automate, Symbole * s )
{
    switch(*s)
    {
        case OUVREPAR:
        {
            automate.Decalage(s, new E20);
            return true;
        }
        case ID:
        {
            automate.Decalage(s, new E21);
            return true;
        }
        case VAL:
        {
            automate.Decalage(s, new E22);
            return true;
        }
        case E:
        {
            automate.Decalage(s, new E17);
            return true;
        }
        case T:
        {
            automate.Decalage(s, new E18);
            return true;
        }
        case F:
        {
            automate.Decalage(s, new E19);
            return true;
        }
    }
    
    return false;
}