If you just want to understand the basics, Andru Luvisi has written an interpreter in less than 400 lines: http://www.sonoma.edu/users/l/luvisi/sl5.c
and an interpreter I threw together based off his design adding garbage collection & more ops in 500 (though the macro system is non-standard and maybe broken): http://codepad.org/sQvOeqN9