polyglot.ast
Class Try_c

java.lang.Object
  extended by polyglot.ast.Node_c
      extended by polyglot.ast.Term_c
          extended by polyglot.ast.Stmt_c
              extended by polyglot.ast.Try_c
All Implemented Interfaces:
java.lang.Cloneable, CompoundStmt, JL, Node, NodeOps, Stmt, Term, Try, Copy

public class Try_c
extends Stmt_c
implements Try

An immutable representation of a try block, one or more catch blocks, and an optional finally block.


Field Summary
protected  java.util.List catchBlocks
           
protected  Block finallyBlock
           
protected  Block tryBlock
           
 
Fields inherited from class polyglot.ast.Term_c
exceptions, reachable
 
Fields inherited from class polyglot.ast.Node_c
del, error, ext, position
 
Fields inherited from interface polyglot.ast.Term
ENTRY, EXIT
 
Constructor Summary
Try_c(Position pos, Block tryBlock, java.util.List catchBlocks, Block finallyBlock)
           
 
Method Summary
 java.util.List acceptCFG(CFGBuilder v, java.util.List succs)
          Visit this term in evaluation order.
 java.util.List catchBlocks()
          Get the catch blocks of the statement.
 Try catchBlocks(java.util.List catchBlocks)
          Set the catch blocks of the statement.
 Node copy(NodeFactory nf)
          Produce a copy of this node using the given NodeFactory.
 Node exceptionCheck(ExceptionChecker ec)
          Performs exceptionChecking.
 NodeVisitor exceptionCheckEnter(ExceptionChecker ec)
          Bypass all children when peforming an exception check.
 Block finallyBlock()
          Get the finally block of the statement.
 Try finallyBlock(Block finallyBlock)
          Set the finally block of the statement.
 Term firstChild()
          Return the first direct subterm performed when evaluating this term.
 void prettyPrint(CodeWriter w, PrettyPrinter tr)
          Pretty-print the AST using the given CodeWriter.
protected  Try_c reconstruct(Block tryBlock, java.util.List catchBlocks, Block finallyBlock)
          Reconstruct the statement.
 java.lang.String toString()
           
 Block tryBlock()
          Get the try block of the statement.
 Try tryBlock(Block tryBlock)
          Set the try block of the statement.
 Node visitChildren(NodeVisitor v)
          Visit the children of the statement.
 
Methods inherited from class polyglot.ast.Term_c
exceptions, exceptions, listChild, reachable, reachable
 
Methods inherited from class polyglot.ast.Node_c
addDecls, buildTypes, buildTypesEnter, checkConstants, childExpectedType, copy, copy, del, del, disambiguate, disambiguateEnter, disambiguateOverride, dump, dump, dump, enterChildScope, enterScope, error, error, ext, ext, ext, ext, init, isDisambiguated, isTypeChecked, node, position, position, prettyPrint, prettyPrint, print, printBlock, printSubStmt, throwTypes, translate, typeCheck, typeCheckEnter, typeCheckOverride, visit, visitChild, visitEdge, visitList
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface polyglot.ast.Term
exceptions, exceptions, reachable, reachable
 
Methods inherited from interface polyglot.ast.Node
childExpectedType, del, del, dump, error, error, ext, ext, ext, ext, isDisambiguated, isTypeChecked, position, position, visit, visitChild, visitEdge, visitList
 
Methods inherited from interface polyglot.ast.JL
init, node
 
Methods inherited from interface polyglot.ast.NodeOps
addDecls, buildTypes, buildTypesEnter, checkConstants, copy, disambiguate, disambiguateEnter, disambiguateOverride, dump, dump, enterChildScope, enterScope, prettyPrint, prettyPrint, throwTypes, translate, typeCheck, typeCheckEnter, typeCheckOverride
 
Methods inherited from interface polyglot.util.Copy
copy
 

Field Detail

tryBlock

protected Block tryBlock

catchBlocks

protected java.util.List catchBlocks

finallyBlock

protected Block finallyBlock
Constructor Detail

Try_c

public Try_c(Position pos,
             Block tryBlock,
             java.util.List catchBlocks,
             Block finallyBlock)
Method Detail

tryBlock

public Block tryBlock()
Get the try block of the statement.

Specified by:
tryBlock in interface Try

tryBlock

public Try tryBlock(Block tryBlock)
Set the try block of the statement.

Specified by:
tryBlock in interface Try

catchBlocks

public java.util.List catchBlocks()
Get the catch blocks of the statement.

Specified by:
catchBlocks in interface Try
Returns:
A list of Catch.

catchBlocks

public Try catchBlocks(java.util.List catchBlocks)
Set the catch blocks of the statement.

Specified by:
catchBlocks in interface Try
Parameters:
catchBlocks - A list of Catch.

finallyBlock

public Block finallyBlock()
Get the finally block of the statement.

Specified by:
finallyBlock in interface Try

finallyBlock

public Try finallyBlock(Block finallyBlock)
Set the finally block of the statement.

Specified by:
finallyBlock in interface Try

reconstruct

protected Try_c reconstruct(Block tryBlock,
                            java.util.List catchBlocks,
                            Block finallyBlock)
Reconstruct the statement.


visitChildren

public Node visitChildren(NodeVisitor v)
Visit the children of the statement.

Specified by:
visitChildren in interface NodeOps
Overrides:
visitChildren in class Node_c
Parameters:
v - The visitor that will traverse/rewrite the AST.
Returns:
A new AST if a change was made, or this.

exceptionCheckEnter

public NodeVisitor exceptionCheckEnter(ExceptionChecker ec)
                                throws SemanticException
Bypass all children when peforming an exception check. exceptionCheck(), called from ExceptionChecker.leave(), will handle visiting children.

Specified by:
exceptionCheckEnter in interface NodeOps
Overrides:
exceptionCheckEnter in class Node_c
Parameters:
ec - The visitor.
Throws:
SemanticException

exceptionCheck

public Node exceptionCheck(ExceptionChecker ec)
                    throws SemanticException
Performs exceptionChecking. This is a special method that is called via the exceptionChecker's override method (i.e, doesn't follow the standard model for visitation.

Specified by:
exceptionCheck in interface NodeOps
Overrides:
exceptionCheck in class Term_c
Parameters:
ec - The ExceptionChecker that was run against the child node. It contains the exceptions that can be thrown by the try block.
Throws:
SemanticException

toString

public java.lang.String toString()
Overrides:
toString in class Node_c

prettyPrint

public void prettyPrint(CodeWriter w,
                        PrettyPrinter tr)
Description copied from class: Node_c
Pretty-print the AST using the given CodeWriter.

Specified by:
prettyPrint in interface NodeOps
Overrides:
prettyPrint in class Node_c
Parameters:
w - The code writer to which to write.
tr - The pretty printer. This is not a visitor.

firstChild

public Term firstChild()
Description copied from interface: Term
Return the first direct subterm performed when evaluating this term. If this term has no subterms, this should return null. This method is similar to the deprecated entry(), but it should *not* recursively drill down to the innermost subterm. The direct child visited first in this term's dataflow should be returned.

Specified by:
firstChild in interface Term

acceptCFG

public java.util.List acceptCFG(CFGBuilder v,
                                java.util.List succs)
Description copied from class: Term_c
Visit this term in evaluation order.

Specified by:
acceptCFG in interface Term
Specified by:
acceptCFG in class Term_c

copy

public Node copy(NodeFactory nf)
Description copied from interface: NodeOps
Produce a copy of this node using the given NodeFactory.

Specified by:
copy in interface NodeOps
Overrides:
copy in class Node_c