# Lunes 2023/03/06

# Summary

Compiler runtime support, The art of language design, Scope Analysis, Transforming the AST

# Announcements

DANGER

No es necesario hacer el desarrollo en la máquina del iaas. Se recomienda usar su propio portátil o Codespaces.

/images/convocatoria-marzo.png (opens new window)

# 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

# ast-types

En esta clase hablamos de:

  • Runtime support and Dependency Analysis
  • ast-types
    • AST builders
    • AST path objects
    • parentpath vs parent
    • replace, prune, shift, insertBefore, insertAfter, insertAt
    • Scope Analysis

See the themes:

Prácticas en curso:

# Temas relacionados

# Video

Last Updated: 3 months ago