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

📄 treemaker.java

📁 java编译器gjc源码 java编译环境
💻 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 + -