package com.sap.furcas.runtime.parser.incremental.testbase; import org.eclipse.emf.ecore.resource.ResourceSet; import com.sap.furcas.parsergenerator.GrammarGenerationException; import com.sap.furcas.parsergenerator.TCSSyntaxContainerBean; import com.sap.furcas.runtime.common.exceptions.ParserGeneratorInvocationException; import com.sap.furcas.runtime.common.exceptions.ParserInstantiationException; import com.sap.furcas.runtime.parser.PartitionAssignmentHandler; import com.sap.furcas.runtime.parser.testbase.ClassLookup; import com.sap.furcas.runtime.parser.testbase.GeneratedParserBasedTest; import com.sap.ide.cts.parser.incremental.IncrementalParserFacade; /** * A Test base class that allows to generate a language specific parser and parserfactory from a given TCS file. * * The base class is configured (what to create, where to create it, ...) with the help * {@link GeneratedParserAndFactoryTestConfiguration}. * * @author Stephan Erb * */ public abstract class GeneratedParserAndFactoryBasedTest extends GeneratedParserBasedTest { protected static IncrementalParserFacade generateParserAndParserFactoryForLanguage(TCSSyntaxContainerBean syntaxBean, GeneratedParserAndFactoryTestConfiguration testConfig, ResourceSet resourceSet, PartitionAssignmentHandler partitionAssignmentHandler, ClassLookup classLookup) throws GrammarGenerationException, ParserGeneratorInvocationException, InstantiationException, IllegalAccessException, ParserInstantiationException { ParserAndFactoryGenerator generator = new ParserAndFactoryGenerator(testConfig); try { System.out.println(""); // spacing to make our generation report easier to spot. generator.generateGrammar(syntaxBean); System.out.println(""); // spacing to make our generation report easier to spot. generator.generateParser(); generator.generateParserFactory(syntaxBean); generator.compileParser(); generator.compileParserFactory(); return generator.loadIncrementalParserFacade(classLookup, resourceSet, partitionAssignmentHandler); } finally { generator.cleanUp(); } } }