{
  "fileTypes": [
    "sdl"
  ],
  "name": "Simple Declarative Language",
  "scopeName": "source.sdl",
  "repository": {
    "string_escaped_char": {
      "patterns": [
        {
          "match": "\\\\(\\\\|[abefnprtv'\"?]|[0-3]\\d{,2}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|&amp;\\w+;)",
          "name": "constant.character.escape.sdl"
        },
        {
          "match": "\\\\.",
          "name": "invalid.illegal.unknown-escape.sdl"
        }
      ]
    },
    "binarychar": {
      "patterns": [
        {
          "match": "[^a-zA-Z0-9\\-\\+\\/]",
          "name": "invalid.illegal.invalid-character.sdl"
        }
      ]
    }
  },
  "patterns": [
    {
      "match": "\\b(true|false|on|off|null)\\b",
      "name": "constant.language.sdl"
    },
    {
      "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfDd]|BD|bd)?\\b",
      "name": "constant.numeric.sdl"
    },
    {
      "match": "([a-zA-Z_][a-zA-Z0-9_\\-\\.\\$]*)",
      "name": "entity.tag.name.sdl"
    },
    {
      "match": "\\d{4}\\/\\d{2}\\/\\d{2} (\\d+d:)?\\d{2}:\\d{2}(:\\d{2}(:\\d{3})?)?(-[A-Z0-9]{3})?",
      "name": "constant.other.datetime.sdl"
    },
    {
      "match": "\\d{4}\\/\\d{2}\\/\\d{2}",
      "name": "constant.other.date.sdl"
    },
    {
      "match": "(\\d+d:)?\\d{2}:\\d{2}:\\d{2}(:\\d{3})?",
      "name": "constant.other.timespan.sdl"
    },
    {
      "begin": "`",
      "beginCaptures": {
        "0": {
          "name": "punctuation.definition.string.escaped.begin.sdl"
        }
      },
      "end": "`",
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.string.escaped.end.sdl"
        }
      },
      "name": "string.escaped.sdl"
    },
    {
      "begin": "\"",
      "beginCaptures": {
        "0": {
          "name": "punctuation.definition.string.begin.sdl"
        }
      },
      "end": "\"",
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.string.end.sdl"
        }
      },
      "patterns": [
        {
          "include": "#string_escaped_char"
        }
      ],
      "name": "string.quoted.double.sdl"
    },
    {
      "begin": "'",
      "beginCaptures": {
        "0": {
          "name": "punctuation.definition.string.begin.sdl"
        }
      },
      "end": "'",
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.string.end.sdl"
        }
      },
      "patterns": [
        {
          "include": "#string_escaped_char"
        }
      ],
      "name": "string.quoted.single.sdl"
    },
    {
      "begin": "\\[",
      "beginCaptures": {
        "0": {
          "name": "punctuation.definition.string.binary.begin.sdl"
        }
      },
      "end": "\\]",
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.string.binary.end.sdl"
        }
      },
      "patterns": [
        {
          "include": "#binarychar"
        }
      ],
      "name": "string.base64.sdl"
    },
    {
      "begin": "/\\*",
      "beginCaptures": {
        "0": {
          "name": "punctuation.definition.comment.begin.sdl"
        }
      },
      "end": "\\*/",
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.comment.end.sdl"
        }
      },
      "name": "comment.block.sdl"
    },
    {
      "match": "(//|--|#).*$\\n?",
      "name": "comment.line.double-slash.sdl"
    }
  ]
}
