Conceptos Clave sobre Compiladores e Intérpretes: Optimización y Funcionamiento
Clasificado en Informática
Escrito el en español con un tamaño de 5,21 KB
1. Compiladores e Intérpretes
1. Compiladores: Sistemas de software que se encargan de traducir un programa escrito en un lenguaje de programación a un formato que una computadora pueda ejecutar.
2. Intérpretes: Otro tipo común de procesador de lenguaje.
3. Procesos de Compilación (Análisis y Síntesis): El compilador mapea un programa fuente a un programa destino con equivalencia semántica. Existen dos procesos principales para esta asignación: análisis y síntesis.
2. Fases del Análisis
4. Fase de Análisis: Divide el programa fuente en componentes e impone una estructura gramatical sobre ellas.
5. Fase de Síntesis: Construye el programa destino deseado a partir de la representación intermedia y de la información en la tabla de símbolos.
6. Análisis Léxico: Su principal tarea es leer los caracteres de la entrada del programa fuente.
7. Escaneo: Consiste en los procesos simples que no requieren la determinación de tokens de la entrada.
8. Patrón: Es una descripción de la forma que pueden tomar los lexemas de un token.
9. Ejemplo de Token: if
, else
.
3. Autómatas, Análisis Semántico y Verificación
10. Autómatas Finitos: Consisten en grafos como los diagramas de transición de estados, con algunas diferencias.
11. Análisis Semántico: Comprobará que el significado de lo que se va leyendo es válido.
12. Árbol Sintáctico: Forma de representar la salida teórica de la fase del análisis semántico.
13. Verificación Estática: Comprueba la conformidad de un programa de sistema y su especificación sin ejecutar el código.
14. Árboles de Sintaxis Abstracta: Sirven para manejar la información semántica de un código.
4. Gramáticas y Producciones
15. Gramáticas Libres de Contexto: Consisten en terminales, no terminales, un símbolo inicial y producciones.
16. Producciones de una Gramática: Especifican la forma en que pueden combinarse los terminales y no terminales para formar cadenas.
17. Gramática Ambigua: Gramática que produce más de una derivación por la izquierda, o más de una derivación por la derecha para el mismo enunciado.
18. Ambigüedad en Gramáticas: Para la mayoría de los analizadores sintácticos, es conveniente que la gramática no tenga ambigüedades.
19. Gramática BNF: Es una forma de escribir las producciones.
20. Análisis Sintáctico Descendente: Se considera la búsqueda de una derivación por la izquierda para una cadena de entrada.
5. Tabla de Símbolos y Optimización
21. Tabla de Símbolos: Estructuras de datos que utilizan los compiladores para guardar información acerca de las construcciones de un programa fuente.
22. Entradas en las Tablas de Símbolos: Contienen información acerca de un identificador (como su cadena de caracteres o lexema).
23. Declaraciones Múltiples: Por lo general, las tablas de símbolos dentro de un programa necesitan soportar varias declaraciones del mismo identificador.
24. Creación de Entradas: Los identificadores crean las entradas en la tabla de símbolos.
25. Enlace de Identificador: Término que se refiere al alcance de una declaración específica de x.
26. Optimización de Tablas de Símbolos: Aprovechan la regla del bloque anidado más cercano.
27. Regla de Bloques Anidados más Cercano: Nos indica que un identificador x se encuentra en el alcance de la declaración anidada más cercana de x.
28. Front End: Es la representación intermedia del programa fuente producido por la interfaz del usuario.
29. Arquitecturas de Máquinas de Destino: (Pregunta abierta, requiere investigación adicional)
30. Factores en la Generación de Código: El generador de código debe asignar el programa de representación intermedia a una secuencia de código que la máquina destino pueda ejecutar. Dos factores que determinan la complejidad de realizar esta asignación son: (Pregunta abierta, requiere investigación adicional)
6. Fases de Análisis de un Compilador (Explicación)
- Análisis Léxico: Recibe la entrada de caracteres.
- Análisis Sintáctico: Verifica que las instrucciones estén bien escritas.
- Análisis Semántico: Se encarga de que las instrucciones lleven una secuencia lógica.
- Generación de Código Intermedio: Código a prueba, casi terminado.
- Optimización de Código: Se ajusta el código con base en las pruebas realizadas.
- Generación de Código: Es el código final que se ejecutará.