dpt.symbtab
Class SymbolTable

java.lang.Object
  |
  +--dpt.symbtab.SymbolTable

public class SymbolTable
extends java.lang.Object
implements SymbTab

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
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

baseScope

private BlockDef baseScope
a dummy scope to hold things like primitive types

defaultPackage

private PackageDef defaultPackage
the "default" package to hold classes w/o package definitions

names

private StringTable names
A list of all strings encountered in the source

activeScopes

private JavaStack activeScopes
A stack of currently-active scopes

packages

private JavaHashtable packages
A list of all packages that have been parsed or imported

qualifiedScope

private Definition qualifiedScope
A specific scope to look in if the source code contains an explicitly-qualified identifier

currentFile

private java.io.File currentFile
The file that is currently being parsed

currentMethod

private MethodDef currentMethod
The method header that is currently being parsed. This is used to associate variable definitions as parameters to a method

currentIndent

private java.lang.String currentIndent
The amount of spacing to use when printing a report line

demand

private JavaVector demand
A list of packages that are being imported on demand

importedClasses

private JavaHashtable importedClasses
A list of classes that have been explicitly imported

javaLang

private PackageDef javaLang
The java.lang package

object

private ClassDef object
The "java.lang.Object" class
Constructor Detail

SymbolTable

public SymbolTable()
Constructor to create a new symbol table
Method Detail

IF_GetModifiers

public java.util.Vector IF_GetModifiers()
Specified by:
IF_GetModifiers in interface SymbTab

IF_ToString

public java.lang.String IF_ToString(java.util.Vector vInput)

IF_GetDefFile

public java.lang.String IF_GetDefFile(java.lang.String sLocation)
Specified by:
IF_GetDefFile in interface SymbTab

IF_GetDefLine

public java.lang.String IF_GetDefLine(java.lang.String sLocation)
Specified by:
IF_GetDefLine in interface SymbTab

IF_HasSTabPackage

public boolean IF_HasSTabPackage(java.lang.String sPackage)
Specified by:
IF_HasSTabPackage in interface SymbTab

IF_HasSTabSuper

public boolean IF_HasSTabSuper(java.lang.String sSub,
                               java.lang.String sSuper)
Specified by:
IF_HasSTabSuper in interface SymbTab

IF_HasSTabClass

public boolean IF_HasSTabClass(java.lang.String sClass)
Specified by:
IF_HasSTabClass in interface SymbTab

IF_HasSTabFu

public boolean IF_HasSTabFu(java.lang.String sMethod)
Specified by:
IF_HasSTabFu in interface SymbTab

IF_HasSTabVar

public boolean IF_HasSTabVar(java.lang.String sVar)
Specified by:
IF_HasSTabVar in interface SymbTab

IF_GetSTabImport

public java.util.Vector IF_GetSTabImport()
Specified by:
IF_GetSTabImport in interface SymbTab

IF_GetSTabPackage

public java.util.Vector IF_GetSTabPackage()
Specified by:
IF_GetSTabPackage in interface SymbTab

IF_GetSTabClassList

public java.util.Vector IF_GetSTabClassList(java.lang.String sModifier)
Specified by:
IF_GetSTabClassList in interface SymbTab

IF_GetSTabFuList

public java.util.Vector IF_GetSTabFuList(java.lang.String sModifier)
Specified by:
IF_GetSTabFuList in interface SymbTab

IF_GetSTabVarList

public java.util.Vector IF_GetSTabVarList(java.lang.String sModifier)
Specified by:
IF_GetSTabVarList in interface SymbTab

IF_GetPackageDef

public java.lang.String IF_GetPackageDef(java.lang.String sName)
Specified by:
IF_GetPackageDef in interface SymbTab

IF_HasPackageClass

public boolean IF_HasPackageClass(java.lang.String sPackage,
                                  java.lang.String sModifier)
Specified by:
IF_HasPackageClass in interface SymbTab

IF_GetPackageClasses

public java.util.Vector IF_GetPackageClasses(java.lang.String sPackage,
                                             java.lang.String sModifier)
Specified by:
IF_GetPackageClasses in interface SymbTab

IF_HasPackageRef

public boolean IF_HasPackageRef(java.lang.String sName)
Specified by:
IF_HasPackageRef in interface SymbTab

IF_GetPackageRef

