This is great. I also implemented a JS stepping interpreter in JS [1] but using a different approach. I let the host JS environment do parsing and evaluation. I just use generators to pause executions and then pass the code through a ES6 generator transpiler[2]. See the demo[3].
[1] http://amasad.me/2014/01/06/building-an-in-browser-javascrip... [2] https://github.com/facebook/regenerator [3] http://debugjs.com/#example