Las tres primeras fases de
un compilador suelen agrupan en un sola fase llamada Análisis del
programa a compilar y las tres ultimas en una sola fase llamada Síntesis de
un programa en lenguaje maquina.
En la fase de análisis se encuentran:
Análisis
Léxico: Esta fase se encarga de verificar si una cadena de
entrada del código fuente pertenece o no al lenguaje, es decir se realiza
un análisis símbolo a símbolo indicando el tóken para
cada una de las cadenas reconocidas o un error en caso de no reconocer la cadena.
Análisis Sintáctico: En esta fase se analiza la estructura de las expresiones en base a
gramáticas en base a reglas que determinar si una cadena de entrada
del código fuente es valida. El análisis que se realiza
es jerárquico ya que se obtiene arboles de derivación de las
mismas gramáticas especificadas en el lenguaje.
Análisis Semántico: Este análisis es mucho mas difícil de formalizar que
el sintáctico ya que tiene que verificar que
el árbol sintáctico tenga un significado valido dentro de las
reglas especificadas en el lenguaje. El
análisis semántico verifica que:
·
En una asignación, el tipo de la variable concuerde
con el tipo de la expresión asignada.
·
Que las variables estén declaradas antes de ser
usadas.
En la fase
de Síntesis se encuentran las siguientes:
Generación de código intermedio: Esta fase se ocupa de generar instrucciones para la maquina
virtual genéricaa partir del análisis de las primeras tres fases.
Ej.:
a=b+c
1: + b c T1
2: = a T1
1: + b c T1
2: = a T1
Optimización: Se encarga de transformar el código intermedio en uno
equivalente que tenga menos lineas de código de menor tamaño y menor
tiempo de ejecución.
Ej,:
a=b+c
1: + b c a
1: + b c a
Generación de
código objeto: Es la fase
final en la que se genera el código objeto el cual utiliza el conjunto de
instrucciones especifico del CPU que por lo general es código maquina o código
en lenguaje ensamblador.
Ej.:
a:=b+c
LOAD B
ADD C
STORE A
LOAD B
ADD C
STORE A
0 comentarios:
Publicar un comentario