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.