Gary Knott Interpreting Lisp das ist sehr schön. Sie können auch andere versuchen, wie Jim Mayfield's Lisp. Es gibt wahrscheinlich viele kleine Lisps da draußen ...
Sie erwähnten, dass Sie nicht C. mögen. Vielleicht möchten Sie Haskell - in diesem Fall könnten Sie versuchen "Write yourself a Scheme in 48 hours", ein interessantes Tutorial (Sie schreiben zu schreiben ein Scheme-Interpreter in Haskell).
Update: Ich weiß, dass ein Lisper würde sich kaum wohl fühlen mit Haskell, aber hey, es ist viel komfortabler als C (zumindest für mich)! Außerdem hat HAskell ein gutes FFI, daher sollte es einfach sein, den Haskell-gemachten Lisp-Leser als C-kompatible Bibliothek zu verwenden.
Update 2: Wenn Sie XLISP verwenden, wie von einem anderen Benutzer vorgeschlagen, werden Sie wahrscheinlich src/xlread.c (863 Zeilen) und include/xlisp.h (1379 Zeilen) müssen - aber ich kann falsch sein ...
Update 3: Wenn Sie Gary Knott's Lisp (eine einzelne C-Datei mit 942 Zeilen) verwenden, ist die Funktionssignatur int32 sread (void). Das wäre meine Wahl, wenn ich nichts Besonderes (wie gelesene Makros) oder hoch optimierte (es gibt ein PDF-Dokument, das beschreibt, wie der Code implementiert ist, so dass Sie sich nicht in einem Labyrinth finden müssen). Die Dokumentation für die Funktion ist:
This procedure scans an input string g using a lexical token scanning
routine, e(), where e() returns
1 if the token is '('
2 if the token is '''
3 if the token is '.'
4 if the token is ')' or a typed pointer d to an
atom or number stored in row ptrv(d) in the atom or number tables.
Due to the typecode (8 or 9) of d, d is a negative 32-bit integer. The
token found by e() is stripped from the front of g.
SREAD constructs an S-expression and returns a typed pointer to it as
its result.
Sehen Sie, dass Garys Lisp alt ist und Sie werden es ändern müssen, damit es kompiliert wird. Statt einschließlich linuxenv.h, umfassen:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <setjmp.h>
Auch ist es nicht in 64-Bit-Maschinen funktioniert (die Dokumentation von Sread sollte Ihnen sagen, warum ...)
Update 4: Es gibt auch die Scheme implementations von Nils Holm (es gibt Bücher, die Interna der Beschreibung)
Ich weiß, dass ich Code aus Quellen wie diesen bekommen könnte, aber sie sind ein bisschen zu schwer für das, wonach ich suche. Viele ihrer Designs sind von globalen Faktoren (insbesondere dem GC) motiviert, die hier nicht zur Anwendung kommen. Ich möchte etwas ziemlich Leichtes --- grundlegende Lisp-Datenstrukturen, etwas, um sie zu lesen, und Konventionen, um sie zu befreien. – airfoyle
http://www.xlisp.org ist auch ziemlich klein. – ephemient