We previously stored the string literal in the rules hash. At parse
time, these rules get accessed via the SymbolParslet class, which
does:
result = grammar.rules[@symbol].memoizing_parse(...)
The memoizing_parse method itself calls to_parseable on the rule,
which means that every time we evaluate a rule like :foo we end up
creating a new StringParslet instance.
By storing 'bar'.to_parseable in the rules hash instead we avoid
the unnecessary object creation. With this change each time
memoizing_parse calls to_parseable on the stored value, the same
instance is returned and no new object is created, thus reducing memory
use.