package org.archstudio.prolog.xtext.serializer;
import com.google.inject.Inject;
import com.google.inject.Provider;
import org.archstudio.prolog.xtext.prolog.AtomExpression;
import org.archstudio.prolog.xtext.prolog.Expression;
import org.archstudio.prolog.xtext.prolog.ListExpression;
import org.archstudio.prolog.xtext.prolog.Model;
import org.archstudio.prolog.xtext.prolog.NumberExpression;
import org.archstudio.prolog.xtext.prolog.PrologPackage;
import org.archstudio.prolog.xtext.prolog.StringExpression;
import org.archstudio.prolog.xtext.prolog.UnaryExpression;
import org.archstudio.prolog.xtext.prolog.VariableExpression;
import org.archstudio.prolog.xtext.services.PrologGrammarAccess;
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 PrologSemanticSequencer extends AbstractDelegatingSemanticSequencer {
@Inject
private PrologGrammarAccess grammarAccess;
public void createSequence(EObject context, EObject semanticObject) {
if(semanticObject.eClass().getEPackage() == PrologPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
case PrologPackage.ATOM_EXPRESSION:
if(context == grammarAccess.getExpression0Rule() ||
context == grammarAccess.getExpression200xfxRule() ||
context == grammarAccess.getExpression200xfxAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression200xfyRule() ||
context == grammarAccess.getExpression200xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression400yfxRule() ||
context == grammarAccess.getExpression400yfxAccess().getExpressionLeftAction_1_0()) {
sequence_Expression0(context, (AtomExpression) semanticObject);
return;
}
else break;
case PrologPackage.EXPRESSION:
if(context == grammarAccess.getExpression1100xfyRule()) {
sequence_Expression1000xfy_Expression1050xfy_Expression1100xfy_Expression954xfy(context, (Expression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression1050xfyRule() ||
context == grammarAccess.getExpression1100xfyAccess().getExpressionLeftAction_1_0()) {
sequence_Expression1000xfy_Expression1050xfy_Expression954xfy(context, (Expression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression1000xfyRule() ||
context == grammarAccess.getExpression1050xfyAccess().getExpressionLeftAction_1_0()) {
sequence_Expression1000xfy_Expression954xfy(context, (Expression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression0Rule() ||
context == grammarAccess.getExpression1200xfxRule() ||
context == grammarAccess.getExpression200xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpressionInfinityRule()) {
sequence_Expression1200xfx(context, (Expression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression200xfxRule()) {
sequence_Expression1200xfx_Expression200xfx_Expression200xfy(context, (Expression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression400yfxRule() ||
context == grammarAccess.getExpression400yfxAccess().getExpressionLeftAction_1_0()) {
sequence_Expression1200xfx_Expression200xfx_Expression200xfy_Expression400yfx(context, (Expression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression200xfxAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression200xfyRule()) {
sequence_Expression1200xfx_Expression200xfy(context, (Expression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression500yfxRule() ||
context == grammarAccess.getExpression500yfxAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression600xfyAccess().getExpressionLeftAction_1_0()) {
sequence_Expression500yfx(context, (Expression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression600xfyRule() ||
context == grammarAccess.getExpression700xfxAccess().getExpressionLeftAction_1_0()) {
sequence_Expression500yfx_Expression600xfy(context, (Expression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression700xfxRule()) {
sequence_Expression500yfx_Expression600xfy_Expression700xfx(context, (Expression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression1000xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression954xfyRule()) {
sequence_Expression954xfy(context, (Expression) semanticObject);
return;
}
else break;
case PrologPackage.LIST_EXPRESSION:
if(context == grammarAccess.getExpression0Rule() ||
context == grammarAccess.getExpression200xfxRule() ||
context == grammarAccess.getExpression200xfxAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression200xfyRule() ||
context == grammarAccess.getExpression200xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression400yfxRule() ||
context == grammarAccess.getExpression400yfxAccess().getExpressionLeftAction_1_0()) {
sequence_Expression0(context, (ListExpression) semanticObject);
return;
}
else break;
case PrologPackage.MODEL:
if(context == grammarAccess.getModelRule()) {
sequence_Model(context, (Model) semanticObject);
return;
}
else break;
case PrologPackage.NUMBER_EXPRESSION:
if(context == grammarAccess.getExpression0Rule() ||
context == grammarAccess.getExpression200xfxRule() ||
context == grammarAccess.getExpression200xfxAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression200xfyRule() ||
context == grammarAccess.getExpression200xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression400yfxRule() ||
context == grammarAccess.getExpression400yfxAccess().getExpressionLeftAction_1_0()) {
sequence_Expression0(context, (NumberExpression) semanticObject);
return;
}
else break;
case PrologPackage.STRING_EXPRESSION:
if(context == grammarAccess.getExpression0Rule() ||
context == grammarAccess.getExpression200xfxRule() ||
context == grammarAccess.getExpression200xfxAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression200xfyRule() ||
context == grammarAccess.getExpression200xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression400yfxRule() ||
context == grammarAccess.getExpression400yfxAccess().getExpressionLeftAction_1_0()) {
sequence_Expression0(context, (StringExpression) semanticObject);
return;
}
else break;
case PrologPackage.UNARY_EXPRESSION:
if(context == grammarAccess.getExpression1150fxRule()) {
sequence_Expression1150fx(context, (UnaryExpression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression0Rule() ||
context == grammarAccess.getExpression1200fxRule() ||
context == grammarAccess.getExpression1200xfxRule() ||
context == grammarAccess.getExpression1200xfxAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression200xfxRule() ||
context == grammarAccess.getExpression200xfxAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression200xfyRule() ||
context == grammarAccess.getExpression200xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression400yfxRule() ||
context == grammarAccess.getExpression400yfxAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpressionInfinityRule()) {
sequence_Expression1200fx(context, (UnaryExpression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression500fxRule() ||
context == grammarAccess.getExpression500yfxRule() ||
context == grammarAccess.getExpression500yfxAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression600xfyRule() ||
context == grammarAccess.getExpression600xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression700xfxRule() ||
context == grammarAccess.getExpression700xfxAccess().getExpressionLeftAction_1_0()) {
sequence_Expression500fx(context, (UnaryExpression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression900fxRule()) {
sequence_Expression900fx(context, (UnaryExpression) semanticObject);
return;
}
else if(context == grammarAccess.getExpression1000xfyRule() ||
context == grammarAccess.getExpression1000xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression1050xfyRule() ||
context == grammarAccess.getExpression1050xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression1100xfyRule() ||
context == grammarAccess.getExpression1100xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression900fyRule() ||
context == grammarAccess.getExpression954xfyRule() ||
context == grammarAccess.getExpression954xfyAccess().getExpressionLeftAction_1_0()) {
sequence_Expression900fy(context, (UnaryExpression) semanticObject);
return;
}
else break;
case PrologPackage.VARIABLE_EXPRESSION:
if(context == grammarAccess.getExpression0Rule() ||
context == grammarAccess.getExpression200xfxRule() ||
context == grammarAccess.getExpression200xfxAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression200xfyRule() ||
context == grammarAccess.getExpression200xfyAccess().getExpressionLeftAction_1_0() ||
context == grammarAccess.getExpression400yfxRule() ||
context == grammarAccess.getExpression400yfxAccess().getExpressionLeftAction_1_0()) {
sequence_Expression0(context, (VariableExpression) semanticObject);
return;
}
else break;
}
if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Constraint:
* (atom=ATOMS terms=ExpressionInfinity?)
*/
protected void sequence_Expression0(EObject context, AtomExpression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* ((head=ExpressionInfinity tail=ExpressionInfinity?)?)
*/
protected void sequence_Expression0(EObject context, ListExpression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* value=NUMBER
*/
protected void sequence_Expression0(EObject context, NumberExpression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* value=STRING
*/
protected void sequence_Expression0(EObject context, StringExpression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* name=VARIABLE
*/
protected void sequence_Expression0(EObject context, VariableExpression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* (left=Expression1000xfy_Expression_1_0 op=OP1000XFY right=Expression1000xfy) |
* (left=Expression954xfy_Expression_1_0 op=OP954XFY right=Expression954xfy) |
* (left=Expression1050xfy_Expression_1_0 op=OP1050XFY right=Expression1050xfy) |
* (left=Expression1100xfy_Expression_1_0 op=OP1100XFY right=Expression1100xfy)
* )
*/
protected void sequence_Expression1000xfy_Expression1050xfy_Expression1100xfy_Expression954xfy(EObject context, Expression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* (left=Expression1000xfy_Expression_1_0 op=OP1000XFY right=Expression1000xfy) |
* (left=Expression954xfy_Expression_1_0 op=OP954XFY right=Expression954xfy) |
* (left=Expression1050xfy_Expression_1_0 op=OP1050XFY right=Expression1050xfy)
* )
*/
protected void sequence_Expression1000xfy_Expression1050xfy_Expression954xfy(EObject context, Expression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* (left=Expression1000xfy_Expression_1_0 op=OP1000XFY right=Expression1000xfy) |
* (left=Expression954xfy_Expression_1_0 op=OP954XFY right=Expression954xfy)
* )
*/
protected void sequence_Expression1000xfy_Expression954xfy(EObject context, Expression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (op=OP1150FX? right=Expression1100xfy)
*/
protected void sequence_Expression1150fx(EObject context, UnaryExpression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (op=OP1200FX? right=Expression1150fx)
*/
protected void sequence_Expression1200fx(EObject context, UnaryExpression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (left=Expression1200xfx_Expression_1_0 op=OP1200XFX right=Expression1200fx)
*/
protected void sequence_Expression1200xfx(EObject context, Expression semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, PrologPackage.Literals.EXPRESSION__LEFT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PrologPackage.Literals.EXPRESSION__LEFT));
if(transientValues.isValueTransient(semanticObject, PrologPackage.Literals.EXPRESSION__OP) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PrologPackage.Literals.EXPRESSION__OP));
if(transientValues.isValueTransient(semanticObject, PrologPackage.Literals.EXPRESSION__RIGHT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PrologPackage.Literals.EXPRESSION__RIGHT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getExpression1200xfxAccess().getExpressionLeftAction_1_0(), semanticObject.getLeft());
feeder.accept(grammarAccess.getExpression1200xfxAccess().getOpOP1200XFXTerminalRuleCall_1_1_0(), semanticObject.getOp());
feeder.accept(grammarAccess.getExpression1200xfxAccess().getRightExpression1200fxParserRuleCall_1_2_0(), semanticObject.getRight());
feeder.finish();
}
/**
* Constraint:
* (
* (left=Expression200xfy_Expression_1_0 op=OP200XFY right=Expression200xfy) |
* (left=Expression1200xfx_Expression_1_0 op=OP1200XFX right=Expression1200fx) |
* (left=Expression200xfx_Expression_1_0 op=OP200XFX right=Expression200xfy)
* )
*/
protected void sequence_Expression1200xfx_Expression200xfx_Expression200xfy(EObject context, Expression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* (left=Expression200xfy_Expression_1_0 op=OP200XFY right=Expression200xfy) |
* (left=Expression1200xfx_Expression_1_0 op=OP1200XFX right=Expression1200fx) |
* (left=Expression200xfx_Expression_1_0 op=OP200XFX right=Expression200xfy) |
* (left=Expression400yfx_Expression_1_0 op=OP400YFX right=Expression200xfx)
* )
*/
protected void sequence_Expression1200xfx_Expression200xfx_Expression200xfy_Expression400yfx(EObject context, Expression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* (left=Expression200xfy_Expression_1_0 op=OP200XFY right=Expression200xfy) |
* (left=Expression1200xfx_Expression_1_0 op=OP1200XFX right=Expression1200fx)
* )
*/
protected void sequence_Expression1200xfx_Expression200xfy(EObject context, Expression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (op=OP500FX? right=Expression400yfx)
*/
protected void sequence_Expression500fx(EObject context, UnaryExpression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (left=Expression500yfx_Expression_1_0 op=OP500YFX right=Expression500fx)
*/
protected void sequence_Expression500yfx(EObject context, Expression semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, PrologPackage.Literals.EXPRESSION__LEFT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PrologPackage.Literals.EXPRESSION__LEFT));
if(transientValues.isValueTransient(semanticObject, PrologPackage.Literals.EXPRESSION__OP) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PrologPackage.Literals.EXPRESSION__OP));
if(transientValues.isValueTransient(semanticObject, PrologPackage.Literals.EXPRESSION__RIGHT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PrologPackage.Literals.EXPRESSION__RIGHT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getExpression500yfxAccess().getExpressionLeftAction_1_0(), semanticObject.getLeft());
feeder.accept(grammarAccess.getExpression500yfxAccess().getOpOP500YFXTerminalRuleCall_1_1_0(), semanticObject.getOp());
feeder.accept(grammarAccess.getExpression500yfxAccess().getRightExpression500fxParserRuleCall_1_2_0(), semanticObject.getRight());
feeder.finish();
}
/**
* Constraint:
* (
* (left=Expression600xfy_Expression_1_0 op=OP600XFY right=Expression600xfy) |
* (left=Expression500yfx_Expression_1_0 op=OP500YFX right=Expression500fx)
* )
*/
protected void sequence_Expression500yfx_Expression600xfy(EObject context, Expression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* (left=Expression600xfy_Expression_1_0 op=OP600XFY right=Expression600xfy) |
* (left=Expression500yfx_Expression_1_0 op=OP500YFX right=Expression500fx) |
* (left=Expression700xfx_Expression_1_0 op=OP700XFX right=Expression600xfy)
* )
*/
protected void sequence_Expression500yfx_Expression600xfy_Expression700xfx(EObject context, Expression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (op=OP900FX? right=Expression700xfx)
*/
protected void sequence_Expression900fx(EObject context, UnaryExpression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* ((op=OP900FY right=Expression900fy) | right=Expression900fx)
*/
protected void sequence_Expression900fy(EObject context, UnaryExpression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (left=Expression954xfy_Expression_1_0 op=OP954XFY right=Expression954xfy)
*/
protected void sequence_Expression954xfy(EObject context, Expression semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, PrologPackage.Literals.EXPRESSION__LEFT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PrologPackage.Literals.EXPRESSION__LEFT));
if(transientValues.isValueTransient(semanticObject, PrologPackage.Literals.EXPRESSION__OP) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PrologPackage.Literals.EXPRESSION__OP));
if(transientValues.isValueTransient(semanticObject, PrologPackage.Literals.EXPRESSION__RIGHT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PrologPackage.Literals.EXPRESSION__RIGHT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getExpression954xfyAccess().getExpressionLeftAction_1_0(), semanticObject.getLeft());
feeder.accept(grammarAccess.getExpression954xfyAccess().getOpOP954XFYTerminalRuleCall_1_1_0(), semanticObject.getOp());
feeder.accept(grammarAccess.getExpression954xfyAccess().getRightExpression954xfyParserRuleCall_1_2_0(), semanticObject.getRight());
feeder.finish();
}
/**
* Constraint:
* exps+=ExpressionInfinity+
*/
protected void sequence_Model(EObject context, Model semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
}