Want to create interactive content? It’s easy in Genially!
Compiladores
Omar Hernández
Created on February 2, 2024
Start designing with a free template
Discover more than 1500 professional designs like these:
Transcript
Compiladores
La magia para el código objeto
Omar Hernández
El compilador es un programa que lee código de Alto Nivel como JavaScript o Python y lo traduce a un lenguaje ensanblador o código de máquina.
El Compilador
Title 1
El Compilador
Análisis
Programa fuente (Alto Nivel)
Análisis Léxico
Revisa que las palabras sean de lenguaje
Análisis Sintáctico
Revisa el orden de las palabras
Análisis Semántico
Revisa lo que se quiere lograr
Gestión de Errores
Tabla de códigos
Síntesis
Genera código intermedio
Genera código compilado
Genera código Optimizado
Genera código ensamblado
Genera código final
Código objeto
Genera código objeto
Esquema de Lenguaje
Lenguaje de Alto Nivel (JavaScript o Python)
Facilidad de uso
Lenguaje. Es un conjunto de signos y caracteres con los cuales formamos palabras o cadenas
Notas Musicales Formulas de Física Matemática y Química
Lenguaje de Bajo Nivel (Ensamblador)
Nivel de Abstracción y Complejidad
Es muy eficiente
Formal
Lenguaje de Máquina
Ensambladores
Lenguajes de Programación (Hay 3 tipos)
Traducción a lenguaje de máquina
Interpretes
Tipos de Lenguajes
Compiladores
Imperativo
Modelo o Paradigma de la programación
Declarativo
Natural
Orientado al Objeto
Para los Humanos
Alfabeto. Son los caracteres o símbolos que forman un lenguaje
Title 1
Cadenas
Cadena o Palabra o String está formada por los símbolos o caractéres de un lenguaje Σ y tiene una secuencia finita. La cadena vacía se designa con ε (Epsilon) y la longitud de la cadena se denota con | |, por ejemplo, |0101| = 4, el cuatro siendo su cardinalidad. La longitud de la cadena vacía |ε| = 0.
Title 1
Cadenas
Operaciones que se realizan por cadenas. -Cadena1 = "Hola" -Cadena2 = "Mundo" -Cadena3 = Cadena1 + Cadena2 = Hola Mundo Si A = {0,1}, son cadenas sobre A b1 = 0101 b2 = 1111 b3 = 0111000 b4 = ε Hayar las longitudes de b1, b2, b3 y b4. |b1| = 4 |b2| = 4 |b3| = 7 |b4| = 0 Operaciones de Potencia con Cadenas (b1)2 = 0101 0101 (b2)2 = 1111 1111 (b3)3 = 0111000 0111000 0111000
Explicar una Operación. Teoría de Automatas Alfabeto Σ ≠ 0 |Σ| > 0 Σ2 = {0,1} Alfabeto Binario Σ1 = {a,b,c...Z} Σ3 = {0,1,2,...,9} Palabra = Cadena = String Σ = {0,1} Palabra w1 = 01101 w2 = 0 Σ0 = {ε} Σ1 = {0,1} = Z Σ2 = {00,01,10,11} Σ* = Σ0 U Σ1 U Σ2 U... Cadena de Kleene Σ+ = Σ1 U Σ2 U Σ3 U... Cadena Positiva
Title 1
Cerradura de Kleene vs Cerradura Positiva
Cerradura Postivia Σ+
Cerradura de Kleene Σ*
Símbolo
Es un conjunto que muestra todas las cadenas de todas las posibles combinaciones de los símbolos de un alfabeto, incluye la cadena vacía ε, |ε| = 0
Es la cerradura de Kleene sin la cadena vacía. Σ+ = Σ* - Σ0; donde Σ0 = {ε}.
Definición
Diferencia más importante
No incluye la cadena vacía Σ. Puede tener repeticiones del lenguaje.
Incluye la cadena vacía Σ. Puede tener cero repeticiones de lenguaje.
Uso
Buscar cadenas que se repiten una o más veces.
Buscar cadenas que se repiten cero o más veces.
Ejemplos
Σ = {c,d}La cadena de Kleene Σ* es Σ* = {ε, c, d, cc, dd, cd, dc, ccc, ddd, ccd, cdc,...} Σ* * este símbolo representa el infinito, desde cero hasta el infinito
Σ = {c,d}Σ0 = {ε}; |ε| = 0 Σ+ = Σ* - Σ0 Σ+ = {c, d, cc, dd, cd, dc, cdc,...}
La cadena positiva es más específica y requiere más de una repetición de lenguaje.
Resumen
La cadena de Kleene tiene la cadena vacía ε y es más flexible.
Title 1
Gramática Independiente del Contexto vs Gramática Ambigua
Gramática Ambigua GA
Gramática Independiente del Contexto GIC
GIC define un lenguaje Formal, donde la estructura de una oración se pueda analizar sin tener en cuenta su contexto.
La GA define un lenguaje Natural, donde una oración puede tener diferentes interpretaciones dependiendo del contexto.
Definición
Diferencia más importante
Es un lenguaje Natural, tomando el contexto para la correcta interpretación.
Es un lenguaje Formal, tomando en cuenta la forma y no el significado
Uso
Lenguaje Natural como oraciones con doble sentido.
Lenguajes de programación, lenguajes matemáticos, lenguajes físicos, lenguajes musicales
Análisis sintactico
Produce un único árbol de derivación para una oración
Produce dos o más árboles de derivación.
El hombre vio la mujer con el telescopioa) El hombre usó el telescopio para ver a la mujer. b) El hombre vio a una mujer con un telescopio
El niño comió la manzana. La casa tiene un perro. El gato duerme.
Ejemplos
Resumen
La gramática ambigua se utiliza para la comunicación entre humanos y los chistes de doble sentido.-Soldado, firme. -Donde firmo sargento?
La gramática independiente del contexto se utiliza para los lenguajes de programación por su exactitud y no causar confusiones a la máquina
Title 1
Compiladores
GIC
Lenguaje
Cadenas
Analicé el concepto de lenguaje de programación, que es un conjunto de signos que forman un alfabeto para crear palabras o cadenas. Aprendí los 2 tipos de lenguaje, Natural para los humanos y Formal para los lenguajes de programación.
Estudié la cadena de Kleene Σ* que contiene la cadena vacía ε, y la cadena positiva Σ+ que no tiene la cadena vacía ε. De último entendí que la GIC se basa en que el significado de una oración no depende del contexto y en la GA una oración puede tener varios significados
Aprendí lo que es un computador; es un programa que lee código de alto nivel y lo transforma en código de bajo nivel. Muy importante la función de cada fase para entender cómo funciona el compilador.
Entendí que una cadena es una secuencia de caracteres que son letras o símbolos. La cadena vacía se escribe ε y se llama Epsilon. Podemos contatenar cadenas y buscarle la longitud o cardinalidad de una cadena.