Commit Graph

57 Commits

Author SHA1 Message Date
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 c816fa9eb8 [chore] cleaned up after a lint pass 2015-07-08 20:46:36 -07:00
Elf M. Sternberg 1c113a2f7a [test] Tests for 'block' and 'return' added. All tests passing. W00t! 2015-07-08 20:36:56 -07:00
Elf M. Sternberg 5e8172d233 [feat] labeled 'block' and 'return' added! Woot! 2015-07-08 20:35:55 -07:00
Elf M. Sternberg 07a800cfbf [docs] Updated blog message with addenda from site. 2015-07-08 15:16:59 -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 111ad5d8dc [test] Coffeelint configuration file. 120 character line length is okay by me. 2015-07-08 15:06:06 -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 8cf6e4fb5b [feat] Added 'watch' to list of Makefile targets
'Watch' depends upon the inotify toolkit; it will automagically
run the test suite locally every time you press "save".
2015-07-08 14:47:04 -07:00
Elf M. Sternberg b9a60e3fed [doc] Including blog entry for Chapter 3
As a chronic blogger, I've been updating my journey on my website
at http://elfsternberg.com.  This is where the original markdown
files are kept.
2015-07-08 14:45:59 -07:00
Elf M. Sternberg 1a777acb4c [docs] Including Jenkins configuration file
This file is highly localized for my personal set-up.  If you want to
run Jenkins yourself, you *will* have to edit it, or use it as an example
in your own set-up.
2015-07-07 20:27:11 -07:00
Elf M. Sternberg 7bd66b6080 [docs] That *is* coffee! 2015-07-07 20:22:19 -07:00
Elf M. Sternberg 983f29c1eb [docs] Updating the README to be more... well, just *more* 2015-07-07 20:19:04 -07:00
Elf M. Sternberg b4f5add0b8 [docs] Updating the README to be more... well, just *more* 2015-07-07 20:17:57 -07:00
Elf M. Sternberg 1676584db2 [docs] Updating the README to be more... well, just *more* 2015-07-07 20:17:13 -07:00
Elf M. Sternberg fb7dab6b33 [chore] Removed a symbolic link that went nowhere. 2015-07-07 20:01:59 -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 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
Elf M. Sternberg 8572d84817 Merge fix. 2015-07-04 15:28:56 -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
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 bd9cb09298 Unicode seems borked on my desktop. Sorry about this. 2015-07-01 13:32:50 -07:00
Ken Elf Mathieu Sternberg fc0ad0c05a Update. 2015-07-01 13:32:07 -07:00
Ken Elf Mathieu Sternberg cbd2c168da Trying to keep test artifacts out of the repo. 2015-07-01 13:25:34 -07:00
Ken Elf Mathieu Sternberg abe220ac1f Not needed. 2015-07-01 13:25:13 -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 df6f3f17ae Elf clarified test messages to distinguish interpreter cores. 2015-06-17 15:35:16 -07:00
Elf M. Sternberg b8a19d5c79 Improving test results. 2015-06-17 15:34:11 -07:00
Elf M. Sternberg a5e4558df9 Back to JUnit. 2015-06-17 13:55:58 -07:00
Elf M. Sternberg 8c9f6622d4 A different Jenkins integration. 2015-06-17 13:49:15 -07:00
Elf M. Sternberg b8909fcfd1 That's not coffee. 2015-06-17 13:47:15 -07:00
Elf M. Sternberg 1127498546 Added jenkins-style reporatge. 2015-06-17 13:46:22 -07:00
Elf M. Sternberg 3238844835 Added tests. 2015-06-17 13:41:32 -07:00
Elf M. Sternberg b8aa463993 Updated. 2015-06-17 13:02:37 -07:00
Elf M. Sternberg cff2d5cb97 Updated interpreter. Chapter 3 is still underway. 2015-06-17 12:37:02 -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 c0bcc268a0 Commented invoke() usage. 2015-06-01 10:08:17 -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
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
Elf M. Sternberg 11e1ed7cf4 It works recursively. This will restore your faith in humanity!
I spent far too much time debugging an issue with metacadr (see the
cons-list commits for details), but this now successfully recurses
and all of its code paths are exercised by the factorial/fibonacci
exercises.  This is a Coffeescript implementation of the language
described at the end of chapter 1 of Lisp In Small Pieces.

Also, added a syntax-aware pretty printer.  It's very primitive, but
it's good enough for some debugging.
2015-05-20 15:47:51 -07:00
Elf M. Sternberg 570fb2b1df Some renaming; one major bugfix, using cons-lists instead of a local library. 2015-05-20 09:41:30 -07:00
Elf M. Sternberg 86efa8c09a Coffeescript attempt. 2015-05-13 22:28:55 -07:00
Elf M. Sternberg 0551a6fd4c Chapter 3 stub. 2015-05-13 22:23:30 -07:00