In order to examine the workings of the GNAT system, the following brief description of its organization may be helpful:
sc
contain the lexical scanner.
par
are components of the parser. The
numbers correspond to chapters of the Ada Reference Manual. For example,
parsing of select statements can be found in par-ch9.adb
.
sem
perform 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.
exp
perform 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
exp_ch3.adb
.
bind
implement the binder, which
verifies the consistency of the compilation, determines an order of
elaboration, and generates the bind file.
atree.ads
and atree.adb
detail the low-level
data structures used by the front-end.
sinfo.ads
and sinfo.adb
detail the structure of
the abstract syntax tree as produced by the parser.
einfo.ads
and einfo.adb
detail the attributes of
all entities, computed during semantic analysis.
lib
.
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 .c
files are modifications of common gcc
files.