Example usage for jdk.nashorn.internal.ir LexicalContext LexicalContext

List of usage examples for jdk.nashorn.internal.ir LexicalContext LexicalContext

Introduction

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

Prototype

public LexicalContext() 

Source Link

Document

Creates a new empty lexical context.

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);/*w  w  w . j ava  2s .com*/

    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.
 *//*from   www .ja v a  2s.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);
    }
}