ll1

6
Ejemplo de gramática (expresiones aritméticas): E := T + E | T - E | T T := F * T | F / T | F F ::= i | (E) FNG: E ::= iPTME | (ECPTME | iDTME | (ECDTME | iME | (ECME | iPTSE | (ECPTSE | iDTSE | (ECDTSE | iSE | (ECSE | iPT | (ECPT | iDT | (ECDT | i | (EC T ::= iPT | (ECPT | iDT | (ECDT | i | (EC F ::= i | (EC M ::= + S ::= - P ::= * D ::= / C ::= ) En forma LL(1) queda: E ::= iV | (ECV V ::= *TX | /TX | +E | -E | λ X ::= +E | -E | λ T ::= iU | (ECU U ::= *T | /T | λ F ::= i | (EC C ::= )

Upload: jhon-contreras

Post on 28-Sep-2015

222 views

Category:

Documents


0 download

DESCRIPTION

compiladores

TRANSCRIPT

  • 1

    Ejemplo de gramtica (expresiones aritmticas):E := T + E | T - E | TT := F * T | F / T | FF ::= i | (E)

    FNG:E ::= iPTME | (ECPTME | iDTME | (ECDTME | iME | (ECME |

    iPTSE | (ECPTSE | iDTSE | (ECDTSE | iSE | (ECSE |iPT | (ECPT | iDT | (ECDT | i | (EC

    T ::= iPT | (ECPT | iDT | (ECDT | i | (ECF ::= i | (ECM ::= +S ::= -P ::= *D ::= /C ::= )

    En forma LL(1) queda:

    E ::= iV | (ECVV ::= *TX | /TX | +E | -E | X ::= +E | -E | T ::= iU | (ECUU ::= *T | /T | F ::= i | (ECC ::= )

  • 2

    Paso automtico de la gramtica LL(1) al analizador:

    caso a) Reglas SIN

    gramtica LL(1), U ::= x X1 X2 ... Xn | y Y1 Y2 ... Ym | ... | z Z1 Z2 ... Zp

    caso b) Reglas CON

    U ::= x X1 X2 ... Xn | ... | z Z1 Z2 ... Zp |

    int U (char *cadena, int i){if (i

  • 3

    int U (char *cadena, int i){if (i

  • 4

    int X (char *cadena, int i){if (i

  • 5

    int C (char *cadena, int i){if (i

  • 6

    Ejemplo: anlisis de "i+i*".

    E ("i+i*", 0) = V ("i+i*", 1) == E ("i+i*", 2) == V ("i+i*", 3) == X ("i+i*", T ("i+i*", 4)) == -2