Today I finally got most of the tricky initializer code parsing. This means code like the following now passes the compile stage:

void main()
{
vec4[2] a[4] = {
{
vec4(1.0), // a[0][0]
vec4(1.0) // a[0][1]
},
{
vec4(1.0), // a[1][0]
vec4(1.0) // a[1][1]
},
{
vec4(1.0), // a[2][0]
vec4(1.0) // a[2][1]
},
{
vec4(1.0), // a[3][0]
vec4(1.0) // a[3][1]
}
}, b[3] = {
{
vec4(1.0), // b[0][0]
vec4(1.0) // b[0][1]
},
{
vec4(1.0), // b[1][0]
vec4(1.0) // b[1][1]
},
{
vec4(1.0), // b[2][0]
vec4(1.0) // b[2][1]
}
}; // b

gl_Position = b[2][1];
}

In total 94/100 tests are passing up from 88/94 yesterday, I only really have 3 to fix now all of which will be fixed at the same time once I get one last piece of the initialisation code done, the other 3 tests actually do pass when I run them on their own just not when I run them together with all the other test so I think something else is causing them to fail I'm not to worried about them for now. Tomorrow I WILL be starting on the execution tests I just couldn't let myself move on until I was fully happy with the compile tests.