private DataItem ParseExplicitValue(out bool success)
{
int errorCount = Errors.Count;
DataItem dataItem = null;
while (true)
{
int seq_start_position1 = position;
MatchTerminal(':', out success);
if (!success)
{
Error("Failed to parse ':' of ExplicitValue.");
break;
}
ParseSeparationLinesInFlow(out success);
if (!success)
{
Error("Failed to parse SeparationLinesInFlow of ExplicitValue.");
position = seq_start_position1;
break;
}
dataItem = ParseFlowNodeInFlow(out success);
if (!success)
{
Error("Failed to parse FlowNodeInFlow of ExplicitValue.");
position = seq_start_position1;
break;
}
ParseSeparationLinesInFlow(out success);
success = true;
break;
}
if (success) { ClearError(errorCount); return dataItem; }
while (true)
{
int seq_start_position2 = position;
MatchTerminal(':', out success);
if (!success)
{
Error("Failed to parse ':' of ExplicitValue.");
break;
}
dataItem = ParseEmptyFlow(out success);
ParseSeparationLinesInFlow(out success);
if (!success)
{
Error("Failed to parse SeparationLinesInFlow of ExplicitValue.");
position = seq_start_position2;
}
break;
}
if (success) { ClearError(errorCount); return dataItem; }
return dataItem;
}