Micron Document
The C Programming Language, Ansi C
A.1 Introduction
Appendix A - Reference Manual

This manual describes the C language specified by the draft submitted to ANSI
on 31 October, 1988, for approval as American Standard for Information
Systems - programming Language C, X3.159-1989.'' The manual is an
interpretation of the proposed standard, not the standard itself, although
care has been taken to make it a reliable guide to the language.

For the most part, this document follows the broad outline of the standard, which in turn follows that of the first edition of this book, although the organization differs in detail. Except for renaming a few productions, and not formalizing the definitions of the lexical tokens or the preprocessor, the grammar given here for the language proper is equivalent to that of the standard.

Throughout this manual, commentary material is indented and written in smaller
type, as this is. Most often these comments highlight ways in which ANSI
Standard C differs from the language defined by the first edition of this
book, or from refinements subsequently introduced in various compilers.

A program consists of one or more

translation units

stored in files.
It is translated in several phases, which are described in

Par.A.12

.
The first phases do low-level lexical transformations, carry out directives
introduced by the lines beginning with the # character, and perform macro
definition and expansion. When the preprocessing of

Par.A.12

is
complete, the program has been reduced to a sequence of tokens.

There are six classes of tokens: identifiers, keywords, constants, string
literals, operators, and other separators. Blanks, horizontal and vertical
tabs, newlines, formfeeds and comments as described below (collectively,
white space'') are ignored except as they separate tokens. Some white space
is required to separate otherwise adjacent identifiers, keywords, and
constants.

If the input stream has been separated into tokens up to a given character, the next token is the longest string of characters that could constitute a token.

The characters

/*

introduce a comment, which terminates with the
characters

*/