gnu.expr

Class ScopeExp

Implemented Interfaces:
Named, Printable
Known Direct Subclasses:
CatchClause, LambdaExp, LetExp

public abstract class ScopeExp
extends Expression

Abstract class for expressions that add local variable bindings.

Field Summary

int
id
Unique id number, to ease print-outs and debugging.
ScopeExp
outer
The statically enclosing binding contour.

Fields inherited from class gnu.expr.Expression

NEXT_AVAIL_FLAG, flags, noExpressions

Constructor Summary

ScopeExp()

Method Summary

void
add(Declaration decl)
void
add(Declaration prev, Declaration decl)
Add a Declaration at a specified position.
Declaration
addDeclaration(Object name)
Create a new declaration in the current Scope.
Declaration
addDeclaration(Object name, Type type)
Create a new declaration in the current Scope.
void
addDeclaration(Declaration decl)
Add a Declaration to the current Scope.
int
countDecls()
LambdaExp
currentLambda()
ModuleExp
currentModule()
Declaration
firstDecl()
Declaration
getDefine(Object name, char severity, Compilation parser)
Add a new Declaration, with a message if there is an existing one.
Declaration
getNoDefine(Object name)
Lookup a declaration, create a non-defining declaration if needed.
Scope
getVarScope()
Declaration
lookup(Object sym)
Find a Declaration by name.
Declaration
lookup(Object sym, Language language, int namespace)
static int
nesting(ScopeExp sc)
void
popScope(CodeAttr code)
Clear bytecode resources for the ScopeExp.
void
remove(Declaration decl)
void
remove(Declaration prev, Declaration decl)
void
replaceFollowing(Declaration prev, Declaration newDecl)
Replace the prev.next by newDecl.
String
toString()
protected Expression
walk(ExpWalker walker)

Methods inherited from class gnu.expr.Expression

apply, apply0, compile, compile, compileNotePosition, compileWithPosition, compileWithPosition, eval, eval, getColumn, getFile, getFlag, getFlags, getLine, getType, makeWhile, match0, print, print, printLineColumn, setFile, setFlag, setFlag, setLine, setLine, setLine, setLine, walk, walkChildren

Methods inherited from class gnu.mapping.Procedure0

apply0, apply1, apply2, apply3, apply4, applyN, numArgs

Methods inherited from class gnu.mapping.Procedure

apply, apply, apply0, apply1, apply2, apply3, apply4, applyN, check0, check1, check2, check3, check4, checkArgCount, checkN, getName, getProperty, getSetter, getSymbol, match0, match1, match2, match3, match4, matchN, maxArgs, minArgs, name, numArgs, removeProperty, set0, set1, setN, setName, setProperty, setProperty, setSetter, setSymbol, toString

Field Details

id

public int id
Unique id number, to ease print-outs and debugging.

outer

public ScopeExp outer
The statically enclosing binding contour.

Constructor Details

ScopeExp

public ScopeExp()

Method Details

add

public void add(Declaration decl)

add

public void add(Declaration prev,
                Declaration decl)
Add a Declaration at a specified position.

addDeclaration

public final Declaration addDeclaration(Object name)
Create a new declaration in the current Scope.
Parameters:
name - name (interned) to give to the new Declaration.

addDeclaration

public final Declaration addDeclaration(Object name,
                                        Type type)
Create a new declaration in the current Scope.
Parameters:
name - name (interned) to give to the new Declaration.
type - type of the new Declaration.

addDeclaration

public final void addDeclaration(Declaration decl)
Add a Declaration to the current Scope.

countDecls

public int countDecls()

currentLambda

public LambdaExp currentLambda()

currentModule

public ModuleExp currentModule()

firstDecl

public Declaration firstDecl()

getDefine

public Declaration getDefine(Object name,
                             char severity,
                             Compilation parser)
Add a new Declaration, with a message if there is an existing one.

getNoDefine

public Declaration getNoDefine(Object name)
Lookup a declaration, create a non-defining declaration if needed.

getVarScope

public Scope getVarScope()

lookup

public Declaration lookup(Object sym)
Find a Declaration by name.
Parameters:
sym - the (interned) name of the Declaration sought
Returns:
the matching Declaration, if found; otherwise null

lookup

public Declaration lookup(Object sym,
                          Language language,
                          int namespace)

nesting

public static int nesting(ScopeExp sc)

popScope

public void popScope(CodeAttr code)
Clear bytecode resources for the ScopeExp. This potentially allows Kawa to generate code for the same (inlined, shared) ScopeExp multiple times - though we're not making use of that yet.

remove

public void remove(Declaration decl)

remove

public void remove(Declaration prev,
                   Declaration decl)

replaceFollowing

public void replaceFollowing(Declaration prev,
                             Declaration newDecl)
Replace the prev.next by newDecl. If prev==null, replace the first decl.

toString

public String toString()
Overrides:
toString in interface Procedure

walk

protected Expression walk(ExpWalker walker)
Overrides:
walk in interface Expression