Anda di halaman 1dari 50

UNIDAD I

INTRODUCCIN A LA TEORA DE
LENGUAJES FORMALES.

CONCEPTOS
Lenguaje:

Forma de representar informacin basada en un conjunto


finito de signos o smbolos
Alfabeto:
Conjunto de smbolos que forman parte de un lenguaje
Sentencia o palabra o frmula bien formada:
Secuencia de smbolos correcta.
Lenguaje formal :
Lenguaje descrito mediante un formalismo matemtico

Autmata:
Modelo de computacin
Maquina de estados
El funcionamiento de la mquina se basa en transiciones de

estados
Las transiciones estn provocadas por la lectura de los
smbolos de entrada

1.1 ALFABETO

PALABRA

PALABRA

OPERACIONES CON PALABRAS

OPERACIONES CON PALABRAS

OPERACIONES CON PALABRAS

OPERACIONES CON PALABRAS

Desde su nacimiento, la teora de autmatas ha


encontrado aplicacin en muy diversos campos. Esto
se debe a que resulta muy natural considerar, tanto
los autmatas como las mquinas secuenciales,
sistemas capaces de transmitir (procesar)
informacin.
En definitiva, esto es equiparable a cualquier
sistema existente en la naturaleza, que recibe seal
es de su entorno, reacciona ante el las y emite as
nuevas seal es al ambiente que le rodea.

Algunos de los campos donde ha encontrado aplicacin la teora de


autmatas son:
Teora de la Comunicacin
Teora de Control
Lgica de los circuitos secuenciales
Ordenadores
Teora lgica de los sistemas evolutivos y auto-reproductivos
Reconocimiento de patrones
Fisiologa del sistema nervios
Traduccin automtica de lenguajes

Clasificacin de los lenguajes formales de acuerdo a una


jerarqua de cuatro niveles, conteniendo cada uno de todos
los siguientes.
El lenguaje ms general ser, pues, de tipo 0, y no posee
restriccin alguna. Este conjunto engloba el conjunto de
todos los lenguajes posibles.
En el segundo nivel aparecen los lenguajes de tipo 1,
tambin llamados lenguajes sensibles al contexto , al
permitir que el papel de las palabras dependa de la
posicin en que aparezcan (es decir, del contexto). La
mayor parte de los lenguajes de ordenador pertenecen a

En tercer lugar aparecen los lenguajes de

tipo 2, o lenguajes independientes del


contexto . En este lenguaje, el significado de
una palabra es independiente del lugar que
ocupa en la frase.
Finalmente, los lenguajes de tipo 3, o
lenguajes regulares, son los que presentan
una estructura ms sencilla.

Resulta curioso observar como paralelamente a la


jerarqua de lenguajes aparece otra de mquinas abstractas
equivalentes, como se observa en el esquema siguiente :

Cada uno de estos tipos de mquinas es capaz de


resolver problemas cada vez ms complicados, hasta
llegar a las mquinas de Turing. Como descubri Turing,
existen una serie de problemas que no son
computacionalmente abordables y que reciben el nombre
de problemas no enumerables .

La relacin estrecha entre la Teora de Lenguajes Formales y la Teora


de Autmatas se pone de manifiesto en este tema.
Se establece un isomorfismo entre ambas, estableciendo una
conexin entre la clase de lenguajes generados por ciertos tipos de
gramticas y la clase de lenguajes reconocibles por ciertas mquinas.
los lenguajes del tipo 0 con los lenguajes reconocidos por una
mquina de Turing,
los lenguajes de tipo 1 con los Autmatas Linealmente Acotados,
los lenguajes de tipo 2 con los Autmatas a Pila
los lenguajes de tipo 3 con los Autmatas Finitos, los Autmatas
Probabilsticos y los Autmatas de Clulas de McCulloch-Pitts.
Cada uno de estos tipos/mquinas aade restricciones al
tipo/mquina del nivel superior.

HERRAMIENTAS COMPUTACIONALES LIGADAS


CON LENGUAJES
Interpretes
Ensambladores
Ligadores
Cargadores
Procesadores
Editores
Depuradores
Perfiladores
Administradores de Proyectos

ESTRUCTURA DE UN TRADUCTOR
Un traductor es un programa que tiene como entrada un texto escrito en

un lenguaje (lenguaje fuente) y como salida produce un texto escrito en


un lenguaje (lenguaje objeto) que preserva el significado de origen.
Ejemplos de traductores son los ensambladores y los compiladores.

EN EL PROCESO DE TRADUCCIN SE
IDENTIFICAN DOS FASES PRINCIPALES

TEXTO
FUENT
E

