-> un compilador es el sistema de software que se encarga de traducir un lenguaj
e fuente especifico (de alto nivel) aun lenguaje objetivo generalmente lenguaje maquina -> su rol es reportar cualquier error generado durante el proceso de traduccion Tipos de errores -> compilacion -> tiempo de ejecucion -> errores logicos Todo se representa con codificacion binaria los programas son secuencias de bytes (hay 256) JVM utiliza la pila para manipular expresiones Traductor -> programa que traduce de un lenguaje a otro -> traducto de idiomas existen de 2 tipos de traductores ->compiladores ->interpretes Preprocesador ->modifica el programa fuente antes de la verdadera compilacion ->fase preliminar de la compilacion ->utiliza macroinstrucciones para insertar codigo compiladores cruzados ->genera codigo para ser procesado en un compilador diferente interprete de comandos ->traduce sentencias simples a invocaciones a programas hibridos ->pseudointerpretados Emsambladores ->pioneros de la compilacion ->compilador sencillo ->cada sentencia fuente a un unica instruccion en codigo maquina ->lenguaje emsamblador Macroemsamblador emsamblador con un preprocesador Fases para ejecutar un lenguaje de alto nivel ->compilacion ->enlace ->carga compilador -> prodce un archivo objeto->estructura de modulos llamados registros enlace o linker -> resuelve las referencias cruzadas Metacompilador ->compilador de compiladores ->acepta la descripcion de un lenguaje y produce un compilador de ese lenguaje Tipos ->trabajan con gramaticas libres de contexto ->reconocen la sintaxis del lenguaj e ->trabajan con gramaticas regulares ->segmentacion lexica Etapas de la compilacion analisis-> revisa entradas y genera estructuras ->errores en el programa fuente sintesis-> construye el programa objetivo a partir de las estructuras -> erroes al generar el codigo Etapa de analisis ->analisis lexicografico-> identificadores, palabras reservadas ->analisis sintactico -> reglas gramaticales ->analisis semantico -> chequeo de tipos, rangos de valores, existencia de varia bles Etapa de sintesis ->generacion de codigo intermedio-> codigo independiente de la maquina muy pare cido al emsamblador ->generacion de codigo maquina -> codigo maquina ejecutable ->optimizacion Tabla de simbolos ->hace funciones de diccionario de datos, tabla hash automatas finitos es usado en procesamiento de texto, compiladores y dise o de hardware gramaticas libres de contexto, es utilizado en lenguajes de programacion e intel igencia artificial conjunto grupo de objetos ->no importa el oreden y que se repitan secuencia es una lista de onbjetos en algun orden (tuplas) relacion entre un conjunto S y uno T (pares ordenados) dominio (conjunto de los primeros elementos) rango (conjunto de los segundos elementos) Un grafo G consiste de un conjunto finito V llamado vertices, un conjunto finito E llamado arcos, y una funcion g que asigna a cada arco un subconjunto {v , w }, donde v y w son vertices (ypueden ser el mismo) G = {V , E , g} automata modelo abstracto de computacion ->deterministas (DFA) ->por que se puede determinar cada transicion ->No-deterministas (NFA) Un DFA es una 5-tupla: M = (Q, S, d, q0 , F ) donde: Q = Conjunto finito de los estados internos S = Conjunto finito de simbolos llamado alfabeto d : QxS Q = Funcion de transicion q0 Q = Estado inicial F Q = Conjunto de estados finales Patron: es una expresion regular Token: es la categoria lexica asociada a un patron. Un token es un terminal para la gramatica libre de contexto del analizador sintactico Lexema: es cada secuencia de caracteres concreta que encaja con un patron.