code: def _parse_error(self, error):
          
          error = str(error)
          # Nvidia
          # 0(7): error C1008: undefined variable "MV"
          m = re.match(r'(\d+)\((\d+)\)\s*:\s(.*)', error)
          if m:
              return int(m.group(2)), m.group(3)
          # ATI / Intel
          # ERROR: 0:131: '{' : syntax error parse error
          m = re.match(r'ERROR:\s(\d+):(\d+):\s(.*)', error)
          if m:
              return int(m.group(2)), m.group(3)
          # Nouveau
          # 0:28(16): error: syntax error, unexpected ')', expecting '('
          m = re.match(r'(\d+):(\d+)\((\d+)\):\s(.*)', error)
          if m:
              return int(m.group(2)), m.group(4)
          # Other ...
          return None, error
docs: Parses a single GLSL error and extracts the linenr and description
          Other GLIR implementations may omit this.