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

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.AGExpression
                  extended byedu.vub.at.objects.natives.grammar.AGSymbol
All Implemented Interfaces:
ATAbstractGrammar, ATConversions, ATExpression, ATNil, ATObject, ATStatement, ATSymbol, java.io.Serializable
Direct Known Subclasses:
AGSelf

public class AGSymbol
extends AGExpression
implements ATSymbol

Author:
tvcutsem The native implementation of a symbol AG element. Symbols should only be created via a call to AGSymbol.alloc This ensures that symbols remain unique within one AmbientTalk VM.
See Also:
Serialized Form

Field Summary
private static java.util.HashMap _STRINGPOOL_
          hashmap shared by ALL actors/VMs, hence, thread access should be explicitly synchronized
private  java.lang.String txt_
           
 
Fields inherited from class edu.vub.at.objects.natives.NATNil
_INSTANCE_
 
Constructor Summary
protected AGSymbol(java.lang.String txt)
           
 
Method Summary
static AGSymbol alloc(NATText txt)
           
 ATTable base__opmns__opgtx_(ATObject obj)
          Used during import: declarations to conveniently denote aliases for names.
 ATSymbol base_asSymbol()
           
 ATText base_getText()
          Transform a symbol into a string.
 boolean base_isSymbol()
           
 boolean equals(java.lang.Object other)
          By default, two AmbientTalk objects are equal if they are the same object, or one is a proxy for the same object.
 int hashCode()
           
static AGSymbol jAlloc(java.lang.String name)
           
 ATObject meta_eval(ATContext ctx)
          To evaluate a symbol reference, look up the symbol in the lexical scope.
 NATText meta_print()
          Prints out the object in a human-readable way.
 ATObject meta_quote(ATContext ctx)
          Quoting a symbol results in the same symbol.
 ATObject meta_resolve()
          After deserialization, ensure that the symbol remains unique.
 java.lang.String toString()
           
 
Methods inherited from class edu.vub.at.objects.natives.grammar.AGExpression
base_asExpression, meta_getStripes
 
Methods inherited from class edu.vub.at.objects.natives.NATByCopy
meta_pass
 
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_asFarReference, base_asField, base_asHandler, base_asMessage, base_asMessageCreation, base_asMethod, base_asMirror, base_asNumber, base_asSplice, base_asStatement, base_asStripe, 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_isTable, base_isUnquoteSplice, base_isVariableAssignment, base_new, createChild, 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, writeReplace
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, 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_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_asTable, base_asUnquoteSplice, base_asVariableAssignment, base_isBoolean, base_isCallFrame, base_isClosure, base_isFarReference, base_isMessageCreation, base_isMethod, base_isMirror, base_isSplice, base_isStripe, base_isTable, base_isUnquoteSplice, base_isVariableAssignment, isAmbientTalkObject, isJavaObjectUnderSymbiosis, isNativeBoolean, isNativeField, isNativeText
 

Field Detail

_STRINGPOOL_

private static final java.util.HashMap _STRINGPOOL_
hashmap shared by ALL actors/VMs, hence, thread access should be explicitly synchronized


txt_

private final java.lang.String txt_
Constructor Detail

AGSymbol

protected AGSymbol(java.lang.String txt)
Method Detail

jAlloc

public static final AGSymbol jAlloc(java.lang.String name)

alloc

public static final AGSymbol alloc(NATText txt)

base_getText

public ATText base_getText()
Description copied from interface: ATSymbol
Transform a symbol into a string.

Specified by:
base_getText in interface ATSymbol

base__opmns__opgtx_

public ATTable base__opmns__opgtx_(ATObject obj)
                            throws InterpreterException
Description copied from interface: ATSymbol
Used during import: declarations to conveniently denote aliases for names. `a -> `b is equivalent to [ `a, `b ]

Specified by:
base__opmns__opgtx_ in interface ATSymbol
Throws:
InterpreterException

meta_eval

public ATObject meta_eval(ATContext ctx)
                   throws InterpreterException
To evaluate a symbol reference, look up the symbol in the lexical scope. AGSYM(txt).eval(ctx) = ctx.scope.lookup(AGSYM(txt))

Specified by:
meta_eval in interface ATObject
Overrides:
meta_eval in class NATNil
Returns:
the value bound to this symbol in the lexical environment
Throws:
InterpreterException

meta_quote

public ATObject meta_quote(ATContext ctx)
                    throws InterpreterException
Quoting a symbol results in the same symbol. sym.quote(ctx) = sym

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

base_isSymbol

public boolean base_isSymbol()
Specified by:
base_isSymbol in interface ATConversions
Overrides:
base_isSymbol in class NATNil

base_asSymbol

public ATSymbol base_asSymbol()
Specified by:
base_asSymbol in interface ATConversions
Overrides:
base_asSymbol in class NATNil

equals

public boolean equals(java.lang.Object other)
Description copied from class: NATNil
By default, two AmbientTalk objects are equal if they are the same object, or one is a proxy for the same object.

Overrides:
equals in class NATNil

hashCode

public int hashCode()

toString

public java.lang.String toString()
Overrides:
toString in class NATNil

meta_resolve

public ATObject meta_resolve()
                      throws InterpreterException
After deserialization, ensure that the symbol remains unique.

Specified by:
meta_resolve in interface ATObject
Overrides:
meta_resolve in class NATByCopy
Throws:
InterpreterException