pseudocode 0.1.7

AP CSP Pseudocode interpreter (rough cut)
Documentation

AP Pseudocode Interpreter

Includes:

  • Rust library
  • Command line interface
  • Web interface

Building

Web Interface

Need installed: cargo, rust, npm

  1. Install wasm-pack
  2. Install cargo-generate:
    cargo install cargo-generate
    
  3. Initialize javascript setup from inside web/www
    cd web/www
    # if doing for first time
    #npm init wasm-app www
    
    cd www
    npm install
    
  4. Run with
    npm run start
    

Serving Statically

It is possible to build this so that you can serve all the file statically. First, run npm run build to put the files in web/www/dist, then serve the dist directory. Make sure that your webserver (e.g. nginx) is attaching the application/wasm MIME type for the .wasm resources. You can enforce this in nginx by adding the following line to /etc/nginx/mime.types:

    application/wasm    wasm

TODO

  • list:
    • need to implement lists as a reference type
    • rather than embedding the backing Vec inside the Value enum, embed a reference to the Vec that is stored in a Scope environment
    • this would require expanding the Scope nevironment to hold references, likely in a separate dictionary?
  • negative numbers
  • negation
  • NOT
  • native functions: implement in Rust
    • CONCAT
    • SUBSTRING
    • RANDOM
    • [ ] DISPLAY (?)
  • robot stuff
  • stepped execution