SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR SEDE IBARRA
COMPILADORES
Nombre: Rubén Pilca.
Contenido
Mediante un organizador gráfico defina las fases de la compilación........................................... 2
Qué operación realiza el análisis sintáctico. ................................................................................. 2
A qué se refiere la gramática, la regla de producciones, símbolos terminales y no terminales... 3
Defina un ejemplo de gramática................................................................................................... 3
Qué es un árbol de parsing y coloque un ejemplo........................................................................ 4
A qué se entiende por generación de código ............................................................................... 5
Qué es un árbol sintáctico............................................................................................................. 6
En qué consiste el análisis semántico ........................................................................................... 6
Cómo se obtiene el código intermedio......................................................................................... 7
Dentro de la compilación a que se refiere la optimización........................................................... 7
Presente un ejemplo de optimización de código.......................................................................... 7
Dentro del proceso de la compilación, qué es, para qué, y cómo se utiliza una tabla de
símbolos. ....................................................................................................................................... 8
Mediante un organizador gráfico defina las fases de la
compilación.
Qué operación realiza el análisis sintáctico.
Es la fase del analizador que se encarga de chequear el texto de
entrada en base a una
gramática dada. Y en caso de que el programa de entrada sea válido,
suministra el árbol
sintáctico que lo reconoce.
En teoría, se supone que la salida del analizador sintáctico es alguna
representación del
árbol sintáctico que reconoce la secuencia de tokens suministrada por el
analizador léxico.
En la práctica, el analizador sintáctico también hace:
• Acceder a la tabla de símbolos (para hacer parte del trabajo del
analizador
• semántico).
• Chequeo de tipos (del analizador semántico).
• Generar código intermedio.
• Generar errores cuando se producen.
En definitiva, realiza casi todas las operaciones de la compilación.
Este método de trabajo
da lugar a los métodos de compilación dirigidos por sintaxis.
A qué se refiere la gramática, la regla de producciones, símbolos
terminales y no terminales.
• Es una forma de describir un lenguaje formal.
• La gramática permite generar cadenas a partir de un símbolo inicial y
aplicando reglas que indican como ciertas combinaciones de
símbolos pueden ser reemplazadas usando otras combinaciones de
símbolos
• Una Gramática Formal G se compone de:
• Un conjunto finito de Símbolos No Terminales (N)
• Un conjunto finito de Símbolos Terminales (Σ)
• Un conjunto finito de Reglas de Producción (P). Cada regla tiene la
forma α → β, donde α y β pertenecen a (Σ U N)*, la parte izquierda
(α) debe contener al menos un símbolo no terminal
• Un símbolo de Inicio (S), que pertenece a N
Defina un ejemplo de gramática
El lenguaje de una gramática G = (N, Σ, P, S), se denota como L(G), y se define
como todas aquellas cadenas sobre Σ que pueden ser generadas indicando
en el símbolo S, y aplicando las reglas de producción P, hasta reemplazar
todos los símbolos no terminales.
G:
N = { S }
Σ = { 0, 1 }
P = { S → 0 S
S → 1 S
S → Є }
Cadenas generadas por G:
 00000
 010101
 0001
