public class Formal_c extends Term_c implements Formal
Formal
represents a formal parameter for a procedure
or catch block. It consists of a type and a variable identifier.Term.Instance
Modifier and Type | Field and Description |
---|---|
protected Flags |
flags |
protected LocalInstance |
li |
protected Id |
name |
protected TypeNode |
type |
exceptions, reachable
Constructor and Description |
---|
Formal_c(Position pos,
Flags flags,
TypeNode type,
Id name) |
Formal_c(Position pos,
Flags flags,
TypeNode type,
Id name,
Ext ext) |
Modifier and Type | Method and Description |
---|---|
<T> java.util.List<T> |
acceptCFG(CFGBuilder<?> v,
java.util.List<T> succs)
Visit this term in evaluation order, calling v.edge() for each successor
in succs, if data flows on that edge.
|
void |
addDecls(Context c)
Add any declarations to the context that should be in scope when
visiting later sibling nodes.
|
Node |
buildTypes(TypeBuilder tb)
Collects classes, methods, and fields from the AST rooted at this node
and constructs type objects for these.
|
Node |
copy(NodeFactory nf)
Produce a copy of this node using the given NodeFactory.
|
Type |
declType()
Get the type object for the declaration's type.
|
Node |
disambiguate(AmbiguityRemover ar)
Remove any remaining ambiguities from the AST.
|
void |
dump(CodeWriter w)
Dump the AST node for debugging purposes.
|
Node |
extRewrite(ExtensionRewriter rw)
Rewrite the AST for the compilation in this language.
|
Term |
firstChild()
Return the first direct subterm performed when evaluating this term.
|
Flags |
flags()
Get the flags of the formal.
|
Formal |
flags(Flags flags)
Set the flags of the formal.
|
protected <N extends Formal_c> |
flags(N n,
Flags flags) |
Id |
id()
Get the name of the formal.
|
Formal |
id(Id name)
Set the name of the formal.
|
protected <N extends Formal_c> |
id(N n,
Id name) |
boolean |
isDisambiguated() |
LocalInstance |
localInstance()
Get the local instance of the formal.
|
Formal |
localInstance(LocalInstance li)
Set the local instance of the formal.
|
protected <N extends Formal_c> |
localInstance(N n,
LocalInstance li) |
java.lang.String |
name()
Get the name of the formal.
|
Formal |
name(java.lang.String name)
Set the name of the formal.
|
void |
prettyPrint(CodeWriter w,
PrettyPrinter tr)
Pretty-print the AST using the given
CodeWriter . |
protected <N extends Formal_c> |
reconstruct(N n,
TypeNode type,
Id name)
Reconstruct the formal.
|
java.lang.String |
toString() |
TypeNode |
type()
Get the type node of the formal.
|
protected <N extends Formal_c> |
type(N n,
TypeNode type) |
Formal |
type(TypeNode type)
Set the type node of the formal.
|
Node |
typeCheck(TypeChecker tc)
Type check the AST.
|
Node |
visitChildren(NodeVisitor v)
Visit the children of the node.
|
exceptionCheck, exceptions, exceptions, exceptions, listChild, reachable, reachable, reachable
buildTypesEnter, checkConstants, childExpectedType, copy, copy, copyIfNeeded, del, del, disambiguateEnter, disambiguateOverride, dump, dump, dump, dump, enterChildScope, enterScope, error, error, error, exceptionCheckEnter, ext, ext, ext, ext, extRewriteEnter, isTypeChecked, lang, position, position, position, prettyPrint, prettyPrint, prettyPrint, prettyPrint, print, printBlock, printSubStmt, throwTypes, translate, typeCheckEnter, typeCheckOverride, visit, visitChild, visitEdge, visitList
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
exceptions, exceptions, reachable, reachable
del, del, error, error, ext, ext, ext, ext, isTypeChecked, position, position, visit, visitEdge
buildTypesEnter, checkConstants, childExpectedType, copy, disambiguateEnter, disambiguateOverride, dump, dump, dump, dump, enterChildScope, enterScope, exceptionCheck, exceptionCheckEnter, extRewriteEnter, lang, prettyPrint, prettyPrint, prettyPrint, prettyPrint, throwTypes, translate, typeCheckEnter, typeCheckOverride, visitChild, visitList
protected LocalInstance li
protected Flags flags
protected TypeNode type
protected Id name
public boolean isDisambiguated()
isDisambiguated
in interface Node
isDisambiguated
in class Node_c
public Type declType()
VarDecl
public Formal flags(Flags flags)
Formal
public TypeNode type()
Formal
public Formal type(TypeNode type)
Formal
public java.lang.String name()
Formal
public Formal name(java.lang.String name)
Formal
public LocalInstance localInstance()
Formal
localInstance
in interface Formal
localInstance
in interface VarDecl
public Formal localInstance(LocalInstance li)
Formal
localInstance
in interface Formal
protected <N extends Formal_c> N localInstance(N n, LocalInstance li)
protected <N extends Formal_c> N reconstruct(N n, TypeNode type, Id name)
public Node visitChildren(NodeVisitor v)
NodeOps
visitChildren
in interface NodeOps
visitChildren
in class Node_c
v
- The visitor that will traverse/rewrite the AST.this
.public void addDecls(Context c)
Node_c
public void prettyPrint(CodeWriter w, PrettyPrinter tr)
Node_c
CodeWriter
.prettyPrint
in interface NodeOps
prettyPrint
in class Node_c
w
- The code writer to which to write.tr
- The pretty printer. This is not a visitor.public Node buildTypes(TypeBuilder tb) throws SemanticException
NodeOps
TypeSystem
.
This method is called by the leave()
method of the
visitor. The method should perform work that should be done
after visiting the children of the node. The method may return
this
or a new copy of the node which will be
installed as a child of the node's parent.buildTypes
in interface NodeOps
buildTypes
in class Node_c
tb
- The visitor which adds new type objects to the
TypeSystem
.SemanticException
public Node disambiguate(AmbiguityRemover ar) throws SemanticException
NodeOps
leave()
method of the
visitor. The method should perform work that should be done
after visiting the children of the node. The method may return
this
or a new copy of the node which will be
installed as a child of the node's parent.
The node should not assume that its children have been disambiguated.
If it depends on a child being disambiguated,
it may just return this
without doing any work.disambiguate
in interface NodeOps
disambiguate
in class Node_c
ar
- The visitor which disambiguates.SemanticException
public Node typeCheck(TypeChecker tc) throws SemanticException
NodeOps
leave()
method of the
visitor. The method should perform work that should be done
after visiting the children of the node. The method may return
this
or a new copy of the node which will be
installed as a child of the node's parent.typeCheck
in interface NodeOps
typeCheck
in class Node_c
tc
- The type checking visitor.SemanticException
public Node extRewrite(ExtensionRewriter rw) throws SemanticException
NodeOps
leave()
method of the
visitor. The method should perform work that should be done
after visiting the children of the node. The method may return
this
or a new copy of the node which will be
installed as a child of the node's parent.extRewrite
in interface NodeOps
extRewrite
in class Term_c
rw
- The visitor.SemanticException
public Term firstChild()
TermOps
firstChild
in interface TermOps
firstChild
in class Term_c
public <T> java.util.List<T> acceptCFG(CFGBuilder<?> v, java.util.List<T> succs)
TermOps
public void dump(CodeWriter w)
Node