public java.util.Vector IF_GetPackageRef(java.lang.String sName)
Specified by:
IF_GetPackageRef in interface SymbTab

IF_HasPackageImport

public boolean IF_HasPackageImport(java.lang.String sName)
Specified by:
IF_HasPackageImport in interface SymbTab

IF_GetPackageImport

public java.util.Vector IF_GetPackageImport(java.lang.String sName)
Specified by:
IF_GetPackageImport in interface SymbTab

IF_IsClassAbstract

public boolean IF_IsClassAbstract(java.lang.String sClass)
Specified by:
IF_IsClassAbstract in interface SymbTab

IF_IsFuAbstract

public boolean IF_IsFuAbstract(java.lang.String sFu)
Specified by:
IF_IsFuAbstract in interface SymbTab

IF_IsClassInterface

public boolean IF_IsClassInterface(java.lang.String sClass)
Specified by:
IF_IsClassInterface in interface SymbTab

IF_GetClassDef

public java.lang.String IF_GetClassDef(java.lang.String sName)
Specified by:
IF_GetClassDef in interface SymbTab

IF_HasClassFu

public boolean IF_HasClassFu(java.lang.String sName,
                             java.lang.String sModifier)
Specified by:
IF_HasClassFu in interface SymbTab

IF_GetClassFu

public java.util.Vector IF_GetClassFu(java.lang.String sClass,
                                      java.lang.String sModifier)
Specified by:
IF_GetClassFu in interface SymbTab

IF_HasClassVar

public boolean IF_HasClassVar(java.lang.String sName,
                              java.lang.String sModifier)
Specified by:
IF_HasClassVar in interface SymbTab

IF_GetClassVar

public java.util.Vector IF_GetClassVar(java.lang.String sClass,
                                       java.lang.String sModifier)
Specified by:
IF_GetClassVar in interface SymbTab

IF_HasClassSuper

public boolean IF_HasClassSuper(java.lang.String sName)
Specified by:
IF_HasClassSuper in interface SymbTab

IF_GetClassSuper

public java.util.Vector IF_GetClassSuper(java.lang.String sName)
Specified by:
IF_GetClassSuper in interface SymbTab

IF_HasClassSub

public boolean IF_HasClassSub(java.lang.String sName)
Specified by:
IF_HasClassSub in interface SymbTab

IF_GetClassSub

public java.util.Vector IF_GetClassSub(java.lang.String sName)
Specified by:
IF_GetClassSub in interface SymbTab

IF_HasClassImpl

public boolean IF_HasClassImpl(java.lang.String sName)
Specified by:
IF_HasClassImpl in interface SymbTab

IF_HasClassIF

public boolean IF_HasClassIF(java.lang.String sName)
Specified by:
IF_HasClassIF in interface SymbTab

IF_GetClassIF

public java.util.Vector IF_GetClassIF(java.lang.String sName)
Specified by:
IF_GetClassIF in interface SymbTab

IF_GetClassImpl

public java.util.Vector IF_GetClassImpl(java.lang.String sName)
Specified by:
IF_GetClassImpl in interface SymbTab

IF_GetClassSymbol

public java.lang.String IF_GetClassSymbol(java.lang.String sClass,
                                          java.lang.String sName,
                                          int nOpt)
Specified by:
IF_GetClassSymbol in interface SymbTab

IF_HasClassRef

public boolean IF_HasClassRef(java.lang.String sName)
Specified by:
IF_HasClassRef in interface SymbTab

IF_GetClassRef

public java.util.Vector IF_GetClassRef(java.lang.String sName)
Specified by:
IF_GetClassRef in interface SymbTab

IF_HasClassImport

public boolean IF_HasClassImport(java.lang.String sName)
Specified by:
IF_HasClassImport in interface SymbTab

IF_GetClassImport

public java.util.Vector IF_GetClassImport(java.lang.String sName)
Specified by:
IF_GetClassImport in interface SymbTab

IF_GetFuDef

public java.lang.String IF_GetFuDef(java.lang.String sName)
Specified by:
IF_GetFuDef in interface SymbTab

IF_GetMemberName

public java.lang.String IF_GetMemberName(java.lang.String sName,
                                         int nOpt)
Specified by:
IF_GetMemberName in interface SymbTab

IF_HasFuMiltiDef

public boolean IF_HasFuMiltiDef(java.lang.String sFu)
Specified by:
IF_HasFuMiltiDef in interface SymbTab

