/*
* generated by Xtext
*/
package org.eclipse.sirius.expression.text.serializer;
import com.google.inject.Inject;
import com.google.inject.Provider;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.sirius.expression.ExpressionPackage;
import org.eclipse.sirius.expression.SiriusExpressionClass;
import org.eclipse.sirius.expression.SiriusExpressionDescription;
import org.eclipse.sirius.expression.SiriusExpressionPackage;
import org.eclipse.sirius.expression.SiriusParameter;
import org.eclipse.sirius.expression.SiriusVariable;
import org.eclipse.sirius.expression.text.services.ExpressionTextGrammarAccess;
import org.eclipse.xtext.serializer.acceptor.ISemanticSequenceAcceptor;
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.ISemanticSequencer;
import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
@SuppressWarnings("all")
public class ExpressionTextSemanticSequencer extends AbstractDelegatingSemanticSequencer {
@Inject
private ExpressionTextGrammarAccess grammarAccess;
@Override
public void createSequence(EObject context, EObject semanticObject) {
if(semanticObject.eClass().getEPackage() == ExpressionPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
case ExpressionPackage.SIRIUS_EXPRESSION_CLASS:
sequence_SiriusExpressionClass(context, (SiriusExpressionClass) semanticObject);
return;
case ExpressionPackage.SIRIUS_EXPRESSION_DESCRIPTION:
sequence_SiriusExpressionDescription(context, (SiriusExpressionDescription) semanticObject);
return;
case ExpressionPackage.SIRIUS_EXPRESSION_PACKAGE:
sequence_SiriusExpressionPackage(context, (SiriusExpressionPackage) semanticObject);
return;
case ExpressionPackage.SIRIUS_PARAMETER:
sequence_SiriusParameter(context, (SiriusParameter) semanticObject);
return;
case ExpressionPackage.SIRIUS_VARIABLE:
sequence_SiriusVariable(context, (SiriusVariable) semanticObject);
return;
}
if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Constraint:
* (eClass=[EClass|FQN] variables+=SiriusVariable* expressionDescriptions+=SiriusExpressionDescription*)
*/
protected void sequence_SiriusExpressionClass(EObject context, SiriusExpressionClass semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* expression=[EAttribute|FQN]
* (parameters+=SiriusParameter parameters+=SiriusParameter*)?
* returnType=[EClassifier|FQN]
* lowerBound=Bound
* upperBound=Bound
* (variableContainers+=[EClass|FQN] variableContainers+=[EClass|FQN]*)?
* )
*/
protected void sequence_SiriusExpressionDescription(EObject context, SiriusExpressionDescription semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (ePackage=[EPackage|ID] expressionClasses+=SiriusExpressionClass*)
*/
protected void sequence_SiriusExpressionPackage(EObject context, SiriusExpressionPackage semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (optional?='optional'? variable=[SiriusVariable|ID])
*/
protected void sequence_SiriusParameter(EObject context, SiriusParameter semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (documentation=ML_COMMENT? name=ID eType=[EClassifier|FQN])
*/
protected void sequence_SiriusVariable(EObject context, SiriusVariable semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
}