If you have heard about Yacc or Bison (or well, jison), that's how people might use the grammar. With these parsers generators, they can generate something that figures out what parts of the grammar a given flow of input 'tokens' are spoken in.
None of the keywords are treated like commands. But sure, you can have commands with the same name, e.g.:
# make a command to avoid command-not-found for `FOO=BAR time cmd`
time(){ time "$@"; }