Parsing Top Down (Descendente)

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Parsing Top Down (Descendente)"

Transcripción

1 Top Down (Descendente) José M. Castaño Teoría de Lenguajes 2012 Departamento de Computación FCEyN, UBA

2 Outline

3 Introducción Reconocer/Generar un lenguaje independiente de contexto (CFL). Poder expresivo CFL léxico (tokenización, lexers, scanners) sintáctico Mientras se reconoce se construye árbol (AST). Hacer algo mas...

4 Compiladores Léxico Sintáctico Semántico Generación Código Intermedio Optimización Generación Código

5 Repaso: Derivaciones αaβ αγβ dado A γ αaβ αγβ dado A γ Derivación a izquierda (leftmost derivation). reescribe el NT más a la izquierda. Derivación a derecha (rightmost derivation). reescribe el NT más a la derecha.

6 Árboles de Árboles que describen la derivación Las hojas corresponden a la cadena (generada/reconocida) La derivación especifica cómo generar la cadena El árbol especifica la estructura implícita.

7 Sintáctico Verificar que w L(G) Recuperar la estructura G define la posible secuencia de tokens que devuelve el analizador léxico

8 Ambigüedad G es ambigua si w L(G) con al menos dos derivaciones. No es decidible si una CFG es ambigua Existen CFL inherentemente ambiguas. Sin embargo la ambigüedad puede residir sólo en la gramática. Importancia de ambigüedad: depende de la semántica

9 Ambigüedad E int E + E E E E E E + E E - E E - E E + E 7 E + E E + E 3 2

10 Resolviendo Ambigüedad Reescribir la gramática si es posible Operadores de precedencia (más allá de CF) Usado en muchos (e.g. bison)

11 ASTs: Abstract Syntax Trees árbol para codificar la estructura lógica (Abstracción de la sintaxis particular) Elimina símbolos inútiles Elimina nodos internos Traducción última.

12 Cómo se construye el AST? Acciones semánticas Asociar el código con cada producción Mientras se hace el análisis sintáctico se ejecuta el código para construir el AST El orden exacto del código depende del parsing traducción dirigida por la sintaxis

13 Ejemplo E T + E E T T int T int T E 1.val = T.val + E 2.val E.val = T.val T.val = int.val T 1.val = int.val T 2.val

14 Síntesis El parser construye la estructura de la derivación Una gramática ambigua construirá más de un árbol para un input dado. No hay algoritmos para decidir/eliminar ambigüedad Las acciones semánticas se usan para construir AST

15 Tipos de Descendente (Top Down) Ascendente (Bottom Up) Determinístico No-Determinístico

16 Ejemplo E T E T + E T int T (E) int + ( int + int )

17 Descendente S E$ E T E T + E T int T (E) int + ( int + int ) $

18 S E$ E T E T + E T int T (E) Descendente S int + ( int + int ) $

19 Descendente S E$ E T E T + E T int T (E) S E $ int + ( int + int ) $

20 int + ( int + int ) $ S E$ E T E T + E T int T (E) Descendente S E $ T + E

21 S E$ E T E T + E T int T (E) Descendente S E $ T + E int

22 S E$ E T E T + E T int T (E) Descendente S E $ T int + E T

23 S E$ E T E T + E T int T (E) Descendente E S $ T + E int T ( E ) int + ( int + int ) $

24 Descendente S E$ E T T + E T int (E) S T + E E $ int T ( E ) T + E int + ( int + int ) $

25 S E$ E T T + E T int (E) Descendente S E $ T + E int T ( E ) T + E int + ( int + int ) $ int T

26 Descendente: Inconvenientes Sin información sobre el input Hipótesis: todas las posibles Cómo restringir espacio de búsqueda? Analogía: parsing y búsqueda Explorar el grafo de las posibles derivaciones

27 Descendente S E$ T$ int$ (E)$ T+T+E$ (T)$ (T+E)$ int+t+e$ T+E$ T+T$ int+e$ T+(E)$ int+t$ int+(e)$ int+int$

28 Descendente: Búsqueda S E$ T$ int$ (E)$ T+T+E$ (T)$ (T+E)$ int+t+e$ T+E$ T+T$ int+e$ T+(E)$ int+t$ int+(e)$ int+int$

29 Descendente: BFS Genera un gran número de derivaciones que no van a tener relación con el input Gran consumo de memoria Gran factor de ramificación # no terminales (en forma sentencial). # producciones

30 Recortar Espacio de Búsqueda Necesitamos derivar w (input) Supongamos obtenemos uα Si u es prefijo de w puede ser uα w Si u no es prefijo de w no puede ser uα w Obteniendo prefijos primero se recorta el espacio de búsqueda

31 Derivación a izquierda Reescribe el no terminal más a la izquierda. BFS con derivación a izquierda Reduce el factor de ramificación Aumenta la probabilidad de encontrar prefijos Recorta las formas sentenciales que no son prefijos

32 Derivación y Recursión a izquierda S A$ A Aa Ab c INPUT: caaaa Derivaciones: S Aaa$ S Aba$ S Abb$ BFS y DI: tiempo y espacio exponencial

33 DI y DFS Menos espacio (memoria): un rama por vez Mejor tiempo: En muchas gramáticas corre rápido. Fácil de implementar: funciones recursivas Problemas con recursión a izquierda (RI)

34 DI,DFS y RI S A$ A Aa c Input: c$ S Aaaaa$ Recursión a Izquierda (RI): Un no-terminal A es recursivo a izquierda si: A Aα Es posible eliminar recursión a izquierda

35 BFS vs DFS con DI BFS cualquier CFG tiempo EXP espacio EXP No se usa Explora todo DFS CFG sin RI tiempo EXP espacio lineal recursivo descendente backtracking

36 Parsers Predictivos Puede alcanzar tiempo lineal Se puede usar una tabla para mejorar No toda gramática acepta parser predictivo Trade-off entre expresividad y performance

37 Lookahead Predecir próxima regla a usar Mirar los próximos tokens

38 Parser Descendente (Top-Down) Predictivo L: Recorre tokens de izquierda a derecha L:. Derivación a izquierda. (1): Se usan un token como lookahed. Construye derivación a izquierda En cada paso de reescritura se predice la producción en base al próximo token

39 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4

40 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$

41 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$

42 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$

43 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$

44 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$ ( E O E )$ ( int + int )$

45 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$ ( E O E )$ ( int + int )$

46 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$ ( E O E )$ ( int + int )$ E O E )$ int + int )$

47 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$ ( E O E )$ ( int + int )$ E O E )$ int + int )$ int O E ) $ int + int )$

