Thus, it presents several distinct semantics for Felix. To distinguish the two key facets, we refer to the Abstract and Concrete semantics.
The Concrete Semantics is a semi-formal description of Felix semantics in terms of the C++ code it generates: the full semantic interpretation thereby depends on the semantics of ISO C++. This description is more formal than the Abstract Semantics, but it is also more fragile, dependent on the implementation, and likely to change in ongoing releases.
The Abstract Semantics are specified in terms of a loose common understanding of programming systems, without resort to formal mathematical description: this manual is intended primarily for programmers, and C++ programmers in particular. The Abstract semantics, whilst not set in concrete (g) are considerably more stable and more likely to be extended in future releases than modified.
The key distinction between Abstract and Concrete semantics is manifest in a set of extensions to the Abstract Language, in which binding constructions bridging the Felix/C++ interfaces are provided. These constructions are a core part of the implementation: they're not only used to provide some of the required abstract semantics, they're also available for end users to extend, modify, or even largely replace much of the abstract semantics.
Nevertheless the Abstract Semantics are not to be ignored, since they reflect a particular programming model whose invariants may be broken by arbitrary modifications to the standard library.