Source Representation (GNAT User’s Guide for Native Platforms)

### 3.1 Source Representation ¶

Ada source programs are represented in standard text files, using Latin-1 coding. Latin-1 is an 8-bit code that includes the familiar 7-bit ASCII set plus additional characters used for representing foreign languages (see Foreign Language Representation for support of non-USA character sets). The format effector characters are represented using their standard ASCII encodings, as follows:

> Character | Effect | Code
> `VT` | Vertical tab | `16#0B#`
> `HT` | Horizontal tab | `16#09#`
> `CR` | Carriage return | `16#0D#`
> `LF` | Line feed | `16#0A#`
> `FF` | Form feed | `16#0C#`

Source files are in standard text file format. In addition, GNAT recognizes a wide variety of stream formats, in which the end of physical lines is marked by any of the following sequences: `LF`, `CR`, `CR-LF`, or `LF-CR`. This is useful in accommodating files imported from other operating systems.

The end of a source file is normally represented by the physical end of file. However, the control character `16#1A#` (`SUB`) is also recognized as signalling the end of the source file. Again, this is provided for compatibility with other, legacy, operating systems where this code is used to represent the end of file.

Each file contains a single Ada compilation unit, including any pragmas associated with the unit. For example, this means you must place a package declaration (a package ‘spec’) and the corresponding body in separate files. An Ada ‘compilation’ (which is a sequence of compilation units) is represented using a sequence of files. Similarly, you place each subunit or child unit in a separate file.