Package gnu.expr
Class ScopeExp
java.lang.Object
gnu.mapping.PropertySet
gnu.mapping.Procedure
gnu.expr.Expression
gnu.expr.ScopeExp
- All Implemented Interfaces:
gnu.kawa.format.Printable
,Named
,SourceLocator
,SourceLocator
,Locator
Abstract class for expressions that add local variable bindings.
-
Nested Class Summary
Nested classes/interfaces inherited from interface gnu.text.SourceLocator
SourceLocator.Simple
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected int
Size of evalFrame to allocate in interpreter.int
Unique id number, to ease print-outs and debugging.protected Scope
Fields inherited from class gnu.expr.Expression
applyMethodExpression, flags, NEXT_AVAIL_FLAG, noExpressions, type, VALIDATED
Fields inherited from class gnu.mapping.Procedure
applyMethodType, applyToConsumerDefault, applyToConsumerMethod, applyToObjectDefault, applyToObjectMethod, compilerKey, compilerXKey, inlineIfConstantSymbol, validateApplyKey, validateXApplyKey
Fields inherited from class gnu.mapping.PropertySet
nameKey
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(Declaration decl) void
add
(Declaration prev, Declaration decl) Add a Declaration at a specified position.final void
addDeclaration
(Declaration decl) Add a Declaration to the current Scope.final Declaration
addDeclaration
(Object name) Create a new declaration in the current Scope.final Declaration
addDeclaration
(Object name, Type type) Create a new declaration in the current Scope.void
int
static void
duplicateDeclarationError
(Declaration oldDecl, Declaration newDecl, Compilation comp) getDefine
(Object name, Compilation parser) Add a new Declaration, with a message if there is an existing one.getNoDefine
(Object name) Lookup a declaration, create a non-defining declaration if needed.getOuter()
Return the statically enclosing binding contour.final boolean
True if a class is generated for this scope.lastDecl()
Find a Declaration by name.boolean
True if given scope is nesed in this scope, perhaps indirectly.static int
void
Clear bytecode resources for the ScopeExp.void
remove
(Declaration decl) void
remove
(Declaration prev, Declaration decl) void
replaceFollowing
(Declaration prev, Declaration newDecl) Replace theprev.next
bynewDecl
.protected void
Calculate offset and frameSize needed by interpreter.void
topLevel()
Return the outermost non-module scope, if there is one.toString()
protected <R,
D> R visit
(ExpVisitor<R, D> visitor, D d) Methods inherited from class gnu.expr.Expression
apply, applyMethodExpression, calculateType, checkLiteralKeyword, compile, compile, compile, compileWithPosition, compileWithPosition, deepCopy, deepCopy, deepCopy, deepCopy, eval, eval, getColumnNumber, getEndColumn, getEndLine, getFileName, getFlag, getFlags, getLineNumber, getPublicId, getStartColumn, getStartLine, getSystemId, getType, getTypeRaw, isSingleValue, isStableSourceLocation, makeWhile, maybeSetLine, mustCompile, neverReturns, numArgs, print, print, printLineColumn, setFile, setFlag, setFlag, setLine, setLine, setLine, setLine, setLine, setLocation, setType, side_effects, validateApply, valueIfConstant, visitChildren
Methods inherited from class gnu.mapping.Procedure
apply0, apply1, apply2, apply3, apply4, applyL, applyN, applyToConsumerDefault, applyToObjectDefault, checkArgCount, checkBadCode, getApplyMethod, getApplyToConsumerMethod, getApplyToObjectMethod, getReturnType, getSetter, getSourceLocation, isSideEffectFree, lookupApplyHandle, maxArgs, maxArgs, minArgs, minArgs, set0, set1, setN, setSetter, setSourceLocation
Methods inherited from class gnu.mapping.PropertySet
getName, getProperty, getSymbol, removeProperty, setName, setProperty, setProperty, setSymbol
-
Field Details
-
scope
-
frameSize
protected int frameSizeSize of evalFrame to allocate in interpreter. -
id
public int idUnique id number, to ease print-outs and debugging.
-
-
Constructor Details
-
ScopeExp
public ScopeExp()
-
-
Method Details
-
firstDecl
-
lastDecl
-
getVarScope
-
popScope
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. -
add
-
add
Add a Declaration at a specified position. -
replaceFollowing
Replace theprev.next
bynewDecl
. Ifprev==null
, replace the first decl. -
remove
-
remove
-
getOuter
Return the statically enclosing binding contour. -
setOuter
-
currentLambda
-
topLevel
Return the outermost non-module scope, if there is one. -
currentModule
-
lookup
Find a Declaration by name.- Parameters:
sym
- the (interned) name of the Declaration sought- Returns:
- the matching Declaration, if found; otherwise null
-
lookup
-
getNoDefine
Lookup a declaration, create a non-defining declaration if needed. -
getDefine
Add a new Declaration, with a message if there is an existing one. -
duplicateDeclarationError
public static void duplicateDeclarationError(Declaration oldDecl, Declaration newDecl, Compilation comp) -
addDeclaration
Create a new declaration in the current Scope.- Parameters:
name
- name (interned) to give to the new Declaration.
-
addDeclaration
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
Add a Declaration to the current Scope. -
countDecls
public int countDecls() -
clearCallList
public void clearCallList() -
nesting
-
nestedIn
True if given scope is nesed in this scope, perhaps indirectly. -
setIndexes
protected void setIndexes()Calculate offset and frameSize needed by interpreter. -
visit
- Overrides:
visit
in classExpression
-
isClassGenerated
public final boolean isClassGenerated()True if a class is generated for this scope. -
toString
- Overrides:
toString
in classExpression
-