Skip to main content
Version: 2022_2

Laboratorio 2: Lexers

Para más detalles, visitar compiladores.github.io.

Quickstart#

Editor#

Se recomienda usar vscode y la extensión para deno. Para esto apretar Ctrl+P y luego pegar

ext install denoland.vscode-deno

Deno#

Existen 2 alternativas para instalar deno:

  1. Seguir las (instrucciones oficiales)[https://deno.land/#installation] para instalar el comando deno
  2. Descargar el último release desde el repositorio oficial de deno, descomprimir el binario en cualquier lugar y luego configurarlo en ./.vscode/settings.json de la siguiente manera (reemplazando ./deno por la ruta al binario)
mkdir .vscodeecho '{    "deno.path": "./deno", /* DENO NO FUE INSTALADO SINO QUE SE DESCARGÓ EL BINARIO EN ESTA UBICACIÓN */    "deno.enable": true /* UTILIZAR EL LANGUAGE SERVER DE DENO EN VEZ DE TYPESCRIPT "CÓMUN" */}' > .vscode/settings.json

Dependencias#

Deben estar disponibles los comandos flex y gcc.

En ubuntu, gcc y flex se consiguen con el comando

sudo apt install flex build-essential

Cómo hacer el laboratorio#

Este laboratorio se compone de 2 conjuntos de 4 ejercicios similares. Los ejercicios numerados 00 se entregan ya resueltos como referencia.

El laboratorio consiste en completar los archivos ex.ts ó ex.flex de cada carpeta de forma que pasen los tests de test.ts.

Cada carpeta tiene los siguientes archivos

  • tokenType.ts: un tipo enumerado que representa los tipos de tokens
  • ex.ts ó ex.lex: una descripción de un lexer. En el caso de los lexers manuales, se describe un DFA de forma similar al laboratorio 1. En el caso de los lexers automáticos, se debe incluir un archivo de flex que pueda compilarse a un programa C que emita cada token en una línea separada.
  • test.ts: archivo de pruebas que deben pasar. Además tienen en un comentario la descripción del lexer que deben escribir.

Consejos importantes#

  • Leer la introducción teórica, es sintética y está pensada para facilitarles el desarrollo del laboratorio.
  • Para los ejercicios manuales: La experiencia demuestra que son muchísimo más simples si escribes el diagrama del autómata antes de escribir la función de transición.
  • Para los ejercicios automáticos (lex/flex): en algunos ejercicios hay que agregar reglas adicionales para emitir errores adicionales. Algunos tokens inválidos están implícitos en la descripción "tabular" de los lenguajes.

Criterios de evaluación#

La evaluación es objetiva. Al presentar el laboratorio se dará una fecha recomendada de entrega. Al entregar el laboratorio se puntuará de la siguiente forma.

Parámetropuntaje
se entregó el TP6
El último commit del PR tiene fecha previa a la recomendada+2
Se agregaron 5 tests+2
Ejercicio 01 entregado antes del fin de la clase+1