Want to create interactive content? It’s easy in Genially!

Reuse this 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.