le, ei, profesor ramón castro liceaga universidad latina (unila) traductores y analizador...

18
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.

Upload: esperanza-castro-pena

Post on 02-Feb-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

LE, EI, Profesor Ramón Castro Liceaga

UNIVERSIDAD LATINA (UNILA)

TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.

Page 2: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

¿ Qué es un LP ?

• Computación– Máquina Turing, tesis de Church

• Legibilidad por parte de la máquina• Legibilidad por parte del ser humano

Definición: Un lenguaje de programación es un sistema notacional para describir computaciones de una forma legible tanto para la máquina como para el ser humano.

Page 3: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Características

• Eficiencia• Expresividad• Capacidad de mantenimiento• Legibilidad• Confiabilidad • Seguridad• Simplicidad• Productividad

Page 4: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Abstracciones

• Clases: Datos y control• Niveles: básicas, estructuradas y unitarias

Abstracciones de datos:

● Básicas: tipos básicos (enteros, reales, ...)● Estructuradas: tipos estructurados (arreglos, registros)● Unitarias: Tipos abstractos de datos (TDAs), paquetes,

módulos, clases, componentes

Page 5: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Abstracciones• Abstracciones de control

– Básicas: asignación, goto– Estructuradas: condicionales e iteradores– Unitarias: paquetes, módulos, hilos y tareas.

Un lenguaje de programación es completo en Turing siempre que tenga variables enteras y aritméticas, y que ejecute enunciados en forma secuencial, incluyendo enunciados de asignación, selección e iteración.

Page 6: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Paradigmas de programación• Imperativo

– modelo de Von Neuman, cuello de botella de Von Neuman

• Orientado a Objetos– TDAs, encapsulación, modularidad, reutilización

• Funcional – noción abstracta de función, cálculo lambda,

recursividad, listas

• Lógico– Lógica simbólica, programación declarativa

Page 7: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Elementos del lenguaje

• Sintaxis (estructura)– Gramáticas libres de contexto, estructura

léxica, tokens

• Semántica (significado)– Lenguaje natural– Semántica operacional– Semántica denotacional

Page 8: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Traducción del lenguaje• Traductor es un programa que acepta otros

programas escritos en un lenguaje y:– los ejecuta directamente (interprete)– los transforma en una forma adecuada para su

ejecución (compilador).

entrada

código fuente

salidaintérprete

Page 9: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Elementos de Traducción

• Pseudointérpretes: intermedio entre interprete y compilador: lenguajes intermedios

• Operaciones de un traductor: analizador léxico (tokens), analizador sintáctico, analizador semántico, preprocesador

código fuente

traducciónadicional

compilación

código objeto

código ejecutable

Page 10: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Traducción• Tiempo de compilación y tiempo de ejecución• Propiedades estáticas: tiempo de compilación• Propiedades dinámicas: tiempo de ejecución• Recuperación de errores (compilación y

ejecución)• Eficiencia y optimización (compilación o

ejecución)

Page 11: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Modelos formales de traducción• La definición formal de la sintaxis de un lenguaje de programación se conoce

como una gramática, en analogía con la terminología común para los lenguajes naturales.

• Una gramática se compone de un conjunto de reglas (llamadas producciones) que especifican las series de caracteres (o elementos léxicos) que forman programas permisibles en el lenguaje que se está definiendo.

• Una gramática formal es simplemente una gramática que se especifica usando una notación definida de manera estricta. Las dos clases de gramáticas útiles en tecnología de compiladores incluyen la gramática BNF (o gramática libre del contexto) y la gramática normal.

• Gramáticas BNF.- Cuando se considera la estructura de una oración en español, se le describe por lo general como una secuencia de categorías. Es decir, una oración sencilla se suele dar como. sujeto / verbo / complemento de lo cual son ejemplos:

• La niña / corrió / a casa.• El muchacho / prepara / la comida.

Page 12: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Fases de Compilación

En general podemos mencionar seis fases de la compilación.

La primera fase, el análisis lexicográfico, identifica tokens (las “palabras”) en un programa.

La segunda fase el análisis sintáctico, obtiene la estructura de un programa por medio de su gramática.

La tercera fase, análisis semántico, finaliza el análisis del programa y lo traduce a una forma intermedia para las fases de síntesis.

La cuarta fase , optimización, encuentra las maneras de reducir el tiempo o el espacio a utilizar cuando el programa traducido es ejecutado.

La quinta fase, preparación para la generación del código, asigna memoria y registros para mantener los valores y direcciones de las variables y expresiones en el tiempo de ejecución.

La sexta fase, generación de código, produce código en lenguaje ensamblador a partir de la representación intermedia (optimizada).

Page 16: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Funciones de Analizador léxico

Page 17: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Conceptos de tokens, patrones y lexemas

Page 18: LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO

Complejidad computacional.

• Se mide por la cantidad de espacio y tiempo que consume. La computación eficiente requiere cadenas de algún lenguaje y puede depender del tamaño o longitud de la cadena de entrada.