Resumen Capitulo 1
Resumen Capitulo 1
Resumen Capitulo 1
Los lenguajes de programación son notaciones q u e describen los cálculos a las personas y las
máquinas.Nuestra percepción del mundo en que vivimos depende de los lenguajes de
programación, y a que todo el software que se ejecuta en todas las computadoras se escribió en
algún lenguaje de programación. Pero antes de poder ejecutar un programa, primero debe
traducirse a un formato en el que una computadora pueda ejecutarlo.
Los sistemas de software que se encargan de esta traducción se llaman compiladores. Este libro
trata acerca de cómo diseñar e implementar compiladores. Aquí descubriremos que podemos
utilizar unas cuantas ideas básicas para construir traductores para una amplia variedad de
lenguajes y máquinas. Además de los compiladores, los principios y las técnicas para su diseño
se pueden aplicar a tan tos dominios distintos aparte, que es probable que un científico
computacional las reutilice muchas veces en el transcurso de su carrera profesional.
Procesadores de lenguaje
La estructura de un compilador
Hasta este punto, hemos tratado al compilador como una caja simple que mapea un programa
fuente a un programa destino con equivalencia semántica. Si abrimos esta caja un poco,
podremos ver que hay dos procesos en esta asignación: análisis y síntesis.
La parte del análisis divide el programa fuente en componentes e impone una estructura
gramatical sobre ellas. Después utiliza esta estructura para crear u n a representación intermedia
del programa fuente. Si la parte del análisis detecta que el programa fuente está mal formado en
cuanto a la sintaxis, o que no tiene una semántica consistente, entonces debe proporcionar
mensajes informativos para que el usuario pueda corregirlo. La parte del análisis también
recolecta información sobre el programa fuente y la almacena en una estructura de datos llamada
tabla de símbolos, la cual se pasa junto con la representación intermedia a la parte de la síntesis.
Análisis de léxico.
Análisis sintáctico
Una parte importante del análisis semántico es la comprobación (verificación) de tipos, en donde
el compilador verifica que ca d a operador tenga operandos que coincidan. Por ejemplo, muchas
definiciones de lenguajes de programación requieren que el índice de un arreglo sea entero; el
compilador debe reportar un error si se utiliza un número de punto flotan te para indexar el
arreglo.
Después del análisis sin táctico y semántico del programa fuente, muchos compiladores generan
un nivel bajo explícito, o una representación intermedia similar al código máquina, que podemos
considerar como un programa para una máquina abstracta. Esta representación intermedia debe
tener dos propiedades importantes: debe ser fácil de producir y fácil de traducir en la máquina
destino.
Optimización de código