* \attention For installation and examples see [Instruction: First Steps](/w/instructions/first=steps).
*
* In a nutshell, xreate::XreateManager is an entry point of Xreate API and clients should start off by instantiating it.
*
* xreate::XreateManager is convenient wrapper to control all internal work-flow consisting of steps as follows:
* - Parsing
* - Intermediate Passes
* - Reasoning
* - Compilation
*
* \section grammar_sect Grammar
* Xreate's grammar located in two files in COCO parser generator's format
* - `/grammar/xreate.ATG` : main Xreate's grammar file
* - `/grammar/modules.ATG` : additional grammar to support modules management. See xreate::modules::XreateManagerDecoratorModules and [Modules Explanation](/w/concepts/modules/) for details
* \section parsing_sect Parsing
* xreate::AST represents Xreate's syntax tree. It's produced by `Scanner` and `Parser` themselves generated by external tool Coco Parser Generator
*
* \section var_passes_sect Intermediate Passes
* Once xreate::AST is built, xreate::XreateManager runs number of passes as a preparation
* for *reasoning*(xreate::TranscendLayer) and *compilation*(xreate::CompilePass).
*
* There is xreate::Attachments to address need of communication between various passes and stages.
*
* Currently there are following passes:
* - xreate::cfa::CFAPass to perform Control Flow Analysis(CFA). Analysis' output stored in xreate::cfa::CFAGraph
* - xreate::dfa::DFAPass to perform Data Flow Analysis(DFA). Output stored in xreate::dfa::DFAGraph
* - xreate::interpretation::InterpretationPass to perform Interpretation analysis. See [Interpretation Overview](w/concepts/dfa)
* - xreate::versions::VersionsPass to perform Versions Analysis. See [Versions Overview](w/concepts/versions)
*
* Each pass should inherit xreate::IPass interface or xreate::AbstractPass as a more convenient wrapper.
* xreate::PassManager is base class to manage passes and xreate::XreateManager derives xreate::PassManager to control builtin passes.
*
* \section reasoning_sect Reasoning
* xreate::TranscendLayer is wrapper over external Clasp reasoner.
* Data gathered by previously executed passes is composed(see xreate::IAnalysisReport, \ref analysis/aux.h for details) into _logic program_ as a _text_ according to Clasp reasoner's ASP syntax.
* Current list of data sources is:
* - Raw scripts. Client could append arbitrary ASP script to _logic program_
* - Includes. There is possibility to point out external files with ASP scripts to append to _logic program_
* - Diagnostic rules. Rules that produce diagnostic messages during compilation(warnings) or even able to halt compilation with errors
* - DFA data. See xreate::dfa::DFAGraph
* - CFA data. See xreate::cfa::CFAGraph
* - Dominators Analysis. See xreate::dominators::DominatorsTreeAnalysisProvider
* - Context rules. See xreate::ContextRule and general [Context Explanation](/w/concepts/context)
*
* Following analyses are performed currently bypassing ASP reasoner:
* Output of the external Clasp reasoner is recognized and accessed via *queries*.
* Query is an interface between reasoner' output and rest of Xreate.
* Each query inherits xreate::IQuery interface. Currently there are queries as follows:
* - xreate::containers::Query to catch solutions regarding Containers implementation. See [Containers Explanation](/w/concepts/containers)
* - xreate::context::ContextQuery to catch solution regarding Context. See [Context Explanation](/w/concepts/context)
*
* \section compilation_sect Compilation
* xreate::CompilePass iterates over xreate::AST tree and produces executable code fed by data(via xreate::Attachments) gathered by previous passes as well as data via queries(xreate::IQuery) from the external Clasp reasoner.
* Compilation done using xreate::LLVMLayer(wrapper over LLVM byte machine) and based on following aspects:
* - Containers support. See \ref compilation/containers.h
* - Late Conext compilation. See xreate::context::LateContextCompiler2
* - Interpretation support. See xreate::interpretation::TargetInterpretation
* - Loop saturation support. See xreate::compilation::TransformerSaturation
* - External Code access. See xreate::ExternLayer(wrapper over Clang library)