public static ASMProcessEquivalencesResult ProcessEquivalences(string[] lines) { ASMProcessEquivalencesResult result = new ASMProcessEquivalencesResult(); result.ErrorCode = 0; StringBuilder errorTextBuilder = new StringBuilder(); Dictionary <string, string> eqvDict = new Dictionary <string, string>(); ASMFindEquivalencesResult findEquivalencesResult = FindEquivalences(eqvDict, lines); if (findEquivalencesResult != null) { if (findEquivalencesResult.ErrorCode > 0) { result.ErrorCode = 1; errorTextBuilder.Append(findEquivalencesResult.ErrorMessage); } } List <string> newLines = new List <string>(); foreach (string line in lines) { string processLine = ASMStringHelper.RemoveLeadingBracketBlock(line); processLine = ASMStringHelper.RemoveLeadingSpaces(processLine); processLine = ASMStringHelper.RemoveComment(processLine).ToLower(); string[] parts = ASMStringHelper.SplitLine(processLine); bool isEquivalence = ((!string.IsNullOrEmpty(parts[0])) && (parts[0].ToLower().Trim() == ".eqv")); string newLine = (string)line.Clone(); if (!isEquivalence) { foreach (KeyValuePair <string, string> eqv in eqvDict) { newLine = newLine.Replace(eqv.Key, eqv.Value); } } newLines.Add(newLine); } result.ErrorMessage = errorTextBuilder.ToString(); result.Lines = newLines.ToArray(); return(result); }
private static ASMFindEquivalencesResult FindEquivalences(Dictionary <string, string> eqvDict, string[] lines) { ASMFindEquivalencesResult result = new ASMFindEquivalencesResult(); result.ErrorCode = 0; StringBuilder errorTextBuilder = new StringBuilder(); ClearEquivalenceDict(eqvDict); foreach (string line in lines) { if (string.IsNullOrEmpty(line)) { continue; } string processLine = ASMStringHelper.RemoveLeadingBracketBlock(line); processLine = ASMStringHelper.RemoveLeadingSpaces(processLine); processLine = ASMStringHelper.RemoveComment(processLine).ToLower(); string[] parts = ASMStringHelper.SplitLine(processLine); ASMAddEquivalenceResult processEquivalenceResult = ProcessEquivalenceStatement(eqvDict, parts); if (processEquivalenceResult != null) { if (processEquivalenceResult.ErrorCode > 0) { result.ErrorCode = 1; errorTextBuilder.Append(processEquivalenceResult.ErrorMessage); } } } result.ErrorMessage = errorTextBuilder.ToString(); return(result); }
private static ASMFindEquivalencesResult FindEquivalences(Dictionary<string, string> eqvDict, string[] lines) { ASMFindEquivalencesResult result = new ASMFindEquivalencesResult(); result.ErrorCode = 0; StringBuilder errorTextBuilder = new StringBuilder(); ClearEquivalenceDict(eqvDict); foreach (string line in lines) { if (string.IsNullOrEmpty(line)) continue; string processLine = ASMStringHelper.RemoveLeadingBracketBlock(line); processLine = ASMStringHelper.RemoveLeadingSpaces(processLine); processLine = ASMStringHelper.RemoveComment(processLine).ToLower(); string[] parts = ASMStringHelper.SplitLine(processLine); ASMAddEquivalenceResult processEquivalenceResult = ProcessEquivalenceStatement(eqvDict, parts); if (processEquivalenceResult != null) { if (processEquivalenceResult.ErrorCode > 0) { result.ErrorCode = 1; errorTextBuilder.Append(processEquivalenceResult.ErrorMessage); } } } result.ErrorMessage = errorTextBuilder.ToString(); return result; }
public static ASMProcessEquivalencesResult ProcessEquivalences(string[] lines) { ASMProcessEquivalencesResult result = new ASMProcessEquivalencesResult(); result.ErrorCode = 0; StringBuilder errorTextBuilder = new StringBuilder(); Dictionary <string, string> eqvMap = new Dictionary <string, string>(); ASMFindEquivalencesResult findEquivalencesResult = FindEquivalences(eqvMap, lines); if (findEquivalencesResult != null) { if (findEquivalencesResult.ErrorCode > 0) { result.ErrorCode = 1; errorTextBuilder.Append(findEquivalencesResult.ErrorMessage); } } List <string> eqvKeys = new List <string>(eqvMap.Keys); eqvKeys.Sort((a, b) => a.Length.CompareTo(b.Length)); eqvKeys.Reverse(); List <string> newLines = new List <string>(); foreach (string line in lines) { string processLine = ASMStringHelper.RemoveLeadingBracketBlock(line); processLine = ASMStringHelper.RemoveLeadingSpaces(processLine); processLine = ASMStringHelper.RemoveComment(processLine).ToLower(); string[] parts = ASMStringHelper.SplitLine(processLine); bool isEquivalence = ((!string.IsNullOrEmpty(parts[0])) && (parts[0].ToLower().Trim() == ".eqv")); string newLine = (string)line.Clone(); if (!isEquivalence) { /* * foreach (KeyValuePair<string, string> eqv in eqvDict) * { * //newLine = newLine.Replace(eqv.Key, eqv.Value); * newLine = System.Text.RegularExpressions.Regex.Replace(newLine, System.Text.RegularExpressions.Regex.Escape(eqv.Key), eqv.Value.Replace("$", "$$"), * System.Text.RegularExpressions.RegexOptions.IgnoreCase); * } */ foreach (string eqvKey in eqvKeys) { newLine = System.Text.RegularExpressions.Regex.Replace(newLine, System.Text.RegularExpressions.Regex.Escape(eqvKey), eqvMap[eqvKey].Replace("$", "$$"), System.Text.RegularExpressions.RegexOptions.IgnoreCase); } } newLines.Add(newLine); } result.ErrorMessage = errorTextBuilder.ToString(); result.Lines = newLines.ToArray(); return(result); }