Commit graph

1305 commits

Author SHA1 Message Date
Jan Nieuwenhuizen 9c986748e1 Refactor primitives lookup.
* mes.c (lookup_primitive_): Rename from internal_lookup_primitive,
  use scm-compatible signature.
  (lookup): Update caller.
  (eval_env): Check for builtins first.
2016-10-19 07:22:15 +02:00
Jan Nieuwenhuizen 035b0a8d5d Remove unused symbol.
* mes.c (symbol_cond): Remove.
2016-10-18 20:05:51 +02:00
Jan Nieuwenhuizen a4c3acc7ba Add report to closure test.
* tests/closure.test: Add report.
2016-10-18 19:10:16 +02:00
Jan Nieuwenhuizen d0addb3e99 Remove dead code from let.mes.
* module/mes/let.mes (simple-let, named-let, let): Remove dead code.
2016-10-18 19:11:14 +02:00
Jan Nieuwenhuizen 4ff96673c7 Avoid cons* in base.
* module/mes/base-0.mes (cond, simple-let, let): Rewrite without cons*.
* module/mes/base.mes (or): Likewise.
2016-10-18 08:24:47 +02:00
Jan Nieuwenhuizen 2a8d3c57b7 Differentiate apply asserts.
* mes.c (apply_env): Split bool assert into bool, number and string.
2016-10-18 09:21:49 +02:00
Jan Nieuwenhuizen b9bbac3d0c Add display tag for builtin procedures.
* mes.c (display_helper): Show builtin functions as #<procedure ...>.
2016-10-18 09:08:42 +02:00
Jan Nieuwenhuizen 0eae7674b6 Remove macro expansion from apply.
mes.c (apply_env): Remove macro expansion.
2016-10-17 18:26:07 +02:00
Jan Nieuwenhuizen 3098f84e9e Add paredit workaround in scripts.
* scripts/elf.mes: Add paredit parsing comment.
* scripts/repl.mes: Likewise.
2016-10-19 00:36:12 +02:00
Jan Nieuwenhuizen d18e50a569 make tests standalone executable.
* tests/closure.test: Add shebang and boot-0 include.
* tests/let-syntax.test: Likewise.
* tests/let.test: Likewise.
* tests/match.test: Likewise.
* tests/quasiquote.test: Likewise.
* tests/record.test: Likewise.
* tests/scm.test: Likewise.
* GNUmakefile (mes-check): Run tests by exec'ing.
2016-10-19 00:36:12 +02:00
Jan Nieuwenhuizen 219a8cdfbb make clean: remove symbols.i.
* GNUmakefile (clean): remove symbols.i.
2016-10-19 00:36:12 +02:00
Jan Nieuwenhuizen 1e59009102 Update documentation.
* HACKING: Describe (mes-use-modules).
* NEWS: Update.
2016-10-19 00:36:12 +02:00
Jan Nieuwenhuizen ac4b1eed3f Add --help, --version.
* mes.c (main): Handle --help, --version.
* scripts/include.mes: Handle --help.
* scripts/elf.mes: Pass any arguments on to mes.
* scripts/mescc.mes: Likewise.
* scripts/paren.mes: Likewise.
* scripts/repl.mes: Likewise.
2016-10-19 00:36:12 +02:00
Jan Nieuwenhuizen c5aa93d67b guix hash: 0g6lcms2hv1i8hdkfh2xz0g7jmsayisr7bcwkp47blkbapqpzpsf 2016-10-19 00:36:08 +02:00
Jan Nieuwenhuizen b5af238305 Update guix hash.
* make/install.make (update-hash): New target.
* guix.scm: Prepare for update.
2016-10-18 23:50:09 +02:00
Jan Nieuwenhuizen ac6fb6feed Add installation instructions.
* INSTALL: New file.
2016-10-16 11:24:41 +02:00
Jan Nieuwenhuizen 7e4736f3d0 Add guix.scm package recipe.
* guix.scm: New file.
2016-10-16 11:27:39 +02:00
Jan Nieuwenhuizen 2001183928 Prepare for 0.1 release: update READMEs.
* NEWS: New file.
* AUTHORS: Add info about files taken from Scheme48.
* HACKING: Update with info from TODO.
* TODO: Remove.
2016-10-15 11:54:24 +02:00
Jan Nieuwenhuizen 6d64e55500 Prepare for 0.1 release: make install.
* make/install.make (install): Install documentation.
2016-10-16 08:14:50 +02:00
Jan Nieuwenhuizen 323e78b190 Prepare for 0.1 release: installable scripts.
* scripts/mes: New symlink.
* scripts/elf.mes: Use it.
* scripts/mescc.mes: Likewise, read all mes modules with include.mes.
* scripts/paren.mes: Likewise.
* scripts/repl.mes: Likewise.
2016-10-16 08:00:04 +02:00
Jan Nieuwenhuizen 3128c4b976 Prepare for 0.1 release: gnu-build-system.
* configure: New file.
* make/install.make: New file.
* .gitignore: Ignore generated files.
* build-aux/gitlog-to-changelog: New file.
2016-10-16 00:34:23 +02:00
Jan Nieuwenhuizen d114634203 Prepare for 0.1 release: new directory structure.
* scripts/elf.mes: New file.
* scripts/include.mes: New file.
* scripts/mescc.mes: New file.
* scripts/paren.mes: New file.
* scripts/repl.mes: New file.
* doc/examples/main.c: Move from ./main.c.
* module/mes/base-0.mes: Move from ./base0.mes.
* module/mes/base.mes: Move from top.
* module/mes/elf.mes: Likewise.
* module/mes/let-syntax.mes: Likewise.
* module/mes/let.mes: Likewise.
* module/mes/mes.mes: Likewise.
* module/mes/quasiquote.mes: Likewise.
* module/mes/repl.mes: Likewise.
* module/mes/scm.mes: Likewise.
* module/mes/syntax.mes: Likewise.
* module/mes/lalr-0.mes: Move from lib/lalr.mes.
* module/mes/lalr.mes: Move from lib/lalr.scm.
* module/mes/match.mes: Move from lib/match.scm.
* module/mes/record-0.mes: Move from lib/record.mes.
* module/mes/record.mes: Move from lib/record.scm.
* module/mes/test.mes: Move flom lib/.
* module/rnrs/bytevectors.mes: Move from lib/rnrs.
* module/srfi/srfi-0.mes: Move from lib/srfi.
* module/srfi/srfi-1.mes: Likewise.
* module/srfi/srfi-9.mes: Likewise.
* module/language/c/lexer.mes: Move from ./c-lexer.scm.
* module/language/c/parser.mes: Move from ./mescc.scm.
* module/language/c/compiler.mes: New file, split from parser.mes.
* module/language/paren.mes: Move from ./paren.scm.
* module/mes/libc-i386.mes: New file, split from elf.mes.
* tests/base.test: Move from test/.
* tests/closure.test: Likewise.
* tests/let-syntax.test: Likewise.
* tests/let.test: Likewise.
* tests/match.test: Likewise.
* tests/quasiquote.test: Likewise.
* tests/record.test: Likewise.
* tests/scm.test: Likewise.
* hello.S: Remove.
* hello.c: Remove.
* loop2.mes: Remove.
* test/foo.test: Remove.
2016-10-12 23:40:11 +02:00
Jan Nieuwenhuizen bd2b81755a Remove evcon (Sorry John).
* mes.c (evcon): Remove, remove callers.
* base0-if.mes (cond): Rename from disabled-cond.
2016-10-15 11:56:18 +02:00
Jan Nieuwenhuizen 83970245e5 Support quasisyntax.
* mes.c (eval_quasisyntax, add_unsyntaxers): New functions.
  (eval_env): Use them.
