[lex.separate] # 5 Lexical conventions [[lex]](./#lex) ## 5.1 Separate translation [lex.separate] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lex.tex#L27) The text of the program is kept in units called[*source files*](#def:source_file "5.1 Separate translation [lex.separate]") in this document[.](#1.sentence-1) A source file together with all the and source files [included](cpp.include "15.3 Source file inclusion [cpp.include]") via the preprocessing directive #include, less any source lines skipped by any of the conditional inclusion ([[cpp.cond]](cpp.cond "15.2 Conditional inclusion")) preprocessing directives, as modified by the implementation-defined behavior of any conditionally-supported-directives ([[cpp.pre]](cpp.pre "15.1 Preamble")) and pragmas ([[cpp.pragma]](cpp.pragma "15.10 Pragma directive")), if any, is called a [*preprocessing translation unit*](#def:translation_unit,preprocessing "5.1 Separate translation [lex.separate]")[.](#1.sentence-2) [*Note [1](#note-1)*: A C++ program need not all be translated at the same time[.](#1.sentence-3) Translation units can be separately translated and then later linked to produce an executable program ([[basic.link]](basic.link "6.7 Program and linkage"))[.](#1.sentence-4) — *end note*]