private DataItem ParseSeparatedBlock(out bool success)
{
int errorCount = Errors.Count;
DataItem dataItem = null;
dataItem = ParseSeparatedContent(out success);
if (success) { ClearError(errorCount); return dataItem; }
while (true)
{
int seq_start_position1 = position;
ParseSeparationLines(out success);
if (!success)
{
Error("Failed to parse SeparationLines of SeparatedBlock.");
break;
}
dataItem = ParseAliasNode(out success);
if (!success)
{
Error("Failed to parse AliasNode of SeparatedBlock.");
position = seq_start_position1;
break;
}
ParseInlineComments(out success);
if (!success)
{
Error("Failed to parse InlineComments of SeparatedBlock.");
position = seq_start_position1;
}
break;
}
if (success) { ClearError(errorCount); return dataItem; }
while (true)
{
int seq_start_position2 = position;
ParseSeparationSpace(out success);
if (!success)
{
Error("Failed to parse SeparationSpace of SeparatedBlock.");
break;
}
NodeProperty property = ParseNodeProperty(out success);
if (!success)
{
Error("Failed to parse property of SeparatedBlock.");
position = seq_start_position2;
break;
}
dataItem = ParseSeparatedContent(out success);
if (success) { SetDataItemProperty(dataItem, property); }
success = true;
break;
}
if (success) { ClearError(errorCount); return dataItem; }
dataItem = ParseEmptyBlock(out success);
if (success) { ClearError(errorCount); return dataItem; }
return dataItem;
}