Note: This is subject to future work. Errors, ambiguities, and omissions are to be expected.
TAO, besides the primary syntax, may also mean a family of syntaxes which is a subset of TAS.
In the context of this document, the primary syntax will be disambiguated as TAO-UO2 where U stands for Unicode, O stands for the characteristic syntactical construct of an op which distinguishes it from other TAO members and 2 is more or less an ordinal number which follows complexity.
This is a provisional classification, but indicates that:
These points are elaborated on below.
We shall define a few of the more primitive TAOs that are subsets of TAO-UO2.
This is a syntax which consists only of two symbols [ and ] and allows encoding arbitrary tree structures without annotations:
tree is a tao inbetween a [ and a ].tao is zero or more trees.It is equivalent to the Dyck language. It provides the foundational structure of TAO: the tree.
This is TAO-UT0 where other symbols may appear inbetween the brackets:
note is one or more symbols that are not [ or ].tree is a tao inbetween a [ and a ].tao is zero or more parts each of which is either a tree or a note.Just by adding the note rule the expressive power of the syntax is increased very close to TAO-UO2. The essential elements are now in place: trees from TAO-UT0 are joined by notes to be carried by them.
Annotations are however restricted and cannot contain the meta symbols [ or ]. This is an artifact of representing trees and notes with the same system of symbols (Unicode).
This is the primary syntax.
It is TAO-UN1 with the restriction on annotations lifted. This is done by the introduction of another meta symbol ` which essentially creates a generalized escape mechanism:
op is the symbol ` followed by any symbol.note is one or more symbols that are not [ or ] or `.tree is a tao inbetween a [ and a ].tao is zero or more parts each of which is either a tree or an op or a note.Now notes may effectively contain arbitrary symbols. Also, by defining op in terms of any rather than restricting it to the meta symbols only we leave space for extensions that need not be a part of the basic syntax, but are permitted by it. On the other hand we can also introduce restrictions to op outside of the syntax.
More advanced TAOs and features are subject to future discussion.