Example usage for jdk.nashorn.internal.ir FunctionNode isProgram

List of usage examples for jdk.nashorn.internal.ir FunctionNode isProgram

Introduction

In this page you can find the example usage for jdk.nashorn.internal.ir FunctionNode isProgram.

Prototype

public boolean isProgram() 

Source Link

Document

Returns true if the function is the top-level program.

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   www.  j  a v a2s . c  o  m*/

    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();

}

From source file:IDE.SyntaxTree.ParserTest.java

/**
 * Test of parse method, of class Parser.
 *//*w ww. j a  v  a 2 s . c  o  m*/
@Test
public void testParse() {
    try {

        String input = readServerFile(new File("c:\\Projects\\JWeb\\www\\Controller\\indexController.jap"));
        ExpNode expResult = null;
        JWebParser result = new JWebParser(input);
        FunctionNode fNode = result.parse();

        //Logger.logMsg(Level.ALL.intValue(),);
        // System.out.println( fNode.getName());
        // System.out.println( fNode.getBody());
        LexicalContext lc = new LexicalContext();

        fNode.accept(new NodeVisitor(lc) {

            @Override
            public boolean enterFunctionNode(FunctionNode functionNode) {

                if (!functionNode.isProgram()) {

                    if (functionNode.isAnonymous()) {

                        String name = ((IdentNode) functionNode.getIdent().accept(this)).getName();
                        if (name.contains(":")) {

                            System.out.println("<anonymous> FUNCTION_ICON");
                        } else {
                            System.out.println(name + " METHOD_ICON");
                        }

                    } else {

                        System.out.println(((IdentNode) functionNode.getIdent().accept(this)).getName());
                    }
                }

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

        });
        Iterator<FunctionNode> sss = lc.getFunctions();
        IdentNode ident = fNode.getIdent();

        // assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        //fail("The test case is a prototype.");
    } catch (IOException ex) {
        Logger.getLogger(ParserTest.class.getName()).log(Level.SEVERE, null, ex);
    }
}