Gary Knott Interpreting Lisp jest bardzo miłe. Możesz także wypróbować inne, takie jak Jim Mayfield's Lisp. Prawdopodobnie jest tam wiele małych Lispsów ...
Wspomniałeś, że nie lubisz C. Może chcesz Haskella - w takim przypadku możesz wypróbować "Write yourself a Scheme in 48 hours", interesujący samouczek (możesz napisać tłumacz Scheme w Haskell).
Aktualizacja: wiem, że Lisper raczej nie czuć się komfortowo używając Haskell, ale hej, to jest o wiele bardziej komfortowe niż C (przynajmniej dla mnie)! Poza tym HAskell ma dobry FFI, więc powinno być łatwe korzystanie z czytnika Lisp-a stworzonego przez Haskella jako biblioteki kompatybilnej z C.
Aktualizacja 2: Jeśli chcesz użyć XLisp, sugerowane przez innego użytkownika, będzie prawdopodobnie trzeba src/xlread.c (863 linii) i include/xlisp.h (1379 linii) - ale mogłem być źle ...
Update 3: Jeśli używasz Gary Knott za Lisp (jeden plik C z 942 linii), podpis funkcja jest Int32 sread (void). To byłby mój wybór, gdybym nie potrzebował niczego wymyślnego (np. Odczytanych makr) lub wysoce zoptymalizowanego (jest papier PDF, który opisuje, w jaki sposób kod jest zaimplementowany, więc nie będziesz musiał szukać drogi w labiryncie). Dokumentacja dla funkcji jest:
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.
Zobacz, że Gary's Lisp jest stary i będziesz musiał go zmienić, aby kompilował. Zamiast tym linuxenv.h, obejmują:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <setjmp.h>
Także, to nie działa w komputerach 64-bitowych (dokumentacja sread powinien powiedzieć dlaczego ...)
Update 4: Jest również Scheme implementations Nils Holm (są tam książki opisujące wewnętrzne)
Wiem, że mogę pobrać kod ze źródeł takich jak te, ale są one zbyt ciężkie dla tego, czego szukam. Wiele ich projektów jest motywowanych czynnikami globalnymi (szczególnie GC), które nie mają tu zastosowania. Chcę czegoś dość lekkiego - podstawowych struktur danych Lispa, czegoś, co można by je odczytać, i konwencji dotyczących ich uwalniania. – airfoyle
http://www.xlisp.org jest również bardzo mały. – ephemient