I see this library have an interface `preprocess`, which read a file and write an output file of whole results. For a high level parser, it would better to supply a function like "get token" or "peek token", so the parser can use it directly.