/*
* generated by Xtext
*/
package org.example.expressions.serializer;
import com.google.inject.Inject;
import com.google.inject.Provider;
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;
import org.example.expressions.expressions.And;
import org.example.expressions.expressions.BoolConstant;
import org.example.expressions.expressions.Comparison;
import org.example.expressions.expressions.Equality;
import org.example.expressions.expressions.ExpressionsModel;
import org.example.expressions.expressions.ExpressionsPackage;
import org.example.expressions.expressions.IntConstant;
import org.example.expressions.expressions.Minus;
import org.example.expressions.expressions.MulOrDiv;
import org.example.expressions.expressions.Not;
import org.example.expressions.expressions.Or;
import org.example.expressions.expressions.Plus;
import org.example.expressions.expressions.StringConstant;
import org.example.expressions.expressions.Variable;
import org.example.expressions.expressions.VariableRef;
import org.example.expressions.services.ExpressionsGrammarAccess;
@SuppressWarnings("all")
public class ExpressionsSemanticSequencer extends AbstractDelegatingSemanticSequencer {
@Inject
private ExpressionsGrammarAccess grammarAccess;
@Override
public void createSequence(EObject context, EObject semanticObject) {
if(semanticObject.eClass().getEPackage() == ExpressionsPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
case ExpressionsPackage.AND:
sequence_And(context, (And) semanticObject);
return;
case ExpressionsPackage.BOOL_CONSTANT:
sequence_Atomic(context, (BoolConstant) semanticObject);
return;
case ExpressionsPackage.COMPARISON:
sequence_Comparison(context, (Comparison) semanticObject);
return;
case ExpressionsPackage.EQUALITY:
sequence_Equality(context, (Equality) semanticObject);
return;
case ExpressionsPackage.EXPRESSIONS_MODEL:
sequence_ExpressionsModel(context, (ExpressionsModel) semanticObject);
return;
case ExpressionsPackage.INT_CONSTANT:
sequence_Atomic(context, (IntConstant) semanticObject);
return;
case ExpressionsPackage.MINUS:
sequence_PlusOrMinus(context, (Minus) semanticObject);
return;
case ExpressionsPackage.MUL_OR_DIV:
sequence_MulOrDiv(context, (MulOrDiv) semanticObject);
return;
case ExpressionsPackage.NOT:
sequence_Primary(context, (Not) semanticObject);
return;
case ExpressionsPackage.OR:
sequence_Or(context, (Or) semanticObject);
return;
case ExpressionsPackage.PLUS:
sequence_PlusOrMinus(context, (Plus) semanticObject);
return;
case ExpressionsPackage.STRING_CONSTANT:
sequence_Atomic(context, (StringConstant) semanticObject);
return;
case ExpressionsPackage.VARIABLE:
sequence_Variable(context, (Variable) semanticObject);
return;
case ExpressionsPackage.VARIABLE_REF:
sequence_Atomic(context, (VariableRef) semanticObject);
return;
}
if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Constraint:
* (left=And_And_1_0 right=Equality)
*/
protected void sequence_And(EObject context, And semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.AND__LEFT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.AND__LEFT));
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.AND__RIGHT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.AND__RIGHT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getAndAccess().getAndLeftAction_1_0(), semanticObject.getLeft());
feeder.accept(grammarAccess.getAndAccess().getRightEqualityParserRuleCall_1_2_0(), semanticObject.getRight());
feeder.finish();
}
/**
* Constraint:
* (value='true' | value='false')
*/
protected void sequence_Atomic(EObject context, BoolConstant semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* value=INT
*/
protected void sequence_Atomic(EObject context, IntConstant semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.INT_CONSTANT__VALUE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.INT_CONSTANT__VALUE));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getAtomicAccess().getValueINTTerminalRuleCall_0_1_0(), semanticObject.getValue());
feeder.finish();
}
/**
* Constraint:
* value=STRING
*/
protected void sequence_Atomic(EObject context, StringConstant semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.STRING_CONSTANT__VALUE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.STRING_CONSTANT__VALUE));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getAtomicAccess().getValueSTRINGTerminalRuleCall_1_1_0(), semanticObject.getValue());
feeder.finish();
}
/**
* Constraint:
* variable=[Variable|ID]
*/
protected void sequence_Atomic(EObject context, VariableRef semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.VARIABLE_REF__VARIABLE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.VARIABLE_REF__VARIABLE));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getAtomicAccess().getVariableVariableIDTerminalRuleCall_3_1_0_1(), semanticObject.getVariable());
feeder.finish();
}
/**
* Constraint:
* (left=Comparison_Comparison_1_0 (op='>=' | op='<=' | op='>' | op='<') right=PlusOrMinus)
*/
protected void sequence_Comparison(EObject context, Comparison semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (left=Equality_Equality_1_0 (op='==' | op='!=') right=Comparison)
*/
protected void sequence_Equality(EObject context, Equality semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* elements+=AbstractElement*
*/
protected void sequence_ExpressionsModel(EObject context, ExpressionsModel semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (left=MulOrDiv_MulOrDiv_1_0 (op='*' | op='/') right=Primary)
*/
protected void sequence_MulOrDiv(EObject context, MulOrDiv semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (left=Or_Or_1_0 right=And)
*/
protected void sequence_Or(EObject context, Or semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.OR__LEFT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.OR__LEFT));
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.OR__RIGHT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.OR__RIGHT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getOrAccess().getOrLeftAction_1_0(), semanticObject.getLeft());
feeder.accept(grammarAccess.getOrAccess().getRightAndParserRuleCall_1_2_0(), semanticObject.getRight());
feeder.finish();
}
/**
* Constraint:
* (left=PlusOrMinus_Minus_1_0_1_0 right=MulOrDiv)
*/
protected void sequence_PlusOrMinus(EObject context, Minus semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.MINUS__LEFT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.MINUS__LEFT));
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.MINUS__RIGHT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.MINUS__RIGHT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getPlusOrMinusAccess().getMinusLeftAction_1_0_1_0(), semanticObject.getLeft());
feeder.accept(grammarAccess.getPlusOrMinusAccess().getRightMulOrDivParserRuleCall_1_1_0(), semanticObject.getRight());
feeder.finish();
}
/**
* Constraint:
* (left=PlusOrMinus_Plus_1_0_0_0 right=MulOrDiv)
*/
protected void sequence_PlusOrMinus(EObject context, Plus semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.PLUS__LEFT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.PLUS__LEFT));
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.PLUS__RIGHT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.PLUS__RIGHT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getPlusOrMinusAccess().getPlusLeftAction_1_0_0_0(), semanticObject.getLeft());
feeder.accept(grammarAccess.getPlusOrMinusAccess().getRightMulOrDivParserRuleCall_1_1_0(), semanticObject.getRight());
feeder.finish();
}
/**
* Constraint:
* expression=Primary
*/
protected void sequence_Primary(EObject context, Not semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.NOT__EXPRESSION) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.NOT__EXPRESSION));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getPrimaryAccess().getExpressionPrimaryParserRuleCall_1_2_0(), semanticObject.getExpression());
feeder.finish();
}
/**
* Constraint:
* (name=ID expression=Expression)
*/
protected void sequence_Variable(EObject context, Variable semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.VARIABLE__NAME) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.VARIABLE__NAME));
if(transientValues.isValueTransient(semanticObject, ExpressionsPackage.Literals.VARIABLE__EXPRESSION) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExpressionsPackage.Literals.VARIABLE__EXPRESSION));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getVariableAccess().getNameIDTerminalRuleCall_0_0(), semanticObject.getName());
feeder.accept(grammarAccess.getVariableAccess().getExpressionExpressionParserRuleCall_2_0(), semanticObject.getExpression());
feeder.finish();
}
}