Unnamed Fossil Project

Timeline
Login

Timeline

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