analysisgenerator.java

来自「Jamon是一个Java文本模板引擎」· Java 代码 · 共 87 行

JAVA
87
字号
package org.jamon.nodegen;import java.io.PrintWriter;public class AnalysisGenerator{    private AnalysisGenerator() {}        public static void generateAnalysisInterface(        PrintWriter p_writer, Iterable<NodeDescriptor> p_nodes)    {        p_writer.println("package org.jamon.node;");        p_writer.println("public interface Analysis");        p_writer.println("{");        for (NodeDescriptor node : p_nodes)        {            String name = node.getName();            p_writer.println("    void case" + name + "(" + name + " p_node);");        }        p_writer.println("}");        p_writer.close();    }    public static void generateAnalysisAdapterClass(        PrintWriter p_writer, Iterable<NodeDescriptor> p_nodes)    {        p_writer.println("package org.jamon.node;");        p_writer.println("public class AnalysisAdapter implements Analysis");        p_writer.println("{");        for (NodeDescriptor node : p_nodes)        {            String name = node.getName();            p_writer.println(                "  public void case" + name + "(" + name + " p_node) {}");        }        p_writer.println("}");        p_writer.close();    }    public static void generateDepthFirstAdapterClass(        PrintWriter p_writer, Iterable<NodeDescriptor> p_nodes)    {        p_writer.println("package org.jamon.node;");        p_writer.println(            "public class DepthFirstAnalysisAdapter implements Analysis");        p_writer.println("{");        for (NodeDescriptor node : p_nodes)        {            String name = node.getName();            p_writer.println(                "  public void in" + name + "(" + name + " p_node) {}");            p_writer.println(                "  public void out" + name + "(" + name + " p_node) {}");            p_writer.println(                "  public void case" + name + "(" + name + " p_node)");            p_writer.println("  {");            p_writer.println("    in" + name + "(p_node);");            for (NodeMember member : node.getAllMembers())            {                if (member.isNode())                {                    if (member.isList())                    {                        p_writer.println(                            "    for (AbstractNode node : p_node."                             + member.getGetter() + ")");                        p_writer.println("    {");                        p_writer.println("      node.apply(this);");                        p_writer.println("    }");                    }                    else                    {                        p_writer.println("    p_node." + member.getGetter()                                         + ".apply(this);");                    }                }            }            p_writer.println("    out" + name + "(p_node);");            p_writer.println("  }");            p_writer.println();        }        p_writer.println("}");        p_writer.close();    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?