Page 47 - LENGUAJES FORMALES AUTOMATAS Y COMPILADOS
P. 47

47


                  “semánticamente” no pertenecen al lenguaje. En el caso por ejemplo  del empleo de una variable
                  en  c  que  necesariamente  haya  tenido  que  ser  declarada,  el  analizador  sintáctico  se  limita  a
                  comprobar, mediante una gramática libre de contexto, que un identificador forma parte de una
                  expresión.  Una  vez  comprobado  que  la  sentencia  es  sintácticamente  correcta,  el  analizador
                  semántico deberá verificar que el identificador empleado como parte de una expresión haya sido
                  declarado previamente. Para llevar a cabo esta tarea, ya se sabe se usa la tabla de símbolos que el
                  ensamblador debió construir. Ésta poseerá una entrada por cada identificador declarado en el
                  contexto  que  se  esté  analizando.  Con  este  tipo  de  estructuras  de  datos  adicionales,  los
                  desarrolladores de compiladores acostumbran a suplir las carencias de las gramáticas libres de
                  contexto.  En términos muy generales pueden expresar las siguientes definiciones.
                  Análisis: se trata de la comprobación de la corrección del programa fuente, e incluye las fases
                  correspondientes al análisis léxico (que consiste en la descomposición del programa fuente en
                  componentes  léxicos), análisis  sintáctico (agrupación  de  los  componentes  léxicos  en  frases
                  gramaticales)  y análisis  semántico (comprobación  de  la  validez  semántica  de  las  sentencias
                  aceptadas en la fase de análisis sintáctico).

                  Síntesis: su objetivo es la generación de la salida que es el programa objeto;  y suele estar formado
                  por una o varias combinaciones de fases de generación de código (normalmente se trata de código
                  intermedio o de código objeto) y de optimización de código (en las que se busca obtener un código
                  lo más eficiente posible).

                  Front-end: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de
                  derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente de la
                  plataforma o sistema para el cual se vaya a compilar, y está compuesta por las fases comprendidas
                  entre el análisis léxico y la generación de código intermedio.
   42   43   44   45   46   47   48   49   50   51   52