| package org.xtext.example.mydsl.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.xtext.example.mydsl.myDsl.Greeting; |
| import org.xtext.example.mydsl.myDsl.Model; |
| import org.xtext.example.mydsl.myDsl.MyDslPackage; |
| import org.xtext.example.mydsl.services.MyDslGrammarAccess; |
| |
| @SuppressWarnings("all") |
| public class MyDslSemanticSequencer extends AbstractDelegatingSemanticSequencer { |
| |
| @Inject |
| private MyDslGrammarAccess grammarAccess; |
| |
| public void createSequence(EObject context, EObject semanticObject) { |
| if(semanticObject.eClass().getEPackage() == MyDslPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) { |
| case MyDslPackage.GREETING: |
| if(context == grammarAccess.getGreetingRule()) { |
| sequence_Greeting(context, (Greeting) semanticObject); |
| return; |
| } |
| else break; |
| case MyDslPackage.MODEL: |
| if(context == grammarAccess.getModelRule()) { |
| sequence_Model(context, (Model) semanticObject); |
| return; |
| } |
| else break; |
| } |
| if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context)); |
| } |
| |
| /** |
| * Constraint: |
| * name=ID |
| */ |
| protected void sequence_Greeting(EObject context, Greeting semanticObject) { |
| if(errorAcceptor != null) { |
| if(transientValues.isValueTransient(semanticObject, MyDslPackage.Literals.GREETING__NAME) == ValueTransient.YES) |
| errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, MyDslPackage.Literals.GREETING__NAME)); |
| } |
| INodesForEObjectProvider nodes = createNodeProvider(semanticObject); |
| SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); |
| feeder.accept(grammarAccess.getGreetingAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName()); |
| feeder.finish(); |
| } |
| |
| |
| /** |
| * Constraint: |
| * greetings+=Greeting* |
| */ |
| protected void sequence_Model(EObject context, Model semanticObject) { |
| genericSequencer.createSequence(context, semanticObject); |
| } |
| } |