Grammatica lessicale C
Tokens
token
:
keyword
identifier
constant
string-literal
punctuator
preprocessing-token
:
header-name
identifier
pp-number
character-constant
string-literal
punctuator
ogni carattere non di spazio vuoto che non può essere uno dei precedenti
Parole chiave
keyword
: uno tra
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
Per un elenco di parole chiave aggiuntive specifiche di Microsoft, vedere Parole chiave C.
Identificatori
identifier
:
identifier-nondigit
identifier
identifier-nondigit
identifier
digit
identifier-nondigit
:
nondigit
universal-character-name
altri caratteri definiti dall'implementazione
nondigit
: uno tra
_
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
: uno tra
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
Costanti
constant
:
integer-constant
floating-constant
enumeration-constant
character-constant
integer-constant
:
decimal-constant
integer-suffix
Optare
binary-constant
1integer-suffix
Optare
octal-constant
integer-suffix
Optare
hexadecimal-constant
integer-suffix
Optare
decimal-constant
:
nonzero-digit
decimal-constant
digit
binary-constant
:1
binary-prefix
binary-digit
binary-constant
binary-digit
binary-prefix
1: uno dei
0b
0B
binary-digit
1: uno dei
0
1
octal-constant
:
0
octal-constant
octal-digit
hexadecimal-constant
:
hexadecimal-prefix
hexadecimal-digit
hexadecimal-constant
hexadecimal-digit
hexadecimal-prefix
: uno tra
0x
0X
nonzero-digit
: uno tra
1
2
3
4
5
6
7
8
9
octal-digit
: uno tra
0
1
2
3
4
5
6
7
hexadecimal-digit
: uno tra
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-suffix
long-suffix
Optare
unsigned-suffix
long-long-suffix
Optare
long-suffix
unsigned-suffix
Optare
long-long-suffix
unsigned-suffix
Optare
unsigned-suffix
: uno tra
u
U
long-suffix
: uno tra
l
L
long-long-suffix
: uno tra
ll
LL
floating-constant
:
decimal-floating-constant
hexadecimal-floating-constant
decimal-floating-constant
:
fractional-constant
exponent-part
Optarefloating-suffix
Optare
digit-sequence
exponent-part
floating-suffix
Optare
hexadecimal-floating-constant
:
hexadecimal-prefix
hexadecimal-fractional-constant
binary-exponent-part
Optarefloating-suffix
Optare
hexadecimal-prefix
hexadecimal-digit-sequence
binary-exponent-part
floating-suffix
Optare
fractional-constant
:
digit-sequence
Optare.
digit-sequence
digit-sequence
.
exponent-part
:
e
sign
Optaredigit-sequence
E
sign
Optaredigit-sequence
sign
: uno tra
+
-
digit-sequence
:
digit
digit-sequence
digit
hexadecimal-fractional-constant
:
hexadecimal-digit-sequence
Optare.
hexadecimal-digit-sequence
hexadecimal-digit-sequence
.
binary-exponent-part
:
p
sign
Optaredigit-sequence
P
sign
Optaredigit-sequence
hexadecimal-digit-sequence
:
hexadecimal-digit
hexadecimal-digit-sequence
hexadecimal-digit
floating-suffix
: uno tra
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
:
Qualsiasi membro del set di caratteri di origine ad eccezione delle virgolette singole ('
), barra rovesciata (\
) o carattere di nuova riga
escape-sequence
escape-sequence
:
simple-escape-sequence
octal-escape-sequence
hexadecimal-escape-sequence
universal-character-name
simple-escape-sequence
: uno tra
\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
Valori letterali di stringa
string-literal
:
encoding-prefix
"
s-char-sequence
Optare"
encoding-prefix
:
u8
u
U
L
s-char-sequence
:
s-char
s-char-sequence
s-char
s-char
:
qualsiasi membro del set di caratteri di origine ad eccezione delle virgolette doppie ("
), barra rovesciata (\
) o carattere di nuova riga
escape-sequence
Segni di punteggiatura
punctuator
: uno tra
[
]
(
)
{
}
.
->
++
--
&
*
+
-
~
!
/
%
<<
>>
<
>
<=
>=
==
!=
^
|
&&
||
?
:
;
...
=
*=
/=
%=
+=
-=
<<=
>>=
&=
^=
|=
,
#
##
<:
:>
<%
%>
%:
%:%:
Nomi dell'intestazione
header-name
:
<
h-char-sequence
>
"
q-char-sequence
"
h-char-sequence
:
h-char
h-char-sequence
h-char
h-char
:
qualsiasi membro del set di caratteri di origine, ad eccezione del carattere di nuova riga e >
q-char-sequence
:
q-char
q-char-sequence
q-char
q-char
:
qualsiasi membro del set di caratteri di origine, ad eccezione del carattere di nuova riga e "
Pre-elaborazione dei numeri
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-prefix
e binary-digit
sono estensioni specifiche di Microsoft.
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per