package insa.serializer;
import com.google.inject.Inject;
import com.google.inject.Provider;
import expArithm.Division;
import expArithm.ExpArithmPackage;
import expArithm.ExpressionArithm;
import expArithm.Moins;
import expArithm.Mult;
import expArithm.Plus;
import expArithm.Valeur;
import insa.services.ExpArithmGrammarAccess;
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 abstract class AbstractExpArithmSemanticSequencer extends AbstractDelegatingSemanticSequencer {
@Inject
private ExpArithmGrammarAccess grammarAccess;
public void createSequence(EObject context, EObject semanticObject) {
if(semanticObject.eClass().getEPackage() == ExpArithmPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
case ExpArithmPackage.DIVISION:
if(context == grammarAccess.getDivisionRule() ||
context == grammarAccess.getEltExpRule()) {
sequence_Division(context, (Division) semanticObject);
return;
}
else break;
case ExpArithmPackage.EXPRESSION_ARITHM:
if(context == grammarAccess.getExpressionArithmRule()) {
sequence_ExpressionArithm(context, (ExpressionArithm) semanticObject);
return;
}
else break;
case ExpArithmPackage.MOINS:
if(context == grammarAccess.getEltExpRule() ||
context == grammarAccess.getMoinsRule()) {
sequence_Moins(context, (Moins) semanticObject);
return;
}
else break;
case ExpArithmPackage.MULT:
if(context == grammarAccess.getEltExpRule() ||
context == grammarAccess.getMultRule()) {
sequence_Mult(context, (Mult) semanticObject);
return;
}
else break;
case ExpArithmPackage.PLUS:
if(context == grammarAccess.getEltExpRule() ||
context == grammarAccess.getPlusRule()) {
sequence_Plus(context, (Plus) semanticObject);
return;
}
else break;
case ExpArithmPackage.VALEUR:
if(context == grammarAccess.getEltExpRule() ||
context == grammarAccess.getValeurRule()) {
sequence_Valeur(context, (Valeur) semanticObject);
return;
}
else break;
}
if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Constraint:
* (EltGauche=EltExp eltDroit=EltExp)
*/
protected void sequence_Division(EObject context, Division semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_GAUCHE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_GAUCHE));
if(transientValues.isValueTransient(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_DROIT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_DROIT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getDivisionAccess().getEltGaucheEltExpParserRuleCall_1_0(), semanticObject.getEltGauche());
feeder.accept(grammarAccess.getDivisionAccess().getEltDroitEltExpParserRuleCall_2_0(), semanticObject.getEltDroit());
feeder.finish();
}
/**
* Constraint:
* racine=EltExp?
*/
protected void sequence_ExpressionArithm(EObject context, ExpressionArithm semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (EltGauche=EltExp eltDroit=EltExp)
*/
protected void sequence_Moins(EObject context, Moins semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_GAUCHE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_GAUCHE));
if(transientValues.isValueTransient(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_DROIT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_DROIT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getMoinsAccess().getEltGaucheEltExpParserRuleCall_1_0(), semanticObject.getEltGauche());
feeder.accept(grammarAccess.getMoinsAccess().getEltDroitEltExpParserRuleCall_2_0(), semanticObject.getEltDroit());
feeder.finish();
}
/**
* Constraint:
* (EltGauche=EltExp eltDroit=EltExp)
*/
protected void sequence_Mult(EObject context, Mult semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_GAUCHE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_GAUCHE));
if(transientValues.isValueTransient(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_DROIT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_DROIT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getMultAccess().getEltGaucheEltExpParserRuleCall_1_0(), semanticObject.getEltGauche());
feeder.accept(grammarAccess.getMultAccess().getEltDroitEltExpParserRuleCall_2_0(), semanticObject.getEltDroit());
feeder.finish();
}
/**
* Constraint:
* (EltGauche=EltExp eltDroit=EltExp)
*/
protected void sequence_Plus(EObject context, Plus semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_GAUCHE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_GAUCHE));
if(transientValues.isValueTransient(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_DROIT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpArithmPackage.Literals.OPERATEUR_BINAIRE__ELT_DROIT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getPlusAccess().getEltGaucheEltExpParserRuleCall_1_0(), semanticObject.getEltGauche());
feeder.accept(grammarAccess.getPlusAccess().getEltDroitEltExpParserRuleCall_2_0(), semanticObject.getEltDroit());
feeder.finish();
}
/**
* Constraint:
* valeur=DOUBLE
*/
protected void sequence_Valeur(EObject context, Valeur semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpArithmPackage.Literals.VALEUR__VALEUR) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpArithmPackage.Literals.VALEUR__VALEUR));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getValeurAccess().getValeurDOUBLETerminalRuleCall_0(), semanticObject.getValeur());
feeder.finish();
}
}