Added command-line flags, some of which actually work.
This commit is contained in:
parent
692eefeece
commit
75bf19e38e
8 changed files with 174 additions and 40 deletions
64
README.md
64
README.md
|
|
@ -7,10 +7,62 @@ LISP 1.5 is to all Lisp dialects as Beowulf is to Emglish literature.
|
|||
A work-in-progress towards an implementation of Lisp 1.5 in Clojure. The
|
||||
objective is to build a complete and accurate implementation of Lisp 1.5
|
||||
as described in the manual, with, in so far as is possible, exactly the
|
||||
same bahaviour; the only intended deviation is that the parser reads
|
||||
'mexprs' (meta language expressions) as well as sexprs.
|
||||
same bahaviour - except as documented below.
|
||||
|
||||
## BUT WHY?!!?!
|
||||
### Status
|
||||
|
||||
Boots to REPL, but few functions yet available.
|
||||
|
||||
### Architectural plan
|
||||
|
||||
Not everything documented in this section is yet built. It indicates the
|
||||
direction of travel and intended destination, not the current state.
|
||||
|
||||
#### resources/lisp1.5.lsp
|
||||
|
||||
The objective is to have within `resources/lisp1.5.lsp`, all those functions
|
||||
defined in the Lisp 1.5 Programmer's Manual which can be implemented in Lisp.
|
||||
|
||||
This means that, while Beowulf is hosted on Clojure, all that would be
|
||||
required to rehost Lisp 1.5 on a different platform would be to reimplement
|
||||
|
||||
* bootstrap.clj
|
||||
* host.clj
|
||||
* read.clj
|
||||
|
||||
#### beowulf/boostrap.clj
|
||||
|
||||
This file is essentially Lisp as defined in Chapter 1 (pages 1-14) of the
|
||||
Lisp 1.5 Programmer's Manual; that is to say, a very simple Lisp language,
|
||||
which should, I believe, be sufficient in conjunction with the functions
|
||||
provided by `beowulf.host`, be sufficient to bootstrap the full Lisp 1.5
|
||||
interpreter.
|
||||
|
||||
In addition it contains the function `INTEROP`, which allows host language
|
||||
functions to be called from Lisp.
|
||||
|
||||
#### beowulf/host.clj
|
||||
|
||||
This file provides Lisp 1.5 functions which can't be (or can't efficiently
|
||||
be) implemented in Lisp 1.5, which therefore need to be implemented in the
|
||||
host language, in this case Clojure.
|
||||
|
||||
#### beowulf/read.clj
|
||||
|
||||
This file provides the reader required for boostrapping. It's not a bad
|
||||
reader - it provides feedback on errors found in the input - but it isn't
|
||||
the real Lisp reader.
|
||||
|
||||
Intended deviations from the behaviour of the real Lisp reader are as follows:
|
||||
|
||||
1. It reads the meta-expression language `MEXPR` in addition to the
|
||||
symbolic expression language `SEXPR`, which I do not believe the Lisp 1.5
|
||||
reader ever did;
|
||||
2. It treats everything between a semi-colon and an end of line as a comment,
|
||||
as most modern Lisps do; but I do not believe Lisp 1.5 had this feature.
|
||||
|
||||
|
||||
### BUT WHY?!!?!
|
||||
|
||||
Because.
|
||||
|
||||
|
|
@ -25,7 +77,11 @@ Because I'm barking mad, and this is therapy.
|
|||
|
||||
## Installation
|
||||
|
||||
Download from http://example.com/FIXME.
|
||||
At present, clone the source and build it using
|
||||
|
||||
`lein uberjar`.
|
||||
|
||||
You will require to have [Leiningen](https://leiningen.org/) installed.
|
||||
|
||||
## Usage
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue