private void FetchBlockEntry()
{
// Check if the scanner is in the block context.
if (flowLevel == 0)
{
// Check if we are allowed to start a new entry.
if (!simpleKeyAllowed)
{
var mark = cursor.Mark();
throw new SyntaxErrorException(mark, mark, "Block sequence entries are not allowed in this context.");
}
// Add the BLOCK-SEQUENCE-START token if needed.
RollIndent(cursor.LineOffset, -1, true, cursor.Mark());
}
else
{
// It is an error for the '-' indicator to occur in the flow context,
// but we let the Parser detect and report about it because the Parser
// is able to point to the context.
}
// Reset any potential simple keys on the current flow level.
RemoveSimpleKey();
// Simple keys are allowed after '-'.
simpleKeyAllowed = true;
// Consume the token.
var start = cursor.Mark();
Skip();
// Create the BLOCK-ENTRY token and append it to the queue.
tokens.Enqueue(new BlockEntry(start, cursor.Mark()));
}