48 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$ ( E O E )$ ( int + int )$ E O E )$ int + int )$ int O E ) $ int + int )$ O E ) $ + int )$

49 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$ ( E O E )$ ( int + int )$ E O E )$ int + int )$ int O E ) $ int + int )$ O E ) $ + int )$

50 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$ ( E O E )$ ( int + int )$ E O E )$ int + int )$ int O E ) $ int + int )$ O E )$ + int )$ + E ) $ + int )$

51 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$ ( E O E )$ ( int + int )$ E O E )$ int + int )$ int O E ) $ int + int )$ O E )$ + int )$ + E ) $ + int )$ E ) $ int )$

52 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$ ( E O E )$ ( int + int )$ E O E )$ int + int )$ int O E ) $ int + int )$ O E )$ + int )$ + E ) $ + int )$ E ) $ int )$ int ) $ int )$

53 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$ ( E O E )$ ( int + int )$ E O E )$ int + int )$ int O E ) $ int + int )$ O E )$ + int )$ + E ) $ + int )$ E ) $ int )$ int ) $ int )$ ) $ )$

54 Tabla en 1 S E$ 2 E int 3 E (EOE) 4 O + int ( ) + $ S 1 1 E 2 3 O 4 S ( int + int )$ E$ ( int + int )$ ( E O E )$ ( int + int )$ E O E )$ int + int )$ int O E ) $ int + int )$ O E )$ + int )$ + E ) $ + int )$ E ) $ int )$ int ) $ int )$ ) $ )$ $ $

55 Algoritmo Dada una tabla T y un input w Inicialize la Pila con S y c la posición inicial de w Repetir hasta que en la pila quede solo $: Sea c el caracter de w if el tope de la pila es un terminal t: if t c, rechazar. else t = c consumir ambos. else el tope de la pila es NT A if T [A, c] no está definido rechazar else reemplazar tope de pila con T [A, c]

56 Construccion de T Concepto: El próximo caracter c, define la regla correspondiente, por lo tanto debe ser una regla que empieza con ese caracter. T [A, c], debe estar en la tabla si A A 1 α y A 1 cβ

57 El conjunto FIRST (PRIMEROS) FIRST define el conjunto terminales que están al inicio de una cadena derivada por un NT A FIRST (A) = {t A tw} Inicial: FIRST (A) = {t A tw} FIRST se obtiene computando la clausura transitiva por cada A Bβ compute iterativamente: FIRST (A) = FIRST (A) FIRST (B) Si A A 1 A 2... A n por A i, A i+1 mientras A i ɛ FIRST (A i ), contiene a FIRST (A i+1 )

58 El conjunto SIGUIENTES (FOLLOW) Intuición: qué terminales pueden seguir a un NT FOLLOW (A) = {t B uatz} Usada cuando hay producciones λ.

59 El conjunto SIGUIENTES (FOLLOW) Para todas las producciones B αaβ entonces: FOLLOW(A) = FIRST(β) Si β ɛ FOLLOW(A) = FOLLOW (A) FOLLOW (B)

60 Obtener FIRST (A) y FOLLOW (A) para todos los NT, A. Para cada regla A w y cada t FIRST (w), T [A, t] = w. Para cada regla A w donde ɛ FIRST (w), T [A, t] = w para cada t t FOLLOW (A)

61 Definiciones Definition (Símbolo activo) Dada una gramática G = V N, V T, P, S el no-terminal A es activo sii A G w con w V T. Definition (Símbolo alcanzable) Dada una gramática G = V N, V T, P, S el no-terminal A es alcanzable sii S G αaβ con α, β (V T V N ). Definition (Gramática reducida) Una gramática G = V N, V T, P, S es una gramática reducida sii todos sus no-terminales son activos y alcanzables

62 Definiciones Dada una gramática G = V N, V T, P, S y una cadena α (V T V N ), definimos: Definition (FIRST(α)) FIRST(α) = { z Σ : z = a V T y α G aw para alguna w V T } o z = λ y α λ. G FIRST K (α) genera hasta k terminales que se derivan de α Definition (FIRST K (α)) FIRST K (α) = { z Σ : z < k y α G z, o z = k y α G zx para alguna x V T }.

63 Gramática LL(k) Definition (Gramática LL(k)) Una gramática G = V N, V T, P, S es LL(k) sii, siempre que existan dos derivaciones a izquierda S L waα L wβα wx S L waα L wγα wy en las que FIRST K (x) = FIRST K (y), es cierto que β = γ.

64 Gramática LL(k) Theorem Una gramática G = V N, V T, P, S es LL(k) sii, para todo par de producciones A β y A γ, con β γ, FIRST K (βα) FIRST K (γα) = φ, para todos los waα tales que S waα. L Proof.. : si x V + T, x FIRST K (βα) FIRST K (γα) φ entonces, S L waα L wβα wxy S L waα L wγα wxz, donde, si x < k entonces y = z = λ.

65 Gramática LL(k) Proof. : si G no es LL(k) entonces existirán dos derivaciones S L waα L wβα wx S L waα L wγα wy tales que z V + T, z k y z = FIRST K (x) = FIRST K (y), por lo que z FIRST K (βα) y z FIRST K (γα) y por lo tanto FIRST K (βα) FIRST K (γα) φ

66 SIGUIENTES (FOLLOW) Definition (FOLLOWS K (A)) Dada una gramática G = V N, V T, P, S y un no-terminal A V N, definimos FOLLOWS K (A) como FOLLOWS K (A) = { } z : S αaγ y z FIRST K (γ). FOLLOW K (A) genera hasta k terminales que siguen a A. Theorem Una gramática G = V N, V T, P, S es sii, para todo par de producciones A β y A γ, con β γ, FIRST(β FOLLOWS(A)) FIRST(γ FOLLOWS(A)) = φ.

67 Gramática Definition (Gramática simple) Una gramática G = V N, V T, P, S sin reglas borradoras es simple sii todas sus producciones son de la forma A a 1 β 1... a k β k donde a 1,..., a k V T y β 1,..., β k (V T V N ).

