Jelkészlet
Egy C-- program forráskódja kizárólag ASCII karakterekből állhat.
Azonosítók
Minden karaktersorozat, amely betűket, számokat, _ jeleket, pontokat, $ jeleket és @ jeleket tartalmaz érvényes azonosító, kivéve a nyelv számára lefoglalt szavakat és a számmal kezdődő karaktersorozatokat. A kis- és nagybetűket megkülönböztetjük.
Literálok
Egész literálok
A következő EBNF nyelvtan definiálja az egész literálok szintakszisát:
int => (signed-int | unsigned-int) [:: type]
signed-int => [-]dec
unsigned-int => hex | oct | dec (u | U) | 0 (u | U)
decdigit => 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
hexdigit => decdigit | a | b | c | d | e | f | A | B | C | D | E | F
octdigit => 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
dec => (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9) {decdigit{
hex => 0 (x | X) hexdigit {hexdigit}
oct => 0 {octdigit}
Példák szintaktikailag helyes egész literálokra:
- 5
- 01234
- 23::bits8
- 077::bits16
- 0x00 255U::bits8
- -128::bits8
Lebegőpontos literálok
A következő EBNF nyelvtan definiálja a lebegőpontos literálok szintakszisát:
float => {decdigit} . {decdigit} [exp] [:: type] | {decdigit} exp [:: type]
exp => (e | E) [+ | -] {decdigit}
Példák szintaktikailag helyes lebegőpontos literálokra:
- 3.1415
- 3e-5
- 1e+2
- 23.3e-4
- 2.71828e0::bits64
Karakter literálok
character => ' char ' [:: type]
char => printable character | \escape
Sztring literálok
string => " {printable character} "
Lefoglalt szavak
A következő azonosítók a nyelv számára lefoglaltak és nem használhatók C-- azonosítóként:
aborts align aligned also as big bits byteorder case const continuation cut
cuts else equal export foreign goto if import in invariant invisible jump
little memsize pragma reads register return returns section semi span stackdata
switch target targets to typedef unicode unwinds writes
Megjegyzések
Megjegyzések létrehozására kétféle lehetőségünk van:
// Egysoros komment
/* Többsoros
komment */