Tree Description Language (TreeDL) is a language for description of tree data structures and operations on them. TreeDL can be used in the development of language-oriented tools (compilers, translators etc) for the description of a structure of abstract syntax trees.
An abstract syntax tree (AST) is used by almost all parts of a language-processing tool: a parser builds AST, a semantic analyzer checks semantic restrictions on AST, and other subsystems process AST in some way - transform it, make code generation etc.
So, a structure of acceptable abstract syntax trees is an interface between all subsystems of language-processing tool. The explicit specification of this interface in TreeDL enables independent development of separate subsystems and eliminates errors caused by inconsistence between tree structures provided and expected by different subsystems.
A tree structure described in TreeDL is clear, compact, and independent of specific programming language. Tree structure description is used not only as a documentation, but as a source for generation of data structures and various support code - visitors, walkers, factories, etc.
TreeDL also has special facilities to define virtual operations on tree nodes with no changes in tree structure description. The use of these facilities allows compile-time checking of consistence between tree structure and operation definitions.
TreeDL tool translates tree structure description and operation definitions to target programming language, generates various support code and documentation. Additional features can be implemented as plugins allowing any custom analysis and code generation.