Out of curiosity, why is end. not treated as a reserved word by the compiler?
because "end" is a reserved word and "." is a delimiter, that, for practical purposes, prevents the parser from considering the combination as a reserved word. An example will make why clear.
Between any delimiter and reserved word you can have a comment, for instance "end {this is a comment } ;" (note the semicolon.) if the parser wanted to treat the "end;" combination as a reserved word, it would have quite a problem with the comment. It would actually require the parser to look a complete token (the comment) ahead to determine if there is or isn't a reserved word there. The great majority of parsers (PL/1 comes to mind as an exception) depend on inspecting no more than the _next character_ (not token but, a single character) to determine if they have completed the scanning of an identifier or reserved word. Breaking that rule creates a great deal of complications and can severely negatively impact scanning and parsing performance.
The original FORTRAN language was said to require it being parsed before it could be scanned because of things like that (which is one of the things that prompted the study of language grammars.)
ETA:I guess in spite of all of the above, the language could make an exception of "end' followed by a period but, it's not within the spirit of the language's grammar.