This page has two purposes: to describe how to implement computer language interpreters in general, and in particular to build an interpreter for most of the Scheme dialect of Lisp using Python 3 as the implementation language. I call my language and interpreter Lispy ( lis.py ). Years ago, I showed how to write a semi-practical Scheme interpreter Java and in in Common Lisp ). This time around the goal is to demonstrate, as concisely and simply as possible, what Alan Kay called " Maxwell's Equations of Software ." Why does this matter? As Steve Yegge said , "If you don't know how compilers work, then you don't know how computers work." Yegge describes 8 problems that can be solved with compilers (or equally well with interpreters, or with Yegge's typical heavy dosage of cynicism). Syntax and Semantics of Scheme Programs The syntax of a language is the arrangement of characters to form correct statements or expressions; the semantics is the meaning of those statements or expressions.…