101e04c3fSmrg/* Legal characters in GLSL are:
201e04c3fSmrg *
301e04c3fSmrg * Identifier characters:
401e04c3fSmrg *
501e04c3fSmrg *     Letters a-z
601e04c3fSmrg *     Letters A-Z
701e04c3fSmrg *     Underscore
801e04c3fSmrg *     Numbers 0-9
901e04c3fSmrg *
1001e04c3fSmrg * Punctuation:
1101e04c3fSmrg *
1201e04c3fSmrg *     Period, plus, dash, slash, asterisk, percent, angled brackets,
1301e04c3fSmrg *     square brackets, parentheses, braces, caret, vertical bar,
1401e04c3fSmrg *     ampersand, tilde, equals, exclamation point, colon, semicolon,
1501e04c3fSmrg *     comma, and question mark
1601e04c3fSmrg *
1701e04c3fSmrg * Special:
1801e04c3fSmrg *
1901e04c3fSmrg *     Number sign (as used in preprocessor)
2001e04c3fSmrg *
2101e04c3fSmrg *     Backslash just before newline as line continuation
2201e04c3fSmrg *
2301e04c3fSmrg * White space:
2401e04c3fSmrg *
2501e04c3fSmrg *     Space, horizontal tab, vertical tab, form feed, carriage-return,
2601e04c3fSmrg *     and line-feed.
2701e04c3fSmrg *
2801e04c3fSmrg * [GLSL Language Specficiation 4.30.6, section 3.1]
2901e04c3fSmrg *
3001e04c3fSmrg * In this file, we test each of these in turn as follows:
3101e04c3fSmrg *
3201e04c3fSmrg *    Identifier characters: All pass through unchanged
3301e04c3fSmrg *    Punctuation: All pass through unchanged
3401e04c3fSmrg *    Special: Empty directive replaced with blank line
3501e04c3fSmrg *             Line continuation merges two lines, then a blank line
3601e04c3fSmrg *    Whitespace: 4 horizontal space characters each replaced with space
3701e04c3fSmrg *                2 newline characters each replaced with a newline
3801e04c3fSmrg *
3901e04c3fSmrg */
4001e04c3fSmrgabcdefghijklmnopqrstuvwxyz
4101e04c3fSmrgABCDEFGHIJKMLNOPQRSTUVWXYZ
4201e04c3fSmrg_
4301e04c3fSmrg0123456789
4401e04c3fSmrg.
4501e04c3fSmrg+
4601e04c3fSmrg-
4701e04c3fSmrg/
4801e04c3fSmrg*
4901e04c3fSmrg%
5001e04c3fSmrg<
5101e04c3fSmrg>
5201e04c3fSmrg[
5301e04c3fSmrg]
5401e04c3fSmrg(
5501e04c3fSmrg)
5601e04c3fSmrg{
5701e04c3fSmrg}
5801e04c3fSmrg^
5901e04c3fSmrg|
6001e04c3fSmrg&
6101e04c3fSmrg~
6201e04c3fSmrg=
6301e04c3fSmrg!
6401e04c3fSmrg:
6501e04c3fSmrg;
6601e04c3fSmrg,
6701e04c3fSmrg?
6801e04c3fSmrg#
6901e04c3fSmrg.\
7001e04c3fSmrg.
7101e04c3fSmrg. .
7201e04c3fSmrg.	.
7301e04c3fSmrg..
7401e04c3fSmrg..
7501e04c3fSmrg..
7601e04c3fSmrg.
7701e04c3fSmrg.
78