Commit Graph

17 Commits

Author SHA1 Message Date
Elf M. Sternberg 00fbe22583 [feat] Chapter 4 is done. 2015-08-16 22:21:10 -07:00
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 5d9703aa33 [refactor] A new representation for symbols to handle quoted code
This is a big refactoring; the parser is now modal, to handle either
complex Node objects that carry around a lot of state with them, or
simpler objects that represent the McCarthy-style IST.  I'm still
feeling my way through the subject material.  The node construction
is such pure artifice I feel silly keeping it, and may end up revising
it (again).

The nice thing is, everything goes through evaluate.  Almost no other
code needs to know anything at all about the shape of the Nodes themselves;
it all makes assumptions based on the return value (or continuation passed)
by evaluate.
2015-07-27 21:27:21 -07:00
Elf M. Sternberg 02f79c4255 [refactor] Struggling to get self-evaluating components working. 2015-07-26 14:59:49 -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 bb0c06b073 Reverting back to working version. 2015-07-23 16:21:28 -07:00
Elf M. Sternberg e6b4a73559 Fail. 2015-07-23 16:17:20 -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 de3aa61e22 [test] Added Coffeelint to list to of features. 2015-07-08 15:04:32 -07:00
Elf M. Sternberg 560bcd4dda [bug] Fixed the reader to handle dotted lists.
This support is ugly and probably incorrect, but it passes all the current
tests and handles test cases in the original documentation.
2015-07-07 19:56:11 -07:00
Ken Elf Mathieu Sternberg 1c4975067d TEST: Add tests for the reader (!), which I had forgotten.
This also adds a number of accesory functions necessary for rationalizing
the record structure of an object in the lex/parse phase into something
more lisp-like.  There's a metadata issue here that I'm not quite wrapping
my head around.
2015-07-03 15:47:04 -07:00
Elf M. Sternberg 9d9624632a Fixed test pass. Almost have CPS running. 2015-06-30 08:05:58 -07:00
Elf M. Sternberg f17e74207e Re-arranging for Mocha. 2015-06-17 12:34:31 -07:00
Elf M. Sternberg 2bc6312415 Moving to a more nuanced naming scheme. What happens next will amaze you! 2015-05-20 16:52:36 -07:00