caching expression parser