---input---
enable f16;
alias int=i32;
alias uint=u32;
alias float=f32;
alias half=f16;
alias ivec2=vec2i;
alias uvec2=vec2u;
alias vec2=vec2f;
alias ivec3=vec3i;
alias uvec3=vec3u;
alias vec3=vec3f;
alias ivec4=vec4i;
alias uvec4=vec4u;
alias ivec2_=vec2<i32>;
alias uvec2_=vec2<u32>;
alias vec2_=vec2<f32>;
alias ivec3_=vec3<i32>;
alias uvec3_=vec3<u32>;
alias vec3_=vec3<f32>;
alias ivec4_=vec4<i32>;
alias uvec4_=vec4<u32>;
alias vec4_=vec4<f32>;
alias hvec2=vec2h;
alias hvec3=vec3h;
alias hvec4=vec4h;
alias hvec4_=vec4<f16>;
alias m22=mat2x2f;
alias m23=mat2x3f;
alias m24=mat2x4f;
alias m32=mat3x2f;
alias m33=mat3x3f;
alias m34=mat3x4f;
alias m42=mat4x2f;
alias m43=mat4x3f;
alias m44=mat4x4f;
alias m22_=mat2x2<f32>;
alias m23_=mat2x3<f32>;
alias m24_=mat2x4<f32>;
alias m32_=mat3x2<f32>;
alias m33_=mat3x3<f32>;
alias m34_=mat3x4<f32>;
alias m42_=mat4x2<f32>;
alias m43_=mat4x3<f32>;
alias m44_=mat4x4<f32>;
alias m22=mat2x2h;
alias m23=mat2x3h;
alias h24=mat2x4h;
alias h32=mat3x2h;
alias h33=mat3x3h;
alias h34=mat3x4h;
alias h42=mat4x2h;
alias h43=mat4x3h;
alias h44=mat4x4h;
alias h22_=mat2x2<f16>;
alias h23_=mat2x3<f16>;
alias h24_=mat2x4<f16>;
alias h32_=mat3x2<f16>;
alias h33_=mat3x3<f16>;
alias h34_=mat3x4<f16>;
alias h42_=mat4x2<f16>;
alias h43_=mat4x3<f16>;
alias h44_=mat4x4<f16>;

---tokens---
'enable'      Keyword
' '           Text.Whitespace
'f16'         Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'int'         Name
'='           Operator
'i32'         Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'uint'        Name
'='           Operator
'u32'         Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'float'       Name
'='           Operator
'f32'         Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'half'        Name
'='           Operator
'f16'         Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'ivec2'       Name
'='           Operator
'vec2i'       Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'uvec2'       Name
'='           Operator
'vec2u'       Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'vec2'        Name.Builtin
'='           Operator
'vec2f'       Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'ivec3'       Name
'='           Operator
'vec3i'       Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'uvec3'       Name
'='           Operator
'vec3u'       Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'vec3'        Name.Builtin
'='           Operator
'vec3f'       Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'ivec4'       Name
'='           Operator
'vec4i'       Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'uvec4'       Name
'='           Operator
'vec4u'       Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'ivec2_'      Name
'='           Operator
'vec2'        Name.Builtin
'<'           Operator
'i32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'uvec2_'      Name
'='           Operator
'vec2'        Name.Builtin
'<'           Operator
'u32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'vec2_'       Name
'='           Operator
'vec2'        Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'ivec3_'      Name
'='           Operator
'vec3'        Name.Builtin
'<'           Operator
'i32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'uvec3_'      Name
'='           Operator
'vec3'        Name.Builtin
'<'           Operator
'u32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'vec3_'       Name
'='           Operator
'vec3'        Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'ivec4_'      Name
'='           Operator
'vec4'        Name.Builtin
'<'           Operator
'i32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'uvec4_'      Name
'='           Operator
'vec4'        Name.Builtin
'<'           Operator
'u32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'vec4_'       Name
'='           Operator
'vec4'        Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'hvec2'       Name
'='           Operator
'vec2h'       Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'hvec3'       Name
'='           Operator
'vec3h'       Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'hvec4'       Name
'='           Operator
'vec4h'       Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'hvec4_'      Name
'='           Operator
'vec4'        Name.Builtin
'<'           Operator
'f16'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm22'         Name
'='           Operator
'mat2x2f'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm23'         Name
'='           Operator
'mat2x3f'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm24'         Name
'='           Operator
'mat2x4f'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm32'         Name
'='           Operator
'mat3x2f'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm33'         Name
'='           Operator
'mat3x3f'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm34'         Name
'='           Operator
'mat3x4f'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm42'         Name
'='           Operator
'mat4x2f'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm43'         Name
'='           Operator
'mat4x3f'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm44'         Name
'='           Operator
'mat4x4f'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm22_'        Name
'='           Operator
'mat2x2'      Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm23_'        Name
'='           Operator
'mat2x3'      Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm24_'        Name
'='           Operator
'mat2x4'      Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm32_'        Name
'='           Operator
'mat3x2'      Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm33_'        Name
'='           Operator
'mat3x3'      Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm34_'        Name
'='           Operator
'mat3x4'      Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm42_'        Name
'='           Operator
'mat4x2'      Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm43_'        Name
'='           Operator
'mat4x3'      Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm44_'        Name
'='           Operator
'mat4x4'      Name.Builtin
'<'           Operator
'f32'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm22'         Name
'='           Operator
'mat2x2h'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'm23'         Name
'='           Operator
'mat2x3h'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h24'         Name
'='           Operator
'mat2x4h'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h32'         Name
'='           Operator
'mat3x2h'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h33'         Name
'='           Operator
'mat3x3h'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h34'         Name
'='           Operator
'mat3x4h'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h42'         Name
'='           Operator
'mat4x2h'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h43'         Name
'='           Operator
'mat4x3h'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h44'         Name
'='           Operator
'mat4x4h'     Name.Builtin
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h22_'        Name
'='           Operator
'mat2x2'      Name.Builtin
'<'           Operator
'f16'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h23_'        Name
'='           Operator
'mat2x3'      Name.Builtin
'<'           Operator
'f16'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h24_'        Name
'='           Operator
'mat2x4'      Name.Builtin
'<'           Operator
'f16'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h32_'        Name
'='           Operator
'mat3x2'      Name.Builtin
'<'           Operator
'f16'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h33_'        Name
'='           Operator
'mat3x3'      Name.Builtin
'<'           Operator
'f16'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h34_'        Name
'='           Operator
'mat3x4'      Name.Builtin
'<'           Operator
'f16'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h42_'        Name
'='           Operator
'mat4x2'      Name.Builtin
'<'           Operator
'f16'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h43_'        Name
'='           Operator
'mat4x3'      Name.Builtin
'<'           Operator
'f16'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'h44_'        Name
'='           Operator
'mat4x4'      Name.Builtin
'<'           Operator
'f16'         Name.Builtin
'>'           Operator
';'           Punctuation
'\n'          Text.Whitespace
