Uses covered include address syntax crunching unavailable with regular expressions tools; building compilers and interpreters; interpreting code, configuration files or other structured format; and key programming techniques, including abstract syntax trees
and symbol tables.
Many compilers translate source programs into intermediate representations based on abstract syntax trees.
Since abstract syntax trees are typically machine-independent, tree-oriented intermediate representations are often very portable.
The first step on the producer side is to analyze the input program syntactically and semantically and to transform it into an abstract syntax tree (AST).
Slim Binaries avoid these disadvantages by using a portable and high-level intermediate representation, that is based on the encoded abstract syntax tree and symbol table of a program.
The program representation contained in Slim Binary files consists of a compact description of the symbol table and a syntax-oriented encoding of the abstract syntax tree that is based on a technique called Semantic Dictionary Encoding (SDE).
Instead, the dictionary table of a program is rebuild automatically during decoding of the abstract syntax tree on the consumer-side.
Figure 8 (a) contains the abstract syntax tree and the corresponding symbol table for the same sample source program that was shown in Figure 6 (a), and Figure 8 (b) shows the sequence of indices resulting from applying the SDE.
For that purpose, the nodes of the abstract syntax tree are traversed in pre-order, and as each node is processed, the index of its corresponding node class is written out.
During decoding of an abstract syntax tree that has been encoded by a dynamic SDE, the same adaptive construction of the dictionary table must be performed.
Basically, such an extension might be based on the construction of an unified abstract syntax tree and a more general type system.