Now comes the (first) hard part
Reading a Token from an input file requires us to know how input works
- getc will return a character or EOF
- feof will tell us if a previous call to getc returned EOF
- ungetc will let us push a single character back into the input, and will do nothing if we try to push EOF