(How to Write a (Lisp) Interpreter (In Python)) (2010)

91 points - today at 3:36 PM

Source

Comments

chombier today at 4:25 PM
If you ever wondered how to write a programming language, this is probably the best resource to get started (and then of course Crafting Interpreters).

See also part 2 https://norvig.com/lispy2.html

zahlman today at 3:57 PM
(how-to in-python (write (interpreter lisp)))
timonoko today at 6:22 PM
I actually perfected the Norvig Lisp at one time. It has compiler to python and just everything. Those very few here that can actually read code, understand why this project soon exploded into biggest piece of odorous excrement.

https://github.com/timonoko/nokolis.py

azhenley today at 4:09 PM
Writing a Lisp is one of my favorite projects. I try to do it every year or two, taking a different approach each time.
timonoko today at 6:03 PM
One of those exercises that are now just boring, because AI does it better.

My Lisp from 1975 was actually used in real world and highly lucrative. Gemini could read the source code, but it told that my code was piece of shit and cannot be implemented in 64-bit world without drastic changes, so it made an example. But that version was just too advanced and too complex as a study subject. There are already enuff good Lisps in the world, methinks.

tosh today at 3:48 PM
I can't recommend highly enough to implement a simple lisp (or a forth).

Illuminating experience and it will also help you see (among many other things) the parentheses in a different light.

librasteve today at 4:38 PM
or you could just use Raku and its “surprisingly good lisp impression”:

https://www.codesections.com/blog/raku-lisp-impression/

urcite_ty_kokos today at 3:51 PM
Appreciated the title xD
joshuamorton today at 4:46 PM
There are edge cases where this fails, but `def parse(s): return json.loads('['+re.sub('([")])\s*(["(])','\g<1>,\g<2>',re.sub('[^()\s]+','"\g<0>"',s)).replace('(','[').replace(')',']')+']')` is a surprisingly robust lisp parser.
e12e today at 3:55 PM
(2010)?
deleted today at 5:08 PM
timonoko today at 4:46 PM
[flagged]
RedCinnabar today at 5:07 PM
Man these kind of resources have aged really bad in the age of AI.