1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2024-11-08 06:09:15 +00:00
This commit is contained in:
David Schmenk 2024-07-09 14:25:41 -07:00
parent 254928624f
commit 9b576d75c8
2 changed files with 6 additions and 9 deletions

View File

@ -1,25 +1,22 @@
# LISP 1.5 implemented in PLASMA # LISP 1.5 implemented in PLASMA
LISP interpreted on a bytecode VM running on a 1 MHz 6502 is going to be sssllllooooowwwww. So I called this implementation DRAWL in keeping with the speech impediment theme. LISP interpreted on a bytecode VM running on a 1 MHz 6502 is going to be sssllllooooowwwww. So I called this implementation DRAWL in keeping with the speech theme. DRAWL represents an exploration REPL language for the PLASMA environment. It isn't meant to be a full-blown programming language, more of an interactive sandbox for playing with S-expressions.
DRAWL represents an exploration REPL language for the PLASMA environment.
It isn't meant to be a full-blown programming language, more of an interactive sandbox for playing with S-expressions.
## Missing features of LISP 1.5 in DRAWL ## Missing features of LISP 1.5 in DRAWL
- The PROG feature isn't present. Programming is limited to interpreting lambda S-expressions - The PROG feature isn't present. Programming is limited to interpreting lambda S-expressions
- Number values are limited to 32 bit integera, no floating point - Number values are limited to 32 bit integers, no floating point
- Deep recursion. The 6502 architecture limits recursion, so don't expect too much here - Deep recursion. The 6502 architecture limits recursion, so don't expect too much here
However, the code is partitioned to allow for easy extension so some of these missing features could be implemented. However, the code is partitioned to allow for easy extension so some of these missing features could be implemented.
## Features of DRAWL ## Features of DRAWL
- 32 bit integers. Hey, better than you probably expected - 32 bit integers and basic math operators. Hey, better than you probably expected
- Recursion handles about nine levels deep. Better than nothing - Recursion handles about nine levels deep. Better than nothing
- Fully garbage collected behind the scenes - Fully garbage collected behind the scenes
- Optionally read LISP source file at startup - Optionally read LISP source file at startup
- SET and SETQ implemented for setting variables
LISP is one of the earliest computer languages. As such, it holds a special place in the anals of computer science. I've always wanted to learn why LISP is held in such high regard by so many, so I went about learning LISP by actually implementing a LISP interpreter in PLASMA. PLASMA is well suited to implement other languages due to its rich syntax, performance and libraries. LISP is one of the earliest computer languages. As such, it holds a special place in the anals of computer science. I've always wanted to learn why LISP is held in such high regard by so many, so I went about learning LISP by actually implementing a LISP interpreter in PLASMA. PLASMA is well suited to implement other languages due to its rich syntax, performance and libraries.

View File

@ -4,8 +4,8 @@ These are the files to implement a LISP 1.5 s-expression parser and evaluator. T
s-expr.pla is the guts of the system. Some features missing from the LISP 1.5 manual include floating point numbers and PROG functions. s-expr.pla is the guts of the system. Some features missing from the LISP 1.5 manual include floating point numbers and PROG functions.
drawl.pla because this is a sslloowwww implementation of LISP, so named DRAWL in keeping with the speech impediment theme. The file reading and REPL functions are contained here. DRAWL is meant to be extensible so adding PROG and floating point is easily possible. drawl.pla because this is a sslloowwww implementation of LISP, so named DRAWL in keeping with the speech theme. The file reading and REPL functions are contained here. DRAWL is meant to be extensible so adding PROG and floating point is easily possible.
The sample LISP files come from the LISP 1.5 manual. These are the only LISP programs that have been run on DRAWL, so other LISP programs may uncover bugs or limitations of DRAWL. The sample LISP code comes from the LISP 1.5 manual. These are the only LISP programs that have been run on DRAWL, so other LISP programs may uncover bugs or limitations of DRAWL.
More information and links can be found here: https://github.com/dschmenk/PLASMA/blob/master/doc/DRAWL.md More information and links can be found here: https://github.com/dschmenk/PLASMA/blob/master/doc/DRAWL.md