Bezug nehmen zu Bezugnehmend js0n.c
Die Codesyntax lautet wie folgt:
static void *gostruct[] =
{
[0 ... 255] = &&l_bad,
['\t'] = &&l_loop, [' '] = &&l_loop, ['\r'] = &&l_loop, ['\n'] = &&l_loop,
['"'] = &&l_qup,
[':'] = &&l_loop, [','] = &&l_loop,
['['] = &&l_up, [']'] = &&l_down, // tracking [] and {} individually would allow fuller validation but is really messy
['{'] = &&l_up, ['}'] = &&l_down,
['-'] = &&l_bare, [48 ... 57] = &&l_bare, // 0-9
[65 ... 90] = &&l_bare, // A-Z
[97 ... 122] = &&l_bare // a-z
};
........
.......
l_bad:
*vlen = cur - json; // where error'd
return 0;
........
........
Kann jemand erklären, was hier gemacht wird? Was macht Syntax [0 ... 255]
und
&&l_bad
was hier?
quelle
&
Einstiegs in den Produktionscode erinnere !).&&
ist ein völlig anderes Token als&
, daher kann die Standard-C-Grammatik&&x
unabhängig von der Wertekategorie von auf keinen Fall als "Adresse der Adresse von x" interpretiert werden&x
.--
wird immer als analysiert--
und&&
wird immer als analysiert&&
. C99 §6.4¶4: Das nächste Vorverarbeitungstoken ist die längste Folge von Zeichen, die ein Vorverarbeitungstoken darstellen könnten