Qué es un árbol de parsing y coloque un ejemplo.
Un parser podría ser definido como un programa que analiza una
porción de texto para determinar su estructura lógica: la fase de parsing en
un compilador toma el texto de un programa y produce un árbol sintáctico
que representa la estructura del programa.
Diferentes métodos para construir parsers, aquí presentaremos una
metodología que ha sido ampliamente aceptada para ser usada en un
contexto de programación funcional-perezosa.
Parsers son modelados como funciones. Parsers complejos son obtenidos a
partir de otros más simples haciendo un amplio uso de alto orden.
Características:
• Se pueden reconocer gramáticas ambiguas
• Backtracking
• Acciones semánticas
A qué se entiende por generación de código
La generación de código es una de las fases mediante el cual un
compilador convierte un programa sintácticamente correcto en una serie
de instrucciones a ser interpretadas por una máquina. La entrada en esta
fase viene representada, típicamente, por un Árbol Sintáctico, un Árbol de
Sintaxis Abstracta, o una Representación Intermedia; la máquina destino
puede ser un microprocesador o una máquina abstracta tal como una
máquina virtual o un lenguaje intermedio, legible por un humano.
Compiladores más sofisticados realizan múltiples traducciones en cadena
(pipelining) con el fin de poder construir código para múltiples plataformas
y evitar tener que construir todas las capas del compilador.
En términos más generales, la generación de código: es usada para
construir programas de una manera automática evitando que los
programadores tengan que escribir el código a mano. La generación de
código puede realizarse en tiempo de ejecución, Tiempo de carga, o Tiempo
de compilación. Los compiladores JIT son un ejemplo de generadores de
código.
Qué es un árbol sintáctico.
En lenguajes formales y lingüística computacional, un árbol de
sintaxis abstracta (AST), o simplemente un árbol de sintaxis, es una
representación de árbol de la estructura sintáctica simplificada del código
fuente escrito en cierto lenguaje de programación. Cada nodo del árbol
denota una construcción que ocurre en el código fuente. La sintaxis es
abstracta en el sentido que no representa cada detalle que aparezca en la
sintaxis verdadera. Por ejemplo, el agrupamiento de los paréntesis está
implícito en la estructura arborescente, y una construcción sintáctica tal
como IF condición THEN puede ser denotada por un solo nodo con dos
ramas.
Esto hace a los árboles de sintaxis abstracta diferentes de los árboles
de sintaxis concreta, llamados tradicionalmente árboles de parser, que son
a menudo construidos por la parte parser de la traducción del código fuente
y el proceso de compilación (a pesar quizás de un nombramiento no
intuitivo). Una vez construido, información adicional es agregada al AST por
procesamiento subsecuente, ej., análisis semántico.
En qué consiste el análisis semántico
Hemos aprendido cómo analizar un analizador construcciones
árboles en la sintaxis fase de análisis. La llanura de análisis árbol construido
en la fase en que no es, por lo general, de uso de un compilador, ya que no
llevan ningún tipo de información de cómo evaluar el árbol. La producción
libre de contexto gramática, lo que hace que las reglas del lenguaje, no
alojar cómo interpretarlos.
Cómo se obtiene el código intermedio.
El código intermedio se puede obtener mediante la localización de
espacio de memoria (en tiempo de compilación), este elimina la necesidad
de un nuevo compilador completo para cada máquina de la sección de
análisis mismo de todos los compiladores. El código intermedio tiende a ser
código independiente de la máquina. Por lo tanto, el generador de código
supone que tiene número ilimitado de almacenamiento en memoria
(registro) para generar el código.
Dentro de la compilación a que se refiere la optimización.
La optimización se refiere a una mejora mucho más avanzada del
código que ya se tiene, es decir transforma un código base en otro mucho
más eficiente, reduciendo uso de recursos y espacio en memoria, aunque
también se debe considerar que este viene a ser una nueva versión
Presente un ejemplo de optimización de código.
Implementando rutinas o algoritmos de alta calidad.
El análisis de la complejidad asintótica es una alternativa viable para medir
la eficiencia de un algoritmo con la cual es posible evaluar el ritmo de
crecimiento de una función. Sin embargo, no siempre es una métrica
adecuada.
El empleo de trasformaciones que aseguren la reducción de Ct y Ce permite
garantizar cierto grado de optimización en la generación de algoritmos y
programas más eficientes, a continuación, se mencionan alguna de estas
técnicas de optimización sobre un bloque básico de instrucciones:
1. Optimizaciones que reducen la estructura:
Reutilización de expresiones comunes: regularmente tiende a favorecer el
Ct
Dentro del proceso de la compilación, qué es, para qué, y cómo
se utiliza una tabla de símbolos.
La tabla de símbolos es un almacén donde se encuentran guardados
varios caracteres sean estos especiales o no, como por ejemplo “. , - _ * ¿
!”, la tabla de símbolos sirve para verificar en tiempo de compilación
algunas secciones de código para registrarlos como separadores,
operadores o símbolos especiales. La tabla de símbolos es una importante
estructura de datos creada y mantenida por los compiladores con el fin de
almacenar información acerca de la ocurrencia de diversas entidades, tales
como nombres de variables, nombres de funciones, objetos, clases,
interfaces, etc. esta se utiliza en el análisis y la síntesis de un compilador.

