YamlDotNet.Core.Parser.ParseFlowSequenceEntry C# (CSharp) Method

ParseFlowSequenceEntry() private method

Parse the productions: flow_sequence ::= FLOW-SEQUENCE-START ******************* (flow_sequence_entry FLOW-ENTRY)* * ********** flow_sequence_entry? * FLOW-SEQUENCE-END ***************** flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? *
private ParseFlowSequenceEntry ( bool isFirst ) : YamlDotNet.Core.Events.ParsingEvent
isFirst bool
return YamlDotNet.Core.Events.ParsingEvent
        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;
        }