FASE DE
ANLISIS
(FRONT END)

Comprueba que el
programa esta
escrito conforme a
las reglas del

FASE DE
SINTESIS
(BACK END)

Genera el texto
equivalente en el
lenguaje objeto

TEXTO
OBJET
O

FASE DE ANLISIS

FASE DE SNTESIS

ENSAMBLADORES.
El programa ensamblador es el programa que realiza
la traduccin de un programa escrito en
ensamblador a lenguaje mquina. Esta traduccin es
directa e inmediata, ya que las instrucciones en
ensamblador no son ms que nemotcnicos de las
instrucciones mquina que ejecuta directamente la
CPU.

Ensambladores bsicos. Son de muy bajo nivel, y su tarea

TIPOS DE ENSAMBLADORES

consiste bsicamente en ofrecer nombres simblicos a las


distintas instrucciones.
Ensambladores modulares, o macro ensambladores.
Descendientes de los ensambladores bsicos. Hacen todo
lo que puede hacer un ensamblador, y adems
proporcionan una serie de directivas para definir e invocar
macroinstrucciones.
Ensambladores modulares 32-bits o de alto nivel. Son
ensambladores que aparecieron como respuesta a una
nueva arquitectura de procesadores de 32 bits, realizan la
misma tarea que los anteriores, permitiendo tambin el
uso de macros, permiten utilizar estructuras de

COMPILADORES
Un compilador es un programa informtico que
traduce un programa escrito en un lenguaje de
programacin a otro lenguaje de
programacin, es decir programa que permite
traducir el cdigo fuente de un programa en
lenguaje de alto nivel, a otro lenguaje de nivel
inferior (lenguaje mquina). Generando un
programa equivalente a capaz de interpretar.

Cualquier compilador debe realizar dos tareas principales:


anlisis del programa a compilar y sntesis de un
programa en lenguaje maquina. Para el estudio de un
compilador, es necesario dividir su trabajo en fases. Cada
fase representa una transformacin al cdigo fuente para
obtener el cdigo objeto. En cada una de las fases se
utiliza un administrador de la tabla de smbolos y un
manejador de errores.

DEFINICIN DE COMPILADOR
Traductor: Programa que toma como

entrada un texto escrito (llamado fuente) y


da como salida otro texto (llamado objeto).
Compilador: Traductor cuyo fuente es un
lenguaje de alto nivel y cuyo objeto es un
lenguaje de bajo nivel.
Intrprete: Compilador que ejecuta al
mismo tiempo que traduce.

DEFINICIN DE COMPILADOR

Ventajas de los compiladores frente a los

interpretes
Solo se compilan una vez
Ejecucin ms rpida
Optimizacin de cdigo e Informacin del

error ms detallada.

TIPOS DE COMPILADORES

Ensamblador
Compilador cruzado
Compilador con montador
Autocompilador
Metacompilador
Decompilador

HISTORIA DE LOS COMPILADORES


Qu fue primero el compilador o el programa?
FORTRAN: Primer lenguaje de alto nivel
ALGOL: Lenguaje estructurado en mdulos
Separacin Front-End y Back-End para compilar

lenguajes en distintas mquinas


Creacin del lenguaje intermedio UNCOL
Definicin de las distintas fases de creacin de
compiladores

Tabla de smbolos

Generacin
Generacin yy
Optimizacin
Optimizacin de
de
cdigo
cdigo final
final

Optimizacin
Optimizacin de
de
Cdigo
Cdigo intermedio
intermedio

Generacin
Generacin de
de
Cdigo
Cdigo Intermedio
Intermedio

Anlisis
Anlisis Semntico
Semntico

Anlisis
Anlisis Sintctico
Sintctico

Anlisis
Anlisis Lxico
Lxico

ESTRUCTURA DE UN COMPILADOR.
Gestin de errores

ESTRUCTURA DE UN COMPILADOR

Anlisis Lxico
Un analizador lxico asla el analizador sintctico de la
representacin de lexemas de los componentes lxicos.
El analizador lxico opera bajo peticin del analizador sintctico

devolviendo un componente lxico conforme el analizador


sintctico lo va necesitando para avanzar en la gramtica. Los
componentes lxicos son los smbolos terminales de la gramtica.
Suele implementarse como una subrutina del analizador
sintctico. Cuando recibe la orden obtn el siguiente componente
lxico, el analizador lxico lee los caracteres de entrada hasta
identificar el siguiente componente lxico.

ESTRUCTURA DE UN COMPILADOR

ESTRUCTURA DE UN COMPILADOR

Anlisis Sintctico
Recibe los tokens del analizador lxico y
comprueba que estn ordenados conforme
a la gramtica

