| /* The GLSL specification is not specific about how to handle a non-space |
| * character separating a macro identifier from the replacement list. It says |
| * only "as is standard for C++ preprocessors". GCC accepts these and warns of |
| * "missing whitespace". So we'll accept these, (though we don't warn). |
| * |
| * Note: 'O' is intentionally omitted to leave room for "octothorpe" if we |
| * decide it should be legal to use a hash here, (in fact, hash has no |
| * legal use as the first token in a macro replacement list, but one |
| * could argue that that could still be allowed if the macro were never |
| * instantiated). |
| */ |
| #define A& ampersand |
| #define B! bang |
| #define C, comma |
| #define D/ divider |
| #define E= equals |
| #define F. full stop |
| #define G> greater than |
| #define H- hyphen |
| #define I+ incrementor |
| #define J[ JSON array |
| #define K} kurly brace? |
| #define L< less than |
| #define M{ moustache |
| #define N^ nose |
| #define P) parenthesis (right) |
| #define Q? question mark |
| #define R% ratio indicator |
| #define S] square bracket (right) |
| #define T~ tilde |
| #define U: umlaut? |
| #define V| vertical bar |
| #define W; wink |
| #define X* X (as multiplication) |
| A |
| B |
| C |
| D |
| E |
| F |
| G |
| H |
| I |
| J |
| K |
| L |
| M |
| N |
| P |
| Q |
| R |
| S |
| T |
| U |
| V |
| W |
| X |
| |