Exemple #1
0
        public TemplateVisualizer(ErrorManager errorManager, DebugTemplate root, string output, Interpreter interpreter, List <string> trace, ReadOnlyCollection <TemplateMessage> errors)
        {
            if (errorManager == null)
            {
                throw new ArgumentNullException("errorManager");
            }
            if (root == null)
            {
                throw new ArgumentNullException("root");
            }
            if (interpreter == null)
            {
                throw new ArgumentNullException("interpreter");
            }
            if (trace == null)
            {
                throw new ArgumentNullException("trace");
            }
            if (errors == null)
            {
                throw new ArgumentNullException("errors");
            }

            _errorManager = errorManager;
            _root         = root;
            _output       = output;
            _interpreter  = interpreter;
            _trace        = trace;
            _errors       = errors;
        }
Exemple #2
0
        private void HandleCallHierarchyTreeViewSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            TemplateCallHierarchyViewModel selected = CallHierarchyTreeView.SelectedItem as TemplateCallHierarchyViewModel;

            if (selected != null)
            {
                currentTemplate = selected.Template;
                UpdateCurrentTemplate();
            }
        }
Exemple #3
0
        public TemplateCallHierarchyViewModel(Interpreter interpreter, DebugTemplate template)
        {
            if (interpreter == null)
            {
                throw new ArgumentNullException("interpreter");
            }
            if (template == null)
            {
                throw new ArgumentNullException("template");
            }

            this._interpreter = interpreter;
            this._template    = template;
        }
Exemple #4
0
        private void HandleErrorsListBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            int                    minIndex       = ErrorsListBox.SelectedIndex;
            TemplateMessage        message        = ErrorsListBox.SelectedItem as TemplateMessage;
            TemplateRuntimeMessage runtimeMessage = message as TemplateRuntimeMessage;

            if (runtimeMessage != null)
            {
                Interval interval = runtimeMessage.SourceInterval;
                currentTemplate = (DebugTemplate)message.Self;
                UpdateCurrentTemplate();
                Highlight(TemplateTextBox.Document, interval);
            }
        }
Exemple #5
0
        private void HandleOutputTextBoxSelectionChanged(object sender, RoutedEventArgs e)
        {
            InterpEvent de = FindEventAtOutputLocation(ViewModel.AllEvents, OutputTextBox.Document.GetCharOffsetToPosition(OutputTextBox.CaretPosition));

            if (de == null)
            {
                currentTemplate = ViewModel.Visualizer.RootTemplate;
            }
            else
            {
                currentTemplate = de.Template;
            }
            UpdateCurrentTemplate();
        }
Exemple #6
0
        public static void Visualize(this DebugTemplate template, ErrorManager errorManager, CultureInfo culture, int lineWidth)
        {
            ErrorBuffer errors = new ErrorBuffer();

            template.impl.NativeGroup.Listener = errors;
            StringWriter    @out = new StringWriter();
            ITemplateWriter wr   = new AutoIndentWriter(@out);

            wr.LineWidth = lineWidth;
            Interpreter interp = new Interpreter(template.groupThatCreatedThisInstance, culture);

            interp.Execute(wr, template); // Render and track events
            TemplateVisualizer visualizer = new TemplateVisualizer(errorManager, template, @out.ToString(), interp, interp.GetExecutionTrace(), errors.Errors);

            visualizer.Show();
        }
Exemple #7
0
        private int GetIndexOfChild(DebugTemplate parent, Template child)
        {
            if (parent == null)
            {
                throw new ArgumentNullException("parent");
            }
            if (child == null)
            {
                throw new ArgumentNullException("child");
            }


            TemplateCallHierarchyViewModel        hierarchy = new TemplateCallHierarchyViewModel(ViewModel.Visualizer.Interpreter, parent);
            List <TemplateCallHierarchyViewModel> children  = hierarchy.Children;

            return(children.FindIndex(i => i.Template == child));
        }
Exemple #8
0
        public void TestString()
        {
            string templates =
                "t() ::= <<foo>>" + Environment.NewLine;

            writeFile(tmpdir, "t.stg", templates);
            TemplateGroup group = new TemplateGroupFile(Path.Combine(tmpdir, "t.stg"));

            group.Debug = true;
            DebugTemplate      st       = (DebugTemplate)group.GetInstanceOf("t");
            List <InterpEvent> events   = st.GetEvents();
            string             expected =
                "[EvalExprEvent{self=t(), output=[0..3), expr=foo}," +
                " EvalTemplateEvent{self=t(), output=[0..3)}]";
            string result = events.ToListString();

            Assert.AreEqual(expected, result);
        }