Más contenido relacionado

La actualidad más candente (20)

Turbo Pascal 7
Turbo Pascal 7Turbo Pascal 7
Turbo Pascal 7
 
Clase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosClase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptos
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico
 
Pascal [modo de compatibilidad]
Pascal [modo de compatibilidad]Pascal [modo de compatibilidad]
Pascal [modo de compatibilidad]
 
Manejo de archivo
Manejo de archivoManejo de archivo
Manejo de archivo
 
4035426 ejercicios-resueltos-en-pascal
4035426 ejercicios-resueltos-en-pascal4035426 ejercicios-resueltos-en-pascal
4035426 ejercicios-resueltos-en-pascal
 
Principios basicos de la programacion (pc)
Principios basicos de la programacion (pc)   Principios basicos de la programacion (pc)
Principios basicos de la programacion (pc)
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
GENERACION DE CODIGO INTERMEDIO
GENERACION DE CODIGO INTERMEDIOGENERACION DE CODIGO INTERMEDIO
GENERACION DE CODIGO INTERMEDIO
 
Análisis Semántico con Cup
Análisis Semántico con CupAnálisis Semántico con Cup
Análisis Semántico con Cup
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Fundamentos de Lenguaje C
Fundamentos de Lenguaje CFundamentos de Lenguaje C
Fundamentos de Lenguaje C
 
Código intermedio
Código intermedioCódigo intermedio
Código intermedio
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Que es programacion
Que es      programacionQue es      programacion
Que es programacion
 
Clase1 algoritmos
Clase1 algoritmosClase1 algoritmos
Clase1 algoritmos
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedio
 
Analizador lexico
Analizador lexicoAnalizador lexico
Analizador lexico
 
Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladores
 

Similar a Análisis sintáctico

Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintacticoAndres Pozo
 
Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos CompiladoresCompiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos Compiladoresjose haar
 
Incorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos CompiladoresIncorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos Compiladoresguest5fa3fc
 
Practica análisis léxico y semántico(compiladores)
Practica análisis léxico y semántico(compiladores)Practica análisis léxico y semántico(compiladores)
Practica análisis léxico y semántico(compiladores)Alex Toapanta
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2perlallamas
 
Evolucion de los compiladores1
Evolucion de los compiladores1Evolucion de los compiladores1
Evolucion de los compiladores1udalrico
 
Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2Universidad
 
Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021Bryan Chasiguano
 
Manual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfManual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfDavidErnestoT
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintácticoSantiago Andrade
 
Corporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisyCorporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisyDeisy Nereida Lozada Ortiz
 
Taller Análisis Sintáctico
Taller Análisis SintácticoTaller Análisis Sintáctico
Taller Análisis SintácticoGLORIABELEN3
 

Similar a Análisis sintáctico (20)

Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Taller de compiladores
Taller de compiladoresTaller de compiladores
Taller de compiladores
 
TABLA DE SIMBOLOS
TABLA DE SIMBOLOSTABLA DE SIMBOLOS
TABLA DE SIMBOLOS
 
Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos CompiladoresCompiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
 
Incorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos CompiladoresIncorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos Compiladores
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Practica análisis léxico y semántico(compiladores)
Practica análisis léxico y semántico(compiladores)Practica análisis léxico y semántico(compiladores)
Practica análisis léxico y semántico(compiladores)
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
Evolucion de los compiladores1
Evolucion de los compiladores1Evolucion de los compiladores1
Evolucion de los compiladores1
 
