{
  "name": "bpl",
  "displayName": "BPL",
  "scopeName": "source.bpl",
  "fileTypes": [
    "bpl"
  ],
  "patterns": [
    {
      "begin": "[⍝]",
      "beginCaptures": {
        "0": {
          "name": "comment.line.bpl"
        }
      },
      "end": "$",
      "contentName": "comment.line.bpl",
      "patterns": [],
      "applyEndPatternLast": true
    },
    {
      "begin": "\"",
      "beginCaptures": {
        "0": {
          "name": "string.quoted.double.bpl"
        }
      },
      "end": "\"|$",
      "contentName": "string.quoted.double.bpl",
      "patterns": [
        {
          "match": "\"\"",
          "name": "string.quoted.double.bpl"
        }
      ],
      "applyEndPatternLast": true,
      "endCaptures": {
        "0": {
          "name": "string.quoted.double.bpl"
        }
      }
    },
    {
      "match": "'.?'",
      "name": "string.quoted.single.bpl"
    },
    {
      "match": "(?:_\\d+|_\\S|_|[^\\s\\p{Cc}0-9←⎕•⍺⍵⍶⍹∇⍢⍝⋄\\?¯∞⍬\\+\\-×÷⌈⌊\\|\\*⍟○π√!∧∨⊼⊽\\~=≠<≤>≥⍳↦:⍴≢≡,⍪⊂⊃⊆∊∪∩⍋⍒↑↓⌽⊖⍉⊤⊥⍎⍕⌷⌹\\#↕⍭⨸⌻⍸⍷⊢⊣¿¨ᵇ⍨↣⍤∘⍠⍥↢\\.⊗⌸⍣⇄⊘@∂⍚⌺/⌿\\\\⍀⁰¹²³⁴⁵⁶⁷⁸⁹⁻ᵀᵘₓ₀₁₂₃₄₅₆₇₈₉₋ₓ₁ₓ₂ₓ₄ₓ₈ₓₕₛₚ\\(\\)\\[\\]\\{\\}'\";\\$_ₑⱼᵣ])+",
      "name": "variable.other.bpl"
    },
    {
      "match": "[•][A-Za-z_∆⍙][A-Za-z0-9_∆⍙]*",
      "name": "support.function.bpl"
    },
    {
      "match": "(?:[¯]?[∞]|[¯]?(\\d+([.]\\d+)?|[.]\\d+)([eEₑ][¯]?\\d+)?([jJⱼ][¯]?(\\d+([.]\\d+)?|[.]\\d+)([eEₑ][¯]?\\d+)?|[rᵣ][¯]?\\d+)?)(?:ₓ₁|ₓ₂|ₓ₄|ₓ₈|ₓ|ₕ|ₛ|ₚ)?|[ₑⱼᵣ]",
      "name": "constant.numeric.bpl"
    },
    {
      "match": "[⍬](?:ₓ₁|ₓ₂|ₓ₄|ₓ₈|ₓ|ₕ|ₛ|ₚ)?",
      "name": "constant.numeric.bpl"
    },
    {
      "match": "\\$[tfn]",
      "name": "constant.numeric.bpl"
    },
    {
      "match": "\\$[ad]",
      "name": "string.quoted.double.bpl"
    },
    {
      "begin": "[\\])](?=(?:ₓ₁|ₓ₂|ₓ₄|ₓ₈|ₓ|ₕ|ₛ|ₚ))",
      "beginCaptures": {
        "0": {
          "name": "source.bpl"
        }
      },
      "end": "(?:ₓ₁|ₓ₂|ₓ₄|ₓ₈|ₓ|ₕ|ₛ|ₚ)|$",
      "contentName": "constant.numeric.bpl",
      "patterns": [],
      "applyEndPatternLast": true,
      "endCaptures": {
        "0": {
          "name": "constant.numeric.bpl"
        }
      }
    },
    {
      "match": "[\\+\\-×÷⌈⌊\\|\\*⍟○π√!∧∨⊼⊽\\~=≠<≤>≥⍳↦:⍴≢≡,⍪⊂⊃⊆∊∪∩⍋⍒↑↓⌽⊖⍉⊤⊥⍎⍕⌷⌹\\#↕⍭⨸⌻⍸⍷⊢⊣¿]",
      "name": "support.function.bpl"
    },
    {
      "match": "(?:ₓ₁|ₓ₂|ₓ₄|ₓ₈|ₓ|ₕ|ₛ|ₚ)",
      "name": "keyword.operator.monadic.bpl"
    },
    {
      "match": "[¨ᵇ⍨⊗⌸⇄∂/⌿\\\\⍀⁰¹²³⁴⁵⁶⁷⁸⁹⁻ᵀᵘₓ]",
      "name": "keyword.operator.monadic.bpl"
    },
    {
      "match": "[↣⍤∘⍠⍥↢\\.⍣⊘@⍚⌺]",
      "name": "keyword.operator.dyadic.bpl"
    },
    {
      "match": "[⍺⍵⍶⍹∇⍢]",
      "name": "variable.parameter.bpl"
    },
    {
      "match": "[←⎕⋄\\?₀₁₂₃₄₅₆₇₈₉₋]",
      "name": "keyword.control.bpl"
    }
  ]
}
