Este documento presenta una introducción a los compiladores e intérpretes. Explica los tipos de gramáticas formales 0-3 y cómo se usan los árboles de derivación. También discute las características de las gramáticas limpias y bien formadas. Finalmente, contrasta los lenguajes naturales con los lenguajes de programación artificiales y describe las partes clave de un procesador de lenguaje como el análisis léxico, sintáctico y semántico.
1. Exposición de Compiladores e
Intérpretes
Profesor: Eddie Christian Malca Vicente
Integrantes:
*Jorge Luis Severino Vicharra
*Elmer André Boulangger Alberca
*Jesús Huamaní Taipe
*Jhon Rodríguez Silva
2. Tipos de Gramática
o Una gramática es una estructura algebraica
formada por cuatro elementos
o G={NT, T, S, P}
o NT es el conjunto de elementos NO
TERMINALES
o T es el conjunto de elementos TERMINALES
o S es el SIMBOLO INICIAL de la gramática
o P es el conjunto de REGLAS DE PRODUCCION
3. Gramática tipo 0
Características
o No tiene restricciones .
o Incluyen a todas las demás gramáticas
formales.
o Las maquinas que lo aceptan son maquinas de
Turing.
4. Gramática tipo 1
Características
o Generan los lenguajes sensibles al contexto.
o Las maquinas que los aceptan son autómatas
linealmente acotados.
6. Gramática tipo 3
Características
o También llamadas de
contexto regular.
o Maquinas que lo aceptan son
autómata finito, determinista
o no determinista.
8. Derivación
• Aplicación de las producciones de una
gramática para obtener una cadena de
terminales.
• Consiste en sustituir la variable de la cabeza
por el cuerpo de la producción.
9. Estructura
Un árbol es un
conjunto de
puntos, llamados
nodos; unidos por
líneas llamados
arcos.
10. Satisfacen ciertas
propiedades
Hay un único nodo distinguido, llamado
raíz.
Todo nodo “c” excepto el nodo raíz esta
conectado con un arco a otro nodo “k”,
llamado padre de c. El padre de un
nodo, se dibuja por encima de un nodo.
Todos los nodos están conectados al
nodo raíz mediante un único camino.
Los nodos que no tienen hijos se
denominan hojas, el resto de los nodos
se denominan nodos interiores.
12. Ejemplo:
1. S ASB
2. A b
3. aaA aaBB
4. S d
5. A aA
6. B dcd
13. Ejemplo
1. S ASB
2. A b
3. aaA aaBB
4. S d
5. A aA
6. B dcd
Derivación a la izquierda
S ASB aASB abSB
abdB abddcd
Derivación a la derecha
S ASB ASdcd Addcd
aAddcd abddcd
1 6 4 5 2
1 5 2 4 6
15. Gramáticas limpias y bien formadas
Una gramática se llama reducida si no
contiene símbolos inaccesibles ni reglas
superfluas.
Se llama limpia si tampoco contiene reglas
innecesarias.
16. Reglas innecesarias
En una gramática, las reglas de la forma U: :=U
son innecesarias y la hacen ambigua. A partir
de ahora se supondrá que una gramática no
tiene tales reglas o, si las tiene, serán
eliminadas.
17. Símbolos inaccesibles
Para eliminar los símbolos inaccesibles, se hace una
lista de todos los símbolos de la gramática y se marca
el axioma S.
se marcan todos los símbolos que aparezcan en la
parte derecha de cualquier regla cuya parte izquierda
sea un símbolo marcado.
El proceso continúa hasta que no se marque ningún
símbolo nuevo.
Los símbolos que se queden sin marcar, son
inaccesibles.
18. Reglas superfluas
Marcar los símbolos no terminales para los que exista
una regla U::=x, donde x sea una cadena de símbolos
terminales, o de no terminales marcados.
Si todos los símbolos no terminales han quedado
marcados, no existen símbolos superfluos en la
gramática. Fin del proceso.
Si la última vez que se pasó por el paso 1 se marcó
algún símbolo no terminal, volver al primer paso.
Si se llega a este punto, todos los símbolos no
terminales no marcados son superfluos.
19. Eliminación de símbolos no generativos
Sea la gramática independiente del contexto
G =(ΣT, ΣN, S, P).
Para cada símbolo A∈ΣN se construye la
gramática G(A)=(ΣT, ΣN, A, P). Si L(G(A)) es vacío,
se dice que A es un símbolo no generativo.
Entonces se puede suprimir A en ΣN, así como
todas las reglas que contengan A en P,
obteniendo otra gramática más sencilla, que
representa el mismo lenguaje.
20. Eliminación de reglas de re-denominación
Se llama regla de re-denominación a toda
regla de la forma A::=B. Para compensar su
eliminación, basta añadir el siguiente conjunto
de reglas:
Para cada símbolo A de ΣN tal que A→*B en G,
y para cada regla de la forma B::=x, donde x
no es un símbolo no terminal, añadiremos una
regla de la forma A::=x.
22. Lenguaje Natural.- Se llama lenguaje natural al que utilizan los
seres humanos en su comunicación ordinaria, porque ha sido
formado paulatinamente mediante el uso del grupo social, a través
de una dinámica histórica no intencionada.
Lenguaje Artificial.- Un lenguaje artificial es un lenguaje de
programación que puede ser usado para controlar el
comportamiento de una máquina, especialmente una
computadora.
25. Procesadores de lenguaje
Dicho en forma simple, un compilador es un programa que puede leer un programa
en un lenguaje (el lenguaje fuente) y traducirlo en un programa equivalente en otro
lenguaje (el lenguaje destino).
Si el programa destino es un programa ejecutable en
lenguaje máquina, entonces el usuario puede ejecutarlo
para procesar las entradas y producir salidas (resultados).
27. Nota sobre sintaxis y semántica
Análisis
El objetivo de esta etapa es obtener una representación de
la entrada que nos permita realizar
la síntesis o la interpretación con comodidad.
1.- Análisis léxico
En esta fase se analiza la entrada carácter a carácter y se
divide en una serie de unidades elementales: los
componentes léxicos.
2.- Análisis sintáctico
Partiendo de lo que ha recibido del analizador léxico, la
tarea del analizador sintáctico consiste en ir descubriendo
las estructuras presentes en el código de acuerdo con una
gramática no contextual.
3.- Análisis semántico
La última fase del análisis, el análisis semántico, toma como
entrada el árbol sintáctico y comprueba si, además de las
restricciones sintácticas, se cumplen otras restricciones
impuestas por el lenguaje y que no pueden ser
comprobadas mediante una gramática no contextual.