Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar.Normalmente los compiladores están divididos en dos partes:  Front End (etapa inicial): es la parte que analiza el código fuente. . genera el árbol de derivación y rellena los valores de la tabla de símbolos. específico de una plataforma. comprueba su validez.  Back End (etapa final): es la parte que genera el código máquina. a partir de los resultados de la fase de análisis. realizada por el Front End.

.

variables o tipos. ya sean constantes. un árbol binario de búsqueda.Posee información sobre los identificadores definidos por el usuario. Hace funciones de diccionario de datos y su estructura puede ser una tabla hash. etc. Dado que puede contener información de diversa índole. . debe hacerse de forma que no sea uniforme.

. Cada componente léxico es una secuencia lógicamente coherente de caracteres relativa a un identificador. una palabra reservada. un operador o un carácter de puntuación.En la fase de análisis léxico se leen los caracteres del programa fuente y se agrupan en cadenas que representan los componentes léxicos.

sino que se genera otro lexema en la tabla de símbolos.A la secuencia de caracteres que representa un componente léxico se le llama lexema (o con su nombre en inglés token). . En el caso de los identificadores creados por el programador no solo se genera un componente léxico.

que se representara por medio de árboles sintácticos.Comprueba que la estructura de los componentes básicos sea correcta según ciertas reglas gramaticales. Además interpone una estructura jerárquica a la cadena de componentes léxicos. .

Ejemplo de un árbol sintáctico: .

. existencia de variables. etc.Comprueba todo lo relacionado con el significado. chequeo de tipos. rangos de valores.

. Genera un código independiente de la máquina. Las ventajas. es que es fácil hacer pseudo compiladores y además facilita la optimización de código.

. Crea un fichero ‘. Aquí también se puede hacer optimización propia del microprocesador.exe’ directamente o un fichero ‘.obj’.

 La optimización puede realizarse durante las fases de generación de código intermedio y/o generación de código máquina y puede ser una fase aislada de éstas. La optimización del código intermedio debe ser independiente de la máquina. . o estar integrada con ellas.

obteniéndose así varios compiladores para una máquina. resulta tentador compilar varios lenguajes distintos en el mismo lenguaje intermedio y usar una etapa final común para las distintas etapas iniciales. .

 Cada fase puede encontrar errores . después de detectar un error cada fase debe de tratar ese error para poder continuar la compilación compilador que se detiene cuando encuentra el primer error no resulta tan útil como debiera fases de análisis sintáctico y semántico por lo general manejan una gran porción de errores detectables por el compilador  Un  Las .

Sign up to vote on this title
UsefulNot useful