Bagikan melalui


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-expressionidentifier, keyword, , operator,punctuator

Komponen opsional ditunjukkan oleh opt yang disubskripsi. Misalnya, sintaks berikut menunjukkan ekspresi opsional yang diapit kurung kurawal:

{expressionMemilih }

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:
#defineidentifier token-stringMemilih
#defineidentifier ( identifieropt , ... , identifieropt opt ) token-string
#include "path-spec"
#include <path-spec>
#linedigit-sequence "filename"Memilih
#undef identifier
#error token-string
#pragma token-string

constant-expression:
defined( identifier )
defined identifier
 ekspresi konstanta lainnya

conditional:
if-partelif-partsopt 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

Lihat juga

Referensi praprosesor C/C++