< prev index next >

src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/visitor/NodeOperatorVisitor.java

Print this page




  30 import jdk.nashorn.internal.ir.Node;
  31 import jdk.nashorn.internal.ir.UnaryNode;
  32 
  33 /**
  34  * Like NodeVisitor but navigating further into operators.
  35  * @param <T> Lexical context class for this NodeOperatorVisitor
  36  */
  37 public abstract class NodeOperatorVisitor<T extends LexicalContext> extends NodeVisitor<T> {
  38     /**
  39      * Constructor
  40      *
  41      * @param lc a custom lexical context
  42      */
  43     public NodeOperatorVisitor(final T lc) {
  44         super(lc);
  45     }
  46 
  47     @Override
  48     public boolean enterUnaryNode(final UnaryNode unaryNode) {
  49         switch (unaryNode.tokenType()) {
  50         case ADD:
  51             return enterADD(unaryNode);
  52         case BIT_NOT:
  53             return enterBIT_NOT(unaryNode);
  54         case DELETE:
  55             return enterDELETE(unaryNode);
  56         case NEW:
  57             return enterNEW(unaryNode);
  58         case NOT:
  59             return enterNOT(unaryNode);
  60         case SUB:
  61             return enterSUB(unaryNode);
  62         case TYPEOF:
  63             return enterTYPEOF(unaryNode);
  64         case VOID:
  65             return enterVOID(unaryNode);
  66         case DECPREFIX:
  67         case DECPOSTFIX:
  68         case INCPREFIX:
  69         case INCPOSTFIX:
  70             return enterDECINC(unaryNode);
  71         default:
  72             return super.enterUnaryNode(unaryNode);
  73         }
  74     }
  75 
  76     @Override
  77     public final Node leaveUnaryNode(final UnaryNode unaryNode) {
  78         switch (unaryNode.tokenType()) {
  79         case ADD:
  80             return leaveADD(unaryNode);
  81         case BIT_NOT:
  82             return leaveBIT_NOT(unaryNode);
  83         case DELETE:
  84             return leaveDELETE(unaryNode);
  85         case NEW:
  86             return leaveNEW(unaryNode);
  87         case NOT:
  88             return leaveNOT(unaryNode);
  89         case SUB:
  90             return leaveSUB(unaryNode);
  91         case TYPEOF:
  92             return leaveTYPEOF(unaryNode);
  93         case VOID:
  94             return leaveVOID(unaryNode);
  95         case DECPREFIX:
  96         case DECPOSTFIX:
  97         case INCPREFIX:
  98         case INCPOSTFIX:
  99             return leaveDECINC(unaryNode);
 100         default:
 101             return super.leaveUnaryNode(unaryNode);
 102         }
 103     }
 104 
 105     @Override
 106     public final boolean enterBinaryNode(final BinaryNode binaryNode) {
 107         switch (binaryNode.tokenType()) {
 108         case ADD:
 109             return enterADD(binaryNode);
 110         case AND:


 263             return leaveSHL(binaryNode);
 264         case SHR:
 265             return leaveSHR(binaryNode);
 266         case SUB:
 267             return leaveSUB(binaryNode);
 268         default:
 269             return super.leaveBinaryNode(binaryNode);
 270         }
 271     }
 272 
 273     /*
 274      * Unary entries and exists.
 275      */
 276 
 277     /**
 278      * Unary enter - callback for entering a unary +
 279      *
 280      * @param  unaryNode the node
 281      * @return true if traversal should continue and node children be traversed, false otherwise
 282      */
 283     public boolean enterADD(final UnaryNode unaryNode) {
 284         return enterDefault(unaryNode);
 285     }
 286 
 287     /**
 288      * Unary leave - callback for leaving a unary +
 289      *
 290      * @param  unaryNode the node
 291      * @return processed node, which will replace the original one, or the original node
 292      */
 293      public Node leaveADD(final UnaryNode unaryNode) {
 294         return leaveDefault(unaryNode);
 295     }
 296 
 297     /**
 298      * Unary enter - callback for entering a ~ operator
 299      *
 300      * @param  unaryNode the node
 301      * @return true if traversal should continue and node children be traversed, false otherwise
 302      */
 303     public boolean enterBIT_NOT(final UnaryNode unaryNode) {
 304         return enterDefault(unaryNode);
 305     }
 306 
 307     /**
 308      * Unary leave - callback for leaving a unary ~
 309      *
 310      * @param  unaryNode the node
 311      * @return processed node, which will replace the original one, or the original node
 312      */
 313     public Node leaveBIT_NOT(final UnaryNode unaryNode) {


 383     public boolean enterNOT(final UnaryNode unaryNode) {
 384         return enterDefault(unaryNode);
 385     }
 386 
 387     /**
 388      * Unary leave - callback for leaving a ! operator
 389      *
 390      * @param  unaryNode the node
 391      * @return processed node, which will replace the original one, or the original node
 392      */
 393      public Node leaveNOT(final UnaryNode unaryNode) {
 394         return leaveDefault(unaryNode);
 395     }
 396 
 397     /**
 398      * Unary enter - callback for entering a unary -
 399      *
 400      * @param  unaryNode the node
 401      * @return true if traversal should continue and node children be traversed, false otherwise
 402      */
 403     public boolean enterSUB(final UnaryNode unaryNode) {
 404         return enterDefault(unaryNode);
 405     }
 406 
 407     /**
 408      * Unary leave - callback for leaving a unary -
 409      *
 410      * @param  unaryNode the node
 411      * @return processed node, which will replace the original one, or the original node
 412      */
 413     public Node leaveSUB(final UnaryNode unaryNode) {
 414         return leaveDefault(unaryNode);
 415     }
 416 
 417     /**
 418      * Unary enter - callback for entering a typeof
 419      *
 420      * @param  unaryNode the node
 421      * @return true if traversal should continue and node children be traversed, false otherwise
 422      */
 423     public boolean enterTYPEOF(final UnaryNode unaryNode) {
 424         return enterDefault(unaryNode);
 425     }
 426 
 427     /**
 428      * Unary leave - callback for leaving a typeof operator
 429      *
 430      * @param  unaryNode the node
 431      * @return processed node, which will replace the original one, or the original node
 432      */
 433      public Node leaveTYPEOF(final UnaryNode unaryNode) {




  30 import jdk.nashorn.internal.ir.Node;
  31 import jdk.nashorn.internal.ir.UnaryNode;
  32 
  33 /**
  34  * Like NodeVisitor but navigating further into operators.
  35  * @param <T> Lexical context class for this NodeOperatorVisitor
  36  */
  37 public abstract class NodeOperatorVisitor<T extends LexicalContext> extends NodeVisitor<T> {
  38     /**
  39      * Constructor
  40      *
  41      * @param lc a custom lexical context
  42      */
  43     public NodeOperatorVisitor(final T lc) {
  44         super(lc);
  45     }
  46 
  47     @Override
  48     public boolean enterUnaryNode(final UnaryNode unaryNode) {
  49         switch (unaryNode.tokenType()) {
  50         case POS:
  51             return enterPOS(unaryNode);
  52         case BIT_NOT:
  53             return enterBIT_NOT(unaryNode);
  54         case DELETE:
  55             return enterDELETE(unaryNode);
  56         case NEW:
  57             return enterNEW(unaryNode);
  58         case NOT:
  59             return enterNOT(unaryNode);
  60         case NEG:
  61             return enterNEG(unaryNode);
  62         case TYPEOF:
  63             return enterTYPEOF(unaryNode);
  64         case VOID:
  65             return enterVOID(unaryNode);
  66         case DECPREFIX:
  67         case DECPOSTFIX:
  68         case INCPREFIX:
  69         case INCPOSTFIX:
  70             return enterDECINC(unaryNode);
  71         default:
  72             return super.enterUnaryNode(unaryNode);
  73         }
  74     }
  75 
  76     @Override
  77     public final Node leaveUnaryNode(final UnaryNode unaryNode) {
  78         switch (unaryNode.tokenType()) {
  79         case POS:
  80             return leavePOS(unaryNode);
  81         case BIT_NOT:
  82             return leaveBIT_NOT(unaryNode);
  83         case DELETE:
  84             return leaveDELETE(unaryNode);
  85         case NEW:
  86             return leaveNEW(unaryNode);
  87         case NOT:
  88             return leaveNOT(unaryNode);
  89         case NEG:
  90             return leaveNEG(unaryNode);
  91         case TYPEOF:
  92             return leaveTYPEOF(unaryNode);
  93         case VOID:
  94             return leaveVOID(unaryNode);
  95         case DECPREFIX:
  96         case DECPOSTFIX:
  97         case INCPREFIX:
  98         case INCPOSTFIX:
  99             return leaveDECINC(unaryNode);
 100         default:
 101             return super.leaveUnaryNode(unaryNode);
 102         }
 103     }
 104 
 105     @Override
 106     public final boolean enterBinaryNode(final BinaryNode binaryNode) {
 107         switch (binaryNode.tokenType()) {
 108         case ADD:
 109             return enterADD(binaryNode);
 110         case AND:


 263             return leaveSHL(binaryNode);
 264         case SHR:
 265             return leaveSHR(binaryNode);
 266         case SUB:
 267             return leaveSUB(binaryNode);
 268         default:
 269             return super.leaveBinaryNode(binaryNode);
 270         }
 271     }
 272 
 273     /*
 274      * Unary entries and exists.
 275      */
 276 
 277     /**
 278      * Unary enter - callback for entering a unary +
 279      *
 280      * @param  unaryNode the node
 281      * @return true if traversal should continue and node children be traversed, false otherwise
 282      */
 283     public boolean enterPOS(final UnaryNode unaryNode) {
 284         return enterDefault(unaryNode);
 285     }
 286 
 287     /**
 288      * Unary leave - callback for leaving a unary +
 289      *
 290      * @param  unaryNode the node
 291      * @return processed node, which will replace the original one, or the original node
 292      */
 293      public Node leavePOS(final UnaryNode unaryNode) {
 294         return leaveDefault(unaryNode);
 295     }
 296 
 297     /**
 298      * Unary enter - callback for entering a ~ operator
 299      *
 300      * @param  unaryNode the node
 301      * @return true if traversal should continue and node children be traversed, false otherwise
 302      */
 303     public boolean enterBIT_NOT(final UnaryNode unaryNode) {
 304         return enterDefault(unaryNode);
 305     }
 306 
 307     /**
 308      * Unary leave - callback for leaving a unary ~
 309      *
 310      * @param  unaryNode the node
 311      * @return processed node, which will replace the original one, or the original node
 312      */
 313     public Node leaveBIT_NOT(final UnaryNode unaryNode) {


 383     public boolean enterNOT(final UnaryNode unaryNode) {
 384         return enterDefault(unaryNode);
 385     }
 386 
 387     /**
 388      * Unary leave - callback for leaving a ! operator
 389      *
 390      * @param  unaryNode the node
 391      * @return processed node, which will replace the original one, or the original node
 392      */
 393      public Node leaveNOT(final UnaryNode unaryNode) {
 394         return leaveDefault(unaryNode);
 395     }
 396 
 397     /**
 398      * Unary enter - callback for entering a unary -
 399      *
 400      * @param  unaryNode the node
 401      * @return true if traversal should continue and node children be traversed, false otherwise
 402      */
 403     public boolean enterNEG(final UnaryNode unaryNode) {
 404         return enterDefault(unaryNode);
 405     }
 406 
 407     /**
 408      * Unary leave - callback for leaving a unary -
 409      *
 410      * @param  unaryNode the node
 411      * @return processed node, which will replace the original one, or the original node
 412      */
 413     public Node leaveNEG(final UnaryNode unaryNode) {
 414         return leaveDefault(unaryNode);
 415     }
 416 
 417     /**
 418      * Unary enter - callback for entering a typeof
 419      *
 420      * @param  unaryNode the node
 421      * @return true if traversal should continue and node children be traversed, false otherwise
 422      */
 423     public boolean enterTYPEOF(final UnaryNode unaryNode) {
 424         return enterDefault(unaryNode);
 425     }
 426 
 427     /**
 428      * Unary leave - callback for leaving a typeof operator
 429      *
 430      * @param  unaryNode the node
 431      * @return processed node, which will replace the original one, or the original node
 432      */
 433      public Node leaveTYPEOF(final UnaryNode unaryNode) {


< prev index next >