Exemple #1
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 #2
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();
        }