IF_GetFu

public java.util.Vector IF_GetFu(java.lang.String sFu)
Specified by:
IF_GetFu in interface SymbTab

IF_HasFuTyp

public boolean IF_HasFuTyp(java.lang.String sName)
Specified by:
IF_HasFuTyp in interface SymbTab

IF_GetFuTyp

public java.lang.String IF_GetFuTyp(java.lang.String sName)
Specified by:
IF_GetFuTyp in interface SymbTab

IF_HasFuParameter

public boolean IF_HasFuParameter(java.lang.String sName)
Specified by:
IF_HasFuParameter in interface SymbTab

IF_GetFuParameters

public java.util.Vector IF_GetFuParameters(java.lang.String sName)
Specified by:
IF_GetFuParameters in interface SymbTab

IF_HasFuException

public boolean IF_HasFuException(java.lang.String sName)
Specified by:
IF_HasFuException in interface SymbTab

IF_GetFuExceptions

public java.util.Vector IF_GetFuExceptions(java.lang.String sName)
Specified by:
IF_GetFuExceptions in interface SymbTab

IF_HasFuRef

public boolean IF_HasFuRef(java.lang.String sName)
Specified by:
IF_HasFuRef in interface SymbTab

IF_GetFuRef

public java.util.Vector IF_GetFuRef(java.lang.String sName)
Specified by:
IF_GetFuRef in interface SymbTab

IF_GetVarDef

public java.lang.String IF_GetVarDef(java.lang.String sName)
Specified by:
IF_GetVarDef in interface SymbTab

IF_GetVar

public java.lang.String IF_GetVar(java.lang.String sName)
Specified by:
IF_GetVar in interface SymbTab

IF_GetVarTyp

public java.lang.String IF_GetVarTyp(java.lang.String sName)
Specified by:
IF_GetVarTyp in interface SymbTab

IF_HasVarRef

public boolean IF_HasVarRef(java.lang.String sName)
Specified by:
IF_HasVarRef in interface SymbTab

IF_GetVarRef

public java.util.Vector IF_GetVarRef(java.lang.String sName)
Specified by:
IF_GetVarRef in interface SymbTab

AK_StringToInt

public int AK_StringToInt(java.lang.String sNumber)

AK_FindImport

public java.lang.String AK_FindImport(java.lang.String sLocation,
                                      java.lang.String sName)

AK_GetFileLines

public java.util.Vector AK_GetFileLines(java.lang.String sFile)
                                 throws java.io.IOException

AK_FindSymbol

public boolean AK_FindSymbol(java.util.Vector vInput,
                             java.lang.String sName)

AK_GetRef

public java.util.Vector AK_GetRef(int nTyp,
                                  java.lang.String sName)

AK_GetMethod

public java.util.Vector AK_GetMethod(java.lang.String sClass,
                                     java.lang.String sModifier)

AK_ExtractClass

public java.lang.String AK_ExtractClass(java.lang.String sName)

AK_ExtractClass

public java.lang.String AK_ExtractClass(java.lang.String sName,
                                        boolean bRight)

AK_ExtractPackage

public java.lang.String AK_ExtractPackage(java.lang.String sName,
                                          int nTypName)

AK_ExtractPackage

public java.lang.String AK_ExtractPackage(java.lang.String sName,
                                          int nTypName,
                                          boolean bRight)

AK_ExtractName

public java.lang.String AK_ExtractName(java.lang.String sName)

AK_ExtractName

public java.lang.String AK_ExtractName(java.lang.String sName,
                                       boolean bRight)

AK_FormatHeader

public java.lang.String AK_FormatHeader(java.lang.String sInput,
                                        int nOption)

AK_FormatHeaders

public java.util.Vector AK_FormatHeaders(java.util.Vector vInput,
                                         int nOption)

AK_GetItemList

public java.util.Vector AK_GetItemList(int nTyp,
                                       java.lang.String sModifier)

AK_GetItemString

public java.lang.String AK_GetItemString(int nTyp)

addDemand

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." For example import java.awt.*; is an on-demand import that says "if we don't find a class anywhere else, try to find it in the java.awt.* package.

addImport

public void addImport(JavaToken tok,
                      java.lang.String className,
                      java.lang.String packageName)
Add a package that has been imported

addToCurrentScope

void addToCurrentScope(Definition def)
Add an element to the current scope

closeImports

void closeImports()
We are done with imports, so clear the list

defineBlock

public Definition defineBlock(JavaToken tok)
Define a curly-brace-delimited block of code

defineClass

public void defineClass(JavaToken theClass,
                        JavaToken superClass,
                        JavaVector interfaces)
Define a class object

defineClass

public void defineClass(JavaToken theClass,
                        JavaToken superClass,
                        JavaVector interfaces,
                        java.util.Vector modifiers)
Define a class object

defineInterface

public void defineInterface(JavaToken theInterface,
                            JavaVector superInterfaces)
Define an interface object

defineLabel

public void defineLabel(JavaToken theLabel)
Define a new label object

defineMethod

public void defineMethod(JavaToken theMethod,
                         JavaToken type,
                         java.util.Vector modifiers)
Define a new method object

defineMethod

public void defineMethod(JavaToken theMethod,
                         JavaToken type)
Define a new method object

definePackage

public void definePackage(JavaToken tok)
Define a new package object This is an adapter version to get the name of the package from a token

definePackage

PackageDef definePackage(java.lang.String name)
Define a new package object

defineVar

public void defineVar(JavaToken theVariable,
                      JavaToken type)
create a variable definition

defineVar

public void defineVar(JavaToken theVariable,
                      JavaToken type,
                      java.util.Vector modifiers)
create a variable definition

endMethodHead

public void endMethodHead(JavaVector exceptions)
State that we are done processing the method header

findInImports

Definition findInImports(java.lang.String name)
look for the name in the import list for this class

findPackage

Definition findPackage(java.lang.String name)
Lookup a package in the list of all parsed packages

getCurrentScope

ScopedDef getCurrentScope()
Return the currently-active scope

getDefaultPackage

PackageDef getDefaultPackage()
Define a new package object

getDummyClass

public DummyClass getDummyClass(JavaToken tok)
Create a new dummy class object

getIndent

java.lang.String getIndent()
Get the current indentation string

getObject

ClassDef getObject()
Get the java.lang.Object object

getOccurrence

Occurrence getOccurrence(JavaToken tok)
Create a new occurrence object

getScope

Definition getScope()
return the current qualified scope for lookup.

getUniqueName

java.lang.String getUniqueName(JavaToken tok)
Get a unique occurrence of a String that has the name we want

getUniqueName

java.lang.String getUniqueName(java.lang.String name)
Get a unique occurrence of a String that has the specified name

lookup

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

lookup

Definition lookup(java.lang.String name,
                  int numParams)
Lookup a name in the symbol table

lookupDummy

Definition lookupDummy(Definition d)
Lookup a class based on a placeholder for that class

openImports

void openImports(JavaHashtable imports)
Set up the list of imported packages for use in symbol lookup

popAllScopes

public void popAllScopes()
Clear the scope stack (except the base scope for primitives)

popScope

public void popScope()
Pop off the current scope from the stack

pushScope

Definition pushScope(Definition scope)
Push a scope on the stack for symbol lookup

reference

public void reference(JavaToken t)
Add an unresolved reference to the current scope

report

public void report(IndentingPrintWriter out)
Write a cross-reference report for all symbols in the table

resetScope

void resetScope()
unset the qualifiedScope so normal scoped lookup applies on the next name to look up

resolveTypes

public void resolveTypes()
resolve types of anything that needs resolution in the symbol table

setFile

public void setFile(java.io.File file)
Mark the current file that is being parsed

setNearestClassScope

public void setNearestClassScope()
set the lookup scope to the nearest enclosing class (for "this.x")

setScope

void setScope(JavaToken t)
Set the qualified scope for the next name lookup. Names will only be searched for within that scope. This version of setScope looks up the definition to set based on its name as received from a token...

setScope

void setScope(Definition d)
Set the qualified scope for the next name lookup. Names will only be searched for within that scope

setScope

void setScope(java.lang.String name)
Set the qualified scope for the next name lookup. Names will only be searched for within that scope. This version of setScope looks up the definition to set based on its name...

toString

public java.lang.String toString()
Return a String representation for the entire symbol table
Overrides:
toString in class java.lang.Object

useDefaultPackage

public void useDefaultPackage()
Used to push the scope of the default package. This is used by the parser if the source file being parsed does not contain a package specification.