Added component match caching to parser to speed up repeated lookups of components in complex grammars