Bagikan melalui


Tata bahasa leksikal C

Token

token:
keyword
identifier
constant
string-literal
punctuator

preprocessing-token:
header-name
identifier
pp-number
character-constant
string-literal
punctuator
 setiap karakter non-spasi kosong yang tidak boleh merupakan salah satu dari karakter di atas

Kata Kunci

keyword: salah satu dari
auto break case char const continue
default do double else enum extern
float for goto if inline int long
register restrict return short signed
sizeof static struct switch typedef union
unsigned void volatile while _Alignas
_Alignof _Atomic _Bool _Complex _Generic
_Imaginary _Noreturn _Static_assert
_Thread_local

Untuk daftar kata kunci tambahan khusus Microsoft, lihat kata kunci C.

Identifiers

identifier:
identifier-nondigit
identifier identifier-nondigit
identifier digit

identifier-nondigit:
nondigit
universal-character-name
 karakter lain yang ditentukan implementasi

nondigit: salah satu dari
_ a b c d e f g h i j k l m
n o p q r s t u v w x y z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z

digit: salah satu dari
0 1 2 3 4 5 6 7 8 9

universal-character-name:
\u hex-quad
\U hex-quad hex-quad

hex-quad:
hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digit

Konstanta

constant:
integer-constant
floating-constant
enumeration-constant
character-constant

integer-constant:
decimal-constantinteger-suffixMemilih
binary-constant1 integer-suffixopt
octal-constantinteger-suffixMemilih
hexadecimal-constantinteger-suffixMemilih

decimal-constant:
nonzero-digit
decimal-constant digit

binary-constant:1
binary-prefix binary-digit
binary-constant binary-digit

binary-prefix1: salah satu dari
0b 0B

binary-digit1: salah satu dari
0 1

octal-constant:
0
octal-constant octal-digit

hexadecimal-constant:
hexadecimal-prefix hexadecimal-digit
hexadecimal-constant hexadecimal-digit

hexadecimal-prefix: salah satu dari
0x 0X

nonzero-digit: salah satu dari
1 2 3 4 5 6 7 8 9

octal-digit: salah satu dari
0 1 2 3 4 5 6 7

hexadecimal-digit: salah satu dari
0 1 2 3 4 5 6 7 8 9
a b c d e f
A B C D E F

integer-suffix:
unsigned-suffixlong-suffixMemilih
unsigned-suffixlong-long-suffixMemilih
long-suffixunsigned-suffixMemilih
long-long-suffixunsigned-suffixMemilih

unsigned-suffix: salah satu dari
u U

long-suffix: salah satu dari
l L

long-long-suffix: salah satu dari
ll LL

floating-constant:
decimal-floating-constant
hexadecimal-floating-constant

decimal-floating-constant:
fractional-constantexponent-partopt opt floating-suffix
digit-sequenceexponent-part floating-suffixMemilih

hexadecimal-floating-constant:
hexadecimal-prefixhexadecimal-fractional-constant binary-exponent-partopt opt floating-suffix
hexadecimal-prefixhexadecimal-digit-sequence binary-exponent-part floating-suffixMemilih

fractional-constant:
digit-sequenceMemilih . digit-sequence
digit-sequence .

exponent-part:
esignMemilih digit-sequence
EsignMemilih digit-sequence

sign: salah satu dari
+ -

digit-sequence:
digit
digit-sequence digit

hexadecimal-fractional-constant:
hexadecimal-digit-sequenceMemilih . hexadecimal-digit-sequence
hexadecimal-digit-sequence .

binary-exponent-part:
psignMemilih digit-sequence
PsignMemilih digit-sequence

hexadecimal-digit-sequence:
hexadecimal-digit
hexadecimal-digit-sequence hexadecimal-digit

floating-suffix: salah satu dari
f l F L

enumeration-constant:
identifier

character-constant:
' c-char-sequence '
L' c-char-sequence '

c-char-sequence:
c-char
c-char-sequence c-char

c-char:
 Setiap anggota karakter sumber yang ditetapkan kecuali tanda kutip tunggal ('), garis miring terbalik (\), atau karakter baris baru
escape-sequence

escape-sequence:
simple-escape-sequence
octal-escape-sequence
hexadecimal-escape-sequence
universal-character-name

simple-escape-sequence: salah satu dari
\a \b \f \n \r \t \v
\' \" \\ \?

octal-escape-sequence:
\ octal-digit
\ octal-digit octal-digit
\ octal-digit octal-digit octal-digit

hexadecimal-escape-sequence:
\x hexadecimal-digit
hexadecimal-escape-sequence hexadecimal-digit

Literal string

string-literal:
encoding-prefix" s-char-sequenceMemilih "

encoding-prefix:
u8
u
U
L

s-char-sequence:
s-char
s-char-sequence s-char

s-char:
 setiap anggota set karakter sumber kecuali tanda kutip ganda ("), garis miring terbalik (\), atau karakter baris baru
escape-sequence

Punctuators

punctuator: salah satu dari
[ ] ( ) { } . ->
++ -- & * + - ~ !
/ % << >> < > <= >= ==
!= ^ | && || ? : ; ...
= *= /= %= += -= <<= >>=
&= ^= |= , # ##
<: :> <% %> %: %:%:

Nama header

header-name:
< h-char-sequence >
" q-char-sequence "

h-char-sequence:
h-char
h-char-sequence h-char

h-char:
 setiap anggota set karakter sumber kecuali karakter baris baru dan >

q-char-sequence:
q-char
q-char-sequence q-char

q-char:
 setiap anggota set karakter sumber kecuali karakter baris baru dan "

Angka pra-pemrosesan

pp-number:
digit
. digit
pp-number digit
pp-number identifier-nondigit
pp-number e sign
pp-number E sign
pp-number p sign
pp-number P sign
pp-number .

1 binary-constant, binary-prefix, dan binary-digit merupakan ekstensi khusus Microsoft.

Lihat juga

Ringkasan Sintaksis Bahasa C