{
  "scopeName": "source.ocaml.opam",
  "fileTypes": [
    "opam"
  ],
  "patterns": [
    { "include": "#directive" }
  ],
  "repository": {
    "directive": {
      "patterns": [
        {
          "begin": "\\b(depends)\\b",
          "end": "(?<=\\])",
          "beginCaptures": {
            "1": { "name": "storage.type" }
          },
          "patterns": [
            {
              "match": "\\G(:)",
              "name": "keyword.other"
            },
            {
              "begin": "\\[",
              "end": "\\]",
              "patterns": [
                {
                  "begin": "(\")",
                  "end": "(\")",
                  "beginCaptures": {
                    "1": { "name": "comment.line" }
                  },
                  "endCaptures": {
                    "1": { "name": "comment.line" }
                  },
                  "patterns": [
                    {
                      "match": "\\b([[:alpha:]][[:word:]]*)\\b[[:space:]]*(\\.)?",
                      "captures": {
                        "1": { "name": "entity.name.class" },
                        "2": { "name": "keyword.other" }
                      }
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "end": "(?=[:])",
          "patterns": [
            {
              "begin": "(\")",
              "end": "(\")",
              "beginCaptures": {
                "1": { "name": "keyword.other" }
              },
              "endCaptures": {
                "1": { "name": "keyword.other" }
              },
              "patterns": [
                {
                  "match": "(?<![\\-\\+])(?:(\\b[[:word:]]+\\b)|([*]+))[[:space:]]*([\\./])?",
                  "captures": {
                    "1": { "name": "string.double" },
                    "2": { "name": "constant.language" },
                    "3": { "name": "keyword.other" }
                  }
                }
              ]
            },
            {
              "match": "\\b([[:alpha:]][[:word:]]*)\\b([\\-])?",
              "captures": {
                "1": { "name": "constant.language" },
                "2": { "name": "keyword.other" }
              }
            }
          ]
        },
        {
          "begin": "(:)",
          "end": "$",
          "beginCaptures": {
            "1": { "name": "keyword.other" }
          },
          "patterns": [
            {
              "begin": "(\")",
              "end": "(\")",
              "contentName": "variable.parameter",
              "beginCaptures": {
                "1": { "name": "comment.line" }
              },
              "endCaptures": {
                "1": { "name": "comment.line" }
              }
            }
          ]
        }
      ]
    }
  }
}