Exemple #9
0
        public void SimpleVisualizerTest()
        {
            string templates =
                "method(type,name,locals,args,stats) ::= <<\n" +
                "public <type> <ick()> <name>(<args:{a| int <a>}; separator=\", \">) {\n" +
                "    <if(locals)>int locals[<locals>];<endif>\n" +
                "    <stats;separator=\"\\n\">\n" +
                "}\n" +
                ">>\n" +
                "assign(a,b) ::= \"<a> = <b>;\"\n" +
                "return(x) ::= <<return <x>;>>\n" +
                "paren(x) ::= \"(<x>)\"\n";

            writeFile(tmpdir, "t.stg", templates);
            TemplateGroup group = new TemplateGroupFile(Path.Combine(tmpdir, "t.stg"));

            group.Debug = true;
            DebugTemplate st = (DebugTemplate)group.GetInstanceOf("method");

            st.impl.Dump();
            st.Add("type", "float");
            st.Add("name", "foo");
            st.Add("locals", 3);
            st.Add("args", new String[] { "x", "y", "z" });
            Template s1    = group.GetInstanceOf("assign");
            Template paren = group.GetInstanceOf("paren");

            paren.Add("x", "x");
            s1.Add("a", paren);
            s1.Add("b", "y");
            Template s2 = group.GetInstanceOf("assign");

            s2.Add("a", "y");
            s2.Add("b", "z");
            Template s3 = group.GetInstanceOf("return");

            s3.Add("x", "3.14159");
            st.Add("stats", s1);
            st.Add("stats", s2);
            st.Add("stats", s3);

            st.Visualize();
        }
Exemple #10
0
        protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
        {
            if (e.Property == DataContextProperty)
            {
                var viewModel = ViewModel;
                if (viewModel == null)
                {
                    return;
                }

                currentTemplate        = viewModel.Visualizer.RootTemplate;
                OutputTextBox.Document = new FlowDocument(new Paragraph(new Run(viewModel.Output)
                {
                    FontFamily = new FontFamily("Consolas")
                }));
                UpdateCurrentTemplate();
            }

            base.OnPropertyChanged(e);
        }
Exemple #11
0
        public void VisualizerTestShadowTemplates()
        {
            string templates =
                "list(lines) ::= <<\n" +
                "<lines:line(); separator=\"\\n\">\n" +
                ">>\n" +
                "line(text) ::= \"<text>\"\n";

            writeFile(tmpdir, "t.stg", templates);
            TemplateGroup group = new TemplateGroupFile(Path.Combine(tmpdir, "t.stg"));

            group.Debug = true;
            DebugTemplate template = (DebugTemplate)group.GetInstanceOf("list");
            DebugTemplate line     = (DebugTemplate)group.GetInstanceOf("line");

            line.Add("text", "x = 3");
            template.Add("lines", line);
            template.Add("lines", line);
            template.Add("lines", line);
            template.Visualize();
        }
Exemple #12
0
        public void TestTemplateCall()
        {
            string templates =
                "t(x) ::= <<[<u()>]>>\n" +
                "u() ::= << <x> >>\n";

            writeFile(tmpdir, "t.stg", templates);
            TemplateGroup group = new TemplateGroupFile(Path.Combine(tmpdir, "t.stg"));

            group.Debug = true;
            DebugTemplate      st       = (DebugTemplate)group.GetInstanceOf("t");
            List <InterpEvent> events   = st.GetEvents();
            string             expected =
                "[EvalExprEvent{self=t(x), output=[0..1), expr=[}," +
                " EvalExprEvent{self=u(), output=[1..1), expr=<x>}," +
                " EvalExprEvent{self=u(), output=[1..2), expr= }," +
                " EvalTemplateEvent{self=u(), output=[1..2)}," +
                " EvalExprEvent{self=t(x), output=[1..2), expr=<u()>}," +
                " EvalExprEvent{self=t(x), output=[2..3), expr=]}," +
                " EvalTemplateEvent{self=t(x), output=[0..3)}]";
            string result = events.ToListString();

            Assert.AreEqual(expected, result);
        }
Exemple #13
0
 public static void Visualize(this DebugTemplate template, CultureInfo culture)
 {
     Visualize(template, template.impl.NativeGroup.ErrorManager, culture, AutoIndentWriter.NoWrap);
 }
Exemple #14
0
 public static void Visualize(this DebugTemplate template, int lineWidth)
 {
     Visualize(template, template.impl.NativeGroup.ErrorManager, CultureInfo.CurrentCulture, lineWidth);
 }
Exemple #15
0
 public static void Visualize(this DebugTemplate template)
 {
     Visualize(template, CultureInfo.CurrentCulture);
 }