riferendosi la js0n.cCos'è questa sintassi "[0 ... 255] =" in C?
La sintassi del codice è il seguente:
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;
........
........
Qualcuno può spiegare cosa si sta facendo qui? Cosa fa la sintassi [0 ... 255]
e &&l_bad
qui?
mettere tutto insieme che il codice sta facendo una tabella salto che utilizza valori ASCII per indici, presumibilmente per un parser. –
In particolare un parser JSON, per quanto posso dire. – Kevin
Quindi, poiché le etichette e le variabili hanno spazi dei nomi separati, come fa il parser a distinguere '&& foo' che significa" indirizzo dell'etichetta 'pippo'" da '&& foo' che significa" indirizzo dell'indirizzo della variabile 'pippo'"? (Prendere l'indirizzo di un indirizzo produce, credo, un comportamento indefinito, ma è validamente sintattico.) – dodgethesteamroller