# Miércoles 2023/03/01
# Summary
Last week with Israel. Extending Mocking, Compiler runtime support, Comma operator, IDs, print, assignment, reserved words, lexical ambiguities, The Art of Language Design, Scope Analysisis, Transforming the AST
# Entrega de Prácticas
DANGER
- No olviden subir el zip de entrega de la práctica al campus virtual
- Cambios en el Plan Docente inicial: El profesor Casiano Rodríguez pasa a encargarse de las prácticas a partir de la próxima semana
# Extendiendo la calculadora
Queremos extender nuestra calculadora para que soporte operaciones de coma, identificadores, asignación y print
de manera que podamos hacer algo como esto:
➜ calc2js-solution git:(develop) ✗ cat test/data/input/test-id.calc
a = 4+i,
b = 2-2i,
print(a*b)
➜ calc2js-solution git:(develop) ✗ bin/calc2js.mjs test/data/input/test-id.calc
#!/usr/bin/env node
const Complex = require("/Users/casianorodriguezleon/campus-virtual/2223/pl2223/practicas/drafts/calc2js-solution/src/complex.js");
const print = x => { console.log(x); return x; };
let $a, $b;
($a = Complex("4").add(Complex("i")), $b = Complex("2").sub(Complex("2i"))), print($a.mul($b));
➜ calc2js-solution git:(develop) ✗ bin/calc2js.mjs test/data/input/test-id.calc | node -
{ re: 10, im: -6 }
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
En esta clase hablamos de:
- Introduciendo el operador de coma
- Identificadores
- Expresiones de asignación
print
: tratamiento de las palabras reservadas- Tratamiento de los números complejos: ambiguedad del
+
y como resolverla a nivel léxico - El arte de diseñar un lenguaje
# AST types
# Related labs
Prácticas en curso: