|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--dpt.symbtab.SymbolTable
A SymbolTable object keeps track of all symbols encountered while parsing a file. It's main components are a list of all packages that have been parsed or imported, and a stack of symbols that represent the syntactical scope of a source file as it is being parsed.
Field Summary | |
private JavaStack |
activeScopes
A stack of currently-active scopes |
private BlockDef |
baseScope
a dummy scope to hold things like primitive types |
private java.io.File |
currentFile
The file that is currently being parsed |
private java.lang.String |
currentIndent
The amount of spacing to use when printing a report line |
private MethodDef |
currentMethod
The method header that is currently being parsed. |
private PackageDef |
defaultPackage
the "default" package to hold classes w/o package definitions |
private JavaVector |
demand
A list of packages that are being imported on demand |
private JavaHashtable |
importedClasses
A list of classes that have been explicitly imported |
private PackageDef |
javaLang
The java.lang package |
private StringTable |
names
A list of all strings encountered in the source |
private ClassDef |
object
The "java.lang.Object" class |
private JavaHashtable |
packages
A list of all packages that have been parsed or imported |
private Definition |
qualifiedScope
A specific scope to look in if the source code contains an explicitly-qualified identifier |
Constructor Summary | |
SymbolTable()
Constructor to create a new symbol table |
Method Summary | |
(package private) void |
addDemand(PackageDef pkg)
Add a package to the list of packages available on demand ("On demand" refers to imports that use an "*" to mean "any class that resides in the package." |
void |
addImport(JavaToken tok,
java.lang.String className,
java.lang.String packageName)
Add a package that has been imported |
(package private) void |
addToCurrentScope(Definition def)
Add an element to the current scope |
java.lang.String |
AK_ExtractClass(java.lang.String sName)
|
java.lang.String |
AK_ExtractClass(java.lang.String sName,
boolean bRight)
|
java.lang.String |
AK_ExtractName(java.lang.String sName)
|
java.lang.String |
AK_ExtractName(java.lang.String sName,
boolean bRight)
|
java.lang.String |
AK_ExtractPackage(java.lang.String sName,
int nTypName)
|
java.lang.String |
AK_ExtractPackage(java.lang.String sName,
int nTypName,
boolean bRight)
|
java.lang.String |
AK_FindImport(java.lang.String sLocation,
java.lang.String sName)
|
boolean |
AK_FindSymbol(java.util.Vector vInput,
java.lang.String sName)
|
java.lang.String |
AK_FormatHeader(java.lang.String sInput,
int nOption)
|
java.util.Vector |
AK_FormatHeaders(java.util.Vector vInput,
int nOption)
|
java.util.Vector |
AK_GetFileLines(java.lang.String sFile)
|
java.util.Vector |
AK_GetItemList(int nTyp,
java.lang.String sModifier)
|
java.lang.String |
AK_GetItemString(int nTyp)
|
java.util.Vector |
AK_GetMethod(java.lang.String sClass,
java.lang.String sModifier)
|
java.util.Vector |
AK_GetRef(int nTyp,
java.lang.String sName)
|
int |
AK_StringToInt(java.lang.String sNumber)
|
(package private) void |
closeImports()
We are done with imports, so clear the list |
Definition |
defineBlock(JavaToken tok)
Define a curly-brace-delimited block of code |
void |
defineClass(JavaToken theClass,
JavaToken superClass,
JavaVector interfaces)
Define a class object |
void |
defineClass(JavaToken theClass,
JavaToken superClass,
JavaVector interfaces,
java.util.Vector modifiers)
Define a class object |
void |
defineInterface(JavaToken theInterface,
JavaVector superInterfaces)
Define an interface object |
void |
defineLabel(JavaToken theLabel)
Define a new label object |
void |
defineMethod(JavaToken theMethod,
JavaToken type)
Define a new method object |
void |
defineMethod(JavaToken theMethod,
JavaToken type,
java.util.Vector modifiers)
Define a new method object |
void |
definePackage(JavaToken tok)
Define a new package object This is an adapter version to get the name of the package from a token |
(package private) PackageDef |
definePackage(java.lang.String name)
Define a new package object |
void |
defineVar(JavaToken theVariable,
JavaToken type)
create a variable definition |
void |
defineVar(JavaToken theVariable,
JavaToken type,
java.util.Vector modifiers)
create a variable definition |
void |
endMethodHead(JavaVector exceptions)
State that we are done processing the method header |
(package private) Definition |
findInImports(java.lang.String name)
look for the name in the import list for this class |
(package private) Definition |
findPackage(java.lang.String name)
Lookup a package in the list of all parsed packages |
(package private) ScopedDef |
getCurrentScope()
Return the currently-active scope |
(package private) PackageDef |
getDefaultPackage()
Define a new package object |
DummyClass |
getDummyClass(JavaToken tok)
Create a new dummy class object |
(package private) java.lang.String |
getIndent()
Get the current indentation string |
(package private) ClassDef |
getObject()
Get the java.lang.Object object |
(package private) Occurrence |
getOccurrence(JavaToken tok)
Create a new occurrence object |
(package private) Definition |
getScope()
return the current qualified scope for lookup. |
(package private) java.lang.String |
getUniqueName(JavaToken tok)
Get a unique occurrence of a String that has the name we want |
(package private) java.lang.String |
getUniqueName(java.lang.String name)
Get a unique occurrence of a String that has the specified name |
java.lang.String |
IF_GetClassDef(java.lang.String sName)
|
java.util.Vector |
IF_GetClassFu(java.lang.String sClass,
java.lang.String sModifier)
|
java.util.Vector |
IF_GetClassIF(java.lang.String sName)
|
java.util.Vector |
IF_GetClassImpl(java.lang.String sName)
|
java.util.Vector |
IF_GetClassImport(java.lang.String sName)
|
java.util.Vector |
IF_GetClassRef(java.lang.String sName)
|
java.util.Vector |
IF_GetClassSub(java.lang.String sName)
|
java.util.Vector |
IF_GetClassSuper(java.lang.String sName)
|
java.lang.String |
IF_GetClassSymbol(java.lang.String sClass,
java.lang.String sName,
int nOpt)
|
java.util.Vector |
IF_GetClassVar(java.lang.String sClass,
java.lang.String sModifier)
|
java.lang.String |
IF_GetDefFile(java.lang.String sLocation)
|
java.lang.String |
IF_GetDefLine(java.lang.String sLocation)
|
java.util.Vector |
IF_GetFu(java.lang.String sFu)
|
java.lang.String |
IF_GetFuDef(java.lang.String sName)
|
java.util.Vector |
IF_GetFuExceptions(java.lang.String sName)
|
java.util.Vector |
IF_GetFuParameters(java.lang.String sName)
|
java.util.Vector |
IF_GetFuRef(java.lang.String sName)
|
java.lang.String |
IF_GetFuTyp(java.lang.String sName)
|
java.lang.String |
IF_GetMemberName(java.lang.String sName,
int nOpt)
|
java.util.Vector |
IF_GetModifiers()
|
java.util.Vector |
IF_GetPackageClasses(java.lang.String sPackage,
java.lang.String sModifier)
|
java.lang.String |
IF_GetPackageDef(java.lang.String sName)
|
java.util.Vector |
IF_GetPackageImport(java.lang.String sName)
|
java.util.Vector |
IF_GetPackageRef(java.lang.String sName)
|
java.util.Vector |
IF_GetSTabClassList(java.lang.String sModifier)
|
java.util.Vector |
IF_GetSTabFuList(java.lang.String sModifier)
|
java.util.Vector |
IF_GetSTabImport()
|
java.util.Vector |
IF_GetSTabPackage()
|
java.util.Vector |
IF_GetSTabVarList(java.lang.String sModifier)
|
java.lang.String |
IF_GetVar(java.lang.String sName)
|
java.lang.String |
IF_GetVarDef(java.lang.String sName)
|
java.util.Vector |
IF_GetVarRef(java.lang.String sName)
|
java.lang.String |
IF_GetVarTyp(java.lang.String sName)
|
boolean |
IF_HasClassFu(java.lang.String sName,
java.lang.String sModifier)
|
boolean |
IF_HasClassIF(java.lang.String sName)
|
boolean |
IF_HasClassImpl(java.lang.String sName)
|
boolean |
IF_HasClassImport(java.lang.String sName)
|
boolean |
IF_HasClassRef(java.lang.String sName)
|
boolean |
IF_HasClassSub(java.lang.String sName)
|
boolean |
IF_HasClassSuper(java.lang.String sName)
|
boolean |
IF_HasClassVar(java.lang.String sName,
java.lang.String sModifier)
|
boolean |
IF_HasFuException(java.lang.String sName)
|
boolean |
IF_HasFuMiltiDef(java.lang.String sFu)
|
boolean |
IF_HasFuParameter(java.lang.String sName)
|
boolean |
IF_HasFuRef(java.lang.String sName)
|
boolean |
IF_HasFuTyp(java.lang.String sName)
|
boolean |
IF_HasPackageClass(java.lang.String sPackage,
java.lang.String sModifier)
|
boolean |
IF_HasPackageImport(java.lang.String sName)
|
boolean |
IF_HasPackageRef(java.lang.String sName)
|
boolean |
IF_HasSTabClass(java.lang.String sClass)
|
boolean |
IF_HasSTabFu(java.lang.String sMethod)
|
boolean |
IF_HasSTabPackage(java.lang.String sPackage)
|
boolean |
IF_HasSTabSuper(java.lang.String sSub,
java.lang.String sSuper)
|
boolean |
IF_HasSTabVar(java.lang.String sVar)
|
boolean |
IF_HasVarRef(java.lang.String sName)
|
boolean |
IF_IsClassAbstract(java.lang.String sClass)
|
boolean |
IF_IsClassInterface(java.lang.String sClass)
|
boolean |
IF_IsFuAbstract(java.lang.String sFu)
|
java.lang.String |
IF_ToString(java.util.Vector vInput)
|
(package private) Definition |
lookup(java.lang.String name)
Lookup a non-method in the symbol table This version of lookup is a convenience wrapper that just passes -1 as the parameter count to the real lookup routine |
(package private) Definition |
lookup(java.lang.String name,
int numParams)
Lookup a name in the symbol table |
(package private) Definition |
lookupDummy(Definition d)
Lookup a class based on a placeholder for that class |
(package private) void |
openImports(JavaHashtable imports)
Set up the list of imported packages for use in symbol lookup |
void |
popAllScopes()
Clear the scope stack (except the base scope for primitives) |
void |
popScope()
Pop off the current scope from the stack |
(package private) Definition |
pushScope(Definition scope)
Push a scope on the stack for symbol lookup |
void |
reference(JavaToken t)
Add an unresolved reference to the current scope |
void |
report(IndentingPrintWriter out)
Write a cross-reference report for all symbols in the table |
(package private) void |
resetScope()
unset the qualifiedScope so normal scoped lookup applies on the next name to look up |
void |
resolveTypes()
resolve types of anything that needs resolution in the symbol table |
void |
setFile(java.io.File file)
Mark the current file that is being parsed |
void |
setNearestClassScope()
set the lookup scope to the nearest enclosing class (for "this.x") |
(package private) void |
setScope(Definition d)
Set the qualified scope for the next name lookup. |
(package private) void |
setScope(JavaToken t)
Set the qualified scope for the next name lookup. |
(package private) void |
setScope(java.lang.String name)
Set the qualified scope for the next name lookup. |
java.lang.String |
toString()
Return a String representation for the entire symbol table |
void |
useDefaultPackage()
Used to push the scope of the default package. |
Methods inherited from class java.lang.Object |
|
Field Detail |
private BlockDef baseScope
private PackageDef defaultPackage
private StringTable names
private JavaStack activeScopes
private JavaHashtable packages
private Definition qualifiedScope
private java.io.File currentFile
private MethodDef currentMethod
private java.lang.String currentIndent
private JavaVector demand
private JavaHashtable importedClasses
private PackageDef javaLang
private ClassDef object
Constructor Detail |
public SymbolTable()
Method Detail |
public java.util.Vector IF_GetModifiers()
public java.lang.String IF_ToString(java.util.Vector vInput)
public java.lang.String IF_GetDefFile(java.lang.String sLocation)
public java.lang.String IF_GetDefLine(java.lang.String sLocation)
public boolean IF_HasSTabPackage(java.lang.String sPackage)
public boolean IF_HasSTabSuper(java.lang.String sSub, java.lang.String sSuper)
public boolean IF_HasSTabClass(java.lang.String sClass)
public boolean IF_HasSTabFu(java.lang.String sMethod)
public boolean IF_HasSTabVar(java.lang.String sVar)
public java.util.Vector IF_GetSTabImport()
public java.util.Vector IF_GetSTabPackage()
public java.util.Vector IF_GetSTabClassList(java.lang.String sModifier)
public java.util.Vector IF_GetSTabFuList(java.lang.String sModifier)
public java.util.Vector IF_GetSTabVarList(java.lang.String sModifier)
public java.lang.String IF_GetPackageDef(java.lang.String sName)
public boolean IF_HasPackageClass(java.lang.String sPackage, java.lang.String sModifier)
public java.util.Vector IF_GetPackageClasses(java.lang.String sPackage, java.lang.String sModifier)
public boolean IF_HasPackageRef(java.lang.String sName)
public java.util.Vector IF_GetPackageRef(java.lang.String sName)
public boolean IF_HasPackageImport(java.lang.String sName)
public java.util.Vector IF_GetPackageImport(java.lang.String sName)
public boolean IF_IsClassAbstract(java.lang.String sClass)
public boolean IF_IsFuAbstract(java.lang.String sFu)
public boolean IF_IsClassInterface(java.lang.String sClass)
public java.lang.String IF_GetClassDef(java.lang.String sName)
public boolean IF_HasClassFu(java.lang.String sName, java.lang.String sModifier)
public java.util.Vector IF_GetClassFu(java.lang.String sClass, java.lang.String sModifier)
public boolean IF_HasClassVar(java.lang.String sName, java.lang.String sModifier)
public java.util.Vector IF_GetClassVar(java.lang.String sClass, java.lang.String sModifier)
public boolean IF_HasClassSuper(java.lang.String sName)
public java.util.Vector IF_GetClassSuper(java.lang.String sName)
public boolean IF_HasClassSub(java.lang.String sName)
public java.util.Vector IF_GetClassSub(java.lang.String sName)
public boolean IF_HasClassImpl(java.lang.String sName)
public boolean IF_HasClassIF(java.lang.String sName)
public java.util.Vector IF_GetClassIF(java.lang.String sName)
public java.util.Vector IF_GetClassImpl(java.lang.String sName)
public java.lang.String IF_GetClassSymbol(java.lang.String sClass, java.lang.String sName, int nOpt)
public boolean IF_HasClassRef(java.lang.String sName)
public java.util.Vector IF_GetClassRef(java.lang.String sName)
public boolean IF_HasClassImport(java.lang.String sName)
public java.util.Vector IF_GetClassImport(java.lang.String sName)
public java.lang.String IF_GetFuDef(java.lang.String sName)
public java.lang.String IF_GetMemberName(java.lang.String sName, int nOpt)
public boolean IF_HasFuMiltiDef(java.lang.String sFu)
public java.util.Vector IF_GetFu(java.lang.String sFu)
public boolean IF_HasFuTyp(java.lang.String sName)
public java.lang.String IF_GetFuTyp(java.lang.String sName)
public boolean IF_HasFuParameter(java.lang.String sName)
public java.util.Vector IF_GetFuParameters(java.lang.String sName)
public boolean IF_HasFuException(java.lang.String sName)
public java.util.Vector IF_GetFuExceptions(java.lang.String sName)
public boolean IF_HasFuRef(java.lang.String sName)
public java.util.Vector IF_GetFuRef(java.lang.String sName)
public java.lang.String IF_GetVarDef(java.lang.String sName)
public java.lang.String IF_GetVar(java.lang.String sName)
public java.lang.String IF_GetVarTyp(java.lang.String sName)
public boolean IF_HasVarRef(java.lang.String sName)
public java.util.Vector IF_GetVarRef(java.lang.String sName)
public int AK_StringToInt(java.lang.String sNumber)
public java.lang.String AK_FindImport(java.lang.String sLocation, java.lang.String sName)
public java.util.Vector AK_GetFileLines(java.lang.String sFile) throws java.io.IOException
public boolean AK_FindSymbol(java.util.Vector vInput, java.lang.String sName)
public java.util.Vector AK_GetRef(int nTyp, java.lang.String sName)
public java.util.Vector AK_GetMethod(java.lang.String sClass, java.lang.String sModifier)
public java.lang.String AK_ExtractClass(java.lang.String sName)
public java.lang.String AK_ExtractClass(java.lang.String sName, boolean bRight)
public java.lang.String AK_ExtractPackage(java.lang.String sName, int nTypName)
public java.lang.String AK_ExtractPackage(java.lang.String sName, int nTypName, boolean bRight)
public java.lang.String AK_ExtractName(java.lang.String sName)
public java.lang.String AK_ExtractName(java.lang.String sName, boolean bRight)
public java.lang.String AK_FormatHeader(java.lang.String sInput, int nOption)
public java.util.Vector AK_FormatHeaders(java.util.Vector vInput, int nOption)
public java.util.Vector AK_GetItemList(int nTyp, java.lang.String sModifier)
public java.lang.String AK_GetItemString(int nTyp)
void addDemand(PackageDef pkg)
public void addImport(JavaToken tok, java.lang.String className, java.lang.String packageName)
void addToCurrentScope(Definition def)
void closeImports()
public Definition defineBlock(JavaToken tok)
public void defineClass(JavaToken theClass, JavaToken superClass, JavaVector interfaces)
public void defineClass(JavaToken theClass, JavaToken superClass, JavaVector interfaces, java.util.Vector modifiers)
public void defineInterface(JavaToken theInterface, JavaVector superInterfaces)
public void defineLabel(JavaToken theLabel)
public void defineMethod(JavaToken theMethod, JavaToken type, java.util.Vector modifiers)
public void defineMethod(JavaToken theMethod, JavaToken type)
public void definePackage(JavaToken tok)
PackageDef definePackage(java.lang.String name)
public void defineVar(JavaToken theVariable, JavaToken type)
public void defineVar(JavaToken theVariable, JavaToken type, java.util.Vector modifiers)
public void endMethodHead(JavaVector exceptions)
Definition findInImports(java.lang.String name)
Definition findPackage(java.lang.String name)
ScopedDef getCurrentScope()
PackageDef getDefaultPackage()
public DummyClass getDummyClass(JavaToken tok)
java.lang.String getIndent()
ClassDef getObject()
Occurrence getOccurrence(JavaToken tok)
Definition getScope()
java.lang.String getUniqueName(JavaToken tok)
java.lang.String getUniqueName(java.lang.String name)
Definition lookup(java.lang.String name)
Definition lookup(java.lang.String name, int numParams)
Definition lookupDummy(Definition d)
void openImports(JavaHashtable imports)
public void popAllScopes()
public void popScope()
Definition pushScope(Definition scope)
public void reference(JavaToken t)
public void report(IndentingPrintWriter out)
void resetScope()
public void resolveTypes()
public void setFile(java.io.File file)
public void setNearestClassScope()
void setScope(JavaToken t)
void setScope(Definition d)
void setScope(java.lang.String name)
public java.lang.String toString()
public void useDefaultPackage()
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |