mescc: Add missing defines.
[mes.git] / README
1                                                               -*- org -*-
2 Mes -- Maxwell Equations of Software
3
4 Mes aims to create an entirely source-based bootstrapping path.  The
5 target is to [have GuixSD] boostrap from a minimal, easily inspectable
6 binary --that should be readable as source-- into something close to
7 R6RS Scheme.
8
9 As bootstrapping is presumably easiest and probably most fun with
10 Scheme, the next step for Mes is mescc: a C compiler/linker to
11 boostrap into GNU Gcc and GNU Guile, possibly via Tiny-CC.
12
13 It currently has an interpreter written in C (mes) with Garbage
14 Collector (Jam Scraper), a library of loadable Scheme modules--
15 notably [[https://github.com/schemeway/lalr-scm][Dominique Boucher's LALR]], [[https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html][Pre-R6RS portable syntax-case]] with
16 R7RS ellipsis, [[http://www.nongnu.org/nyacc/][Nyacc]] and [[https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html][Guile's PEG]] --and test suite just barely
17 enough to support a simple REPL (repl.mes) and a proof-of-concept
18 C-compiler (mescc.mes) that produces an elf from the simplest of C
19 files.
20
21 Mes is inspired by The Maxwell Equations of Software: [[http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf][LISP-1.5]] -- John
22 McCarthy page 13.
23
24 Mes is free software, it is distributed under the terms of the GNU
25 General Public Licence version 3 or later.  See the file COPYING.
26
27 * Get it
28
29    git clone https://gitlab.com/janneke/mes
30
31 * Build it (see INSTALL for full instructions)
32
33    ./configure
34    make all
35    make check
36
37 * REPL it
38
39    scripts/repl.mes
40
41 * Mescc compiler
42
43    scripts/mescc.mes doc/examples/main.c > a.out
44
45 * Other
46
47    make check
48    make mes-check
49    make paren
50    make mescc
51    scripts/nyacc-calc.mes
52    scripts/nyacc.mes
53
54    make guile-check
55    make guile-mescc
56    guile/nyacc-calc.scm
57    scripts/nyacc.scm