GNU Mes is a Scheme interpreter and C compiler for bootstrapping the GNU System.
Go to file
Jan Nieuwenhuizen bf02fa7f07 syntax.mes: silence syntax error. 2016-10-10 22:44:42 +02:00
bugs mes.c: less_p, greater_p, is_p: take multiple arguments. 2016-07-24 15:26:49 +02:00
lib lib/match: ugly hygiene hack. FIXME. 2016-10-10 20:53:42 +02:00
test test/match.test: pass. 2016-10-11 18:51:30 +02:00
.gitignore mescc/elf.mes: write minimal ELF header. 2016-08-12 14:17:55 +02:00
AUTHORS Add Guile version of John McCarthy's Maxwell Equations of Software. 2016-05-28 16:26:06 +02:00
COPYING Add Guile version of John McCarthy's Maxwell Equations of Software. 2016-05-28 16:26:06 +02:00
GNUmakefile test/match.test: pass. 2016-10-11 18:51:30 +02:00
HACKING TODO/HACKING: update: lalr/paren.scm runs. 2016-07-24 19:38:47 +02:00
README Updates to README, TODO. 2016-09-25 12:50:00 +02:00
TODO Updates to README, TODO. 2016-09-25 12:50:00 +02:00
base.mes use IF as primitive, drop using cond/evcon only option. 2016-10-08 16:54:59 +02:00
base0-if.mes use IF as primitive, drop using cond/evcon only option. 2016-10-08 16:54:59 +02:00
base0.mes resurrect guile-mescc, use write-int and (current-error-port) iso `2'. 2016-08-13 01:07:26 +02:00
c-lexer.scm mescc.scm: compile simple, well-behaved for-loop. 2016-08-14 14:42:52 +02:00
cgram-ll1 Use IF iso COND as primitive; keep COND primitive as option. 2016-07-27 08:49:45 +02:00
elf.mes mescc.scm: compile simple, well-behaved for-loop. 2016-08-14 14:42:52 +02:00
hello.S hello.c, hello.S: hello world target for C compiler. 2016-07-26 07:30:53 +02:00
hello.c hello.c, hello.S: hello world target for C compiler. 2016-07-26 07:30:53 +02:00
let-syntax.mes let-syntax.mes: implement. 2016-10-10 22:55:37 +02:00
let.mes let-syntax.mes: implement. 2016-10-10 22:55:37 +02:00
loop2.mes mes.c: move define, define-macro into begin_env, remove loop. fixes inner defines. 2016-07-16 22:43:13 +02:00
macro.mes mes.c: store actual environment with closures. 2016-07-22 12:23:23 +02:00
main.c mescc.scm: compile simple, well-behaved for-loop. 2016-08-14 14:42:52 +02:00
mes.c speedup: use ->car etc. 2016-10-08 17:00:32 +02:00
mes.mes mes.c, scm.c: add read-char, peek-char, char=?, char-alphabetic?. 2016-07-24 17:35:31 +02:00
mes.scm add scheme apply, rename apply-> apply_env. 2016-07-16 08:17:56 +02:00
mes.test mes.c: add new macro type, junk *macro* hack. 2016-07-22 17:13:51 +02:00
mescc.scm mescc.scm: compile simple, well-behaved for-loop. 2016-08-14 14:42:52 +02:00
paren.scm paren.scm revert 2016-07-24 13:28:17 +02:00
quasiquote.mes quasiquote.mes: disable, too slow. 2016-07-26 23:22:32 +02:00
record.mes srfi-9 records! 2016-07-24 00:14:40 +02:00
scm.mes use IF as primitive, drop using cond/evcon only option. 2016-10-08 16:54:59 +02:00
syntax.mes syntax.mes: silence syntax error. 2016-10-10 22:44:42 +02:00

README

Mes -- Maxwell Equations of Software

Mes is inspired by The Maxwell Equations of Software -- John McCarthy page 13
http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf

Its aim is to have GuixSD boostrap from a minimal trusted binary into
Scheme.  The strategy is to use OrianJs self-hosting hex assembler to
write a minimal LISP called MES to bootstrap a full fledged Scheme,
written in MES.

Mes is free software, it is distributed unde the terms of the GNU
General Public Licence version 3 or later.  See the file COPYING.

Current targets.

* make check

* C compiler

   make mescc
   make guile-mescc

from there, work on mescc.scm, main.c.

* Transition to syntax-if.scm (still using syntax-cond.scm)

* syntax-case using portable psyntax.pp

   make psyntax

* syntax-case using define-macro

   make syntax-case
   make guile-syntax-case

* PEG

   make peg
   make guile-peg