miércoles, 6 de abril de 2016

1. Introducción a La Teoría de Compiladores

La Teoría de Compiladores es un mundo apasionante dentro de la informática. Pero a la vez complejo. El desarrollo de un compilador para un lenguaje medianamente potente es una tarea dura y costosa, tanto en tiempo como en recursos.

Pero al tiempo de ser una tarea costosa, puede ser muy gratificante, al ampliar campos básicos de la informática como son la teoría de autómatas, de lenguajes, estructura y arquitectura de computadoras, lenguajes de programación y algunos otros más. 

Al construir un compilador, el desarrollador debe adentrarse en aspectos específicos de lo que es un computador y de lo que es un lenguaje de programación. Esto le da una visión profunda de aspectos clave del mundo de la informática.


Silabo de la Asignatura 

martes, 5 de abril de 2016

2. Conceptos Generales

Lenguajes de Programación

La programación de computadoras se realiza en los llamados lenguajes de programación, éstos posibilitan la comunicación entre el programador y la computadora, a través de un conjunto de instrucciones u órdenes especificadas por el lenguaje.

Un lenguaje de programación puede definirse como “una notación formal para describir algoritmos o funciones que serán ejecutados por el ordenador”. Según su grado de independencia de la maquina, los lenguajes de programación se clasifican en:
  • Lenguaje maquina: Es la notación que entiende directamente el ordenador, por eso sus instrucciones están escritas con código binario. El repertorio de sus instrucciones, así como la estructura de estas, están ligadas directamente a la arquitectura de la maquina. 

lunes, 4 de abril de 2016

3. Autómatas de Estados Finitos

Aplicación de los autómatas en los procesadores de lenguaje

La tarea de comprobar si una sentencia pertenece o no a un determinado lenguaje se encomienda a los autómatas. En el campo de estudio de los traductores, compiladores, procesadores e intérpretes los autómatas se utilizan como reconocedores de lenguajes, que dada una cadena de símbolos indican si dicha cadena pertenece o no al lenguaje.

Una cadena pertenece a un lenguaje si el autómata reconocedor de dicho lenguaje lo toma como entrada, y partiendo del estado inicial  transita a través de varias configuraciones hasta que alcanza el estado final.

Autómatas finitos

Un autómata finito es un conjunto de nodos y aristas que representan trayectorias para generar una expresión bajo un alfabeto. Un diagrama de transición es un autómata finito.




Existen dos tipos autómatas finitos, los cuales son:

  • Autómatas finitos deterministas (AFD)
  • Autómatas finitos no deterministas (AFND) 

Autómatas finitos deterministas (AFD) 

Definición. Una máquina de estados finitos M es un quíntuplo (K, Σ, δ, s, F), donde:

sábado, 2 de abril de 2016

5. Analizador Léxico


Léxico

El léxico de un lenguaje de programación u otro lenguaje usado en la informática está constituido por todas las palabras y símbolos que lo componen. En los lenguajes de programación el léxico lo constituyen todos los elementos individuales del lenguaje, denominados frecuentemente “tokens”. Así son tokens: las palabras reservadas del lenguaje, los símbolos que denotan los distintos tipos de operadores, identificadores (de variables, de funciones, de procedimientos, de tipos, etc), separadores de sentencias, y otros símbolos empleados en las distintas construcciones del lenguaje.

Análisis Léxico 

Un programa fuente es una serie de símbolos que representan las construcciones del lenguaje tales como variables, etiquetas, palabras reservadas, constantes, operadores, entre otros. El programa fuente se trata inicialmente con el analizador léxico, el cual tiene el propósito de agrupar el texto en los diferentes tipos de patrones que conforman las