# . : ->

rd at sanger.ac.uk rd at sanger.ac.uk
Sat Sep 21 13:10:56 EST 1996


Given data in ace file format:

FOO f
tag a b
tag c d

I would expect

FROM
  ff = CLASS FOO,		// line 1
  dd = ff->tag[2]		// line 2

would get the two pairs (f,a) and (f,d)

ff->tag->tag2

would get whatever is after tag2 inside objects a and c, not something
in f at all.

I think -> should definitely dereference a pointer.  It is also
natural to use . for this.  NB ff is a KEY, i.e. an object pointer.
Line 1 gives it no context of being in an object.  You can not move
right.  So ff#tag[2] is meaningless.

In order to eliminate #, we need to have imagine another node in each
object where the '#' symbol is in the model.  This gives the
pseudo-object-id that is dereferenced.  One problem is that there is
no NAME or CLASS of this pseudo-object-id.  If we do not imagine this
extra node, we can have ambiguous queries.  In fact the difference
between # and . in our original proposal is exactly what is needed to
disambiguate: do you go into the object referred to by this KEY (.),
or do you move right in the same object (#).

In fact, you could have the syntax [tag] to mean #tag, i.e. stay in
the same object, e.g. given

FOO f
tag a b
tag c d tag3 e

where tag3 is in a submodel, then

  ee = ff.tag[2][tag3]

would access e?  This is sort of natural.  A bit like associative
array dereferencing in perl, which are the foundation of GDB's
tag:value system.

Richard




More information about the Acedb mailing list