{
  "name": "iproto",
  "scopeName": "source.iproto",
  "fileTypes": [
    ".iproto"
  ],
  "patterns": [
    {
      "include": "#comments"
    },
    {
      "name": "keyword.control.iproto",
      "match": "\\b(alias|as|boolean|directive|endpoint|enum|exception|field|float|int|module|on|scalar|string|struct|use|variant|with)\\b"
    },
    {
      "name": "string.quoted.double.iproto",
      "begin": "\"",
      "end": "\"",
      "patterns": [
        {
          "include": "#string-character-escape"
        }
      ]
    }
  ],
  "repository": {
    "comments": {
      "patterns": [
        {
          "name": "comment.block.iproto",
          "begin": "--",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.comment.iproto"
            }
          },
          "end": "--",
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.comment.iproto"
            }
          }
        },
        {
          "begin": "//",
          "beginCaptures": {
            "1": {
              "name": "punctuation.whitespace.comment.leading.iproto"
            }
          },
          "end": "(?=$)",
          "name": "comment.line.iproto"
        }
      ]
    },
    "string-character-escape": {
      "name": "constant.character.escape.iproto",
      "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
    }
  }
}
