Capitulo Analisis lexico y semantico. Compiladores
Como se mencionó antes la compilación requiere de tres fases:
Análisis lineal: en éste cada cadena de caracteres es leída, las secuencias de caracteres se agrupan en componentes léxicos que tienen un significado colectivo.
Análisis jerárquico: en el que los componentes léxicos se agrupan jerárquicamente en colecciones que tienen un significado colectivo.Análisis semántico: con este se revisa que los componentes se ajusten de modo significativo.
Análisis léxico
En un compilador el análisis lineal se llama análisis léxico o exploración.
Análisis sintáctico
En un compilador el análisis jerárquico se llama análisis sintáctico. Esto implica agrupar los componentes léxicos en frases gramaticales que el compilador puede usar para sintetizala salida. La estructura jerárquica de un programa se da utilizando reglas recursivas, las siguientes reglas se pueden dar como parte de la definición de expresiones:
Un identificador es una expresión
Un numero es una expresión
Si expresion1 y expresion2 son expresiones, entonces también lo son
expresion1 + expresion2
expresion1 * expresion2
( expresion1)
Se pueden definir proposionesmediante estas reglas:
Si identificador1 es un identificador y expresión2 es una expresión, entonces identificador1:= expresion2 es una proposición
Si expresion1 es una expresión y proposicion2 es una proposición, entonces while ( expresión1 ) do proposicion2
If ( expresion1 ) then proposicion2 son proposiciones
Normalmente se reconocenlos identificadores por simple inspección, es decir se busca hasta encontrar un carácter que no sea ni letra ni digito, agrupando en un componente léxico todo lo que se encuentre hasta ese punto. Los caracteres así agrupados se registran en una tabla denominada tabla de símbolos. Pero para imponer una estructura jerárquica se utiliza un árbol sintáctico.
Análisis semántico
En esta fase serevisa el programa fuente para tratar de buscar errores semánticos así como reunir información acerca de los tipos para la posterior fase de generación de código intermedio. En ella se utiliza la estructura jerárquica determinada por la fase de análisis sintáctico para así identificar los operadores y operandos de expresiones y proposiciones. Una parte importante que se realiza esta fase es laverificación de tipos, es decir revisa que cada operador tenga operandos permitidos por el lenguaje fuente.
1.3 Las fases de un compilador
Se dice que un compilador trabaja por fases y cada fase va transformando el programa fuente de una representación a otra. Las seis fases del compilador son: análisis léxico, análisis sintáctico, análisis semántico, generación de código intermedio,optimizador de código y generación de código. La administración de la tabla de símbolos y en manejador de errores interactúan con las seis fases del compilador.
Administración de la tabla de símbolos
Un compilador reúne y registra información de los identificadores como pueden ser los atributos de cada identificador. Estos atributos proporcionan información como memoria asignada, tipo y ámbitoo si son funciones o procedimientos, cantidad de argumentos y métodos para pasar estos argumentos.
La tabla de símbolos es una estructura que contiene un registro para cada identificador y campos para sus atributos. Estos permiten realizar consultas rápidas de los identicadores. Y cada fase del compilador va agregando información de los atributos.
Detección e información de errores
Lasdiferentes fases del compilador pueden encontrar errores pero cada una los debe tratar para poder encontrar mas errores. Las fases de análisis sintáctico y semántico cargan con la mayor cantidad de errores.
Las fases de análisis
La fase de análisis léxico lee los caracteres y los agrupa en una cadena de componente léxicos en los que cada componente representa una secuencia lógica. La...
Regístrate para leer el documento completo.