edu.vub.at.objects.natives.grammar
Class AGAssignField

java.lang.Object
  extended byedu.vub.at.objects.natives.NATNil
      extended byedu.vub.at.objects.natives.NATByCopy
          extended byedu.vub.at.objects.natives.grammar.NATAbstractGrammar
              extended byedu.vub.at.objects.natives.grammar.AGAssignField
All Implemented Interfaces:
ATAbstractGrammar, ATAssignField, ATAssignment, ATConversions, ATExpression, ATNil, ATObject, ATStatement, java.io.Serializable

public final class AGAssignField
extends NATAbstractGrammar
implements ATAssignField

Author:
tvc The native implementation of a field assignment AG element. Examples: o.x := 5 1.+ := m()
See Also:
Serialized Form

Field Summary
private  ATSymbol fieldName_
           
private  ATExpression rcvExp_
           
private  ATExpression valueExp_
           
 
Fields inherited from class edu.vub.at.objects.natives.NATNil
_INSTANCE_
 
Constructor Summary
AGAssignField(ATExpression rcv, ATSymbol nam, ATExpression val)
           
 
Method Summary
 ATSymbol base_getFieldName()
           
 ATExpression base_getReceiverExpression()
           
 ATExpression base_getValueExpression()
           
 ATObject meta_eval(ATContext ctx)
          To evaluate a field assignment, evaluate the receiver expression, evaluate the right hand side and ask the receiver object to assign the RHS value to the field corresponding to the given field name.
 NATText meta_print()
          Prints out the object in a human-readable way.
 ATObject meta_quote(ATContext ctx)
          AGASSFIELD(rcv,nam,val).quote(ctx) = AGASSFIELD(rcv.quote(ctx), nam.quote(ctx), val.quote(ctx))
 
Methods inherited from class edu.vub.at.objects.natives.grammar.NATAbstractGrammar
meta_getStripes
 
Methods inherited from class edu.vub.at.objects.natives.NATByCopy
meta_pass, meta_resolve
 
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
 

Field Detail

rcvExp_

private final ATExpression rcvExp_

fieldName_

private final ATSymbol fieldName_

valueExp_

private final ATExpression valueExp_
Constructor Detail

AGAssignField

public AGAssignField(ATExpression rcv,
                     ATSymbol nam,
                     ATExpression val)
Method Detail

base_getReceiverExpression

public ATExpression base_getReceiverExpression()
Specified by:
base_getReceiverExpression in interface ATAssignField

base_getFieldName

public ATSymbol base_getFieldName()
Specified by:
base_getFieldName in interface ATAssignField

base_getValueExpression

public ATExpression base_getValueExpression()
Specified by:
base_getValueExpression in interface ATAssignField

meta_eval

public ATObject meta_eval(ATContext ctx)
                   throws InterpreterException
To evaluate a field assignment, evaluate the receiver expression, evaluate the right hand side and ask the receiver object to assign the RHS value to the field corresponding to the given field name. AGASSFIELD(rcv,nam,val).eval(ctx) = rcv.eval(ctx).assignField(nam, val.eval(ctx))

Specified by:
meta_eval in interface ATObject
Overrides:
meta_eval in class NATNil
Returns:
the new value of the field
Throws:
InterpreterException

meta_quote

public ATObject meta_quote(ATContext ctx)
                    throws InterpreterException
AGASSFIELD(rcv,nam,val).quote(ctx) = AGASSFIELD(rcv.quote(ctx), nam.quote(ctx), val.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