In order to examine the workings of the GNAT system, the following brief description of its organization may be helpful:
sccontain the lexical scanner.
parare components of the parser. The numbers correspond to chapters of the Ada Reference Manual. For example, parsing of select statements can be found in
semperform semantic analysis. The numbers correspond to chapters of the Ada standard. For example, all issues involving context clauses can be found in
sem_ch10.adb. In addition, some features of the language require sufficient special processing to justify their own semantic files: sem_aggr for aggregates, sem_disp for dynamic dispatching, etc.
expperform normalization and expansion of the intermediate representation (abstract syntax tree, or AST). these files use the same numbering scheme as the parser and semantics files. For example, the construction of record initialization procedures is done in
bindimplement the binder, which verifies the consistency of the compilation, determines an order of elaboration, and generates the bind file.
atree.adbdetail the low-level data structures used by the front-end.
sinfo.adbdetail the structure of the abstract syntax tree as produced by the parser.
einfo.adbdetail the attributes of all entities, computed during semantic analysis.
a-are children of
Ada, as defined in Annex A.
i-are children of
Interfaces, as defined in Annex B.
s-are children of
System. This includes both language-defined children and GNAT run-time routines.
g-are children of
GNAT. These are useful general-purpose packages, fully documented in their specs. All the other
.cfiles are modifications of common