/*
* generated by Xtext
*/
package org.example.smalljava.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.smalljava.services.SmallJavaGrammarAccess;
import org.example.smalljava.smallJava.SJAssignment;
import org.example.smalljava.smallJava.SJBoolConstant;
import org.example.smalljava.smallJava.SJClass;
import org.example.smalljava.smallJava.SJField;
import org.example.smalljava.smallJava.SJIfBlock;
import org.example.smalljava.smallJava.SJIfStatement;
import org.example.smalljava.smallJava.SJImport;
import org.example.smalljava.smallJava.SJIntConstant;
import org.example.smalljava.smallJava.SJMemberSelection;
import org.example.smalljava.smallJava.SJMethod;
import org.example.smalljava.smallJava.SJMethodBody;
import org.example.smalljava.smallJava.SJNew;
import org.example.smalljava.smallJava.SJNull;
import org.example.smalljava.smallJava.SJParameter;
import org.example.smalljava.smallJava.SJProgram;
import org.example.smalljava.smallJava.SJReturn;
import org.example.smalljava.smallJava.SJStringConstant;
import org.example.smalljava.smallJava.SJSuper;
import org.example.smalljava.smallJava.SJSymbolRef;
import org.example.smalljava.smallJava.SJThis;
import org.example.smalljava.smallJava.SJVariableDeclaration;
import org.example.smalljava.smallJava.SmallJavaPackage;
@SuppressWarnings("all")
public class SmallJavaSemanticSequencer extends AbstractDelegatingSemanticSequencer {
@Inject
private SmallJavaGrammarAccess grammarAccess;
@Override
public void createSequence(EObject context, EObject semanticObject) {
if(semanticObject.eClass().getEPackage() == SmallJavaPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
case SmallJavaPackage.SJ_ASSIGNMENT:
sequence_SJAssignment(context, (SJAssignment) semanticObject);
return;
case SmallJavaPackage.SJ_BOOL_CONSTANT:
sequence_SJTerminalExpression(context, (SJBoolConstant) semanticObject);
return;
case SmallJavaPackage.SJ_CLASS:
sequence_SJClass(context, (SJClass) semanticObject);
return;
case SmallJavaPackage.SJ_FIELD:
sequence_SJField(context, (SJField) semanticObject);
return;
case SmallJavaPackage.SJ_IF_BLOCK:
sequence_SJIfBlock(context, (SJIfBlock) semanticObject);
return;
case SmallJavaPackage.SJ_IF_STATEMENT:
sequence_SJIfStatement(context, (SJIfStatement) semanticObject);
return;
case SmallJavaPackage.SJ_IMPORT:
sequence_SJImport(context, (SJImport) semanticObject);
return;
case SmallJavaPackage.SJ_INT_CONSTANT:
sequence_SJTerminalExpression(context, (SJIntConstant) semanticObject);
return;
case SmallJavaPackage.SJ_MEMBER_SELECTION:
sequence_SJSelectionExpression(context, (SJMemberSelection) semanticObject);
return;
case SmallJavaPackage.SJ_METHOD:
sequence_SJMethod(context, (SJMethod) semanticObject);
return;
case SmallJavaPackage.SJ_METHOD_BODY:
sequence_SJMethodBody(context, (SJMethodBody) semanticObject);
return;
case SmallJavaPackage.SJ_NEW:
sequence_SJTerminalExpression(context, (SJNew) semanticObject);
return;
case SmallJavaPackage.SJ_NULL:
sequence_SJTerminalExpression(context, (SJNull) semanticObject);
return;
case SmallJavaPackage.SJ_PARAMETER:
sequence_SJParameter(context, (SJParameter) semanticObject);
return;
case SmallJavaPackage.SJ_PROGRAM:
sequence_SJProgram(context, (SJProgram) semanticObject);
return;
case SmallJavaPackage.SJ_RETURN:
sequence_SJReturn(context, (SJReturn) semanticObject);
return;
case SmallJavaPackage.SJ_STRING_CONSTANT:
sequence_SJTerminalExpression(context, (SJStringConstant) semanticObject);
return;
case SmallJavaPackage.SJ_SUPER:
sequence_SJTerminalExpression(context, (SJSuper) semanticObject);
return;
case SmallJavaPackage.SJ_SYMBOL_REF:
sequence_SJTerminalExpression(context, (SJSymbolRef) semanticObject);
return;
case SmallJavaPackage.SJ_THIS:
sequence_SJTerminalExpression(context, (SJThis) semanticObject);
return;
case SmallJavaPackage.SJ_VARIABLE_DECLARATION:
sequence_SJVariableDeclaration(context, (SJVariableDeclaration) semanticObject);
return;
}
if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Constraint:
* (left=SJAssignment_SJAssignment_1_0 right=SJExpression)
*/
protected void sequence_SJAssignment(EObject context, SJAssignment semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_ASSIGNMENT__LEFT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_ASSIGNMENT__LEFT));
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_ASSIGNMENT__RIGHT) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_ASSIGNMENT__RIGHT));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getSJAssignmentAccess().getSJAssignmentLeftAction_1_0(), semanticObject.getLeft());
feeder.accept(grammarAccess.getSJAssignmentAccess().getRightSJExpressionParserRuleCall_1_2_0(), semanticObject.getRight());
feeder.finish();
}
/**
* Constraint:
* (name=ID superclass=[SJClass|QualifiedName]? members+=SJMember*)
*/
protected void sequence_SJClass(EObject context, SJClass semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (access=SJAccessLevel? type=[SJClass|QualifiedName] name=ID)
*/
protected void sequence_SJField(EObject context, SJField semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (statements+=SJStatement | statements+=SJStatement+)
*/
protected void sequence_SJIfBlock(EObject context, SJIfBlock semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (expression=SJExpression thenBlock=SJIfBlock elseBlock=SJIfBlock?)
*/
protected void sequence_SJIfStatement(EObject context, SJIfStatement semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* importedNamespace=QualifiedNameWithWildcard
*/
protected void sequence_SJImport(EObject context, SJImport semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_IMPORT__IMPORTED_NAMESPACE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_IMPORT__IMPORTED_NAMESPACE));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getSJImportAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_0(), semanticObject.getImportedNamespace());
feeder.finish();
}
/**
* Constraint:
* (statements+=SJStatement*)
*/
protected void sequence_SJMethodBody(EObject context, SJMethodBody semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (access=SJAccessLevel? type=[SJClass|QualifiedName] name=ID (params+=SJParameter params+=SJParameter*)? body=SJMethodBody)
*/
protected void sequence_SJMethod(EObject context, SJMethod semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (type=[SJClass|QualifiedName] name=ID)
*/
protected void sequence_SJParameter(EObject context, SJParameter semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_SYMBOL__TYPE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_SYMBOL__TYPE));
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_SYMBOL__NAME) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_SYMBOL__NAME));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getSJParameterAccess().getTypeSJClassQualifiedNameParserRuleCall_0_0_1(), semanticObject.getType());
feeder.accept(grammarAccess.getSJParameterAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
feeder.finish();
}
/**
* Constraint:
* (name=QualifiedName? imports+=SJImport* classes+=SJClass*)
*/
protected void sequence_SJProgram(EObject context, SJProgram semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* expression=SJExpression
*/
protected void sequence_SJReturn(EObject context, SJReturn semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_RETURN__EXPRESSION) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_RETURN__EXPRESSION));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getSJReturnAccess().getExpressionSJExpressionParserRuleCall_1_0(), semanticObject.getExpression());
feeder.finish();
}
/**
* Constraint:
* (receiver=SJSelectionExpression_SJMemberSelection_1_0 member=[SJMember|ID] (methodinvocation?='(' (args+=SJExpression args+=SJExpression*)?)?)
*/
protected void sequence_SJSelectionExpression(EObject context, SJMemberSelection semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (value='true' | value='false')
*/
protected void sequence_SJTerminalExpression(EObject context, SJBoolConstant semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* value=INT
*/
protected void sequence_SJTerminalExpression(EObject context, SJIntConstant semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_INT_CONSTANT__VALUE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_INT_CONSTANT__VALUE));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getSJTerminalExpressionAccess().getValueINTTerminalRuleCall_1_1_0(), semanticObject.getValue());
feeder.finish();
}
/**
* Constraint:
* type=[SJClass|QualifiedName]
*/
protected void sequence_SJTerminalExpression(EObject context, SJNew semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_NEW__TYPE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_NEW__TYPE));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getSJTerminalExpressionAccess().getTypeSJClassQualifiedNameParserRuleCall_7_2_0_1(), semanticObject.getType());
feeder.finish();
}
/**
* Constraint:
* {SJNull}
*/
protected void sequence_SJTerminalExpression(EObject context, SJNull semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* value=STRING
*/
protected void sequence_SJTerminalExpression(EObject context, SJStringConstant semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_STRING_CONSTANT__VALUE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_STRING_CONSTANT__VALUE));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getSJTerminalExpressionAccess().getValueSTRINGTerminalRuleCall_0_1_0(), semanticObject.getValue());
feeder.finish();
}
/**
* Constraint:
* {SJSuper}
*/
protected void sequence_SJTerminalExpression(EObject context, SJSuper semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* symbol=[SJSymbol|ID]
*/
protected void sequence_SJTerminalExpression(EObject context, SJSymbolRef semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_SYMBOL_REF__SYMBOL) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_SYMBOL_REF__SYMBOL));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getSJTerminalExpressionAccess().getSymbolSJSymbolIDTerminalRuleCall_6_1_0_1(), semanticObject.getSymbol());
feeder.finish();
}
/**
* Constraint:
* {SJThis}
*/
protected void sequence_SJTerminalExpression(EObject context, SJThis semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (type=[SJClass|QualifiedName] name=ID expression=SJExpression)
*/
protected void sequence_SJVariableDeclaration(EObject context, SJVariableDeclaration semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_SYMBOL__TYPE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_SYMBOL__TYPE));
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_SYMBOL__NAME) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_SYMBOL__NAME));
if(transientValues.isValueTransient(semanticObject, SmallJavaPackage.Literals.SJ_VARIABLE_DECLARATION__EXPRESSION) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SmallJavaPackage.Literals.SJ_VARIABLE_DECLARATION__EXPRESSION));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getSJVariableDeclarationAccess().getTypeSJClassQualifiedNameParserRuleCall_0_0_1(), semanticObject.getType());
feeder.accept(grammarAccess.getSJVariableDeclarationAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
feeder.accept(grammarAccess.getSJVariableDeclarationAccess().getExpressionSJExpressionParserRuleCall_3_0(), semanticObject.getExpression());
feeder.finish();
}
}