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) 35A 36B 37C 38D 39E 40F 41G 42H 43I 44J 45K 46L 47M 48N 49P 50Q 51R 52S 53T 54U 55V 56W 57X 58 59