Avl

Bill Ezell wje at sii.UUCP
Fri Oct 7 22:11:06 AEST 1983


b
I noticed a reference to AVL in the article 'Re: TOPS-20 --> UNIX'.
I thought that I would provide a little more information about it.

AVL is a structured language that looks very much like C in syntax
but has a completely different view of data structuring and manipulation.
There are no explicit declarations in AVL; data is interpreted automatically
as either string or numeric, depending upon use. The basic datatype
is an arbitrarily subscripted array of strings (actually a tree):

	a[1,"foo","Third subscript",...]

Not only are the subscripts arbitrary strings, but each node in the
array can have a value.  All storage is dynamically allocated,
nothing needs to be predefined.

Additionally, data may be either in memory, as in the example above,
or it may reside on the disk, as in MUMPS:

	^a

is a disk variable. Note that if you pass a variable to a function,
the function cannot tell the difference between a transient, in-memory
variable or a permanent disk variable.

There are many tree walking functions built into AVL to allow easy
manipulation of the arrays.

AVL provides the usual arithmetic operators, plus a concatenation
operator, and an aggregate assignment (tree copy) operator. The
relational operators have been extended to provide either numeric
or string relations; a == b is a numeric comparison, a $== b is
a string comparison. Regardlesss of the current contents of a and b,
the data is coerced into whatever is specified by the operator.

Aside from the basics, there are lots of other interesting features,
such as dynamic linking and unlinking of functions, a very
flexible indirection operator, access restrictions enforced on a
per variable basis, an interactive debugger, plus much more.

If anyone wants more information, contact me and I'll send you a
copy of a paper that includes a formal specification of AVL.

	Bill Ezell
	Software Innovations, Inc.
	(ittvax!sii!wje, decvax!sii!wje)



More information about the Comp.unix.wizards mailing list