Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
 private static void displayCoverage(CodeWorker.ParseTree[] allPositions)
 {
     if (allPositions.GetLength(0) == 0) return;
     AreasIterator it = new AreasIterator(allPositions);
     displayCoverage(it, "\t");
 }
Exemplo n.º 3
0
 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);
            }
        }