Table of Contents
Compiler Internals
This page provides you with an overview of the modules comprising the qooxdoo compiler and how they work together. As a general note, all the compiler modules are organised in a layered architecture, each layer depending on modules from the lower levels (see figure). Modules on the higher levels import modules from lower levels and invoke their functions and methods. At the same time (and thanks to Python’s support for easily doing this), modules on the lower levels can be invoked directly on the command line, and usually produce their main result to STDOUT in a suitable fashion. The rest of this page provides more information on the various moduls.
There is a page dedicated to the technical issues around module documentation.
Generator
The generator is the user frontend module for the compiler. It provides all the options and encapsulates underlying interfaces, organizes necessary files and directories, maintains resource paths and drives the desired code transformations. There is extensive documentation on the generator's user interface, and many of the features of the underlying modules are readily accessible through the generator.
Compiler
The compler is the actual code transformer. It takes JavaScript source files as input and produces JavaScript in various formats, compressed, optimized for execution, beautified for further editing, or translated supporting new code conventions (e.g. during migration).
Treegenerator
The treegenerator produces a syntax tree from the JavaScript source. This syntax tree is the actual data that the compiler does its transformations on. More ...
Tokenizer
The tokenizer transforms the literal JavaScript source code into a stream of tokens. Each token is a JSON-style map capturing the literal source code of the token and its class, together with other interesting attributes. More ...
Tree
The sole purpose of the tree module (tree.py) is to provide the representation of a syntax tree, as produced by the treegenerator, and some utility functions to work on this data structure.

