INTRODUCCIN A LA TEORA DE
LENGUAJES FORMALES.
CONCEPTOS
Lenguaje:
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
ESTRUCTURA DE UN TRADUCTOR
Un traductor es un programa que tiene como entrada un texto escrito en
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.
TIPOS DE ENSAMBLADORES
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.
DEFINICIN DE COMPILADOR
Traductor: Programa que toma como
DEFINICIN DE COMPILADOR
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
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
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
ESTRUCTURA DE UN COMPILADOR
ESTRUCTURA DE UN COMPILADOR
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
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.
PARTICULARIDADES DE LA INTERPRETACIN
Ahorra memoria.
Produce un resultado que no se puede