Recopilaciones De Copiladores
Enviado por sayyjoel • 15 de Julio de 2013 • 5.045 Palabras (21 Páginas) • 225 Visitas
Resumen de Conceptos claves:
Capitulo uno
Procesadores de lenguaje:
están en un entorno de desarrollo integrado de software que incluyen muchos tipos de procesadores de lenguaje distintos, tales como, compiladores, interpretes, ensambladores, cargadores, depuradores, profilers, entre otros.
Un compilador a su vez puede tener varias fases operando en una secuencia de estas, donde cada una transforma el programa fuente de una representación intermedia a otra.
Los lenguajes de maquinas y ensamblador fueron los lenguajes de programación de primera generación. La programación de estos lenguajes llevaba mucho tiempo y se cometían muchos errores.
Por su parte el diseño de compiladores es una de las fases en las que la teoría ha tenido muy buen impacto en la practica, como son los autómatas, gramática, expresiones regulares, arboles, entre otros.
La optimatizacion de código, aunque el código no puede optimizarse realmente,la mejora de la eficiencia del código es compleja y abarca una buena parte del estudio de la compilación.
A medida que el tiempo pasa los lenguajes de programación realizan cada ves mas tareas, que antes eran realizadas por el programador.
Compiladores y arquitectura de computadoras: la tecnología de los compiladores y el avance de la arquitectura ejercen una gran influencia sobre la arquitectura de computadoras. De mucho de estos avances depende la capacidad de los compiladores para extraer de los programas fuente la oportunidad de utilizar con efectividad las capacidades del hardware.
La misma tecnología que le permite a los compildores optimizar el código puede usarse para una variedad de tareas de análisis de programas, para detectar errores y hasta descubrir cuando un programa es vulnerable a las instrucciones que han descubierto los hackers.
El alcance de una declaración de * es el contexto en el cual los usos de * se refieren a esta declaración. Un lenguaje utiliza el alcance estático o léxico si es posible determinar el alcance de una declaración con solo analizar el programa.
Los entornos pueden describirse como la asociación de nombres con ubicaciones en memoria y después con los valores, los cuales asignan los nombres a las ubicaciones en memoria y los estados, que asignan las ubicaciones a sus valores.
Los lenguajes que permiten anidar bloques tiene estructuras de bloques.
Los parámetros se pasan de un procedimiento que hace la llamada al procedimiento que es llamado, ya sea un valor o una frecuencia.
Muchos compiladores hacen todo el esfuerzo posible para generar códigos que sean tan buenos o mejores que el código ensamblador escrito a mano que producen los expertos. Una estrategia sencilla podría ser utilizar un método simple para la generación de código intermedio, y depender del optimizador de código para eliminar las instrucciones innecesarias
Capitulo dos
Las técnicas orientadas a la sintaxis en este capitulo pueden utilizarse para construir interfaces de usuarios(front-end) de compiladores.
El punto inicial para un traductor orientado a la sintaxis es una gramática para el lenguaje fuente. Una gramática describe la estructura jerárquica de los programas. se define en términos de símbolos elementales, conocidos como terminales, y de símbolos variables llamados no terminales. Estos símbolos representan construcciones del lenguaje. Las reglas o producciones de una gramática consisten en un no terminal conocido como el encabezado o lado izquierdo de una producción, y de una secuencia de terminales y no terminales, conocidas como el cuerpo o lado derecho de la producción. Un no terminal se designa como el símbolo inicial.
Al especificar un traductor, hay que adjuntar atributos a la construcción de programación, en donde un atributo es cualquier cantidad asociada con una construcción. Como las construcciones se representan mediante símbolos de gramática, el concepto de los atributos se extiende a los símbolo de la gramática.
Un analizador léxico lee la entrada de un carácter a la vez, y produce como salida un flujo de tokens, en donde un token consiste en un símbolo terminal, junto con la información adicional en la forma de valores de atributos.
En el análisis sintáctico se da el problema de tener que averiguar como puede derivarse una cadena de terminales del símbolo de inicio de la gramática, sustituyendo en forma repetida un no terminal por el cuerpo de una de sus producciones. En general, un analizador sintáctico construye un árbol de análisis sintáctico, en el cual la raíz se etiqueta con el símbolo inicial, cada nodo que no es hoja corresponde a una producción y cada hoja se etiqueta con un terminal o con la cadena vacía,€. El árbol de análisis sintáctico deriva la cadena de terminales en la hoja, y se lee de izquierda a derecha.
Los analizadores sintáctico eficientes pueden crearse a mano, mediante un método tipo descendente (de la raíz hasta las hojas de un árbol de análisis sintáctico) llamado análisis sintáctico predictivo. Un analizador sintáctico predictivo tiene un procedimiento para cada no terminal; los cuerpos de los procedimientos imitan las producciones para los no terminales; y, el flujo de control a través de los cuerpos de los procedimientos puede determinarse sin ambigüedades, analizando un símbolos de preanalisis en el flujo de entrada.
La traducción orientada a la sintaxis se realiza adjuntando reglas o fragmentos de programa a la producciones en una gramática.
Un esquema de traducción incrusta fragmentos de programa llamados acciones semánticas en los cuerpos de las producciones. Las acciones se ejecutan en el orden en el que se utilizan las producciones durante el análisis sintáctico.
El resultado del análisis sintáctico es una representación del programa fuente, conocido como código intermedio. Un árbol sintáctico abstracto tiene nodos para la construcciones significativas. De manera alternativa, el código de tres direcciones es una secuencia de instrucciones, en la cual cada instrucción lleva a cabo una sola operación.
La tabla de símbolos son estructuras de datos que contienen información acerca de los identificadores. La información se coloca en la tabla de símbolos cuando se analiza la declaración de un identificador. Una acción semántica obtiene información de la tabla de símbolos cuando el identificador se vuelve a utilizar.
Capitulo tres
Tokens: el analizador léxico explora el programa fuente y produce como salida una secuencia de tokens, por lo general, se pasan al analizador sintáctico, uno a la vez. Algunos tokens pueden consistir solo de un nombre
...