DODATEK A PRZEWODNIK JĘZYKA C_________
Istnieje sześć klas jednostek leksykalnych: identyfikatory, słowa kluczowe, stałe, napisy, operatory oraz różne separatory. Ignoruje się odstępy, znaki poziomej i pionowej tabulacji, znaki nowego wiersza i nowej strony oraz komentarze (wszystkie razem zwane „białymi plamami”), chyba że rozdzielają jednostki leksykalne. Niektóre białe plamy są jednak potrzebne do rozdzielenia przylegających do siebie identyfikatorów, słów kluczowych i stałych.
Jeżeli rozbiór leksykalny wejściowego tekstu przeprowadzono do pewnego znaku włącznie, to za następną jednostkę leksykalną uważa się najdłuższy ciąg znaków, z których można utworzyć jednostkę.
Komentarz rozpoczyna się znakami /*, a kończy się znakami */. Komentarze nie mogą być zagnieżdżone i nie mogą wystąpić w napisach i stałych znakowych.
Identyfikator jest ciągiem liter i cyfr. Pierwszym znakiem ciągu musi być litera; znak podkreślenia _ zalicza się do liter. Rozróżnia się wielkie i małe litery alfabetu. Identyfikatory mogą być dowolnej długości, przy czym dla identyfikatorów wewnętrznych znaczenie ma co najmniej 31 znaków początkowych; w niektórych implementacjach może być ich więcej. Identyfikatorami wewnętrznymi są nazwy makr i wszystkie inne nazwy nie mające zewnętrznej łączności (p. Al 1.2). Identyfikatory o zewnętrznej łączności są bardziej ograniczone: w konkretnej implementacji ich znacząca długość może wynosić tylko sześć początkowych znaków bez rozróżniania małych i wielkich liter.
Następujące identyfikatory są zastrzeżone dla słów kluczowych i nie mogą być inaczej używane:
auto |
double |
int |
struct |
break |
else |
long |
switch |
case |
enum |
register |
typedef |
char |
extern |
return |
union |
const |
float |
short |
unsigned |
continue |
for |
signed |
void |
default |
goto |
sizeof |
volatile |
do |
if |
static |
while |
A2 KONWENCJE LEKSYKALNE
W niektórych implementacjach rezerwuje się również słowa fortran
Słowa kluczowe const, signed i volatile są nowe w ANSI C; enum i void - nieznane za czasów pierwszego wydania książki - są w powszechnym użyciu; entry, nigdy nie używane, nie jest już zarezerwowane.
Wyróżnia się kilka rodzajów stałych. Wszystkie mają jakiś typ; typy podstawowe są omówione w p. A4.2.
stała:
stała-całkowita
stała-znakowa
stała-zmiennopozycyjna
stała-wyliczenia
A2.5.1 Stałe całkowite
Stałą całkowitą składającą się z ciągu cyfr uważa się za ósemkową, jeżeli rozpoczyna się cyfrą 0; w przeciwnym przypadku - za dziesiętną. Stałe ósemkowe nie zawierają cyfr 8 i 9. Ciąg cyfr rozpoczynający się znakami 0x lub 0X (cyfra zero) jest stałą szesnastkową. Do cyfr szesnastkowych zalicza się litery od a (lub A) do f (lub F)
0 wartościach od 10 do 15.
Stała całkowita może być opatrzona przyrostkiem u lub U do oznaczenia, że jest bez znaku. Może być również opatrzona przyrostkiem I (litera 1) lub L do oznaczenia, że jest długa (long).
Typ stałej całkowitej zależy od jej postaci, wartości i przyrostka. (Omówienie typów znajduje się w p. A4.) Typem stałej dziesiętnej bez przyrostka jest pierwszy z następujących typów, w którym można wyrazić jej wartość: int, long int lub unsigned long int. Typem stałej ósemkowej lub szesnastkowej bez przyrostka jest pierwszy możliwy z następujących typów: int, unsigned int, long int lub unsigned long int. Jeśli stała ma przyrostek u lub U, to jej typem jest pierwszy możliwy z typów unsigned int lub unsigned long int. Jeśli stała ma przyrostek I lub L, to możliwymi typami są long int
1 unsigned long int.
Opracowanie typów stałych całkowitych daleko odbiega od tego z pierwszego wydania książki, gdzie duże stałe miały po prostu typ long. Przyrostki U są nowe.
Kompilatory działające pod systemem operacyjnym MS-DOS na maszynach IBM-PC zwykle rezerwują również słowa near i far dla oznaczenia różnej długości wskaźników. - Przyp. tłum.
253