Commit Graph

24 Commits

Author SHA1 Message Date
Elf M. Sternberg 38fa5ae125 [feat] The interpreter works and all the tests run without crashing. 2015-08-03 07:31:22 -07:00
Elf M. Sternberg 3e17e69746 [refactor] Got throw/catch working with self-evaluating expressions
This was a pain point.  I had hacked the "names" of symbols into the
throw/catch representation, never appreciating how badly I was screwing
up my understanding of LiSP.  The symbols are supposed to evaluate
to something.  When they're self-evaluating expressions (strings and
numbers), those become the keys in the block stack that matter.  Getting
SEE's right, whether they're quoted or not, was really signficant.

This is cool.  Now, on to rewind/protect!
2015-07-31 07:34:12 -07:00
Elf M. Sternberg 675577431d [refactor] The great conversion continues. 2015-07-30 07:29:39 -07:00
Elf M. Sternberg 501ac5fe72 [refactor] Knuckled under and made nodes a Javascript type 2015-07-28 16:51:01 -07:00
Elf M. Sternberg 746f92fcdb [refactor] Extended node refactor to Chapter 3 2015-07-27 21:53:14 -07:00
Elf M. Sternberg 5bba101ee2 [refactor] Custom reader types have unique Javascript equivalents now. 2015-07-24 07:44:04 -07:00
Elf M. Sternberg 39f6a09d51 [feat] Most throw/catch conditions work.
I've hit a snag with respect to self-evaluating objects, and the ad-hoc evaluation of
program labels is messed up because of it.  I'm going to have to refactor.
Oddly enough, the strategy I hit upon appears to be the same one found
in Wisp, rather than Clojurescript.

This may actually be an internal detail; the version rendered for the user may actually
not care.  I hope not; the performance could become hairy pretty quickly.
2015-07-21 16:16:13 -07:00
Elf M. Sternberg 5e8172d233 [feat] labeled 'block' and 'return' added! Woot! 2015-07-08 20:35:55 -07:00
Elf M. Sternberg abf6c4ec50 [chore] Lint-picked versions that pass all unit tests. 2015-07-08 15:14:05 -07:00
Elf M. Sternberg bc857b19f1 [feat] The CPS-based interpreter from Chapter 3 of LiSP, with tests.
This passes all the basic tests provided from Lisp In Small Pieces,
chapter 3.  This is a functional LiSP interpreter with limited ability
and very little bug handling, but it's a solid implementation that
matches the specification and passes the tests provided for the CPS
interpreter.

This commit does *not* provide any of the continuation variants
described in the book; it is only the base interpreter.
2015-07-07 19:57:35 -07:00
Elf M. Sternberg 8572d84817 Merge fix. 2015-07-04 15:28:56 -07:00
Ken Elf Mathieu Sternberg 254c1c0f60 FEAT: Completed chapter 3 interpreter implementation. 2015-07-03 15:45:37 -07:00
Elf M. Sternberg f711432626 Updating. 2015-07-03 12:58:08 -07:00
Elf M. Sternberg c2ff0a3d88 Added some comments. 2015-07-02 17:21:50 -07:00
Ken Elf Mathieu Sternberg 51ae30e31f Thinking about that chapter 3 interpreter from the book. 2015-07-01 17:38:31 -07:00
Ken Elf Mathieu Sternberg 368abbf827 Moving stuff around. Broke tests. Fixed tests. 2015-07-01 13:55:22 -07:00
Ken Elf Mathieu Sternberg fc0ad0c05a Update. 2015-07-01 13:32:07 -07:00
Ken Elf Mathieu Sternberg 291f9771f5 Found the disconnect. As always, a type issue. Dammit. 2015-07-01 13:24:45 -07:00
Elf M. Sternberg 9d9624632a Fixed test pass. Almost have CPS running. 2015-06-30 08:05:58 -07:00
Elf M. Sternberg b8a19d5c79 Improving test results. 2015-06-17 15:34:11 -07:00
Elf M. Sternberg f17e74207e Re-arranging for Mocha. 2015-06-17 12:34:31 -07:00
Elf M. Sternberg 647dfbbc14 Reverting to a simpler CPS style. 2015-06-10 17:28:47 -07:00
Elf M. Sternberg 74579b9fa0 Added a lot of comments to the interpreter, clearing up a confusion in my mind. 2015-06-01 07:40:15 -07:00
Elf M. Sternberg 40a4d5ca19 Prepping for Chapter 3. 2015-05-21 13:02:39 -07:00