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