ESTRUCTURA DE UN COMPILADOR

Anlisis Semntico
Comprueba la validez del programa
Comprobacin de tipos en
operadores

ESTRUCTURA DE UN COMPILADOR

Generacin de cdigo intermedio


Codifica el lenguaje fuente en un lenguaje
intermedio entre el lenguaje objeto
Permite la separacin entre front-end y
back-end
Utilizacin de cdigo de 3 direcciones
(A=B+C)
Instrucciones condicionales y saltos

ESTRUCTURA DE UN COMPILADOR

Optimizacin de cdigo intermedio


Permite realizar mejoras en el cdigo
intermedio
Eliminacin de saltos consecutivos
Factorizaciones
Eliminar cdigo intil
Optimizacin de ciclos

ESTRUCTURA DE UN COMPILADOR

Generacin de cdigo objeto


Generar una secuencia de instrucciones en
cdigo ensamblador o mquina a partir del
cdigo intermedio
A=B+C
LOAD B
ADD C
STORE A

ESTRUCTURA DE UN COMPILADOR

Tabla de smbolos
Tabla donde se registran los identificadores,
constantes, funciones y otros objetos
especificados en el programa fuente
El compilador desarrolla funciones comunes
de acceso a ella

ESTRUCTURA DE UN COMPILADOR

Manejo de errores
Mensajes de error que el compilador emite cuando
encuentra una inconsistencia en cualquiera de las fases
de compilacin
Normalmente en una compilacin no se muestran todos
los errores producidos:
Ocultacin de otros errores
Avalancha de errores

Se puede
Pararse al encontrar cualquier error
Intentar recuperar todos los errores de una pasada

ESTRUCTURA DE UN COMPILADOR
Anlisis lxico
Anlisis sintctico
Anlisis semntico
Generacin de cdigo
intermedio

Fuente

FRONT-END

Cdigo
Intermedio
BACK-END

Optimizacin de cdigo
intermedio
Generacin de cdigo objeto
Optimizacin de cdigo objeto

Cdigo
objeto

ESPECIFICACIN DE UN COMPILADOR

Especificacin lxica:
Tokens mediante expresiones
regulares
Especificacin sintctica:
Gramticas independientes del

contexto

Especificacin semntica:
Lenguaje natural

APLICACIONES DE LAS TCNICAS DE COMPILACIN


Interfaces textuales
Manejo de ficheros de texto estructurado
Procesadores de texto
Diseo e interpretacin de lenguajes
Gestin de bases de datos
Procesamiento del lenguaje natural
Traduccin de formatos de ficheros
Clculo simblico
Reconocimiento sintctico de formas

INTERPRETE
Los intrpretes realizan normalmente dos
operaciones:
Traducen el cdigo fuente a un formato interno.
Ejecutan o interpretan el programa traducido al
formato interno.
La primera parte del intrprete se llama a veces "el
compilador", aunque el cdigo interno que genera
no es el lenguaje de la mquina, ni siquiera lenguaje
simblico, ni tampoco un lenguaje de alto nivel.

ESTRUCTURA DEL INTERPRETE

VENTAJAS DEL INTRPRETE FRENTE AL COMPILADOR:

El programa se puede ejecutar de inmediato, sin

esperar a ser compilado.


Puede ser interrumpido con facilidad.
Puede ser rpidamente modificado y ejecutado
nuevamente.
Resultan muy apropiados durante la fase de desarrollo
de un programa, ya que la compilacin no permite la
ejecucin paso a paso del programa y con ello impide
la edicin seguimiento y depuracin del programa.

DESVENTAJAS DEL INTRPRETE FRENTE AL COMPILADOR

La ejecucin es ms lenta, pues cada instruccin

debe ser traducida a cdigo mquina tantas veces


como sea ejecutada.
No son adecuados en la fase de explotacin del
programa ya que el proceso de interpretacin se
ha de repetir cada vez que se ejecuta el programa,
mientras que con la compilacin, una vez obtenido
el programa en leguaje mquina ste puede ser
ejecutado sin necesidad de compilarlo de nuevo.

PARTICULARIDADES DE LA INTERPRETACIN
Ahorra memoria.
Produce un resultado que no se puede

almacenar, lo cual hace la ejecucin lenta.


No demasiado eficiente, cada vez que se
entre en un bucle se analizaran sus
sentencias.
Facilita el proceso de depuracin.
No produce resultados transportables.

LA INTERPRETACIN ES TIL EN:


Sistemas interactivos.
Programas de pequea envergadura.
Programas de prototipo y de enseanza.

Anda mungkin juga menyukai