I'm having trouble locating the exact specification of the grammar for the WebGL2 shader language. I see references that it is "based on" version 3 of the Open GL Shader language -- but it is obviously not exactly that since there are missing keywords in the Open GL version. Where is the precise syntax of the shader language specified for the current version of WebGL supported on modern browsers?
For example this spec specifically disallows the keyword "attribute" which is used in WebGL vertex shaders. Where is the correct BNF grammar specified?
The spec for WebGL2 points to the specs for GLSL ES 3.0 which contains the grammar in section 9.
The WebGL2 spec also points to the spec for WebGL1 which points to the spec for GLSL ES 1.0 which also happens to have its grammar in section 9.