Compiladores (1) pedro vasques
Compiladores (1) pedro vasquesCompiladores (1) pedro vasques
Compiladores (1) pedro vasques
 
Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintáctico
 
Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021
 
Manual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfManual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdf
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintáctico
 
Herramientas de software
Herramientas de softwareHerramientas de software
Herramientas de software
 
Corporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisyCorporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisy
 
Analizador Lexico
Analizador LexicoAnalizador Lexico
Analizador Lexico
 
Taller Análisis Sintáctico
Taller Análisis SintácticoTaller Análisis Sintáctico
Taller Análisis Sintáctico
 
Introduccion al assembler[1]
Introduccion al assembler[1]Introduccion al assembler[1]
Introduccion al assembler[1]
 

Más de RubnPilca

TALLER DE COMPILADORES (Flex y Bison).
TALLER DE COMPILADORES  (Flex y Bison). TALLER DE COMPILADORES  (Flex y Bison).
TALLER DE COMPILADORES (Flex y Bison). RubnPilca
 
Compilando un programa manualmente Java, C++, Visual Basic
Compilando un programa manualmente Java, C++, Visual BasicCompilando un programa manualmente Java, C++, Visual Basic
Compilando un programa manualmente Java, C++, Visual BasicRubnPilca
 
Fortran con el compilador Gfortran.
Fortran con el compilador Gfortran. Fortran con el compilador Gfortran.
Fortran con el compilador Gfortran. RubnPilca
 
Instalar compiladores cruzados
Instalar compiladores cruzadosInstalar compiladores cruzados
Instalar compiladores cruzadosRubnPilca
 
Emsambladores
EmsambladoresEmsambladores
EmsambladoresRubnPilca
 
PROGRAMAS DECOMPILADORES
PROGRAMAS DECOMPILADORESPROGRAMAS DECOMPILADORES
PROGRAMAS DECOMPILADORESRubnPilca
 
Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.RubnPilca
 
Investigación Ensambladores y Decompiladores
Investigación Ensambladores y DecompiladoresInvestigación Ensambladores y Decompiladores
Investigación Ensambladores y DecompiladoresRubnPilca
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionRubnPilca
 

Más de RubnPilca (9)

TALLER DE COMPILADORES (Flex y Bison).
TALLER DE COMPILADORES  (Flex y Bison). TALLER DE COMPILADORES  (Flex y Bison).
TALLER DE COMPILADORES (Flex y Bison).
 
Compilando un programa manualmente Java, C++, Visual Basic
Compilando un programa manualmente Java, C++, Visual BasicCompilando un programa manualmente Java, C++, Visual Basic
Compilando un programa manualmente Java, C++, Visual Basic
 
Fortran con el compilador Gfortran.
Fortran con el compilador Gfortran. Fortran con el compilador Gfortran.
Fortran con el compilador Gfortran.
 
Instalar compiladores cruzados
Instalar compiladores cruzadosInstalar compiladores cruzados
Instalar compiladores cruzados
 
Emsambladores
EmsambladoresEmsambladores
Emsambladores
 
PROGRAMAS DECOMPILADORES
PROGRAMAS DECOMPILADORESPROGRAMAS DECOMPILADORES
PROGRAMAS DECOMPILADORES
 
Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.
 
Investigación Ensambladores y Decompiladores
Investigación Ensambladores y DecompiladoresInvestigación Ensambladores y Decompiladores
Investigación Ensambladores y Decompiladores
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 

Último

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 

