public static StepGen Parse(string text) { var gen = new StepGen(); var labels = new List <string>(); //string comment = string.EmptyStep; var lines = text.Split(StepConst.NEWLINE.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < lines.Length; i++) { var line = lines[i].Trim(); if (string.IsNullOrWhiteSpace(line)) { continue; } if (line.StartsWith(StepConst.COMMENT)) { //var comt = line.Trim(StepConst.COMMENT.ToCharArray()).Trim(); //if (!comt.Equals(StepConst.MARK, StringComparison.OrdinalIgnoreCase)) //{ // comment += comt + StepConst.SPACE + StepConst.COMMENT; //} continue; } if (line.StartsWith(StepConst.DEFINE, StringComparison.OrdinalIgnoreCase)) { while (!line.EndsWith(StepConst.DEFINEEND)) { i++; line = lines[i].Trim(); } continue; } var index = line.IndexOf(StepConst.COMMENT, StringComparison.Ordinal); if (index > 0) { line = line.Substring(0, index).Trim(); } if (string.IsNullOrWhiteSpace(line)) { continue; } if (line.EndsWith(StepConst.COLON)) { labels.AddRange(line.Split(StepConst.COLON.ToCharArray(), StringSplitOptions.RemoveEmptyEntries)); } else { if (labels.Any()) { foreach (var label in labels) { gen.Empty(label); } labels.Clear(); } var step = ParseStep(line); if (step == null) { return(null); } //step.Comment = comment.Trim(StepConst.COMMENT.ToCharArray()).Trim(); gen.Add(step); //comment = string.EmptyStep; } } return(gen.SkipEmpty()); }