Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
50 most recent check-ins
2014-07-13
| ||
20:17 | Add vector-set! Leaf check-in: b291ad2347 user: martin tags: trunk | |
2014-07-12
| ||
02:17 | Add vector and vector-ref primitives. check-in: dc5c23792e user: martin tags: trunk | |
01:50 | Add knowledge of vectors to GC check-in: df3488f125 user: martin tags: trunk | |
01:42 | Work on adding vectors. check-in: 5dc48473df user: martin tags: trunk | |
2014-07-11
| ||
03:42 | Add comments and fix typos. check-in: c177552a27 user: martin tags: trunk | |
2014-04-03
| ||
04:50 | Replace ADD_SPEC() and ADD_PRIM() macros with add_special() and add_primitive() functions. check-in: 712cbde540 user: martin tags: trunk | |
2014-04-01
| ||
06:58 | Add t_sexp accessor functions equivalent to the macros currently used. check-in: c4b290d63b user: martin tags: trunk | |
2014-03-31
| ||
21:48 | Bump CONF_SYMBOL_TABLE_SIZE to 509. check-in: cb4e96f337 user: martin tags: trunk | |
20:38 | Add boolean type and use Scheme style #t/#f/() rather than CL style t/nil. check-in: 256a08c5d1 user: martin tags: trunk | |
05:04 | PRIMITIVES_H -> PRIMITIVE_H in primitive.h check-in: 0d9d2b515a user: martin tags: trunk | |
04:41 | Add IS_TRUE(); move eq()/eqv()/equal() from primitives.c to types.c and rename them with sexp_ prefix. check-in: 2b0c6d2de6 user: martin tags: trunk | |
01:49 | Add error primitive. check-in: 349218d1a6 user: martin tags: trunk | |
01:37 | Lose enum sexp_error_type. check-in: 50db7645f1 user: martin tags: trunk | |
01:30 | Work on tests a bit. check-in: db6d27e7ad user: martin tags: trunk | |
2014-03-29
| ||
22:00 | Add prim_write(); Get test_display() working without output to stdout; display() -> output() + sexp_display() and sexp_write() as wrappers for it. check-in: b586b0ec06 user: martin tags: trunk | |
17:47 | Add IS_OUTPUT_FILE() and IS_INPUT_FILE() check-in: 0514112be4 user: martin tags: trunk | |
17:15 | display() takes a t_file argument, prim_display() takes it optionally. check-in: d74d629074 user: martin tags: trunk | |
03:36 | Comments/whitespace. check-in: b3f4febbf8 user: martin tags: trunk | |
2014-03-27
| ||
13:43 | Handle nil after dot, lose read_string(), read_symbol(), and try_as_number(), more descriptive errors, more comments. check-in: aa085c9d76 user: martin tags: trunk | |
06:20 | Whitespace and a comment. check-in: 972c4c3891 user: martin tags: trunk | |
05:53 | More documenting and some reorganizing for parse.c, parse_list() now does all the work to make sure lists don't contain TOK_ERROR. check-in: 034b668672 user: martin tags: trunk | |
2014-03-26
| ||
05:47 | Add comments for procedures in hash_table.c check-in: a0e4c42a5b user: martin tags: trunk | |
2014-03-25
| ||
11:28 | spec_read() -> prim_read(); spec_display() -> prim_display(). check-in: caf71bf429 user: martin tags: trunk | |
06:54 | t_state's have in/out/err members for stdin/stdout/stderr SEXP_FILEs; spec_read/sexp_read_file default to ts->in if not given an arugment. check-in: 567ffebed9 user: martin tags: trunk | |
01:48 | Start adding SEXP_FILE. check-in: 5316bfaff9 user: martin tags: trunk | |
2014-03-24
| ||
23:39 | +comments for eval.c check-in: eb56028456 user: martin tags: trunk | |
22:56 | Get rid of -Wno-switch-enum in Makefile. check-in: 5b62b16fe6 user: martin tags: trunk | |
2014-03-23
| ||
11:06 | Teach display() about errors; make_symbol() always tries to add to the symbol table; symbol_table_remove() checks that it's only going to remove the _exact_ symbol it was told to, not one that just happened to be string=?; Break up primitive_tests() into several subroutines, each calling gc_collect(), which exposed the problem with symbol_table_remove(). check-in: a2831444ef user: martin tags: trunk | |
2014-03-22
| ||
11:03 | TCO for closures & if. check-in: 9226867fa2 user: martin tags: trunk | |
10:24 | May as well let the allocator handle nil. check-in: 327ac4b3b0 user: martin tags: trunk | |
10:20 | Work towards general tail calls. check-in: 5d26f6e96c user: martin tags: trunk | |
09:45 | Change do...while with for loop; Minor tweak to prim_cons, it cannibalizes the argument list it receives instead of calling make_pair(). check-in: 2e55cbca6f user: martin tags: trunk | |
08:56 | Add unary - for negation. check-in: 41ab6a6987 user: martin tags: trunk | |
07:41 | Add cons/list/car/cdr + more tests. check-in: 1b0158aef8 user: martin tags: trunk | |
06:25 | Rename eq->eq? eqv->eqv? equal->equal? set->set!; Add t and nil symbols to global env in make_t_state(); Add a make_env() to env.c and use it for make_t_state(). check-in: 9d42b12ecc user: martin tags: trunk | |
03:40 | More assertations; eval/apply display error and abort if they see a SEXP_ERROR; Lose t_args typedef; Add a true value (ts->t); Add load_primitives() to give a useful global env to a t_state; Add equality primitives (eq?/eqv?/equal?/not) and the other basic arith primitives (-/*///%); make_symbol()/make_string() can take 0 as length to tell them to memcpy the string they're given. check-in: 7f4f6fd7fb user: martin tags: trunk | |
2014-03-21
| ||
21:26 | Add predicate macros for types (IS_FIXNUM(), IS_PAIR(), etc...) check-in: 0eec12cc5b user: martin tags: trunk | |
2014-03-20
| ||
14:36 | Get spec_eval working and since quote/define/if/set/lambda are at least functional, tag it r0.0.1 check-in: b3a57384e1 user: martin tags: r0.0.1, trunk | |
12:03 | Add tests for 0-arg and multiple arg closures; Fix parse() to handle nils in lists. check-in: a4948b9133 user: martin tags: trunk | |
08:27 | Define and apply a closure. NOW we have all 5 basic ops. check-in: d12c571f89 user: martin tags: trunk | |
08:21 | Created and returned first closure. check-in: c0238cdc73 user: martin tags: trunk | |
08:12 | Add display.[ch] and spec_display() in primitives.c, and notice I never got around to testing closures. :) check-in: d6fbf853c0 user: martin tags: trunk | |
06:15 | Rework envs to get define primitive working. They are now a list of frames, 'frame' being an a-list. ts->global_env now initializes to (nil . nil), an environment with a single empty frame. We also now have working 'set!', and with it all 5 basic ops. check-in: ca4174da51 user: martin tags: trunk | |
2014-03-19
| ||
20:31 | More tests, for quote and if. check-in: ae96e95e38 user: martin tags: trunk | |
19:23 | Start implementing/testing special forms. check-in: 32b72d0ba2 user: martin tags: trunk | |
18:45 | Lose make_primitive_[012]() and apply_primtitive(), there is just make_primitive() now; Same for special forms, and their C procedures take pointer to env now; Kill some trailing whitespaces. check-in: 968f23edc3 user: martin tags: trunk | |
08:43 | Actually that was (t_state *, t_env *, t_closure *, t_list *) but now it's t_args. And snip a few more 'struct sexp *'s. check-in: f7ee91d923 user: martin tags: trunk | |
08:35 | Typedefs for struct sexp and all of its variations as well as t_state with names all beginning with t_ (the _t suffix is reserved by POSIX) so things like prototypes can be shorter and more descriptive. E.G. (struct t_state *, struct sexp *, struct sexp *, struct sexp *) => (t_state *, t_env *, t_closure *, t_args *) check-in: 5405689a66 user: martin tags: trunk | |
05:48 | apply_closure()/apply_primitive() also take env now; Try to make apply_closure handle local tail calls. check-in: 8b0873e821 user: martin tags: trunk | |
03:07 | Prims need t_state, read.c needs to use symbol tables again, some cleanups and, of vastly more importance, (+ 2 2) => 4 ! check-in: 1e2387f4d8 user: martin tags: trunk | |