private ParsingEvent ParseFlowSequenceEntry(bool isFirst)
{
if (isFirst)
{
GetCurrentToken();
Skip();
}
ParsingEvent evt;
if (!(GetCurrentToken() is FlowSequenceEnd))
{
if (!isFirst)
{
if (GetCurrentToken() is FlowEntry)
{
Skip();
}
else
{
var current = GetCurrentToken();
throw new SemanticErrorException(current.Start, current.End, "While parsing a flow sequence, did not find expected ',' or ']'.");
}
}
if (GetCurrentToken() is Key)
{
state = ParserState.FlowSequenceEntryMappingKey;
evt = new Events.MappingStart(null, null, true, MappingStyle.Flow);
Skip();
return evt;
}
else if (!(GetCurrentToken() is FlowSequenceEnd))
{
states.Push(ParserState.FlowSequenceEntry);
return ParseNode(false, false);
}
}
state = states.Pop();
evt = new Events.SequenceEnd(GetCurrentToken().Start, GetCurrentToken().End);
Skip();
return evt;
}