Structs

A single entry in the cache. Contains the value, and a flag whether it has been read.

This stores the immutable data that is used during the parsing process.

This stores the mutable data that is used during the parsing process. It contains a cache of the results of each (source position, rule). It also has a stack which contains information about the order in which the keys were inserted, so they can be removed in order when needed.