private void DeleteDocumentComments(object sender, EventArgs e) { var dte = (DTE)this.ServiceProvider.GetService(typeof(DTE)); var document = dte.ActiveDocument; var textDocument = (TextDocument)document.Object("TextDocument"); var startPoint = textDocument.StartPoint.CreateEditPoint(); var endPoint = textDocument.EndPoint.CreateEditPoint(); var editText = CodeWorker.GetTextWithoutAutoComments(startPoint.GetText(endPoint)); if (editText != String.Empty) { startPoint.ReplaceText(endPoint, editText, 1); } }
private static void displayCoverage(CodeWorker.ParseTree[] allPositions) { if (allPositions.GetLength(0) == 0) return; AreasIterator it = new AreasIterator(allPositions); displayCoverage(it, "\t"); }
public AreasIterator(CodeWorker.ParseTree[] allPositions) { allPositions_ = allPositions; }
private void Button_Click(object sender, RoutedEventArgs e) { var Calc = new CalculatorManager(); var inputCode = CodeTextBox.Text; var lines = inputCode.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); var names = new List <string>(); var additionCode = ""; int idx = -1; for (int i = 0; i < lines.Length; i++) { var regex = Regex.Match(lines[i], "^\\s*>\\s*(.*?)\\s*="); if (regex.Success) { names.Add($"{Regex.Replace(regex.Groups[1].Value, "[[][]]\\s+", "")}"); idx++; additionCode += "\n" + $"Calc.AddNewValue({names[idx]});"; } } inputCode = Regex.Replace(inputCode, "out:", "Calc.StringAdd:"); var worker = new CodeWorker(inputCode + "\n"); worker.AddNewRule("^\\s*>", "double"); worker.AddNewRule("//.*?$", ""); worker.AddNewRule("while ", "while ("); worker.AddNewRule("for ", "for ("); worker.AddNewRule("if ", "if ("); worker.AddNewRule(":\\s*$", ") {"); worker.AddNewRule(";\\s*$", "}"); worker.AddNewRule("exit|quit|stop", "goto end"); worker.AddNewRule("for [(]\\s*", "for (int "); foreach (Match m in Regex.Matches(inputCode, "^.*?([<].*?[>]).*?$", RegexOptions.Multiline)) { var arrayItems = m.Groups[1].Value; worker.AddNewRule(new ArrayQuotesWorker() { InputString = arrayItems }); } foreach (Match m in Regex.Matches(inputCode, "^\\s*(Calc.StringAdd:.*?)\\s*.\\s*$", RegexOptions.Multiline)) { var outItems = m.Groups[1].Value; worker.AddNewRule(new OutFunctionWorker() { InputString = outItems }); } worker.AddNewRule("\n+", ";\n"); worker.AddNewRule("{;", "{"); worker.AddNewRule("};", ";}"); worker.ProcessString(); inputCode = worker.WorkingString; inputCode = Regex.Replace(inputCode, "[)][.]|[.][)]", ")"); inputCode = Regex.Replace(inputCode, "[)]\\s*}", ");}"); inputCode = Regex.Replace(inputCode, "\\s*}", ";}"); inputCode = $"Calc.Value = 1; {Calc.CorrectedExpression(inputCode)}" + additionCode; try { using (var sandBox = new Sandbox()) { var d = CodeGenerator.CreateCode <double> (sandBox, CS.Compiler, inputCode, null, null, CodeParameter.Create("Calc", Calc )); d.Execute(Calc); } OutputTextBox.Text = Calc.StringValue; var values = Calc.Values; for (int i = 0; i < names.Count; i++) { Calc.AddVariable(names[i], values[i]); } Vars.ItemsSource = Calc.Variables; } catch { MessageBox.Show(inputCode); } }