play-lang
v1.0.3
Published
Play is a small programming language in the spirit of Python and JavaScript. It is used as a test bed for experimental debugger and compiler techniques.
Downloads
4
Readme
Play Programming Language
Play is small programming language intended for used as a test bed for various compiler, runtime, and debugger technologies. It uses nearley.js and moo.js for building the parser.
To learn more about how Play is built:
- See Play's predecessor: fun-lang.
- Watch this video series to learn how to make a programming language.
Videos about the Time Traveling Debugger
The current major experimental feature I am going for is the time traveling debugger, to learn more about it, you can watch these videos:
- Time Traveling Debugger - Part 1
- Time Traveling Debugger - Part 2
- Time Traveling Debugger - Part 3
- Dream of the Time Machine
- Implementing Closures in Play Lang Playlist
Todo
- do some code challenges on CodeWars, etc
- gather closure info function, doesn't work with the loop iterator variable of a for loop
- make some toy programs
- anonymous functions as closure providers
- use static analysis to check for references of undefined functions
- debugger: don't show vdom?
- clean up closures when functions are no longer referenced
- clean up unused heap variables?
- heap display goes into disarray when there is too much data
- bug: why is styles object nested in dom.play example?
- numbers nested inside objects are always being interpreted as heap IDs, we may need ref objects to * distinguish refs
- there seems to be a bug with VDOM when changes styles across multiple calls to setStyle()
- Canvas API
- when scrubbing the timeline, have the code display pan to the selected line
- syntax highlighter for Atom and/or VS Code
Done
- suspend execution while in debugger mode
- display closure variables in stack frame within debugger
- UI for time-traveling (1st draft done)
- DOM events
- make closures work...