* In a nutshell, \ref xreate::XreateManager is the entry point of the Xreate compiler API for clients to start off by instantiating it.
*
* \ref xreate::XreateManager's responsibility is a control over internal compiler's workflow consisting of steps as follows:
* - Parsing.
* - Internal passes and analyses.
* - Reasoning.
* - Bytecode generation.
*
* \section install_sect Build and run
* For build instructions and examples see [Build and Run](/d/build/).
*
* \section grammar_sect Grammar
* The Xreate grammar located in two files in a [COCO](http://www.ssw.uni-linz.ac.at/Coco/) parser generator's format:
* - `/grammar/xreate.ATG` : main Xreate grammar file.
* - `/grammar/modules.ATG`: modules management grammar. See \ref xreate::modules and [Modules Explanation](/d/syntax/modules/) for details.
* \section parsing_sect Parsing
* \ref xreate::AST represents the Xreate's syntax tree. It's produced by `Scanner` and `Parser` themselves generated by the Coco generator.
*
* \section var_passes_sect Internal passes
* Once \ref xreate::AST is built, \ref xreate::XreateManager runs number of passes as a preparation
* for *reasoning* (see \ref xreate::TranscendLayer) and *compilation* (see \ref xreate::CompilePass).
*
* There is \ref xreate::Attachments to address a need of communication between various passes and stages.
* Passes may store additional pieces of information as AST node attachments for future use by consequent passes.
* Ultimately, all accumulated this way data is used to facilitate, enhance and refine the compilation process.
*
* Currently there is a number of passes available, among them are:
* - \ref xreate::cfa::CFAPass to perform CFA(Control Flow Analysis). The output is stored in \ref xreate::cfa::CFAGraph.
* - \ref xreate::dfa::DFAPass to perform DFA(Data Flow Analysis). The output is stored in \ref xreate::dfa::DFAGraph.
* - \ref xreate::interpretation::InterpretationPass to perform the interpretation analysis. See \ref xreate::interpretation, [interpretation overview](/d/concepts/interpretation/).
*
* Each pass either implements \ref xreate::IPass interface or inherits \ref xreate::AbstractPass as a more convenient wrapper.
* \ref xreate::PassManager is the base class to manage passes and \ref xreate::XreateManager inherits \ref xreate::PassManager to control builtin passes.
*
* \section reasoning_sect Reasoning
* \ref xreate::TranscendLayer is a wrapper over an external ASP reasoner (currently [Clasp](https://potassco.org/clasp/)).
* Previously executed passes' output is collected(see \ref xreate::IAnalysisReport, \ref analysis/utils.h) to compose
* a _logic program_ in Clasp reasoner's ASP syntax format. See \ref xreate::TranscendLayer for more details.
*
* Clients may implement \ref xreate::IQuery interface to to access Clasp reasoner's solutions. There is number of existing queries, such as:
* - \ref xreate::containers::Query to get solutions regarding Containers.
* - \ref xreate::latex::LatexQuery to get solution regarding [Context](/d/concepts/context/).
* - \ref xreate::polymorph::PolymorphQuery to get solutions regarding Polymorphism.
*
* Also, currently a number of analyses are performed bypassing ASP reasoner: