Ringkasan tata bahasa pra-prosesor (C/C++)
Artikel ini menjelaskan tata bahasa formal praproscesor C dan C++. Ini mencakup sintaksis direktif dan operator praproscessing. Untuk informasi selengkapnya, lihat Direktif Praproscesor dan Pragma serta __pragma
kata kunci dan _Pragma
.
Definisi untuk ringkasan tata bahasa
Terminal adalah titik akhir dalam definisi sintaksis. Tidak ada resolusi lain yang dimungkinkan. Terminal mencakup sekumpulan kata yang dipesan dan pengidentifikasi yang ditentukan pengguna.
Nonterminal adalah tempat penampung dalam sintaksis. Sebagian besar didefinisikan di tempat lain dalam ringkasan sintaks ini. Definisi bisa saja rekursif. Nonterminal berikut didefinisikan di bagian Konvensi leksikal dari Referensi Bahasa C++:
constant
, , constant-expression
identifier
, keyword
, , operator
,punctuator
Komponen opsional ditunjukkan oleh opt yang disubskripsi. Misalnya, sintaks berikut menunjukkan ekspresi opsional yang diapit kurung kurawal:
{
expression
Memilih }
Konvensi dokumen
Konvensi menggunakan atribut font yang berbeda untuk komponen sintaks yang berbeda. Simbol dan font adalah sebagai berikut:
Atribut | Deskripsi |
---|---|
nonterminal |
Jenis miring menunjukkan nonterminal. |
#include |
Terminal dalam jenis tebal adalah kata dan simbol khusus literal yang harus dimasukkan sebagaimana ditunjukkan. Karakter dalam konteks ini selalu peka huruf besar/kecil. |
opt | Nonterminal diikuti dengan opt selalu opsional. |
typeface default | Karakter dalam set yang dijelaskan atau tercantum dalam typeface ini dapat digunakan sebagai terminal dalam pernyataan. |
Titik dua (:
) setelah nonterminal memperkenalkan definisinya. Definisi alternatif tercantum pada baris terpisah.
Dalam blok sintaks kode, simbol-simbol ini dalam typeface default memiliki arti khusus:
Simbol | Deskripsi |
---|---|
[ ] | Kurung siku mengelilingi elemen opsional. |
{ | } | Kurung kurawal mengelilingi elemen alternatif, dipisahkan oleh bilah vertikal. |
... | Menunjukkan pola elemen sebelumnya dapat diulang. |
Dalam blok sintaks kode, koma (,
), titik (.
), titik koma (), titik dua (;
), tanda kurung (:
( )
), tanda kutip ganda ("
), dan tanda kutip tunggal ('
) adalah literal.
Tata bahasa pra-prosesor
control-line
:
#define
identifier
token-string
Memilih
#define
identifier
(
identifier
opt ,
... ,
identifier
opt opt )
token-string
#include
"
path-spec
"
#include
<
path-spec
>
#line
digit-sequence
"
filename
"
Memilih
#undef
identifier
#error
token-string
#pragma
token-string
constant-expression
:
defined(
identifier
)
defined
identifier
ekspresi konstanta lainnya
conditional
:
if-part
elif-parts
opt opt else-part
endif-line
if-part
:
if-line
text
if-line
:
#if
constant-expression
#ifdef
identifier
#ifndef
identifier
elif-parts
:
elif-line
text
elif-parts
elif-line
text
elif-line
:
#elif
constant-expression
else-part
:
else-line
text
else-line
:
#else
endif-line
:
#endif
digit-sequence
:
digit
digit-sequence
digit
digit
: salah satu dari
0
1
2
3
4
5
6
7
8
9
token-string
:
String dari token
token
:
keyword
identifier
constant
operator
punctuator
filename
:
Nama file sistem operasi legal
path-spec
:
Jalur file hukum
text
:
Urutan teks apa pun
Catatan
Nonterminal berikut diperluas di bagian Konvensi leksikal dari Referensi Bahasa C++: constant
, , identifier
constant-expression
, keyword
, operator
, dan punctuator
.