Laboratorio 2: Lexers
Para más detalles, visitar compiladores.github.io.
#
Quickstart#
EditorSe recomienda usar vscode y la extensión para deno. Para esto apretar Ctrl+P
y
luego pegar
ext install denoland.vscode-deno
#
DenoExisten 2 alternativas para instalar deno:
- Seguir las (instrucciones oficiales)[https://deno.land/#installation] para
instalar el comando
deno
- 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
#
DependenciasDeben 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 laboratorioEste 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 tokensex.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 deflex
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ónLa 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ámetro | puntaje |
---|---|
se entregó el TP | 6 |
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 |