.*\.(glsl|vert|frag|prog) commentDoxygen /\*\*.*\*/ comment /\*.*\*/ preprocesseur #[ \t]*if 0(.|\\[\\\n])*#(endif|else) preprocesseur #(.|\\[\\\n])*$ commentDoxygen //!(.|\\[\\\n])*$ SYNTAX_ERROR //[ \t]*TODO[ \t]*:(.|\\[\\\n])*$ comment //(.|\\[\\\n])*$ keyword \b(return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof)\b type \b(void|bool|float|int|(vec|mat|ivec|bvec)[2-4])\b storageKeyword \b(varying|uniform|attribute|precision|mediump)\b number \b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?)\b boolean \b(true|false)\b macro \b([A-Z_][A-Z_0-9]{3,500})\b functionName \b(\w|_)+[ \t]*\( boolean ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}