⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treemaker.java

📁 GJC(Generic Java Compiler)编译器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/** * @(#)TreeMaker.java	1.32 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.tools.javac.v8.tree;import com.sun.tools.javac.v8.util.*;import com.sun.tools.javac.v8.code.*;import com.sun.tools.javac.v8.tree.Tree.*;import com.sun.tools.javac.v8.code.Symbol.*;import com.sun.tools.javac.v8.code.Type.*;/** * Factory class for trees */public class TreeMaker implements Tree.Factory, Kinds, Flags, TypeTags {    /**     * The context key for the tree factory.     */    private static final Context.Key treeMakerKey = new Context.Key();    /**     * Get the TreeMaker instance.     */    public static TreeMaker instance(Context context) {        TreeMaker instance = (TreeMaker) context.get(treeMakerKey);        if (instance == null)            instance = new TreeMaker(context);        return instance;    }    /**      * The position at which subsequent trees will be created.      */    public int pos = Position.NOPOS;    /**     * The toplevel tree to which created trees belong.     */    public TopLevel toplevel;    /**     * The current name table.     */    private Name.Table names;    /**     * Create a tree maker with null toplevel and NOPOS as initial position.     */    private TreeMaker(Context context) {        super();        context.put(treeMakerKey, this);        this.pos = Position.NOPOS;        this.toplevel = null;        this.names = Name.Table.instance(context);    }    /**      * Create a tree maker with null toplevel and NOPOS as initial position.      */    public TreeMaker(TopLevel toplevel) {        super();        this.pos = Position.FIRSTPOS;        this.toplevel = toplevel;        this.names = toplevel.sourcefile.table;    }    /**      * Reassign current position.      */    public TreeMaker at(int pos) {        this.pos = pos;        return this;    }    /**      * Create given tree node at current position.      */    public TopLevel TopLevel(Tree pid, List defs) {        TopLevel tree = new TopLevel(pid, defs, null, null, null, null);        tree.pos = pos;        return tree;    }    public Import Import(Tree qualid) {        Import tree = new Import(qualid);        tree.pos = pos;        return tree;    }    public ClassDef ClassDef(long flags, Name name, List typarams,            Tree extending, List implementing, List defs) {        ClassDef tree = new ClassDef(flags, name, typarams, extending, implementing,                defs, null);        tree.pos = pos;        return tree;    }    public MethodDef MethodDef(long flags, Name name, Tree restype,            List typarams, List params, List thrown, Block body) {        MethodDef tree = new MethodDef(flags, name, restype, typarams, params, thrown,                body, null);        tree.pos = pos;        return tree;    }    public VarDef VarDef(long flags, Name name, Tree vartype, Tree init) {        VarDef tree = new VarDef(flags, name, vartype, init, null);        tree.pos = pos;        return tree;    }    public Skip Skip() {        Skip tree = new Skip();        tree.pos = pos;        return tree;    }    public Block Block(long flags, List stats) {        Block tree = new Block(flags, stats);        tree.pos = pos;        return tree;    }    public DoLoop DoLoop(Tree body, Tree cond) {        DoLoop tree = new DoLoop(body, cond);        tree.pos = pos;        return tree;    }    public WhileLoop WhileLoop(Tree cond, Tree body) {        WhileLoop tree = new WhileLoop(cond, body);        tree.pos = pos;        return tree;    }    public ForLoop ForLoop(List init, Tree cond, List step, Tree body) {        ForLoop tree = new ForLoop(init, cond, step, body);        tree.pos = pos;        return tree;    }    public Labelled Labelled(Name label, Tree body) {        Labelled tree = new Labelled(label, body);        tree.pos = pos;        return tree;    }    public Switch Switch(Tree selector, List cases) {        Switch tree = new Switch(selector, cases);        tree.pos = pos;        return tree;    }    public Case Case(Tree pat, List stats) {        Case tree = new Case(pat, stats);        tree.pos = pos;        return tree;    }    public Synchronized Synchronized(Tree lock, Tree body) {        Synchronized tree = new Synchronized(lock, body);        tree.pos = pos;        return tree;    }    public Try Try(Tree body, List catchers, Tree finalizer) {        Try tree = new Try(body, catchers, finalizer);        tree.pos = pos;        return tree;    }    public Catch Catch(VarDef param, Tree body) {        Catch tree = new Catch(param, body);        tree.pos = pos;        return tree;    }    public Conditional Conditional(Tree cond, Tree thenpart, Tree elsepart) {        Conditional tree = new Conditional(cond, thenpart, elsepart);        tree.pos = pos;        return tree;    }    public If If(Tree cond, Tree thenpart, Tree elsepart) {        If tree = new If(cond, thenpart, elsepart);        tree.pos = pos;        return tree;    }    public Exec Exec(Tree expr) {        Exec tree = new Exec(expr);        tree.pos = pos;        return tree;    }    public Break Break(Name label) {        Break tree = new Break(label, null);        tree.pos = pos;        return tree;    }    public Continue Continue(Name label) {        Continue tree = new Continue(label, null);        tree.pos = pos;        return tree;    }    public Return Return(Tree expr) {        Return tree = new Return(expr);        tree.pos = pos;        return tree;    }    public Throw Throw(Tree expr) {        Throw tree = new Throw(expr);        tree.pos = pos;        return tree;    }    public Assert Assert(Tree cond, Tree detail) {        Assert tree = new Assert(cond, detail);        tree.pos = pos;        return tree;    }    public Apply Apply(Tree fn, List args) {        Apply tree = new Apply(fn, args);        tree.pos = pos;        return tree;    }    public NewClass NewClass(Tree encl, Tree clazz, List args, ClassDef def) {        NewClass tree = new NewClass(encl, clazz, args, def, null);        tree.pos = pos;        return tree;    }    public NewArray NewArray(Tree elemtype, List dims, List elems) {        NewArray tree = new NewArray(elemtype, dims, elems);        tree.pos = pos;        return tree;    }    public Parens Parens(Tree expr) {        Parens tree = new Parens(expr);        tree.pos = pos;        return tree;    }    public Assign Assign(Tree lhs, Tree rhs) {        Assign tree = new Assign(lhs, rhs);        tree.pos = pos;        return tree;    }    public Assignop Assignop(int opcode, Tree lhs, Tree rhs) {        Assignop tree = new Assignop(opcode, lhs, rhs, null);        tree.pos = pos;        return tree;    }    public Unary Unary(int opcode, Tree arg) {        Unary tree = new Unary(opcode, arg, null);        tree.pos = pos;        return tree;    }    public Binary Binary(int opcode, Tree lhs, Tree rhs) {        Binary tree = new Binary(opcode, lhs, rhs, null);        tree.pos = pos;        return tree;    }    public TypeCast TypeCast(Tree clazz, Tree expr) {        TypeCast tree = new TypeCast(clazz, expr);        tree.pos = pos;        return tree;

⌨️ 快捷键说明

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