Último (10)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Análisis sintáctico

  • 1. PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR SEDE IBARRA COMPILADORES Nombre: Rubén Pilca. Contenido Mediante un organizador gráfico defina las fases de la compilación........................................... 2 Qué operación realiza el análisis sintáctico. ................................................................................. 2 A qué se refiere la gramática, la regla de producciones, símbolos terminales y no terminales... 3 Defina un ejemplo de gramática................................................................................................... 3 Qué es un árbol de parsing y coloque un ejemplo........................................................................ 4 A qué se entiende por generación de código ............................................................................... 5 Qué es un árbol sintáctico............................................................................................................. 6 En qué consiste el análisis semántico ........................................................................................... 6 Cómo se obtiene el código intermedio......................................................................................... 7 Dentro de la compilación a que se refiere la optimización........................................................... 7 Presente un ejemplo de optimización de código.......................................................................... 7 Dentro del proceso de la compilación, qué es, para qué, y cómo se utiliza una tabla de símbolos. ....................................................................................................................................... 8
  • 2. Mediante un organizador gráfico defina las fases de la compilación. Qué operación realiza el análisis sintáctico. Es la fase del analizador que se encarga de chequear el texto de entrada en base a una gramática dada. Y en caso de que el programa de entrada sea válido, suministra el árbol sintáctico que lo reconoce.
  • 3. En teoría, se supone que la salida del analizador sintáctico es alguna representación del árbol sintáctico que reconoce la secuencia de tokens suministrada por el analizador léxico. En la práctica, el analizador sintáctico también hace: • Acceder a la tabla de símbolos (para hacer parte del trabajo del analizador • semántico). • Chequeo de tipos (del analizador semántico). • Generar código intermedio. • Generar errores cuando se producen. En definitiva, realiza casi todas las operaciones de la compilación. Este método de trabajo da lugar a los métodos de compilación dirigidos por sintaxis. A qué se refiere la gramática, la regla de producciones, símbolos terminales y no terminales. • Es una forma de describir un lenguaje formal. • La gramática permite generar cadenas a partir de un símbolo inicial y aplicando reglas que indican como ciertas combinaciones de símbolos pueden ser reemplazadas usando otras combinaciones de símbolos • Una Gramática Formal G se compone de: • Un conjunto finito de Símbolos No Terminales (N) • Un conjunto finito de Símbolos Terminales (Σ) • Un conjunto finito de Reglas de Producción (P). Cada regla tiene la forma α → β, donde α y β pertenecen a (Σ U N)*, la parte izquierda (α) debe contener al menos un símbolo no terminal • Un símbolo de Inicio (S), que pertenece a N Defina un ejemplo de gramática
  • 4. El lenguaje de una gramática G = (N, Σ, P, S), se denota como L(G), y se define como todas aquellas cadenas sobre Σ que pueden ser generadas indicando en el símbolo S, y aplicando las reglas de producción P, hasta reemplazar todos los símbolos no terminales. G: N = { S } Σ = { 0, 1 } P = { S → 0 S S → 1 S S → Є } Cadenas generadas por G:  00000  010101  0001 Qué es un árbol de parsing y coloque un ejemplo. Un parser podría ser definido como un programa que analiza una porción de texto para determinar su estructura lógica: la fase de parsing en un compilador toma el texto de un programa y produce un árbol sintáctico que representa la estructura del programa. Diferentes métodos para construir parsers, aquí presentaremos una metodología que ha sido ampliamente aceptada para ser usada en un contexto de programación funcional-perezosa. Parsers son modelados como funciones. Parsers complejos son obtenidos a partir de otros más simples haciendo un amplio uso de alto orden. Características: • Se pueden reconocer gramáticas ambiguas • Backtracking • Acciones semánticas
  • 5. A qué se entiende por generación de código La generación de código es una de las fases mediante el cual un compilador convierte un programa sintácticamente correcto en una serie de instrucciones a ser interpretadas por una máquina. La entrada en esta fase viene representada, típicamente, por un Árbol Sintáctico, un Árbol de Sintaxis Abstracta, o una Representación Intermedia; la máquina destino puede ser un microprocesador o una máquina abstracta tal como una máquina virtual o un lenguaje intermedio, legible por un humano. Compiladores más sofisticados realizan múltiples traducciones en cadena (pipelining) con el fin de poder construir código para múltiples plataformas y evitar tener que construir todas las capas del compilador. En términos más generales, la generación de código: es usada para construir programas de una manera automática evitando que los programadores tengan que escribir el código a mano. La generación de código puede realizarse en tiempo de ejecución, Tiempo de carga, o Tiempo
  • 6. de compilación. Los compiladores JIT son un ejemplo de generadores de código. Qué es un árbol sintáctico. En lenguajes formales y lingüística computacional, un árbol de sintaxis abstracta (AST), o simplemente un árbol de sintaxis, es una representación de árbol de la estructura sintáctica simplificada del código fuente escrito en cierto lenguaje de programación. Cada nodo del árbol denota una construcción que ocurre en el código fuente. La sintaxis es abstracta en el sentido que no representa cada detalle que aparezca en la sintaxis verdadera. Por ejemplo, el agrupamiento de los paréntesis está implícito en la estructura arborescente, y una construcción sintáctica tal como IF condición THEN puede ser denotada por un solo nodo con dos ramas. Esto hace a los árboles de sintaxis abstracta diferentes de los árboles de sintaxis concreta, llamados tradicionalmente árboles de parser, que son a menudo construidos por la parte parser de la traducción del código fuente y el proceso de compilación (a pesar quizás de un nombramiento no intuitivo). Una vez construido, información adicional es agregada al AST por procesamiento subsecuente, ej., análisis semántico. En qué consiste el análisis semántico Hemos aprendido cómo analizar un analizador construcciones árboles en la sintaxis fase de análisis. La llanura de análisis árbol construido en la fase en que no es, por lo general, de uso de un compilador, ya que no llevan ningún tipo de información de cómo evaluar el árbol. La producción libre de contexto gramática, lo que hace que las reglas del lenguaje, no alojar cómo interpretarlos.
  • 7. Cómo se obtiene el código intermedio. El código intermedio se puede obtener mediante la localización de espacio de memoria (en tiempo de compilación), este elimina la necesidad de un nuevo compilador completo para cada máquina de la sección de análisis mismo de todos los compiladores. El código intermedio tiende a ser código independiente de la máquina. Por lo tanto, el generador de código supone que tiene número ilimitado de almacenamiento en memoria (registro) para generar el código. Dentro de la compilación a que se refiere la optimización. La optimización se refiere a una mejora mucho más avanzada del código que ya se tiene, es decir transforma un código base en otro mucho más eficiente, reduciendo uso de recursos y espacio en memoria, aunque también se debe considerar que este viene a ser una nueva versión Presente un ejemplo de optimización de código. Implementando rutinas o algoritmos de alta calidad. El análisis de la complejidad asintótica es una alternativa viable para medir la eficiencia de un algoritmo con la cual es posible evaluar el ritmo de crecimiento de una función. Sin embargo, no siempre es una métrica adecuada. El empleo de trasformaciones que aseguren la reducción de Ct y Ce permite garantizar cierto grado de optimización en la generación de algoritmos y programas más eficientes, a continuación, se mencionan alguna de estas técnicas de optimización sobre un bloque básico de instrucciones: 1. Optimizaciones que reducen la estructura: Reutilización de expresiones comunes: regularmente tiende a favorecer el Ct
  • 8. Dentro del proceso de la compilación, qué es, para qué, y cómo se utiliza una tabla de símbolos. La tabla de símbolos es un almacén donde se encuentran guardados varios caracteres sean estos especiales o no, como por ejemplo “. , - _ * ¿ !”, la tabla de símbolos sirve para verificar en tiempo de compilación algunas secciones de código para registrarlos como separadores, operadores o símbolos especiales. La tabla de símbolos es una importante estructura de datos creada y mantenida por los compiladores con el fin de almacenar información acerca de la ocurrencia de diversas entidades, tales como nombres de variables, nombres de funciones, objetos, clases, interfaces, etc. esta se utiliza en el análisis y la síntesis de un compilador.