2016-10-16 01:41:07 +02:00
Jan Nieuwenhuizen 2715e241e5 Add REPL.
* mes.c (expand_macro_env, force_output): New function.  Use STRING_MAX
  for string buffers throughout.  (eval_env, eval_begin_env): Rename
  from eval, eval_begin.  Update callers.
* repl.mes: New file.
* base.mes (list?): Move from scm.mes.
* scm.mes (eval, apply, primitive-eval, expand-macro): New function.
* GNUmakefile: New repl target.
2016-10-16 09:44:52 +02:00
Jan Nieuwenhuizen 422b6e6ce9 Avoid 90% of cdr'ing environment, assuming static primitives.
* mes.c (internal_primitive_p)[STATIC_PRIMITIVES: New function.
 (lookup_macro)[STATIC_PRIMITIVES]: Use it.
 (internal_lookup_primitive)[STATIC_PRIMITIVES]: New function.
 (lookup)[STATIC_PRIMITIVES]: Use it.
 (mes_primitives)[STATIC_PRIMITIVES]: New function.
 (main): Use it.
* base0-if.mes (disabled-cond): Rename from xcond.
* GNUmakefile: Add commented profiling CFLAGS.
2016-10-12 21:14:06 +02:00
Jan Nieuwenhuizen 6948629c27 Do not use quasiquote in base0.
* base0.scm (defined?): Rewrite without quasiquote.
2016-10-16 09:21:17 +02:00
Jan Nieuwenhuizen dd271be218 Add procedure? to base.
* base.mes (procedure?): Move from scm.mes.
2016-10-12 22:58:35 +02:00
Jan Nieuwenhuizen 1bb3d1de11 speedup: use ->car etc. 2016-10-08 17:00:32 +02:00
Jan Nieuwenhuizen c5e3e3818d Avoid out-of-spec strncat usage.
mes.c (readword): Use character assignment instead of strncat.  Fixes
Valgrind nit.
2016-10-11 18:50:14 +02:00
Jan Nieuwenhuizen 513bd09f76 Discern between primitive atoms and symbols.
* mes.c (internal_symbol_p): New function.
 (eval): Use it.
2016-10-11 07:10:01 +02:00
Jan Nieuwenhuizen c506880a14 resurrect mescc. 2016-10-10 23:54:48 +02:00
Jan Nieuwenhuizen 7ff86c393f cleanup and doc update. 2016-10-10 23:24:44 +02:00
Jan Nieuwenhuizen bf02fa7f07 syntax.mes: silence syntax error. 2016-10-10 22:44:42 +02:00
Jan Nieuwenhuizen c6ce1662e4 test/scm.test: update. 2016-10-10 22:42:05 +02:00
Jan Nieuwenhuizen 2e1685dc2d test/match.test: pass. 2016-10-11 18:51:30 +02:00
Jan Nieuwenhuizen c38ae1ebc5 lib/match: ugly hygiene hack. FIXME. 2016-10-10 20:53:42 +02:00
Jan Nieuwenhuizen d3fab554d5 let-syntax.mes: implement. 2016-10-10 22:55:37 +02:00
Jan Nieuwenhuizen a265f933d8 speedup: use ->car etc. 2016-10-08 17:00:32 +02:00
Jan Nieuwenhuizen 4514be76d9 use IF as primitive, drop using cond/evcon only option. 2016-10-08 16:54:59 +02:00
Jan Nieuwenhuizen 7c759e0670 c++ type-safety. 2016-10-08 10:14:17 +02:00
Jan Nieuwenhuizen e504998b03 assq: use while instead of recursion. 2016-10-08 08:47:23 +02:00
Jan Nieuwenhuizen 509bf3956e mes.c: uniquify symbols. 2016-10-08 08:41:30 +02:00
Jan Nieuwenhuizen 3ff385ce6d mes-check: separate target. 2016-10-08 08:38:29 +02:00
Jan Nieuwenhuizen cd84c337f1 Updates to README, TODO. 2016-09-25 12:50:00 +02:00
Jan Nieuwenhuizen e1eeaf979a mescc.scm: compile simple, well-behaved for-loop. 2016-08-14 14:42:52 +02:00
Jan Nieuwenhuizen 76ff664dab elf.mes: for loop. 2016-08-14 14:02:09 +02:00
Jan Nieuwenhuizen 04eb0609cd mescc.scm: print two strings. 2016-08-14 09:06:09 +02:00
Jan Nieuwenhuizen 2c7f26dbe6 mescc.scm: first a.out produced from main.c. 2016-08-14 01:44:42 +02:00
Jan Nieuwenhuizen 85f3d40e71 lib/match.scm: import. 2016-08-14 01:40:55 +02:00