This cut the number of Regexp comparisons roughly in half on the YAML file in #84 and around 18% on a VCR file I've been testing with. In both cases the cache didn't grow very large (i.e., the set of symbols was small but repeated). If memory growth is a concern, I could reimplement as an LRU cache. But relative to the rest of the parser, it seems like a minor overhead.
Cache symbols while tokenizing.
Definitely don't need an LRU. The tokenizer is constructed once per document, so the cache will get GC'd eventually. Considering the rest of the stuff in play, I don't think this cache is a concern.