tokenization:  char -- figure out spec, implement and test; a valid char can only be followed by certain characters
make modules available in top-level scope to allow interactive testing
more tests; verify that parser combinators receive correctly-typed args; extend lexer; reorganize lexical grammar