# OpenCL syntax file for Diffuse # Copyright (C) 2012 Derrick Moser syntax OpenCL normal text syntax_files OpenCL '\.cl$' # colours colour opencl_comment 0.2 0.4 0.64 colour opencl_fixme 1.0 0.5 0.0 colour opencl_keyword 0.77 0.63 0.0 colour opencl_type 0.3 0.6 0.02 colour opencl_cpp 0.8 0.0 0.0 colour opencl_cppkeyword 0.46 0.31 0.48 colour opencl_literal 1.0 0.2 0.8 colour opencl_string 0.8 0.0 0.0 colour opencl_escapedchar 0.46 0.31 0.48 colour opencl_punctuation 0.5 0.5 0.5 # preprocessor syntax_pattern normal cpp opencl_cppkeyword '^[ \t]*#[ \t]*(define|elif|else|endif|error|if|ifdef|ifndef|include|line|pragma|undef|warning)\b' syntax_pattern cpp normal opencl_cppkeyword '(\r\n|\r|\n)$' # whitespace syntax_pattern normal normal text '[ \t\r\n]+' # C++ style comments syntax_pattern normal cpp_comment opencl_comment '//' syntax_pattern cpp cpp_comment opencl_comment '//' syntax_pattern cpp_comment normal opencl_comment '(\r\n|\r|\n)$' syntax_pattern cpp_comment cpp_comment opencl_comment '\\(\r\n|\r|\n)$' syntax_pattern cpp_comment cpp_comment opencl_fixme '\b(TODO|FIXME|XXX)\b' syntax_pattern cpp_comment cpp_comment opencl_comment '.[^\\TFX\r\n]*' # C style comments syntax_pattern normal comment opencl_comment '/\*' syntax_pattern comment normal opencl_comment '\*/' syntax_pattern comment comment opencl_fixme '\b(TODO|FIXME|XXX)\b' syntax_pattern comment comment opencl_comment '.[^\*TFX]*' syntax_pattern cpp comment_cpp opencl_comment '/\*' syntax_pattern comment_cpp cpp opencl_comment '\*/' syntax_pattern comment_cpp comment_cpp opencl_fixme '\b(TODO|FIXME|XXX)\b' syntax_pattern comment_cpp comment_cpp opencl_comment '.[^\*TFX]*' # preprocessor args syntax_pattern cpp cpp opencl_cpp '\\(\r\n|\r|\n)$' syntax_pattern cpp cpp opencl_cpp '.[^\\/\r\n]*' # char syntax_pattern normal char opencl_string "L?'" syntax_pattern char normal opencl_string "'" syntax_pattern char char opencl_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|.))+' ignorecase syntax_pattern char char opencl_string ".[^\\\\']*" # string syntax_pattern normal string opencl_string 'L?"' syntax_pattern string normal opencl_string '"' syntax_pattern string string opencl_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|.))+' ignorecase syntax_pattern string string opencl_string '.[^\\"]*' # literals syntax_pattern normal normal opencl_literal '((([0-9]+\.[0-9]*|\.[0-9]+)(e[\+\-]?[0-9]+)?|[0-9]+e[\+\-]?[0-9]+)[fl]?|(0|[1-9][0-9]*)f|(0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)(ul?|lu?)?)' ignorecase syntax_pattern normal normal opencl_literal '\b(true|false|M_E|M_LOG2E|M_LOG10E|M_LN2|M_LN10|M_PI|M_PI_2|M_PI_4|M_1_PI|M_2_PI|M_2_SQRTPI|M_SQRT2|M_SQRT1_2|NULL)\b' # typing keywords syntax_pattern normal normal opencl_type '\b(auto|bool|class|const|enum|explicit|export|extern|event_t|image[123]d_t|image[12]d_array_t|image1d_buffer_t|inline|u?intptr_t|mutable|namespace|ptrdiff_t|register|sampler_t|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t|(u?(char|int|long|short)|double|float|half)(2|3|4|8|16)?|(__)?(constant|global|kernel|local|read_only|read_write|write_only))\b' # keywords syntax_pattern normal normal opencl_keyword '\b(asm|break|case|catch|const_cast|continue|default|delete|do|dynamic_cast|else|for|friend|goto|if|new|operator|(__)?private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while)\b' # punctuation syntax_pattern normal normal opencl_punctuation '[!~%\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,\?]+' syntax_pattern normal normal opencl_punctuation '[/\.]' # parsing optimisation syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase