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 intSize of evalFrame to allocate in interpreter.intUnique id number, to ease print-outs and debugging.protected ScopeFields inherited from class gnu.expr.Expression
applyMethodExpression, flags, NEXT_AVAIL_FLAG, noExpressions, type, VALIDATEDFields inherited from class gnu.mapping.Procedure
applyMethodType, applyToConsumerDefault, applyToConsumerMethod, applyToObjectDefault, applyToObjectMethod, compilerKey, compilerXKey, inlineIfConstantSymbol, validateApplyKey, validateXApplyKeyFields inherited from class gnu.mapping.PropertySet
nameKey -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(Declaration decl) voidadd(Declaration prev, Declaration decl) Add a Declaration at a specified position.final voidaddDeclaration(Declaration decl) Add a Declaration to the current Scope.final DeclarationaddDeclaration(Object name) Create a new declaration in the current Scope.final DeclarationaddDeclaration(Object name, Type type) Create a new declaration in the current Scope.voidintstatic voidduplicateDeclarationError(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 booleanTrue if a class is generated for this scope.lastDecl()Find a Declaration by name.booleanTrue if given scope is nesed in this scope, perhaps indirectly.static intvoidClear bytecode resources for the ScopeExp.voidremove(Declaration decl) voidremove(Declaration prev, Declaration decl) voidreplaceFollowing(Declaration prev, Declaration newDecl) Replace theprev.nextbynewDecl.protected voidCalculate offset and frameSize needed by interpreter.voidtopLevel()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, visitChildrenMethods 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, setSourceLocationMethods 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.nextbynewDecl. 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:
visitin classExpression
-
isClassGenerated
public final boolean isClassGenerated()True if a class is generated for this scope. -
toString
- Overrides:
toStringin classExpression
-