Documente Academic
Documente Profesional
Documente Cultură
COMPILADORES
INTRODUCCIN
PROCESADORES DE LENGUAJE
COMPILACIN INTRPRETE
Diseo de Compiladores
PROCESADORES DE LENGUAJE
Diseo de Compiladores
PROCESADORES DE LENGUAJE
MODELO HBRIDO
Diseo de Compiladores
PROCESADORES DE LENGUAJE
Modelo Hbrido - Tendencia
Diseo de Compiladores
PROCESADORES DE LENGUAJE
Esquema General
Diseo de Compiladores
PROCESADORES DE LENGUAJE
Fases de un compilador
Diseo de Compiladores
PROCESADORES DE LENGUAJE
Fases de un compilador
Diseo de Compiladores
TRADUCCION DIRIGIDA POR LA
SINTAXIS
ANALISIS SINTACTICO
Top-Down
Validando mediante un rbol sintctico con una estrategia de arriba-abajo
Diseo de Compiladores
ANALISIS SINTACTICO
Top-Down
Diseo de Compiladores
ANALISIS SINTACTICO
Analizador Sintctico Predictivo
Diseo de Compiladores
ANALISIS LXICO
EXPRESIONES REGULARES
Definicin
Diseo de Compiladores
EXPRESIONES REGULARES
Leyes algebraicas
Diseo de Compiladores
EXPRESIONES REGULARES
Extensiones de las expresiones regulares
Diseo de Compiladores
EXPRESIONES REGULARES
Ejemplos
Diseo de Compiladores
EXPRESIONES REGULARES
Ejemplos
Diseo de Compiladores
DEFINICIONES REGULARES
Ejemplos
Diseo de Compiladores
AUTMATAS FINITOS
Autmatas Finitos No Determinsticos
Diseo de Compiladores
AUTMATAS FINITOS
Autmatas Finitos No Determinsticos
Diseo de Compiladores
AUTMATAS FINITOS
Algoritmo de Thompson
Construcciones de Thompson que permite obtener un AFN a partir de
una expresin regular
s*
st s|t
Diseo de Compiladores
CONVERSIN DE UN AFN A UN AFD
Algoritmo de Subconjuntos
Diseo de Compiladores
CONVERSION DE UN AFN A UN AFD
Algoritmo de subconjuntos
Algoritmo de conversin de un AFN a un AFD
Diseo de Compiladores
CONVERSION DE UN AFN A UN AFD
Minimizacin de un AFD
Diseo de Compiladores
SIMULACIN DE UN DIAGRAMA DE FLUJO
Estrategia 1
Diseo de Compiladores
SIMULACIN DE UN AFD
Estrategia 2
Diseo de Compiladores
ANALISIS SINTCTICO
DEFINICIN FORMAL DE UNA GRAMATICA
LIBRE DE CONTEXTO
Diseo de Compiladores
DERIVACIONES
Diseo de Compiladores
RELACION BNF EXPRESIONES REGULARES
Conversion
METODO
1. A partir de la expresin regular de entrada, obtener el AFN equivalente.
2. Para cada estado i del AFN, crear un no terminal Ai.
3. Si el estado i tienen una transicin al estado j con la entrada a, agregar la produccin
Ai aAj. Si el estado i pasa al estado j con la entrada , agregar la produccin Ai Aj.
4. Si i es un estado de aceptacin, agregar Ai .
5. Si i es el estado inicial, hacer que Ai sea el smbolo inicial de la gramtica.
Diseo de Compiladores
A0 -> A1 | A3 A0 -> aA2 | bA4
A1 -> a A2 A2 -> aA2
A3 -> bA4 A4 -> bA4
A2 -> aA2
A4 -> bA4
Diseo de Compiladores
Diseo de Compiladores
Diseo de Compiladores
ELIMINACIN DE LA RECURSIVIDAD POR LA
IZQUIERDA
Diseo de Compiladores
ELIMINACIN DE LA RECURSIVIDAD POR LA
IZQUIERDA
Diseo de Compiladores
ELIMINACIN DE LA RECURSIVIDAD POR LA
IZQUIERDA
Diseo de Compiladores
ANALISIS SINTCTICO DESCENDENTE
PRIMERO(X)
PRIMERO (X)
1. Si X es un terminal, entonces PRIMERO(X) = {X}
2. Si X es un no terminal y X Y1Y2Yk es una produccin para k 1, entonces se
agrega a en PRIMERO(X) si para cierta i, a est en PRIMERO(Yi), y est en todos
las funciones PRIMERO(Y1) PRIMERO(Yi-1)
3. Si esta en todos los conjuntos PRIMERO(Y1) a PRIMERO(Yk), entonces se agrega
en PRIMERO(X).
4. Si X es una produccin definida, entonces se agrega a PRIMERO(X).
PRIMERO (X1X2Xn)
1. Agregar a PRIMERO(X1X2Xn) todos los smbolos que no sean de PRIMERO(X1).
2. Si est en PRIMERO(X1), agregar todos los smbolos que no sean de
PRIMERO(X2).
3. Si est en PRIMERO(X1) y PRIMERO(X2), entonces agregar todos los smbolos
que no sean de PRIMERO(X3), y as sucesivamente.
4. Si est en todos los conjuntos PRIMERO de X1 a Xn, entonces agregar al
conjunto PRIMERO(X1X2Xn)
Diseo de Compiladores
ANALISIS SINTCTICO DESCENDENTE
SIGUIENTE (X)
SIGUIENTE(X)
Aplicar las siguientes reglas hasta que no sea posible agregar ningn smbolo
terminal nuevo a cualquier conjunto SIGUIENTE:
Diseo de Compiladores
ANALISIS SINTCTICO PREDICTIVO
Gramticas LL(1)
Diseo de Compiladores
ANALISIS SINTCTICO PREDICTIVO
Gramticas LL(1)
Si una gramtica no cumple con alguna de estas condiciones, hay que tratar de
convertirla ya sea aplicando algoritmos de eliminacin de recursin por la
izquierda, factorizando o eliminando la ambigedad.
Diseo de Compiladores
ANALISIS SINTCTICO PREDICTIVO
Gramticas LL(1)
Diseo de Compiladores
ANALISIS SINTCTICO PREDICTIVO
Gramticas LL(1)
Diseo de Compiladores
ANALISIS SINTCTICO PREDICTIVO
Gramticas LL(1)
Diseo de Compiladores
ANALISIS SINTCTICO PREDICTIVO
Gramticas LL(1)
Diseo de Compiladores
ANALISIS SINTCTICO PREDICTIVO
Recuperacin de Errores
MODO PNICO
En caso de error, omitir smbolos hasta que aparezca un carcter de sincronizacin.
CASOS TPICOS
1. Todos los smbolos en SIGUIENTE(A) pertenecen al conjunto de sincronizacin de A.
2. Agregar todos los smbolos que pertenecen a PRIMERO(A) al conjunto de
sincronizacin de A.
Diseo de Compiladores
ANALISIS SINTCTICO PREDICTIVO
Recuperacin de Errores
Diseo de Compiladores
ANALISIS SINTCTICO PREDICTIVO
Recuperacin de Errores
ESTRATEGIA
1. Si M[A,a] = no definido (esta
vaca la entrada), omitir a.
2. Si M[A,a] = sinc, se elimina A
de la pila.
3. Si top() es un terminal b, y
ba, entonces eliminar b de
la pila.
Diseo de Compiladores
ANALISIS SINTCTICO PREDICTIVO
Recuperacin de Errores
Grammar #3:
Procesar una gramtica que recibe frases palndromo. Los espacios
no cuentan.
Ejemplos:
pop
a man a plan a canal panama
Solution:
<palindrome> ::= a <palindrome> a | b <palindrome> b | c
<palindrome> c | d <palindrome> d | e <palindrome> e | ... | z
<palindrome> z
<palindrome> ::= <letter>
<letter> ::= a | b | c | ... | y | z
Diseo de Compiladores
ANALISIS SINTCTICO PREDICTIVO
Recuperacin de Errores
Diseo de Compiladores
ANALISIS SINTCTICO ASCENDENTE
Reducciones
Diseo de Compiladores
ANALISIS SINTCTICO ASCENDENTE
Mangos
Diseo de Compiladores
ANALISIS SINTCTICO ASCENDENTE
Poda de Mangos
E E+T |T
TT*F |F id * id F * id T * id T * F T E
F ( E ) | id
Diseo de Compiladores
ANALISIS SINTCTICO ASCENDENTE
Analizador Sintctico LR
Si w est en L(G), la
reduccin de un
anlisis sintctico
ascendente, en
otro caso, Error.
Diseo de Compiladores
ANALISIS SINTCTICO ASCENDENTE
Analizador Sintctico LR
Diseo de Compiladores
ANALISIS SEMANTICO
Diseo de Compiladores
ANALISIS SEMNTICO
Definicin dirigida por la sintaxis
Una Def. Dirigida por la Sintaxis es una gramtica libre de contexto, formada por
atributos y reglas o acciones. Los atributos se asocian con los smbolos gramaticales
y las reglas con las producciones.
TIPOS DE ATRIBUTOS
a. Sintetizados, cuyo valor depende de sus hijos y del nodo mismo donde se
encuentra.
b. Heredados, cuyo valor depende de valores en el padre, en el nodo mismo y en
sus hermanos.
Diseo de Compiladores
ANALISIS SEMNTICO
Definicin dirigida por la sintaxis
Diseo de Compiladores
ANALISIS SEMNTICO
Definicin dirigida por la sintaxis
Diseo de Compiladores
ANALISIS SEMNTICO
Definicin dirigida por la sintaxis
Diseo de Compiladores
ANALISIS SEMNTICO
Definicin dirigida por la sintaxis
Diseo de Compiladores
ANALISIS SEMNTICO
Grficos de dependencias
Para cada nodo del rbol de anlisis sintctico, etiquetado por el smbolo
gramatical X, el grafo tiene un nodo para cada atributo asociado con X.
Diseo de Compiladores
ANALISIS SEMNTICO
Grficos de dependencias
Diseo de Compiladores
ANALISIS SEMNTICO
EJEMPLO
Diseo de Compiladores
ANALISIS SEMNTICO
EJEMPLO (Atributos sintetizados)
Diseo de Compiladores
ANALISIS SEMNTICO
TRANSFORMACIN DE ACCIONES SEMNTICAS
Diseo de Compiladores
ANALISIS SEMNTICO
TRANSFORMACIN DE ACCIONES SEMNTICAS
Diseo de Compiladores
ANALISIS SEMNTICO
TRANSFORMACIN DE ACCIONES SEMNTICAS
Diseo de Compiladores
ANALISIS SEMNTICO
TRANSFORMACIN DE ACCIONES SEMNTICAS
Diseo de Compiladores
ANALISIS SEMNTICO
TRANSFORMACIN DE ACCIONES SEMNTICAS
c. Aplicar:
Diseo de Compiladores