edu.vub.at.objects.natives.grammar
Class AGDefTable
java.lang.Object
edu.vub.at.objects.natives.NATNil
edu.vub.at.objects.natives.NATByCopy
edu.vub.at.objects.natives.grammar.NATAbstractGrammar
edu.vub.at.objects.natives.grammar.AGDefTable
- All Implemented Interfaces:
- ATAbstractGrammar, ATConversions, ATDefinition, ATDefTable, ATExpression, ATNil, ATObject, ATStatement, java.io.Serializable
- public final class AGDefTable
- extends NATAbstractGrammar
- implements ATDefTable
- Author:
- tvc
The native implementation of a table definition AG element.
- See Also:
- Serialized Form
Methods inherited from class edu.vub.at.objects.natives.NATNil |
asAmbientTalkObject, asJavaClassUnderSymbiosis, asJavaObjectUnderSymbiosis, asNativeBoolean, asNativeException, asNativeFarReference, asNativeFraction, asNativeNumber, asNativeNumeric, asNativeTable, asNativeText, base__opeql__opeql_, base_asActorMirror, base_asAsyncMessage, base_asBegin, base_asBoolean, base_asClosure, base_asDefinition, base_asExpression, base_asFarReference, base_asField, base_asHandler, base_asMessage, base_asMessageCreation, base_asMethod, base_asMirror, base_asNumber, base_asSplice, base_asStatement, base_asStripe, base_asSymbol, base_asTable, base_asUnquoteSplice, base_asVariableAssignment, base_init, base_isBoolean, base_isCallFrame, base_isClosure, base_isFarReference, base_isMessageCreation, base_isMethod, base_isMirror, base_isSplice, base_isStripe, base_isSymbol, base_isTable, base_isUnquoteSplice, base_isVariableAssignment, base_new, createChild, equals, isAmbientTalkObject, isJavaObjectUnderSymbiosis, isNativeBoolean, isNativeField, isNativeText, meta_addField, meta_addMethod, meta_assignField, meta_assignVariable, meta_clone, meta_defineField, meta_doesNotUnderstand, meta_extend, meta_getDynamicParent, meta_getLexicalParent, meta_grabField, meta_grabMethod, meta_invoke, meta_isCloneOf, meta_isRelatedTo, meta_isStripedWith, meta_listFields, meta_listMethods, meta_lookup, meta_newInstance, meta_receive, meta_respondsTo, meta_select, meta_send, meta_share, readResolve, toString, writeReplace |
Methods inherited from class java.lang.Object |
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface edu.vub.at.objects.ATObject |
base__opeql__opeql_, base_init, base_new, meta_addField, meta_addMethod, meta_assignField, meta_assignVariable, meta_clone, meta_defineField, meta_doesNotUnderstand, meta_extend, meta_getDynamicParent, meta_getLexicalParent, meta_getStripes, meta_grabField, meta_grabMethod, meta_invoke, meta_isCloneOf, meta_isRelatedTo, meta_isStripedWith, meta_listFields, meta_listMethods, meta_lookup, meta_newInstance, meta_pass, meta_receive, meta_resolve, meta_respondsTo, meta_select, meta_send, meta_share |
Methods inherited from interface edu.vub.at.objects.coercion.ATConversions |
asAmbientTalkObject, asJavaClassUnderSymbiosis, asJavaObjectUnderSymbiosis, asNativeBoolean, asNativeException, asNativeFarReference, asNativeFraction, asNativeNumber, asNativeNumeric, asNativeTable, asNativeText, base_asActorMirror, base_asAsyncMessage, base_asBegin, base_asBoolean, base_asClosure, base_asDefinition, base_asExpression, base_asFarReference, base_asField, base_asHandler, base_asMessage, base_asMessageCreation, base_asMethod, base_asMirror, base_asNumber, base_asSplice, base_asStatement, base_asStripe, base_asSymbol, base_asTable, base_asUnquoteSplice, base_asVariableAssignment, base_isBoolean, base_isCallFrame, base_isClosure, base_isFarReference, base_isMessageCreation, base_isMethod, base_isMirror, base_isSplice, base_isStripe, base_isSymbol, base_isTable, base_isUnquoteSplice, base_isVariableAssignment, isAmbientTalkObject, isJavaObjectUnderSymbiosis, isNativeBoolean, isNativeField, isNativeText |
tblName_
private final ATSymbol tblName_
sizExp_
private final ATExpression sizExp_
initExp_
private final ATBegin initExp_
AGDefTable
public AGDefTable(ATSymbol nam,
ATExpression siz,
ATBegin ini)
base_getName
public ATSymbol base_getName()
- Specified by:
base_getName
in interface ATDefTable
base_getSizeExpression
public ATExpression base_getSizeExpression()
- Specified by:
base_getSizeExpression
in interface ATDefTable
base_getInitializer
public ATBegin base_getInitializer()
- Specified by:
base_getInitializer
in interface ATDefTable
meta_eval
public ATObject meta_eval(ATContext ctx)
throws InterpreterException
- Defining a table requires evaluating its index expression to a size s,
then allocating a new table of size s and finally initializing it
by evaluating its initializer body s times. The return value is the defined table.
The initializer body is evaluated in a new scope, so definitions inside the initializer
are not visible to the outside (table defining) scope.
AGDEFTABLE(nam,siz,ini).eval(ctx) =
s = siz.eval(ctx)
t[s] = nil
inictx = ctx[cur -> callframe(ctx.cur)]
i.from: 0 to: s do: {
t[i] := ini.eval(ctx)
}
ctx.scope.defineField(nam, AGTABLE(t))
AGTABLE(t)
- Specified by:
meta_eval
in interface ATObject
- Overrides:
meta_eval
in class NATNil
- Throws:
InterpreterException
meta_quote
public ATObject meta_quote(ATContext ctx)
throws InterpreterException
- Quoting a table definition results in a new quoted table definition.
AGDEFTABLE(nam,siz,ini).quote(ctx) = AGDEFTABLE(nam.quote(ctx), siz.quote(ctx), ini.quote(ctx))
- Specified by:
meta_quote
in interface ATObject
- Overrides:
meta_quote
in class NATNil
- Throws:
InterpreterException
meta_print
public NATText meta_print()
throws InterpreterException
- Description copied from interface:
ATObject
- Prints out the object in a human-readable way.
- Specified by:
meta_print
in interface ATObject
- Overrides:
meta_print
in class NATNil
- Throws:
InterpreterException