offside-rule S-expression parser with toy interpreter