In spi.py (https://github.com/rspivak/lsbasi/blob/master/part15/spi.py), the skip_comment() function (starts on line 172) does not properly handle input source that contains an un-terminated comment.
For example, when run on the input below, spi.py hangs:
PROGRAM Test;
VAR
a : INTEGER;
BEGIN
a := 10 * 25; { Un-terminated comment. FREEZE!
END.