private static MixedDataRecord ParseMixedRecords(string[] tokens, int startIndex, int endIndex) { var record = new MixedDataRecord(); for (var i = startIndex + 1; i < endIndex; i++) { int end; if (tokens[i] == "(") { end = IndexHelper.GetEndIndex(tokens, i, BracketType.RoundBracket); record.Records.Add(ParseMixedRecords(tokens, i, end)); } else if (tokens[i] == "[") { end = IndexHelper.GetEndIndex(tokens, i, BracketType.SquareBracket); record.Records.Add(ParseMultipleRecords(tokens, i, end)); } else { record.Records.Add(ParseSingleDataRecord(tokens, i)); end = i; } i = end; } return(record); }
private static MultipleRecords ParseMultipleRecords(string[] tokens, int startIndex, int endIndex) { var record = new MultipleRecords(); for (var i = startIndex + 1; i < endIndex; i++) { var indexes = IndexHelper.GetIndexes(tokens, i); var result = ParseTokens(tokens, i); record.Records.Add(result.Name, result); i = indexes.endIndex; } return(record); }
internal static Record ParseTokens(string[] tokens, int startIndex) { var indexes = IndexHelper.GetIndexes(tokens, startIndex); var record = new Record(); record.Name = tokens[indexes.nameIndex]; if (indexes.recordDataType == RecordDataType.SingleDataRecord) { record.Data = ParseSingleDataRecord(tokens, indexes.startIndex); } else if (indexes.recordDataType == RecordDataType.MultipleRecords) { record.Data = ParseMultipleRecords(tokens, indexes.startIndex, indexes.endIndex); } else if (indexes.recordDataType == RecordDataType.MixedDataRecord) { record.Data = ParseMixedRecords(tokens, indexes.startIndex, indexes.endIndex); } return(record); }