basic design for parsing from initial input string to some kind of AST