Mostly working scanner, except doesn't handle errors, and operators aren't implemented.