package de.tub.tfs.henshin.tgg.interpreter.config.serializer; import com.google.inject.Inject; import com.google.inject.Provider; import de.tub.tfs.henshin.tgg.interpreter.config.services.TggInterpreterConfigGrammarAccess; import de.tub.tfs.henshin.tgg.interpreter.config.tggInterpreterConfig.TggInterpreterConfig; import de.tub.tfs.henshin.tgg.interpreter.config.tggInterpreterConfig.TggInterpreterConfigPackage; import org.eclipse.emf.common.util.BasicEMap.Entry; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.serializer.acceptor.ISemanticSequenceAcceptor; import org.eclipse.xtext.serializer.acceptor.SequenceFeeder; import org.eclipse.xtext.serializer.diagnostic.ISemanticSequencerDiagnosticProvider; import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor; import org.eclipse.xtext.serializer.sequencer.AbstractDelegatingSemanticSequencer; import org.eclipse.xtext.serializer.sequencer.GenericSequencer; import org.eclipse.xtext.serializer.sequencer.ISemanticNodeProvider.INodesForEObjectProvider; import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer; import org.eclipse.xtext.serializer.sequencer.ITransientValueService; import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient; @SuppressWarnings("all") public class TggInterpreterConfigSemanticSequencer extends AbstractDelegatingSemanticSequencer { @Inject private TggInterpreterConfigGrammarAccess grammarAccess; public void createSequence(EObject context, EObject semanticObject) { if(semanticObject.eClass().getEPackage() == TggInterpreterConfigPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) { case TggInterpreterConfigPackage.PROCESSING_MAP_ENTRY: if(context == grammarAccess.getProcessingEntryRule()) { sequence_ProcessingEntry(context, (Entry<?, ?>) semanticObject); return; } else break; case TggInterpreterConfigPackage.TGG_INTERPRETER_CONFIG: if(context == grammarAccess.getTggInterpreterConfigRule()) { sequence_TggInterpreterConfig(context, (TggInterpreterConfig) semanticObject); return; } else break; } if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context)); } /** * Constraint: * (key=keyValue value=ScriptOrValue) */ protected void sequence_ProcessingEntry(EObject context, Entry<?, ?> semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient((EObject)semanticObject, TggInterpreterConfigPackage.Literals.PROCESSING_MAP_ENTRY__KEY) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing((EObject)semanticObject, TggInterpreterConfigPackage.Literals.PROCESSING_MAP_ENTRY__KEY)); if(transientValues.isValueTransient((EObject)semanticObject, TggInterpreterConfigPackage.Literals.PROCESSING_MAP_ENTRY__VALUE) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing((EObject)semanticObject, TggInterpreterConfigPackage.Literals.PROCESSING_MAP_ENTRY__VALUE)); } INodesForEObjectProvider nodes = createNodeProvider((EObject)semanticObject); SequenceFeeder feeder = createSequencerFeeder((EObject)semanticObject, nodes); feeder.accept(grammarAccess.getProcessingEntryAccess().getKeyKeyValueParserRuleCall_1_0(), semanticObject.getKey()); feeder.accept(grammarAccess.getProcessingEntryAccess().getValueScriptOrValueParserRuleCall_5_0(), semanticObject.getValue()); feeder.finish(); } /** * Constraint: * options+=ProcessingEntry* */ protected void sequence_TggInterpreterConfig(EObject context, TggInterpreterConfig semanticObject) { genericSequencer.createSequence(context, semanticObject); } }