C 어휘 문법

토큰

token:
keyword
identifier
constant
string-literal
punctuator

preprocessing-token:
header-name
identifier
pp-number
character-constant
string-literal
punctuator
 위의 항목에 속하지 않는 공백이 아닌 문자

키워드

keyword: 다음 중 하나
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

추가 Microsoft 전용 키워드 목록을 확인하고 싶다면 C 키워드를 참조하세요.

식별자

identifier:
identifier-nondigit
identifier identifier-nondigit
identifier digit

identifier-nondigit:
nondigit
universal-character-name
 기타 구현 시 정의되는 문자

nondigit: 다음 중 하나
_ 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: 다음 중 하나
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

상수

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

integer-constant:
decimal-constantinteger-suffixopt
binary-constant1integer-suffixopt
octal-constantinteger-suffixopt
hexadecimal-constantinteger-suffixopt

decimal-constant:
nonzero-digit
decimal-constant digit

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

binary-prefix1: one of
0b 0B

binary-digit1: one of
0 1

octal-constant:
0
octal-constant octal-digit

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

hexadecimal-prefix: 다음 중 하나
0x 0X

nonzero-digit: 다음 중 하나
1 2 3 4 5 6 7 8 9

octal-digit: 다음 중 하나
0 1 2 3 4 5 6 7

hexadecimal-digit: 다음 중 하나
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-suffixopt
unsigned-suffixlong-long-suffixopt
long-suffixunsigned-suffixopt
long-long-suffixunsigned-suffixopt

unsigned-suffix: 다음 중 하나
u U

long-suffix: 다음 중 하나
l L

long-long-suffix: 다음 중 하나
ll LL

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

decimal-floating-constant:
fractional-constantexponent-partoptfloating-suffixopt
digit-sequenceexponent-partfloating-suffixopt

hexadecimal-floating-constant:
hexadecimal-prefixhexadecimal-fractional-constantbinary-exponent-partoptfloating-suffixopt
hexadecimal-prefixhexadecimal-digit-sequencebinary-exponent-partfloating-suffixopt

fractional-constant:
digit-sequenceopt.digit-sequence
digit-sequence .

exponent-part:
esignoptdigit-sequence
Esignoptdigit-sequence

sign: 다음 중 하나
+ -

digit-sequence:
digit
digit-sequence digit

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

binary-exponent-part:
psignoptdigit-sequence
Psignoptdigit-sequence

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

floating-suffix: 다음 중 하나
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:
 작은 따옴표('), 백슬래시(\) 또는 줄 바꿈 문자를 제외한 소스 문자 집합의 모든 멤버
escape-sequence

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

simple-escape-sequence: 다음 중 하나
\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

문자열 리터럴

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

encoding-prefix:
u8
u
U
L

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

s-char:
 큰 따옴표("), 백슬래시(\) 또는 줄 바꿈 문자를 제외한 소스 문자 집합의 모든 멤버
escape-sequence

문장 부호

punctuator: 다음 중 하나
[ ] ( ) { } . ->
++ -- & * + - ~ !
/ % << >> < > <= >= ==
!= ^ | && || ? : ; ...
= *= /= %= += -= <<= >>=
&= ^= |= , # ##
<: :> <% %> %: %:%:

헤더 이름

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

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

h-char:
 줄 바꿈 문자와 > 를 제외한 소스 문자 집합의 모든 멤버

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

q-char:
 줄 바꿈 문자와 " 를 제외한 소스 문자 집합의 모든 멤버

숫자 전처리

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 .

1binary-constant, binary-prefixbinary-digit는 Microsoft 전용 확장명입니다.

참조

C 언어 구문 요약