I think the production Integer = [ HYPHEN ] number is incorrect. I think it should be: Integer = ( HYPEN LDIGIT *DIGIT ) / number That is, -0 should be invalid. Kurt