Skip to content
This repository was archived by the owner on Jun 21, 2025. It is now read-only.

Theory notes, exercises, and project - Language and Compilers course - Computer Science @ FAMAF (UNC)

Notifications You must be signed in to change notification settings

helcsnewsxd/language-and-compilers-subject

Repository files navigation

Note

This repository contains theoretical notes, practical exercises, and a final project developed for the Language and Compilers course of the Computer Science degree at FAMAF – Universidad Nacional de Córdoba.

All materials are in Spanish, as they were written for academic use and submission.

Lenguajes y Compiladores

El presente repositorio contiene todo el material correspondiente a la cursada de la materia de Lenguajes y Compiladores de 5to año de la Licenciatura en Ciencias de la Computación de FAMAF durante el año 2025.

Información general

Los temas que trata la materia se pueden ver en el programa de la misma. Respecto al material, este está basado en el apunte de la materia y en el libro Theories of Programming Languages de John C. Reynolds (1998).

El equipo docente está conformado por:

  • Miguel Pagano
  • Matilda Steinberg
  • Martín Vilela Demetrio

Contenido

Teórico

Temas Descripción Filminas Apunte
Introducción a la sintaxis y la semántica de lenguajes Gramáticas abstractas
Función semántica
Variables y ligadura
(1)
(2)
PDF
El problema de dar significado a la recursión Órdenes parciales y dominios
Morfismos y funciones continuas
Teorema del menor punto fijo
(1)
(2)
PDF
Ejemplo
Lenguaje imperativo simple LIS
Propiedades de la semántica: TC, TR, TS, LS
(1)
(2)
PDF
LIS con fallas, semántica denotacional y operacional LIS con fallas
Semántica operacional
Teorema de Corrección
(1)
(2)
PDF
LIS con input y output Más sobre dominios
Input y output
(1) PDF
Cálculo Lambda Sintaxis
Reducción
Evaluación
Semántica Denotacional (normal, eager)
(1) PDF
Lenguajes Aplicativos Evaluación eager
Evaluación normal
Tuplas
Semánticas denotacionales en profundidad
Recursión
(1) PDF
Lenguajes Iswim-like (Des)Referencia
Asignación
Igualdad
Fragmentos imperativos
Estado y semántica operacional
Fragmento aplicativo
Semántica denotacional
(1) PDF

Práctico

Guía Enunciados Soluciones
1 PDF PDF
2 PDF PDF
3 PDF PDF
4 PDF PDF
5 PDF PDF
6 PDF PDF
7 PDF PDF
8 PDF PDF
9 PDF
10 PDF
11 PDF

Proyecto

El proyecto de la materia consistió en investigar y realizar un informe de un tema relacionado a esta (Lenguajes y Compiladores) a libre elección en base a nuestros gustos. En general, podía ser un tema específico del libro (un capítulo) o un tema libre. Nosotros elegimos Decompilación.

El informe, caso de uso y presentación se encuentran en este repositorio público donde se hace una vista general de la arquitectura de dcc, uno de los primeros decompiladores (hecho por Cifuentes y Gough), luego por las mejoras o nuevas ideas del esquema dinámico con BinRec y finalmente una presentación de herramientas de decompilación y análisis de binarios actuales junto con algunas aplicaciones y una demo en Ghidra.

Laboratorio

El laboratorio de la materia consistió en realizar un intérprete del lenguaje que quieras en el lenguaje que prefieras. Podías hacerlo de forma libre o siguiendo los laboratorios de años pasados donde el intérprete era sobre LIS hecho en Haskell.

En mi caso, hice un intérprete (en C++) de una reducción de C/C++ con tipado dinámico (y otras variantes), basándome en el libro de Crafting Interpreters. Agregué unit testing con Catch2 y documentación autogenerada con Doxygen. El repositorio puede encontrarse aquí. Es probable que se sigan viendo cambios luego de la entrega del laboratorio (1era release) porque me gustó mucho para extenderlo como hobby.

About

Theory notes, exercises, and project - Language and Compilers course - Computer Science @ FAMAF (UNC)

Topics

Resources

Stars

Watchers

Forks

Languages