> Isn't a result of your changes to the grammer that a program can
> start with a semicolon?
Yes. In fact, a program can consist solely of a sequence of
semicolons.
> That doesn't look like it should be accepted to me from the
> report.
I think it's OK, because the report says
program ::= exp ; program
| topdec ; program
and topdec can be empty.