package org.eclipse.emf.mwe2.language.serializer;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.mwe2.language.mwe2.PlainString;
import org.eclipse.emf.mwe2.language.mwe2.StringLiteral;
import org.eclipse.emf.mwe2.language.services.Mwe2GrammarAccess;
import org.eclipse.emf.mwe2.language.services.Mwe2GrammarAccess.StringLiteralElements;
import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
import org.eclipse.xtext.serializer.sequencer.ISemanticNodeProvider.INodesForEObjectProvider;
import com.google.inject.Inject;
/**
* @author Moritz Eysholdt - Initial contribution and API
*/
@SuppressWarnings("restriction")
public class Mwe2SemanticSequencer extends AbstractMwe2SemanticSequencer {
@Inject
private Mwe2GrammarAccess grammarAccess;
@Override
protected void sequence_StringLiteral(EObject context, StringLiteral lit) {
INodesForEObjectProvider nodes = createNodeProvider(lit);
SequenceFeeder feeder = createSequencerFeeder(lit, nodes);
StringLiteralElements g = grammarAccess.getStringLiteralAccess();
if ("'".equals(lit.getBegin())) {
feeder.accept(g.getBeginApostropheKeyword_0_0_0());
if (!lit.getParts().isEmpty()) {
int i = 0;
if (lit.getParts().get(i) instanceof PlainString) {
feeder.accept(g.getPartsPlainStringParserRuleCall_0_1_0(), lit.getParts().get(i), i);
i++;
}
while (i < lit.getParts().size()) {
feeder.accept(g.getPartsPropertyReferenceParserRuleCall_0_2_0_0(), lit.getParts().get(i), i);
i++;
if (i < lit.getParts().size() && lit.getParts().get(i) instanceof PlainString) {
feeder.accept(g.getPartsPlainStringParserRuleCall_0_2_1_0(), lit.getParts().get(i), i);
i++;
}
}
}
feeder.accept(g.getEndApostropheKeyword_0_3_0());
} else {
feeder.accept(g.getBeginQuotationMarkKeyword_1_0_0());
if (!lit.getParts().isEmpty()) {
int i = 0;
if (lit.getParts().get(i) instanceof PlainString) {
feeder.accept(g.getPartsPlainStringParserRuleCall_1_1_0(), lit.getParts().get(i), i);
i++;
}
while (i < lit.getParts().size()) {
feeder.accept(g.getPartsPropertyReferenceParserRuleCall_1_2_0_0(), lit.getParts().get(i), i);
i++;
if (i < lit.getParts().size() && lit.getParts().get(i) instanceof PlainString) {
feeder.accept(g.getPartsPlainStringParserRuleCall_1_2_1_0(), lit.getParts().get(i), i);
i++;
}
}
}
feeder.accept(g.getEndQuotationMarkKeyword_1_3_0());
}
feeder.finish();
}
}