}
}
throw new ImplementationError("class for cached parser " + className + " could not be found");
}
ParserGenerator pg = eval.getParserGenerator();
IMap definitions = currentModule.getSyntaxDefinition();
Class<IGTD<IConstructor, IConstructor, ISourceLocation>> parser = eval.getHeap().getObjectParser(currentModule.getName(), definitions);
if (parser == null || force) {
String parserName = currentModule.getName(); // .replaceAll("::", ".");
parser = pg.getNewParser(eval, loc, parserName, definitions);
eval.getHeap().storeObjectParser(currentModule.getName(), definitions, parser);
}
try {
return parser.newInstance();