door joel sorroza 4 jaren geleden
566
Meer zoals dit
door Mr. Camilo Sánchez
door CABALLERO SAUCEDO CABALLERO SAUCEDO
door Andrea Real Ramirez
door Mary Chicaiza
Utiliza el árbol sintáctico y la información en la tabla de símbolos para comprobar la consistencia semántica del programa fuente con la definición del lenguaje.
Fase de análisis semántico
Esta fase revisa el árbol sintáctico junto con los atributos y la tabla de símbolos para tratar de encontrar errores semánticos.
Es la segunda fase ,trabaja con una gramática de contexto libre y genera el árbol sintáctico que reconoce su sentencia de entrada.
Paso #3
Asing
Asign
+
CTEENT2
IDparcialdos
IDparcialuno
IDsuma
Paso #2 IDsuma ASIGN IDparcialuno ASIGN IDparcialdos ASIGN CTEENT2
Se analiza la entrada carácter a carácter, el código se desglosa en tokens, su lectura es de izquierda a derecha.
Paso #1 suma=parcialuno + parcialdos /2; Se agruparían en los componentes léxicos siguientes : 1.El identificador suma 2.El símbolo de asignación '=' 3. El identificador parcialuno 4.El signo suma '+' 5.El identificador parcialdos 6_.El signo de división '/' 7. El numero '2 ' 8. El símbolo de fin de sentencia ';' .
Ejemplo : suma=parcialuno + parcialdos /2;
La fase final de un compilador es la generación de código objeto, que por lo general consiste en código máquina reubicable o código ensamblador. Cada una de las variables usadas por el programa se traduce a una dirección de memoria (esto también se ha podido hacer en la fase de generación de código intermedio)
Esta fase mejorar el código intermedio, de modo que en la siguiente fase resulte un código de máquina más rápido de ejecutar.
Después de la etapa de análisis, dicha representación intermedia se puede considerar como un programa para una máquina abstracta.
Cualquier representación intermedia debe tener dos propiedades importantes; debe ser fácil de generar y fácil de traducir al código máquina destino. Así, Representación intermedia puede tener diversas formas.
Ensambladores y Microensa,bladores
Un ensablador es un compilador sencillo, en el que el lenguaje fuente tiene una estructura sencialla que permite la traduccion de cada sentencia fuente a una unica instruccion en codigo maquina.Ej: Macroensamblador IBM
Interpretes de Comandos
Traduce sentencias simples a invocaciones a una bibioteca, un ejemplo de estos es la shell de Unix o
Preprocesadores
Permiten modificar el programa fuente antes de la verdadera compilación. Hacen uso de macroinstrucciones y directivas de compilación. Por ejemplo podemos nombrar algunos preprocesadores para HTML como lo son: HAML, SLIM o JADE.
Intérpretes
Es parecido a un compilador, solo que a diferencia de este, la salida es una ejecución. En otras palabras traduce de un lenguaje de alto nivel a un lenguaje de máquina.Ej: Google Colab, Replit, Python Tutor y Jupyter.
Compiladores
Es aquel que tiene como entrada una sentencia en lenguaje formal, y como salida tiene un fichero ejecutable. Ej: Netbeans
Traductores de idioma
Traducen de un idioma dado a otro. Por ejemplo del inglés al español. Un ejemplo es Google Traslate
Su ámbito (la parte del programa donde es visible)
Su tipo
La dirección de memoria en que se almacenará en tiempo de ejecución
Proporcionar información sobre la memoria asignada
Dependen de la máquina destino y que, en general, no dependen del lenguaje fuente sino sólo del lenguaje intermedio
Dependen exclusivamente del lenguaje fuente y se integran los análisis léxicos y sintácticos.
chequeo de tipos, rangos de valores, existencia de variables, etc.
(números, identificadores de usuario), (variables, constantes, tipos, nombres de procedimientos), (palabras reservadas, signos de puntuación, etc.)
Ejemplo *puntos de ruptura *seguimiento de trazas *opciones de visualización de variables
si la aplicación completa consta de 15 ficheros fuente, y solo se modifica 1( al que le faltaba el ‘;’), sólo se compila aquél al que se le ha añadido el ‘;’, se genera por completo su fichero objeto y luego se enlazan todos juntos para obtener el ejecutable.
si el ‘;’ faltaba en un procedimiento o bloque sólo se compila ese bloque y se actualiza el fichero objeto.
si el ‘;’ faltaba en la línea 100 sólo se compila la línea 100 y se actualiza el fichero objeto.
se recompila el ‘;’ y se inserta en el fichero objeto la sentencia que faltaba.