|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.antlr.runtime.tree.BaseTree
org.antlr.runtime.tree.CommonTree
com.adamcornett.cminus.tree.CMTree
com.adamcornett.cminus.tree.ExprNode
com.adamcornett.cminus.tree.FuncTree
public class FuncTree
A tree node representing a function.
| Field Summary | |
|---|---|
private Function |
f
The function from the FunctionTable |
private int |
localVarCount
The number of local variables to reserve space for. |
private Scope |
s
The scope for this function from the scope table |
private int |
stackSize
The amount of stack space to reserve |
| Fields inherited from class com.adamcornett.cminus.tree.CMTree |
|---|
log |
| Fields inherited from class org.antlr.runtime.tree.CommonTree |
|---|
childIndex, parent, startIndex, stopIndex, token |
| Fields inherited from class org.antlr.runtime.tree.BaseTree |
|---|
children |
| Fields inherited from interface org.antlr.runtime.tree.Tree |
|---|
INVALID_NODE |
| Constructor Summary | |
|---|---|
FuncTree(org.antlr.runtime.Token payload)
|
|
| Method Summary | |
|---|---|
String |
computeParamStr()
|
private String |
computeParamStr(CMTree paramList)
Helper function to generate the parameter list based on the Param List node |
void |
emitCode(ClassGenerator classGenerator)
Emit the function declaration code, followed by the body of the function |
private void |
findFunction()
Look up the function in the table based on its name. |
protected CSTree |
getCSTree()
Get the compound statement node for this function |
Function |
getFunction()
Get the function declaration from the FunctionTable |
private CMTree |
getParamList()
|
Type |
getReturnType()
Get the return type of the function |
Scope |
getScope()
Get the function's scope |
int |
getScopeNumber()
Get the function's scope number |
private int |
getVarDecs(CMTree root)
|
void |
setFunction(Function f)
|
private void |
setLocals()
Calculate the number of local variables |
void |
setReturnType(Type t)
|
void |
setScope(Scope s)
|
private void |
setStackSize()
Determine the stack size recursively by looking at all child statements and finding the one with the largest stack. |
| Methods inherited from class com.adamcornett.cminus.tree.ExprNode |
|---|
getOperandType |
| Methods inherited from class com.adamcornett.cminus.tree.CMTree |
|---|
emitLineInfo, getMaxTreeDepth, getNextLabelNumber, getRequiredStack |
| Methods inherited from class org.antlr.runtime.tree.CommonTree |
|---|
dupNode, getCharPositionInLine, getChildIndex, getLine, getParent, getText, getToken, getTokenStartIndex, getTokenStopIndex, getType, isNil, setChildIndex, setParent, setTokenStartIndex, setTokenStopIndex, setUnknownTokenBoundaries, toString |
| Methods inherited from class org.antlr.runtime.tree.BaseTree |
|---|
addChild, addChildren, createChildrenList, deleteChild, freshenParentAndChildIndexes, freshenParentAndChildIndexes, getAncestor, getAncestors, getChild, getChildCount, getChildren, getFirstChildWithType, hasAncestor, replaceChildren, sanityCheckParentAndChildIndexes, sanityCheckParentAndChildIndexes, setChild, toStringTree |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
private Function f
FunctionTable
private int localVarCount
private Scope s
private int stackSize
| Constructor Detail |
|---|
public FuncTree(org.antlr.runtime.Token payload)
| Method Detail |
|---|
public String computeParamStr()
public void emitCode(ClassGenerator classGenerator)
emitCode in class CMTreepublic Function getFunction()
FunctionTable
getFunction in interface FunctionNodepublic Type getReturnType()
getReturnType in interface TypeNodeFunction.getReturnType()public Scope getScope()
getScope in interface ScopeNodepublic int getScopeNumber()
getScopeNumber in interface ScopeNodepublic void setFunction(Function f)
setFunction in interface FunctionNodepublic void setReturnType(Type t)
setReturnType in interface TypeNodepublic void setScope(Scope s)
setScope in interface ScopeNodeprivate String computeParamStr(CMTree paramList)
paramList - The Param List node for this function
private void findFunction()
private CMTree getParamList()
private int getVarDecs(CMTree root)
private void setLocals()
private void setStackSize()
protected CSTree getCSTree()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||