68 Gramática Definition (Símbolos directrices) Definimos la función SD : P P (V T ) de la siguiente manera { FIRST(β) si β no es anulable SD (A β) = FIRST(β) FOLLOWS(A) si β es anulable

69 no es RI Theorem Para toda gramática G = V N, V T, P, S reducida (o sea, una en las cual todos los no-terminales son alcanzables y activos), si G es independiente de contexto y, entonces G no es recursiva a izquierda.

70 Demostración no es RI Proof. Supongamos que la gramática G es recursiva a izquierda. Entonces, A V N tal que A + Aα. Como G es reducida, entonces el no-terminal A generará alguna cadena de terminales. Consideraremos dos casos: uno en el que A es capaz de generar una cadena no nula, o sea tτ V + T tal que, A + L tτ, y el otro, en el que lo único que A puede generar es la cadena nula: A + L λ.

71 no es RI Proof. En el primer caso, tenemos que A L B 1 β 1 L... L B i β i L γβ i L... L tτ L B i+1 δβ i L... L Aα L... L tτα Ambas derivaciones desde A coinciden hasta B i β i, allí B i es expandido mediante B i B i+1 δ, continuando por la rama superior, o mediante B i γ, continuando por la rama inferior. En la rama superior se considera el caso recursivo y en la rama inferior el caso no-recursivo De aquí surge que t SD (B i B i+1 δ) y t SD (B i γ), y por lo tanto, G no es

72 no es RI Proof. Segundo caso, como A solamente genera λ, tenemos que L B i+1 δβ i L... L Aα L... L λ A L B 1 β 1 L... L B i β i L γβ i L... L λ donde las ramas superior e inferior son análogas a las del primer caso. Aquí se ve que B i+1 δβ i+1 y γβ i son anulables, (o sea, B i+1 δβ i+1 L λ y γβ i L λ) y por lo tanto B i+1 δ y γ también son anulables, respectivamente, y por lo tanto FOLLOWS(B i ) SD(B i B i+1 δ) y FOLLOWS(B i ) SD(B i γ), por lo que SD(B i B i+1 δ) SD(B i γ). Entonces, en este caso, la gramática G tampoco es.

73 Primeros X Algorithm 1 Algoritmo para obtener FIRST(X) 1: if X V T then 2: FIRST(X) = {X} 3: else 4: FIRST(X) 5: for todas las producciones X Y 1 Y 2... Y k P do 6: FIRST(X) FIRST(X) FIRST(Y 1 ) 7: i = 2 8: while i k Y 1 Y 2... Y i 1 G λ do 9: FIRST(X) FIRST(X) FIRST(Y i ) 10: i = i : end while 12: if X λ then G 13: FIRST(X) FIRST(X) {λ} 14: end if 15: end for 16: end if

74 Primeros X n Algorithm 2 FIRST(X 1 X 2... X n ), con n > 1 1: FIRST(X 1 X 2... X n ) FIRST(X 1 ) {λ} 2: i=2 3: while i n X 1 X 2... X i 1 G λ do 4: FIRST(X 1 X 2... X n ) FIRST(X 1 X 2... X n ) (FIRST(X i ) {λ}) 5: i = i + 1 6: end while 7: if X 1 X 2... X n G λ then 8: FIRST(X 1 X 2... X n ) FIRST(X 1 X 2... X n ) {λ} 9: end if

75 FOLLOWS(B) Algorithm 3 FOLLOWS(B), para todo B V N 1: FOLLOWS(S) {$} 2: for todos los A V N diferentes de S do 3: FOLLOWS(B) 4: end for 5: for todas las A αbβ P do 6: FOLLOWS(B) FOLLOWS(B) (FIRST(β) {λ}) 7: end for 8: repeat 9: for todos los B V N tales que A αbβ P β G λ do 10: FOLLOWS(B) FOLLOWS(B) FOLLOWS(A) 11: end for 12: until ningún FOLLOWS(B) cambie más

76 Símbolos Activos Algorithm 4 Algoritmo para obtener el conjunto de símbolos activos de una gramática 1: Act 2: repeat 3: for cada producción A α P do 4: if α (Act V T ) then 5: Act Act {A} 6: end if 7: end for 8: until Act no cambie

77 Símbolos Alcanzables Algorithm 5 Algoritmo para obtener el conjunto de símbolos alcanzables de una gramática 1: Alc {S} 2: repeat 3: for cada producción A α para un no-terminal A Alc do 4: Incorporar los no-terminales presentes en α al conjunto Alc 5: end for 6: until Alc no cambie

78 Eliminación de RI Algorithm 6 Eliminación de la recursión a izquierda 1: Ordenar los no-terminales V N = {A 1,..., A n } 2: for i 1, n do 3: for j 1, i 1 do 4: Reemplazar producciones A i A j α por producciones A i β 1 α... β m α donde A j β 1... β m son todas las producciones de A j. 5: end for 6: Reemplazar las producciones del no-terminal A i, A i A i α i... A i α m β 1... β p (en las cuales, ningún β j comienza con un A k si k i) por A i A i β 1... β p β 1 A i... β p A i α 1... α m α 1 A i... α m A i 7: end for

79 de Tabla Algorithm 7 para analizador predictivo descendente 1: for cada producción A α P do 2: for cada a FIRST(α) do 3: M[A, a] M[A, a] {A α} 4: end for 5: if λ FIRST(α) then 6: for cada b FOLLOWS(A) do 7: M[A, b] M[A, b] {A α} 8: end for 9: if $ FOLLOWS(A) then 10: M[A, $] M[A, $] {A α} 11: end if 12: end if 13: end for 14: for toda posición M[A, a] == do 15: M[A, a] error 16: end for

80 Analizador Algorithm 8 Analizador predictivo descendente con tabla 1: Pila = $S, PI = p.i. de w, X tope pila, a PI. 2: repeat 3: if X (V T {$}) then 4: if X == a then 5: Extraer X y avanzar PI 6: else 7: devolver error 8: end if 9: else 10: if M[X, a] == X Y 1 Y 2... Y k then 11: Extraer X 12: Apilar Y k Y k 1... Y 1 (con Y 1 en el tope) 13: Emitir el nro. de X Y 1 Y 2... Y k 14: else 15: devolver error 16: end if 17: end if

81 Gramáticas no : RI A Aa b FIRST (A) = {b} No se puede hacer la tabla. Por que? Conflicto FIRST/FIRST

82 Eliminación de RI En general, se puede convertir recursión a izquierda en recursión a derecha. A Aa c A ca + A ca A aa ɛ A A A a c A A a a A c a

83 Problemas con S E$ E T E T + E T int T (E) S E $ FIRST(E) = { int, ( } FIRST(T) = { int, (}

84 Factorización a izquierda S E$ E T E T +E T int T (E) S E$ E T Y T int T (E) Y +E ɛ

85 Un conjunto de lenguajes de programació usaron/usan : LISP Python JavaScript

86 es sencillo Rápida implementación con una tabla Puede implementarse con Descendiente Recursivo Una función para cada no terminal Las funciones se llaman en base al token de lookahead Es eficiente: parse en O(n f (G)) Donde f (G), es una función sobre G

87 Conclusiones TD parsing sigue las derivaciones desde el símbolo inicial BFS por izquierda nos muestra el espacio a recorrer (no-determinístico). DFS por izquierda nos muestra como se puede recortar (no-determinístico). recorre de izquierda a derecha usa DI, parsing determinístico. FIRST define conjunto de terminales que son primer símbolo en la derivación. FOLLOW define el conjunto de terminales que siguen a un NT en una derivación. RI y FI, son los problemas pra.

Introducción. Análisis Semántico. José M. Castaño. Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA

Introducción. Análisis Semántico. José M. Castaño. Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA Análisis Semántico José M. Castaño Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA Compiladores Análisis Léxico Análisis Sintáctico Análisis Semántico Generación Código Intermedio Optimización

Más detalles

Tipos de análisis deterministas. Análisis descendente. Tipos de análisis deterministas. Análisis ascendente. Análisis descendente

Tipos de análisis deterministas. Análisis descendente. Tipos de análisis deterministas. Análisis ascendente. Análisis descendente César Ignacio García Osorio Área de Lenguajes y Siste mas Informáticos Universidad de Burgos Tipos de análisis deterministas. nálisis descendente. La idea es generar una forma sentencial a partir del axioma,

Más detalles

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Analizadores sintác0cos descendentes: LL(1) Cris%na Tirnauca DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia: Crea0ve Commons BY NC SA 3.0 Analizadores

Más detalles

Analizadores sintácticos LR(0) y SLR

Analizadores sintácticos LR(0) y SLR Teoría de Lenguajes Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Clase de Hoy Anteriores: Parsing descendente (LL(1), ELL) Recursivos e iterativos Generan árbol de derivación desde

Más detalles

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Sintaxis Define la estructura del lenguaje Ejemplo: Jerarquía en

Más detalles

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion UNIDAD IV Analisis Sintactico 4.1 Introduccion Sintaxis significa estructura del orden de las palabras en una frase. La tarea del analisis sintactico es revisar si los símbolos aparecen en el orden correcto

Más detalles

El análisis descendente LL(1) 6, 7 y 13 de abril de 2011

El análisis descendente LL(1) 6, 7 y 13 de abril de 2011 6, 7 y 13 de abril de 2011 Analizadores sintácticos (repaso) Los analizadores descendentes: Corresponden a un autómata de pila determinista. Construyen un árbol sintáctico de la raíz hacia las hojas (del

Más detalles

Lenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1

Lenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1 Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Análisis Sintáctico Parte I 1 Introducción El analizador sintáctico recibe una secuencia de tokens y decide si la secuencia está correcta o no.

Más detalles

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Analizadores sintácticos descendentes: LL(1) Cristina Tîrnăucă Dept. Matesco, Universidad de Cantabria Fac. Ciencias Ing. Informática Primavera de 2013 Analizadores sintácticos

Más detalles

Agenda. Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo

Agenda. Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo Agenda Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo Analizador sintáctico Bottom-Up 1-1 1-2 Introducción Los sistemas de implementación

Más detalles

18 Análisis sintáctico III Compiladores - Profr. Edgardo Adrián Franco Martínez. Clasificación de métodos de análisis sintáctico Análisis descendente

18 Análisis sintáctico III Compiladores - Profr. Edgardo Adrián Franco Martínez. Clasificación de métodos de análisis sintáctico Análisis descendente 2 Contenido Clasificación de métodos de análisis sintáctico Análisis descendente Análisis descendente recursivo Análisis descendente predictivo Métodos deterministas Problemas del análisis descendente

Más detalles

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I Tema 4: Gramáticas independientes del contexto Teoría de autómatas y lenguajes formales I Bibliografía Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introducción a la Teoría de Autómatas, Lenguajes y Computación.

Más detalles

Las Gramáticas LL. Gramáticas con Parsing Eficiente. Universidad de Cantabria

Las Gramáticas LL. Gramáticas con Parsing Eficiente. Universidad de Cantabria Las (k) Las Gramáticas con Parsing Eficiente Universidad de Cantabria Outline Las (k) 1 Las (k) 2 3 Las (k) Formalizalización del Concepto LL Definición Una gramática libre de contexto G = (V, Σ, Q 0,

Más detalles

Compiladores e Intérpretes Análisis Sintáctico

Compiladores e Intérpretes Análisis Sintáctico 1 Compiladores e Intérpretes Análisis Sintáctico Sebastian Gottifredi 2017 Organizacion Contexto Motivación Reglas de Sintaxis Construyendo Analizadores Sintácticos Ambigüedad Analizadores Sintácticos

Más detalles

B b A. Notar que las gramáticas utilizadas son sin recursión por la izquierda:

B b A. Notar que las gramáticas utilizadas son sin recursión por la izquierda: Definición: Una Gramática Libre de Contexto (GLC) está en Forma Normal de Greibach (FNG) si todas las producciones son de la forma: A ab 1 B 2.. B k Donde A es un símbolo no Terminal, a es un símbolo Terminal

Más detalles

Análisis sintáctico Analizadores descendentes

Análisis sintáctico Analizadores descendentes Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis sintáctico Analizadores descendentes Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

Proyecto Intermedio Algoritmo de Earley

Proyecto Intermedio Algoritmo de Earley Fundamentos de Computación Proyecto Intermedio: Algoritmo de Earley Profesor: Dr. José Torres Jiménez Alumnos: Edna Gutiérrez Gasca Aureny Magaly Uc Miam Jorge Rodríguez Núñez Proyecto Intermedio Algoritmo

Más detalles

Lenguajes y Compiladores Análisis Sintáctico Parte II

Lenguajes y Compiladores Análisis Sintáctico Parte II Universidad Nacional San Luis Gonzaga Facultad de Ing. De Sistemas Lenguajes y Compiladores Análisis Sintáctico Parte II 1 Análisis Ascendente El análisis ascendente es conocido como análisis por desplazamiento

Más detalles

Analizador Sintáctico Ascendente

Analizador Sintáctico Ascendente Analizador Sintáctico Ascente Un Analizador Sintáctico (A. St.) Ascente construye el árbol desde las hojas hacia la raíz. Funciona por reducción-desplazamiento, lo cual quiere decir que, siempre que puede,

Más detalles

Gramáticas de Atributos

Gramáticas de Atributos Teoría de Lenguajes Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Etapas de un Compilador Analizador Léxico Analizador Sintáctico (Parser)... Lexer: Genera secuencia de tokens Reporta

Más detalles

16 Análisis sintáctico I

16 Análisis sintáctico I 2 Contenido Recordando la estructura de un compilador Recordando el análisis léxico l análisis sintáctico Comparación con el análisis léxico l Rol del Parser Lenguajes de programación Gramáticas structura

Más detalles

Análisis sintáctico 1

Análisis sintáctico 1 Análisis sintáctico 1 Análisis sintáctico 1. Introducción 2. Análisis descendente (top-down) 2.1 Análisis con backtracking 2.2 Análisis predictivo 2.2.1 Método recursivo 2.2.2 Método iterativo 3. Análisis

Más detalles

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Análizador Sintáctico de abajo hacia arriba Es un proceso de Reducción,

Más detalles

Apuntes de compiladores

Apuntes de compiladores Apuntes de compiladores Tomás Barros 4 de septiembre de 2008 1. Introducción Un compilador es simplemente un programa que puede leer un programa en un lenguaje y traducirlo a otro lenguaje programa fuente

Más detalles

Compiladores. Análisis Sintáctico Ascendente. Adrian Ulises Mercado Martínez. Facultad de Ingeniería, UNAM. 5 de septiembre de 2013

Compiladores. Análisis Sintáctico Ascendente. Adrian Ulises Mercado Martínez. Facultad de Ingeniería, UNAM. 5 de septiembre de 2013 Compiladores Análisis Sintáctico Ascendente Adrian Ulises Mercado Martínez Facultad de Ingeniería, UNAM 5 de septiembre de 2013 Adrian Ulises Mercado Martínez (FI,UNAM) Compiladores 5/07/2013 1 / 34 Índice

Más detalles

TRADUCTORES E INTERPRETADORES

TRADUCTORES E INTERPRETADORES TRADUCTORES E INTERPRETADORES Clase 11: Analizadores Sintácticos Descendentes Agenda Analizadores Recursivos Descendentes. Análisis Predictivo. Analizadores LL(1). Analizadores LL(k) y LL(*). Analizadores

Más detalles

LR(1) - LALR. Alejandro Grinberg. 30 de Octubre de (agradecimiento a Juan Manuel Pérez) Alejandro Grinberg () LR(1) - LALR 1 / 16

LR(1) - LALR. Alejandro Grinberg. 30 de Octubre de (agradecimiento a Juan Manuel Pérez) Alejandro Grinberg () LR(1) - LALR 1 / 16 LR(1) - LALR Alejandro Grinberg 30 de Octubre de 2014 (agradecimiento a Juan Manuel Pérez) Alejandro Grinberg () LR(1) - LALR 1 / 16 Repaso Parsing bottom-up Parsing shift-reduce Prefijos viables Autómata

Más detalles

Teoría de Lenguajes. Parsers descendentes para gramáticas extendidas ELL(1) Miércoles 24 de Mayo de Facultad de Ciencias Exactas y Naturales

Teoría de Lenguajes. Parsers descendentes para gramáticas extendidas ELL(1) Miércoles 24 de Mayo de Facultad de Ciencias Exactas y Naturales Teoría de Lenguajes Parsers descendentes para gramáticas extendidas ELL(1) Facultad de Ciencias Exactas y Naturales Miércoles 24 de Mayo de 2017 1 / 15 Parsing Descendente Hasta ahora vimos dos métodos

Más detalles

Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores

Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores Facultad de Ingeniería de Sistemas Lenguajes y Aspectos Formales (Parte 2) 2007 1 Derivaciones El proceso de búsqueda de un árbol sintáctico para una cadena se llama análisis sintáctico. El lenguaje generado

Más detalles

Ciencias de la Computación I

Ciencias de la Computación I Ciencias de la Computación I Gramáticas Libres del Contexto y Lenguajes Libres del Contexto Gramáticas Formales Una gramática formal es una cuadrupla G = (N, T, P, S) N = conjunto finito de símbolos no

Más detalles

Se pueden agrupar las reglas que tienen la misma parte izquierda:

Se pueden agrupar las reglas que tienen la misma parte izquierda: GRAMÁTICA DE CONTEXTO LIBRE Gramática de contexto libre G = (V N, V T, P, S) que genera oraciones copulativas: V N = { , , , , V T = {el, la, hombre, niña,

Más detalles

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes.

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. UNIVERIDAD NACIONAL DE EDUCACIÓN A DITANCIA Escuela Técnica uperior de Ingeniería Informática Procesadores de Lenguajes Tema 3 Parte II Análisis intáctico Descendente Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

Gramáticas tipo 0 o Estructura de frase En este tipo de gramáticas no hay restricción en su producciones y tienen la forma siguiente.

Gramáticas tipo 0 o Estructura de frase En este tipo de gramáticas no hay restricción en su producciones y tienen la forma siguiente. Gramáticas Libres de Contexto 1. Gramáticas. Como vimos en el capítulo anterior una gramática es un conjunto finito de reglas que describen todas las secuencias de símbolos que pertenecen a un lenguaje.

Más detalles

INAOE. Gramáticas Libres de Contexto. Definición formal de CFGs. Derivaciones usando. Derivaciones. izquierda y. derecha.

INAOE. Gramáticas Libres de Contexto. Definición formal de CFGs. Derivaciones usando. Derivaciones. izquierda y. derecha. s s INAOE en s (INAOE) 1 / 67 Contenido s en s 1 s 2 3 4 5 6 7 8 en s (INAOE) 2 / 67 s s s Hemos visto que muchos lenguajes no son regulares. Por lo que necesitamos una clase más grande de lenguages Las

Más detalles

Procesadores de Lenguajes. Análisis sintáctico. Gramáticas libres de contexto

Procesadores de Lenguajes. Análisis sintáctico. Gramáticas libres de contexto Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis sintáctico Gramáticas libres de contexto Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

Procesadores de Lenguajes. Análisis sintáctico. Analizadores descendentes

Procesadores de Lenguajes. Análisis sintáctico. Analizadores descendentes Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis sintáctico Analizadores descendentes Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

Ciencias de la Computación I

Ciencias de la Computación I Ciencias de la Computación I Gramáticas Regulares Expresiones Regulares Gramáticas - Intuitivamente una gramática es un conjunto de reglas para formar correctamente las frases de un lenguaje - Por ejemplo,

Más detalles

Análisis Sintáctico Descendente

Análisis Sintáctico Descendente Análisis Sintáctico Descendente p.1/65 Análisis Sintáctico Descendente Tema 4 Juan A. Botía Blaya juanbot@um.es http://ants.dif.um.es/staff/juanbot/traductores/traductores.html Departamento de Ingeniería

Más detalles

17 Análisis sintáctico II Compiladores - Profr. Edgardo Adrián Franco Martínez. Gramáticas limpias y bien formadas

17 Análisis sintáctico II Compiladores - Profr. Edgardo Adrián Franco Martínez. Gramáticas limpias y bien formadas 2 Contenido Gramáticas limpias y bien formadas Algoritmo para detectar símbolos muertos Algoritmo para detectar símbolos inaccesibles Gramáticas ambiguas Clasificación de métodos de análisis sintáctico

Más detalles

Más sobre gramáticas independientes de contexto o incontextuales

Más sobre gramáticas independientes de contexto o incontextuales Más sobre gramáticas independientes de contexto o incontextuales Elvira Mayordomo, Gregorio de Miguel Universidad de Zaragoza 19 de noviembre de 2012 Contenido de este tema Árboles de derivación Gramáticas

Más detalles

ANÁLISIS SINTÁCTICO I ANALIZADORES SINTÁCTICOS

ANÁLISIS SINTÁCTICO I ANALIZADORES SINTÁCTICOS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

La Ambigüedad en el Parsing

La Ambigüedad en el Parsing La en el Parsing Definición y Ejemplos Universidad de Cantabria Outline El Problema 1 El Problema 2 3 El Problema En nuestra busqueda por encontrar la estructura exploraremos como elegir una derivación

Más detalles

Gramáticas independientes del contexto TEORÍA DE LA COMPUTACIÓN LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I

Gramáticas independientes del contexto TEORÍA DE LA COMPUTACIÓN LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I Gramáticas independientes del contexto TEORÍ DE L COMPUTCIÓN LENGUJES INDEPENDIENTES DEL CONTEXTO Y UTÓMTS DE PIL Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNM E-mail:

Más detalles

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 4

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 4 UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 4 Análisis Sintáctico Ascendente Javier Vélez Reyes jvelez@lsi.uned.es Objetivos

Más detalles

Tema 6: Compiladores e intérpretes. Teoría de autómatas y lenguajes formales I

Tema 6: Compiladores e intérpretes. Teoría de autómatas y lenguajes formales I Tema 6: Compiladores e intérpretes Teoría de autómatas y lenguajes formales I Bibliografía Sudkamp, T. A. Languages and machines: an introduction to the theory of computer science. Addison Wesley. 1997.

Más detalles

Análisis Sintáctico Descendente

Análisis Sintáctico Descendente Análisis Sintáctico Descendente CI4721 Lenguajes de Programación II Ernesto Hernández-Novich Universidad Simón Bolívar Copyright 2012-2016 Hernández-Novich (USB) Análisis Sintáctico Descendente

Más detalles

Introducción (1) Introducción (2) El papel del analizador sintáctico (1)

Introducción (1) Introducción (2) El papel del analizador sintáctico (1) Introducción (1) odo lenguaje de programación tiene reglas que prescriben la estructura sintáctica de programas bien formados. El uso de gramáticas para describir dicha estructura ofrecen ventajas significativas:

Más detalles

ANÁLISIS SINTÁCTICO PREDICTIVO NO RECURSIVO

ANÁLISIS SINTÁCTICO PREDICTIVO NO RECURSIVO 1 UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE COMPUTACIÓN ANÁLISIS SINTÁCTICO PREDICTIVO NO RECURSIVO Elaborado el Martes 12 de Octubre de 2004 I.- INTRODUCCIÓN Es posible realizar

Más detalles

Temas. Objetivo. Analizador Sintáctico: funciones y tipos. Analizador Sintáctico Descendente. Analizador Sintáctico Ascendente

Temas. Objetivo. Analizador Sintáctico: funciones y tipos. Analizador Sintáctico Descendente. Analizador Sintáctico Ascendente 10:44 1 10:44 2 Temas Analizador Sintáctico: funciones y tipos Analizador Sintáctico Descendente Analizador Sintáctico Ascendente Generador de Analizadores Sintácticos - Yacc Objetivo Que el estudiante

Más detalles

Tema 5. Análisis sintáctico ascendente

Tema 5. Análisis sintáctico ascendente Tema 5 Análisis sintáctico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Introducción 5.2 Análisis sintáctico por desplazamiento y reducción 5.3 El autómata reconocedor de prefijos viables

Más detalles

Lenguajes Incontextuales

Lenguajes Incontextuales Tema 5: Gramáticas Formales Lenguajes Incontextuales Departamento de Sistemas Informáticos y Computación http://www.dsic.upv.es p.1/31 Tema 5: Gramáticas Formales Gramáticas. Tipos de Gramáticas. Jerarquía

Más detalles

Compiladores: Parsing ascendente

Compiladores: Parsing ascendente Compiladores: Parsing ascendente Francisco J Ballesteros LSUB, URJC Page 1 of 64 Parsing ascendente Normalmente utilizaremos parsers descendentes para problemas pequeños cuando podemos escribir uno predictivo

Más detalles

Conceptos básicos sobre gramáticas

Conceptos básicos sobre gramáticas Procesamiento de Lenguajes (PL) Curso 2014/2015 Conceptos básicos sobre gramáticas Gramáticas y lenguajes Gramáticas Dado un alfabeto Σ, un lenguaje es un conjunto (finito o infinito) de cadenas de símbolos

Más detalles

GRAMÁTICAS LIBRES DE CONTEXTO

GRAMÁTICAS LIBRES DE CONTEXTO GRAMÁTICAS LIBRES DE CONTEXTO Definición Una gramática libre de contexto (GLC) es una descripción estructural precisa de un lenguaje. Formalmente es una tupla G=, donde Vn es el conjunto

Más detalles

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 3.

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 3. UNIVRSIDAD NACIONAL D DUCACIÓN A DISTANCIA scuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 3 Parte I Análisis Sintáctico Javier Vélez Reyes jvelez@lsi.uned.es Objetivos

Más detalles

Traducción Dirigida por Sintaxis

Traducción Dirigida por Sintaxis Traducción Dirigida por Sintaxis CI4721 Lenguajes de Programación II Ernesto Hernández-Novich Universidad Simón Bolívar Copyright 2012-2016 Hernández-Novich (USB) Traducción Dirigida por

Más detalles

Eliminación de Símbolos Inútiles

Eliminación de Símbolos Inútiles Eliminación de Símbolos Inútiles Veremos cómo eliminar los símbolos inútiles de una gramática. Lo haremos con dos algoritmos, que son definidos en la demostración de los siguientes lemas. Lema 1 Dada una

Más detalles

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Parsing LR: Ejemplo: E E + T E T T T * id T id S n : shift al estado

Más detalles

Clase 16: GLC s recursivas y no factorizadas Solicitado: Ejercicios 13: Recursividad y factorización de gramáticas

Clase 16: GLC s recursivas y no factorizadas Solicitado: Ejercicios 13: Recursividad y factorización de gramáticas Clase 16: GLC s recursivas y no factorizadas Solicitado: Ejercicios 13: Recursividad y factorización de gramáticas M. en C. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco @efranco_escom

Más detalles

Autómatas de Pila. Descripciones instantáneas o IDs. El Lenguaje de PDA. Equivalencia entre PDAs y CFGs INAOE (INAOE) 1 / 50

Autómatas de Pila. Descripciones instantáneas o IDs. El Lenguaje de PDA. Equivalencia entre PDAs y CFGs INAOE (INAOE) 1 / 50 INAOE (INAOE) 1 / 50 Contenido 1 2 3 4 (INAOE) 2 / 50 Pushdown Automata Las gramáticas libres de contexto tienen un tipo de autómata que las define llamado pushdown automata. Un pushdown automata (PDA)

Más detalles

Tema 4: Análisis sintáctico ascendente. Análisis sintáctico ascendente: un ejemplo

Tema 4: Análisis sintáctico ascendente. Análisis sintáctico ascendente: un ejemplo Tema 4: Análisis sintáctico ascendente Procesamiento de enguajes Dept. de enguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de enguajes Tema 4: Análisis sintáctico ascendente 1 / 21

Más detalles

Traducción dirigida por la sintaxis

Traducción dirigida por la sintaxis Traducción dirigida por la sintaxis 1 INDICE 1. Gramáticas con atributos 2. Evaluación de los atributos 2.1 Evaluación mediante grafos 2.2 Evaluación durante el parsing 2.2.1 Esquemas de traducción 2.2.2

Más detalles

Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis

Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis Prof. Gloria Inés Alvarez V. Departamento de Ciencias e Ingeniería de la Computación Pontificia Universidad Javeriana Cali

Más detalles

Tema 5: Autómatas a pila. Teoría de autómatas y lenguajes formales I

Tema 5: Autómatas a pila. Teoría de autómatas y lenguajes formales I Tema 5: Autómatas a pila Teoría de autómatas y lenguajes formales I Bibliografía Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introducción a la Teoría de Autómatas, Lenguajes y Computación. Addison Wesley.

Más detalles

ANÁLISIS SINTÁCTICO. Comprobar que la secuencia de componentes léxicos cumple las reglas de la gramática Generar el árbol sintáctico

ANÁLISIS SINTÁCTICO. Comprobar que la secuencia de componentes léxicos cumple las reglas de la gramática Generar el árbol sintáctico Cadena de tokens Árbol Sintáctico ANÁLISIS SINTÁCTICO 1 Análisis Sintáctico 2 Funciones Comprobar que la secuencia de componentes léxicos cumple las reglas de la gramática Generar el árbol sintáctico Ventajas

Más detalles

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales.

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. Los nodos terminales (nodos hojas) están rotulados por los

Más detalles

Definición de la sintaxis (1) Definición de la sintaxis (2) Definición de la sintaxis (3)

Definición de la sintaxis (1) Definición de la sintaxis (2) Definición de la sintaxis (3) Definición de la sintaxis (1) Gramática independiente del contexto: tiene cuatro componentes: Un conjunto de componentes léxicos, denominados símbolos terminales. Un conjunto de no terminales. Un conjunto

Más detalles

Tema 3. Análisis sintáctico descendente

Tema 3. Análisis sintáctico descendente Departamento de Tecnologías de la Información Tema 3 Análisis sintáctico Ciencias de la Computación e Inteligencia Artificial Índice 3.1 Características del análisis sintáctico 3.2 Gramáticas libres de

Más detalles

5 Autómatas de pila 5.1 Descripción informal. 5.2 Definiciones

5 Autómatas de pila 5.1 Descripción informal. 5.2 Definiciones 1 Curso Básico de Computación 5 Autómatas de pila 5.1 Descripción informal Un autómata de pila es esencialmente un autómata finito que controla una cinta de entrada provista de una cabeza de lectura y

Más detalles

Autómatas Finitos Deterministicos (DFA) Introducción a la Complejidad Computacional FFHA, Universidad Nacional de San Juan

Autómatas Finitos Deterministicos (DFA) Introducción a la Complejidad Computacional FFHA, Universidad Nacional de San Juan Autómatas Finitos Deterministicos (DFA) Introducción a la Complejidad Computacional FFHA, Universidad Nacional de San Juan 206 Info útil Bibliografía: Introducción a la teoría de autómatas, lenguajes y

Más detalles

Diseño de Compiladores I. Estructura General de un Compilador

Diseño de Compiladores I. Estructura General de un Compilador Diseño de Compiladores I Estructura General de un Compilador PROGRAMA FUENTE COMPILADOR SALIDA Mensajes de Error 2 Un compilador es un programa que traduce un programa escrito en lenguaje fuente y produce

Más detalles

Lenguajes y Compiladores Traducción Dirigida por la Sintaxis

Lenguajes y Compiladores Traducción Dirigida por la Sintaxis Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Traducción Dirigida por la Sintaxis 1 Definición Código Intermedio: estructura de código que posee una complejidad comprendida entre el código

Más detalles

Lenguajes funcionales: λ-cálculo

Lenguajes funcionales: λ-cálculo Lenguajes funcionales: λ-cálculo λ-cálculo (Church 1933) Cálculo para el estudio formal del comportamiento de las funciones Sintaxis: λ expresiones Reglas de reducción de λ expresiones Método matemático

Más detalles

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto EJERCICIOS del TEMA 3: Lenguajes independientes del contexto Sobre GICs (gramáticas independientes del contexto) 1. Sea G una gramática con las siguientes producciones: S ASB ε A aab ε B bba ba c ) d )

Más detalles

GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA)

GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA) Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Autómatas Finitos Deterministicos (DFA)

Autómatas Finitos Deterministicos (DFA) Autómatas Finitos Deterministicos (DFA) Introducción a la Lógica Fa.M.A.F., Universidad Nacional de Córdoba 22//4 Info útil Bibliografía: Introducción a la teoría de autómatas, lenguajes y computación.

Más detalles

Autómatas Finitos Deterministicos (DFA)

Autómatas Finitos Deterministicos (DFA) Autómatas Finitos Deterministicos (DFA) Introducción a la Lógica y la Computación Fa.M.A.F., Universidad Nacional de Córdoba 26/0/6 Info útil Bibliografía: Introducción a la teoría de autómatas, lenguajes

Más detalles

Gramáticas y parsers LR(K)

Gramáticas y parsers LR(K) Gramáticas y parsers LR(K)» Son (al igual que los LL) una familia de parsers para analizar gramáticas libres de contexto. Se caracterizan por:» Son analizados sintácticos ascendentes.» Leen entrada de

Más detalles

Gramáticas independientes del contexto AUTÓMATAS Y LENGUAJES FORMALES LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I

Gramáticas independientes del contexto AUTÓMATAS Y LENGUAJES FORMALES LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I Gramáticas independientes del contexto UTÓMTS Y LENGUJES FORMLES LENGUJES INDEPENDIENTES DEL CONTEXTO Y UTÓMTS DE PIL Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNM E-mail:

Más detalles

TEMA 5 ANÁLISIS SINTÁCTICO DESCENDENTE

TEMA 5 ANÁLISIS SINTÁCTICO DESCENDENTE Universidad de Oviedo - Departamento de Informática Escuela Politécnica Superior de Ingeniería ANÁLISIS SINTÁCTICO EN PROCESADORES DE LENGUAJE TEMA 5 ANÁLISIS SINTÁCTICO DESCENDENTE Página 1 Objetivos

Más detalles

Compiladores: Análisis sintáctico descendente recursivo

Compiladores: Análisis sintáctico descendente recursivo Compiladores: Análisis sintáctico descendente recursivo Francisco J Ballesteros LSUB, URJC Page 1 of 61 Analizador sintáctico En adelante lo llamaremos parser Dados los tokens de la entrada Construir el

Más detalles

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002 Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Ejercicios Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto

Más detalles

Análisis sintáctico Analizadores ascendentes

Análisis sintáctico Analizadores ascendentes Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis sintáctico Analizadores ascendentes Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

Gramáticas Libres de Contexto

Gramáticas Libres de Contexto Gramáticas Libres de Contexto Pedro J. Álvarez Pérez-Aradros Rubén Béjar Hernández Departamento de Informática e Ingeniería de Sistemas C.P.S. Universidad de Zaragoza GramáticasLibresContrxto.ppt 29/03/2004

Más detalles

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal

Más detalles

Procesadores de lenguaje Tema Análisis sintáctico (Parte I)

Procesadores de lenguaje Tema Análisis sintáctico (Parte I) Procesadores de lenguaje Tema 3 Análisis sintáctico (Parte I) Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Introducción Conceptos básicos Tipos de analizadores Gramáticas independientes

Más detalles

Procesadores de lenguaje Tema 3 Análisis sintáctico (Parte I)

Procesadores de lenguaje Tema 3 Análisis sintáctico (Parte I) Procesadores de lenguaje Tema 3 Análisis sintáctico (Parte I) Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Introducción Conceptos básicos Tipos de analizadores Gramáticas independientes

Más detalles

PROGRAMA DE LABORATORIO POS-REQUISITO: Primer Semestre 2019 Ing. Mario José Bautista Fuentes AUXILIAR: Nery Galvez

PROGRAMA DE LABORATORIO POS-REQUISITO: Primer Semestre 2019 Ing. Mario José Bautista Fuentes AUXILIAR: Nery Galvez UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS PROGRAMA DE LABORATORIO CÓDIGO: 777 CRÉDITOS: 4 Organización de NOMBRE CURSO: Lenguajes y SECCIÓN: A Compiladores 1 ESCUELA:

Más detalles

Generación de variables aleatorias continuas Método de rechazo

Generación de variables aleatorias continuas Método de rechazo Generación de variables aleatorias continuas Método de rechazo Georgina Flesia FaMAF 18 de abril, 2013 Método de Aceptación y Rechazo Repaso Se desea simular una v. a. X discreta, con probabilidad de masa

Más detalles

Gramáticas independientes del contexto. Tema 3: Lenguajes independientes del contexto. Derivaciones. Árbol de derivación

Gramáticas independientes del contexto. Tema 3: Lenguajes independientes del contexto. Derivaciones. Árbol de derivación Tema 3: Lenguajes independientes del contexto Gramáticas independientes de contexto (GIC) Conceptos básicos Ambigüedad Ejemplos de GICs Autómatas con pila (AP) Definición de autómata con pila Determinismo

Más detalles

Contenido. Capítulo 1. Teoría de conjuntos. 1. Capítulo 2. Lenguaje. 39. Capítulo 3. Lenguajes formales. 55

Contenido. Capítulo 1. Teoría de conjuntos. 1. Capítulo 2. Lenguaje. 39. Capítulo 3. Lenguajes formales. 55 Contenido Capítulo 1. Teoría de conjuntos. 1 1.1 Conjuntos.... 3 1.1.1 Definiciones básicas.... 3 1.1.2 Operaciones sobre conjuntos.... 6 1.1.3 Diagrama de Venn.... 7 1.1.4 Álgebra de conjuntos.... 7 1.2

Más detalles

Tema 1: Introducción

Tema 1: Introducción Tema 1: Introducción Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 1: Introducción 1 / 28 Definición de compilador Un compilador

Más detalles

Compiladores e Intérpretes Análisis Semántico I

Compiladores e Intérpretes Análisis Semántico I 1 Compiladores e Intérpretes Análisis Semántico I Sebastian Gottifredi 2017 Organización Repaso Intuición General del Análisis Semántico Gramáticas de Atributos Funcionamiento Atributos: Sintetizados-Heredados-Intrinsecos

Más detalles

Unidad IV Análisis Sintáctico. M.C. Juan Carlos Olivares Rojas

Unidad IV Análisis Sintáctico. M.C. Juan Carlos Olivares Rojas Unidad IV Análisis Sintáctico M.C. Juan Carlos Olivares Rojas Agenda 4.1 Introducción a las Gramáticas libres de contexto y árboles de derivación. 4.2 Diagramas de sintaxis. 4.3 Precedencia de operadores.

Más detalles

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR:

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS PROGRAMA DE LABORATORIO CÓDIGO: 777 CRÉDITOS: 4 NOMBRE CURSO: ESCUELA: PRE-REQUISITO: Organización de Lenguajes y Compiladores

Más detalles

Lección 3: Fundamentos para el análisis sintáctico

Lección 3: Fundamentos para el análisis sintáctico Lección 3: Fundamentos para el análisis sintáctico 1) Introducción 2) Gramáticas. Definiciones y clasificación 3) GLC. Notaciones 4) GLC. Árboles de análisis sintáctico 5) GLC. Derivación a dcha. y a izda.

Más detalles

Análisis Sintáctico. Esquema general de un analizador sintáctico. Texto. Árbol de Análisis Sintáctico o FALLO. + Analizador Sintáctico Gramática

Análisis Sintáctico. Esquema general de un analizador sintáctico. Texto. Árbol de Análisis Sintáctico o FALLO. + Analizador Sintáctico Gramática Análisis Sintáctico Análisis Sintáctico INPUT Texto + Analizador Sintáctico Gramática OUTPUT Árbol de Análisis Sintáctico o FALLO Esquema general de un analizador sintáctico Métodos de análisis sintáctico

Más detalles

ANÁLISIS SEMÁNTICO ETDS VS DDS

ANÁLISIS SEMÁNTICO ETDS VS DDS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles