Here's the accompanying source code: http://norvig.com/sciam/checkers.py
There are four parts to this program:
(1) Strachey's checkers program in CPL:
OriginalCPLprogram is the original program, verbatim
ModifiedCPLprogram fixes a typo and two small conceptual problems
(2) A parser for the CPL language. This is encoded in the external
file 'cpl.g', which is then processed by yapps2.py to produce cpl.py,
which we then import, allowing us to use cpl.parse on ModifiedCPLprogram.
(3) Functions described but not implemented by Strachey (such as Null and Shift).
(4) Variable definitions and functions not listed by Strachey.
(5) Test cases.