Como vamos
- Representación recursiva de datos
- Representación inductiva
- Representación mediante gramáticas
- Creación de programas para datos recursivos
- Considerar el caso base
- Considerar que el caso recursivo estructura la salida y paulatinamente nos lleva al caso base
- TAD: Tipo abstracto de datos
- Implementación y la interfaz
- Interfaz
- Constructores: Crear un elemento que pertenece al TAD
- Observadores
- Predicados: Nos permite conocer si un elemento pertenece a una variante del TAD
- Extractores: Permite extraer información dentro de un TAD
- Diseño de TADs
- Incluya un constructor para cada variante de cada tipo de dato
- Incluya un predicado para cada variante de cada tipo de dato
- Incluya un extractor para cada parte de cada variante de cada tipo de dato
- Representaciones de TADs
- Listas
- Procedimientos
- Datatypes (AST arboles de sintaxis abstracta)
- Alcance y ligadura de variables
- let Alcance el bloque (funcional)
- let* Alcance secuencial (imperativo)
- letrec Alcance recursivo, solo para funciones
- Define-datatype
- Permite AST, que es una representación dependiente de la gramática
- Usamos cases para trabajar los datatypes
- Un AST mapea los elementos pertenecientes a una gramática
- Sintaxis concreta y abstracta
- Concreta: Es el código fuente
- Abstracta: Es el AST obtenido desde el código fuente
Temas
- Interpretación y compilación
- Parser y scanner
- Especificacion lexica y gramatical
- Interpretación y compilación
- Interprete simple
- Resumen