Example usage for jdk.nashorn.internal.ir IdentNode getName

List of usage examples for jdk.nashorn.internal.ir IdentNode getName

Introduction

In this page you can find the example usage for jdk.nashorn.internal.ir IdentNode getName.

Prototype

public String getName() 

Source Link

Document

Get the name of the identifier

Usage

From source file:IDE.SyntaxTree.JWebParser.java

public DefaultMutableTreeNode getTreeNode(DefaultMutableTreeNode rootNode) {

    Stack<DefaultMutableTreeNode> i = new Stack<>();
    //  DefaultMutableTreeNode subroot = new DefaultMutableTreeNode("subroot");
    //  rootNode.add(subroot);
    i.push(rootNode);/*from ww  w. jav a  2  s  . c om*/

    FunctionNode root = parse();
    LexicalContext lc = new LexicalContext();
    root.accept(new NodeVisitor(lc) {

        @Override
        public boolean enterFunctionNode(FunctionNode functionNode) {

            if (!functionNode.isProgram()) {
                DefaultMutableTreeNode outlineItem;
                List<IdentNode> parameters = functionNode.visitParameters(this);
                if (functionNode.isAnonymous()) {
                    String name = ((IdentNode) functionNode.getIdent().accept(this)).getName();
                    if (name.contains(":")) {
                        outlineItem = new DefaultMutableTreeNode("<anonymous>");
                        outlineItem = new DefaultMutableTreeNode(name);
                        String uobj = outlineItem.getUserObject() + "(";
                        for (IdentNode param : parameters) {
                            Type t = param.getMostOptimisticType();
                            uobj += t.toString() + " " + param.getName();
                        }
                        outlineItem.setUserObject(uobj + ")");
                    } else {
                        outlineItem = new DefaultMutableTreeNode(name);
                        String uobj = outlineItem.getUserObject() + "(";
                        for (IdentNode param : parameters) {
                            Type t = param.getMostOptimisticType();
                            uobj += t.toString() + " " + param.getName();
                        }
                        outlineItem.setUserObject(uobj + ")");
                    }
                } else {
                    outlineItem = new DefaultMutableTreeNode(
                            ((IdentNode) functionNode.getIdent().accept(this)).getName());
                    String uobj = outlineItem.getUserObject() + "(";
                    for (IdentNode param : parameters) {
                        Type t = param.getMostOptimisticType();
                        uobj += t.toString() + " " + param.getName() + " ";
                    }
                    outlineItem.setUserObject(uobj + ")");
                }

                i.peek().add(outlineItem);
                i.push(outlineItem);
            }

            return super.enterFunctionNode(functionNode); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public Node leaveFunctionNode(FunctionNode functionNode) {
            if (!functionNode.isProgram()) {
                i.pop();
            }
            return super.leaveFunctionNode(functionNode); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public Node leaveObjectNode(ObjectNode objectNode) {
            DefaultMutableTreeNode outlineItem = new DefaultMutableTreeNode("ttt");
            i.peek().add(outlineItem);
            i.push(outlineItem);
            return super.leaveObjectNode(objectNode); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public boolean enterObjectNode(ObjectNode objectNode) {
            i.pop();

            return super.enterObjectNode(objectNode); //To change body of generated methods, choose Tools | Templates.
        }

    });
    // i.pop();
    return i.peek();

}