1 /* The GLSL specification is not specific about how to handle a non-space 2 * character separating a macro identifier from the replacement list. It says 3 * only "as is standard for C++ preprocessors". GCC accepts these and warns of 4 * "missing whitespace". So we'll accept these, (though we don't warn). 5 * 6 * Note: 'O' is intentionally omitted to leave room for "octothorpe" if we 7 * decide it should be legal to use a hash here, (in fact, hash has no 8 * legal use as the first token in a macro replacement list, but one 9 * could argue that that could still be allowed if the macro were never 10 * instantiated). 11 */ 12 #define A& ampersand 13 #define B! bang 14 #define C, comma 15 #define D/ divider 16 #define E= equals 17 #define F. full stop 18 #define G> greater than 19 #define H- hyphen 20 #define I+ incrementor 21 #define J[ JSON array 22 #define K} kurly brace? 23 #define L< less than 24 #define M{ moustache 25 #define N^ nose 26 #define P) parenthesis (right) 27 #define Q? question mark 28 #define R% ratio indicator 29 #define S] square bracket (right) 30 #define T~ tilde 31 #define U: umlaut? 32 #define V| vertical bar 33 #define W; wink 34 #define X* X (as multiplication) 35 A 36 B 37 C 38 D 39 E 40 F 41 G 42 H 43 I 44 J 45 K 46 L 47 M 48 N 49 P 50 Q 51 R 52 S 53 T 54 U 55 V 56 W 57 X 58 59