Gramática

7
UNIVERSIDAD CENTRAL Ingeniería de Software Docente: Julio Cesar Sierra Tabla de Análisis Sintáctico Autores: Cristian Javier Dario Becerra Enrique Pinzon Wilson Barragan David Fernando Valverde Cód.: 1032403489 Bogotá D.C – 25 de Marzo de 2015

description

Gramatica para compiladores usando conjunto primero y conjunto siguiente de AHO Y LOUDEN.

Transcript of Gramática

UNIVERSIDAD CENTRAL

Ingeniera de SoftwareDocente: Julio Cesar Sierra

Tabla de Anlisis Sintctico

Autores:

Cristian

Javier Dario Becerra

Enrique Pinzon

Wilson Barragan

David Fernando ValverdeCd.: 1032403489

Bogot D.C 25 de Marzo de 2015

ContenidoGramtica3Convenciones3Gramtica Reescrita:3Eliminacin ambigedad:3Gramtica sin ambigedad:4Eliminacin recursin por la Izquierda:4Gramtica sin recursin por la Izquierda:5Conjuntos primero:5

Gramtica:

1. programa program id (lista_identificadores) ; declaraciones lista_proposiciones .2. lista_identificadores id | lista_identificadores , id3. declaraciones declaraciones var lista_identificadores : tipo; | 4. tipo tipo_estandar | array [num .. num] of tipo_estandar5. tipo_estandar int | real6. lista_proposiciones proposicion | lista_proposiciones ; proposicion7. proposicion id = expresion | if expresin then proposicion else proposicion8. expresion factor oprel expresion | factor9. factor id | num | (expresion)10. oprel > | < | ==

Convenciones:

Programa PProgram ProgLista_identificadores L_IDeclaracionesDlista_proposicionesL_PtipoTtipo_estandarT_EProposicinprExpresion EFactorF

Gramtica Reescrita:

1. P Prog id (L_I) ; D L_P .2. L_I id | L_I, id3. D D var L_I : T; | 4. T T_E| array [num .. num] of T_E5. T_E int | real6. L_P pr| L_P ; pr7. pr id = E | if E then pr else pr8. E F oprel E | F9. F id | num | (E)10. oprel > | < | ==

Eliminacin ambigedad:

Si A -> 1 | 2 | | n | Ent A = A | A = 1 | 2 | | n

8. E F oprel E | F A = E = F 1 = oprel E 2 =

E F EE oprel E |

Gramtica sin ambigedad:

1. P Prog id (L_I) ; D L_P .2. L_I id | L_I, id3. D D var L_I : T; | 4. T T_E| array [num .. num] of T_E5. T_E int | real6. L_P pr| L_P ; pr7. pr id = E | if E then pr else pr8. E F E9. E oprel E | 10. F id | num | (E)11. oprel > | < | ==

Eliminacin recursin por la Izquierda:

Si A -> A1 | A2 | | An | 1 | 2 | | m Ent A -> 1A | 2A | | mA A -> 1A | 2A | | nA |

2. L_I id | L_I , id A = L_I 1 = , id 1 = id

L_I id L_IL_I , id L_I |

3. D D var L_I : T ; | A = D1 = var L_I : T ; 1 =

D D D var L_I : T ; D |

6. L_P pr | L_P ; pr A = L_P 1 = ; pr

L_P pr L_P L_P ; S L | Gramtica sin recursin por la Izquierda:1. P Prog id (L_I) ; D L_P .2. L_I id L_I3. L_I , id L_I | 4. D D 5. D var L_I : T ; D | 6. T T_E| array [num .. num] of T_E7. T_E int | real8. L_P pr L_P 9. L_P ; S L | 10. pr id = E | if E then pr else pr11. E F E12. E oprel E | 13. F id | num | (E)14. oprel > | < | ==Conjuntos primero:1. P prog id ( L_I ) ; D L_P . Prim (P) = {Prim(prog), } Prim(prog) = {prog} no contiene Prim(A) = Prim(P)={program}

2. L_I id L_I Prim (L_I) = {Prim(id), } Prim(id) = {id} no contiene Prim(L_I) = {id}

3. L_I , id L_I| Prim(L_I) = {Prim(,), .} U {Prim()} Prim(,) = { , } no contiene Prim() = { } Prim(L_I) = { , , } 4. D D Prim(D) = {var, }

5. D var L_I : T ; D | Prim(D) = {Prim(var), } U {Prim()} Prim(var) = {var} no contiene Prim() = { } Prim(D) = {var, } 6. T T_E| array [num .. num] of T_EPrim(T)= {Prim(T_E)} U {Prim(array } Prim(T_E) = {int, real} Prim(array) = {array} no contiene Prim(T) = {int, real, array}

7. T_E int | realPrim(T_E) = {Prim(int)} U {Prim(real)} Prim(int) = {int} Prim(real)={real} Prim(T_E) = {int, real}

8. L_P pr L_P Prim(L_P) = {Prim(pr), Prim(L_P)} Prim(pr) = {id, if} no contiene Prim(L_P) = {id, if}

9. L_P ; S L | Prim(L_P) = {Prim(;), } U {Prim()} Prim(;) = {;} no contiene Prim() = {} Prim(L_P) = { ;, }

10. pr id = E | if E then pr else prPrim(pr) = {Prim(id), } U {Prim(if), } Prim(id)= {id} no contiene Prim(if) = {if} no contiene Prim(pr) = {id, if} 11. E F EPrim(E) = {Prim(F), Prim(E)} Prim(F) = {id, num, ( } no contiene Prim(E) = {id, num, ( }

12. E oprel E | Prim(E) = {Prim(oprel), Prim(E)} U {Prim()} Prim(O) = {>, , | < | ==Prim(oprel) = {Prim(>)} U {Prim(,