    // This is a test file for the Katepart GLSL Syntax Highlighting.

    normal text
    // this is a single-line comment
    normal text
    /* this
    is a multi-line
    comment */
    normal text

    some_symbol.some_member;
    some_symbol.some_member_function();
    some_function();

    // this is a function
    void main()
    {
    	float f = 1.4e3; // decimal float literal
    	int i1 = 2884;   // decimal int literal
    	int i2 = 0x44;   // hex int literal
    	int i3 = 0456;   // octal int literal
    }

    // this is a structure
    struct some_struct
    {
    	vec3 some_member_vector;
    };

    # this is
    #preprocessor code

    // all keywords
    break continue do for while
    if else
    true false
    discard return
    struct

    // all basic types
    float int void bool
    mat2 mat3 mat4
    vec2 vec3 vec4
    ivec2 ivec3 ivec4
    bvec2 bvec3 bvec4
    sampler1D sampler2D sampler3D
    samplerCube sampler1DShadow sampler1DShadow

    // all type qualifiers
    attribute const uniform varying
    in out inout

    // attensions:
    // FIXME
    // TODO
    // BUG

    // some of the std functions
    radians degrees sin cos tan asin acos atan

    // some of the std variables
    gl_Position gl_PointSize gl_ClipVertex

    #version 330 core

    // single line comment

    /* single line commonet */

    /*
     multi line comment
     */

    in ColorFormat {
        vec3 color;
    } fs_in;

    out vec4 fragColor;

    vec3 fun(const in vec3 foo) {
        foo[2] = foo.x;

        return foo;
    }

    void main()
    {
        fragColor = vec4( fs_in.color, 1.0 );
    }