{
  "Highlighter": {
    "Sample": [
      "// Hello, World! in Pascal\r\n",
      "\r\n",
      "program HelloWorld;\r\n",
      "begin\r\n",
      "  writeln('Hello, World!');\r\n",
      "end."
    ],
    "MainRules": {
      "Attributes": {
        "Element": "Editor"
      },
      "SubRules": {
        "Range": [
          {
            "Type": "BlockComment",
            "Attributes": {
              "Element": "Comment"
            },
            "TokenRange": {
              "Open": "{",
              "Close": "}"
            }
          },
          {
            "Type": "BlockComment",
            "Attributes": {
              "Element": "Comment"
            },
            "TokenRange": {
              "Open": "(*",
              "Close": "*)"
            }
          },
          {
            "Type": "LineComment",
            "Attributes": {
              "Element": "Comment"
            },
            "Properties": {
              "CloseOnEndOfLine": true
            },
            "TokenRange": {
              "Open": "//"
            }
          },          
          {
            "Type": "String",
            "Attributes": {
              "Element": "String"
            },
            "Properties": {
              "CloseOnEndOfLine": true
            },
            "TokenRange": {
              "Open": "'",
              "Close": "'"
            }
          },
          {
            "Type": "Directive",
            "Attributes": {
              "Element": "Directive"
            },
            "TokenRange": {
              "Open": "{$",
              "Close": "}"
            }
          },
          {
            "Type": "Method",
            "Attributes": {
              "Element": "MethodName"
            },
            "Properties": {
              "AlternativeClose": [
                "(",
                "'",
                "/",
                "{",
                ";"
              ]
            },
            "TokenRange": {
              "Open": "function",
              "Close": ":"
            },
            "SubRules": {
              "KeyList": [
                {
                  "Type": "Symbol",
                  "Words": [
                    ":",
                    "("
                  ],
                  "Attributes": {
                    "Element": "Symbol"
                  }
                }
              ]
            }
          },
          {
            "Type": "Method",
            "Attributes": {
              "Element": "MethodName"
            },
            "Properties": {
              "AlternativeClose": [
                "(",
                "'",
                "/",
                "{",
                "begin"
              ]
            },
            "TokenRange": {
              "Open": "procedure",
              "Close": ";"
            },
            "SubRules": {
              "KeyList": [
                {
                  "Type": "Symbol",
                  "Words": [
                    ";",
                    "("
                  ],
                  "Attributes": {
                    "Element": "Symbol"
                  }
                }
              ]
            }
          },
          {
            "Type": "Method",
            "Attributes": {
              "Element": "MethodName"
            },
            "Properties": {
              "AlternativeClose": [
                "("
              ]
            },
            "TokenRange": {
              "Open": "constructor",
              "Close": ";"
            },
            "SubRules": {
              "KeyList": [
                {
                  "Type": "Symbol",
                  "Words": [
                    ";",
                    "("
                  ],
                  "Attributes": {
                    "Element": "Symbol"
                  }
                }
              ]
            }
          },
          {
            "Type": "Method",
            "Attributes": {
              "Element": "MethodName"
            },
            "Properties": {
              "AlternativeClose": [
                "("
              ]
            },
            "TokenRange": {
              "Open": "destructor",
              "Close": ";"
            },
            "SubRules": {
              "KeyList": [
                {
                  "Type": "Symbol",
                  "Words": [
                    ";",
                    "("
                  ],
                  "Attributes": {
                    "Element": "Symbol"
                  }
                }
              ]
            }
          },
          {
            "Type": "ReservedWord",
            "Attributes": {
              "Element": "HighlightedBlock",
              "ParentBackground": false
            },
            "TokenRange": {
              "Open": "asm",
              "OpenBreakType": "Term",
              "Close": "end",
              "CloseBreakType": "Term"
            },
            "SubRules": {
              "Range": [
                {
                  "Type": "AssemblerComment",
                  "Attributes": {
                    "Element": "Comment"
                  },
                  "TokenRange": {
                    "Open": "{",
                    "Close": "}"
                  }
                },
                {
                  "Type": "AssemblerComment",
                  "Attributes": {
                    "Element": "Comment"
                  },
                  "TokenRange": {
                    "Open": "(*",
                    "Close": "*)"
                  }
                },
                {
                  "Type": "AssemblerComment",
                  "Attributes": {
                    "Element": "Comment"
                  },
                  "Properties": {
                    "CloseOnEndOfLine": true
                  },
                  "TokenRange": {
                    "Open": "//"
                  }
                },
                {
                  "Type": "String",
                  "Attributes": {
                    "Element": "String"
                  },
                  "Properties": {
                    "CloseOnEndOfLine": true
                  },
                  "TokenRange": {
                    "Open": "'",
                    "Close": "'"
                  }
                },
                {
                  "Type": "Directive",
                  "Attributes": {
                    "Element": "Directive"
                  },
                  "TokenRange": {
                    "Open": "{$",
                    "Close": "}"
                  }
                },
                {
                  "Type": "Directive",
                  "Attributes": {
                    "Element": "Directive"
                  },
                  "Properties": {
                    "CloseOnEndOfLine": true
                  },
                  "TokenRange": {
                    "Open": "@",
                    "Close": ":"
                  }
                }
              ],
              "KeyList": [
                {
                  "Type": "AssemblerReservedWord",
                  "Words": [
                    "add",
                    "call",
                    "cmp",
                    "dec",
                    "end",
                    "inc",
                    "ja",
                    "jb",
                    "jg",
                    "jge",
                    "jl",
                    "jle",
                    "jmp",
                    "jnz",
                    "jz",
                    "mov",
                    "movzx",
                    "neg",
                    "pop",
                    "push",
                    "ret",
                    "shl",
                    "shr",
                    "sub",
                    "xor"
                  ],
                  "Attributes": {
                    "Element": "AssemblerReservedWord",
                    "ParentBackground": false
                  }
                },
                {
                  "Type": "Method",
                  "Words": [
                    "al",
                    "ax",
                    "cl",
                    "di",
                    "dx",
                    "ebp",
                    "edi",
                    "eip",
                    "esi",
                    "esp",
                    "fs",
                    "gs",
                    "mm",
                    "rax",
                    "rbx",
                    "st",
                    "xmm",
                    "ah",
                    "bh",
                    "bl",
                    "bp",
                    "bx",
                    "ch",
                    "cs",
                    "cx",
                    "dh",
                    "dl",
                    "ds",
                    "eax",
                    "ebx",
                    "ecx",
                    "edx",
                    "es",
                    "ip",
                    "si",
                    "sp",
                    "ss"
                  ],
                  "Attributes": {
                    "Element": "MethodName",
                    "ParentBackground": false
                  }
                }
              ]
            }
          },
          {
            "Type": "HexNumber",
            "Attributes": {
              "Element": "HexNumber"
            },
            "AllowedCharacters": "0123456789abcdefABCDEF",
            "Properties": {
              "CloseOnTerm": true,
              "CloseOnEndOfLine": true
            },
            "TokenRange": {
              "Open": "$"
            }
          },
          {
            "Type": "Character",
            "Attributes": {
              "Element": "Number"
            },
            "Properties": {
              "CloseOnTerm": true,
              "CloseOnEndOfLine": true
            },
            "TokenRange": {
              "Open": "#",
              "Close": " "
            }
          },
          {
            "Type": "Address",
            "Attributes": {
              "Element": "Character"
            },
            "Properties": {
              "CloseOnTerm": true
            },
            "TokenRange": {
              "Open": "@"
            }
          },
          {
            "Attributes": {
              "Element": "Editor"
            },
            "TokenRange": {
              "Open": "property",
              "Close": ";"
            },
            "SubRules": {
              "Range": [
                {
                  "Type": "BlockComment",
                  "Attributes": {
                    "Element": "Comment"
                  },
                  "TokenRange": {
                    "Open": "{",
                    "Close": "}"
                  }
                },
                {
                  "Type": "BlockComment",
                  "Attributes": {
                    "Element": "Comment"
                  },
                  "TokenRange": {
                    "Open": "(*",
                    "Close": "*)"
                  }
                },
                {
                  "Type": "LineComment",
                  "Attributes": {
                    "Element": "Comment"
                  },
                  "Properties": {
                    "CloseOnEndOfLine": true
                  },
                  "TokenRange": {
                    "Open": "//"
                  }
                },
                {
                  "Type": "String",
                  "Attributes": {
                    "Element": "String"
                  },
                  "Properties": {
                    "CloseOnEndOfLine": true
                  },
                  "TokenRange": {
                    "Open": "'",
                    "Close": "'"
                  }
                }
              ],
              "KeyList": [
                {
                  "Type": "ReservedWord",
                  "Words": [
                    "default",
                    "index",
                    "read",
                    "stored",
                    "write"
                  ],
                  "Attributes": {
                    "Element": "ReservedWord"
                  }
                }
              ],
              "Set": [
                {
                  "Type": "Numbers",
                  "Symbols": ".0123456789E",
                  "Attributes": {
                    "Element": "Number"
                  }
                }
              ]
            }
          }
        ],
        "KeyList": [
          {
            "Type": "ReservedWord",
            "Words": [
              "absolute",
              "abstract",
              "and",
              "array",
              "as",
              "assembler",
              "automated",
              "begin",
              "case",
              "cdecl",
              "class",
              "const",
              "contains",
              "delayed",
              "deprecated",
              "dispid",
              "dispinterface",
              "div",
              "do",
              "downto",
              "dynamic",
              "else",
              "end",
              "except",
              "exports",
              "external",
              "far",
              "file",
              "final",
              "finalization",
              "finally",
              "for",
              "forward",
              "goto",
              "if",
              "implementation",
              "implements",
              "in",
              "inherited",
              "initialization",
              "inline",
              "interface",
              "is",
              "label",
              "library",
              "message",
              "mod",
              "near",
              "nil",
              "nodefault",
              "not",
              "object",
              "of",
              "on",
              "operator",
              "or",
              "out",
              "overload",
              "override",
              "package",
              "packed",
              "pascal",
              "platform",
              "private",
              "program",
              "property",
              "protected",
              "public",
              "published",
              "raise",
              "record",
              "reference",
              "reintroduce",
              "repeat",
              "requires",
              "resourcestring",
              "safecall",
              "sealed",
              "set",
              "shl",
              "shr",
              "static",
              "stdcall",
              "strict",
              "string",
              "stringresource",
              "then",
              "threadvar",
              "to",
              "try",
              "type",
              "unit",
              "until",
              "uses",
              "var",
              "while",
              "virtual",
              "with",
              "writeonly",
              "xor"
            ],
            "Attributes": {
              "Element": "ReservedWord",
              "EscapeChar": "&"
            }
          },
          {
            "Type": "Method",
            "Words": [
              "constructor",
              "destructor",
              "function",
              "procedure"
            ],
            "Attributes": {
              "Element": "Method",
              "EscapeChar": "&"
            }
          },
          {
            "Type": "Symbol",
            "Words": [
              ":",
              ";",
              "<",
              ">",
              "=",
              "/",
              "*",
              ".",
              ",",
              "-",
              "+",
              "(",
              ")",
              "[",
              "]"
            ],
            "Attributes": {
              "Element": "Symbol"
            }
          },
          {
            "Type": "AssemblerReservedWord",
            "Words": [
              "asm"
            ],
            "Attributes": {
              "Element": "AssemblerReservedWord",
              "ParentBackground": false
            }
          }
        ],
        "Set": [
          {
            "Type": "Numbers",
            "Symbols": ".0123456789E",
            "Attributes": {
              "Element": "Number"
            }
          }
        ]
      }
    }
  },
  "CodeFolding": {
    "Ranges": [
      {
        "Options": {
          "EscapeChar": "&",
          "HideGuideLineAtFirstColumn": true
        },
        "SkipRegion": [
          {
            "OpenToken": "'",
            "CloseToken": "'",
            "RegionType": "SingleLineString"
          },
          {
            "OpenToken": "//",
            "RegionType": "SingleLine"
          },
          {
            "OpenToken": "{",
            "CloseToken": "}",
            "RegionType": "MultiLine",
            "NextCharIsNot": "$"
          },
          {
            "OpenToken": "(*",
            "CloseToken": "*)",
            "RegionType": "MultiLine"
          }
        ],
        "FoldRegion": [
          {
            "OpenToken": "BEGIN",
            "CloseToken": "END"
          },
          {
            "OpenToken": "REPEAT",
            "CloseToken": "UNTIL"
          },
          {
            "OpenToken": "TRY",
            "CloseToken": "END",
            "Properties": {
              "OpenTokenBeginningOfLine": true
            }
          },
          {
            "OpenToken": "CASE",
            "CloseToken": "END"
          },
          {
            "OpenToken": "ASM",
            "CloseToken": "END",
            "Properties": {
              "OpenTokenBeginningOfLine": true
            }
          },
          {
            "OpenToken": "CLASS",
            "CloseToken": "END",
            "Properties": {
              "NoSubs": true,
              "SkipIfFoundAfterOpenToken": [
                ";",
                "FUNCTION",
                "PROCEDURE"
              ]
            }
          },
          {
            "OpenToken": "RECORD",
            "CloseToken": "END"
          },
          {
            "OpenToken": "INTERFACE",
            "CloseToken": "IMPLEMENTATION",
            "Properties": {
              "OpenTokenBeginningOfLine": true,
              "TokenEndIsPreviousLine": true,
              "ShowGuideLine": false
            }
          },
          {
            "OpenToken": "INTERFACE",
            "CloseToken": "END",
            "Properties": {
              "NoSubs": true,
              "ShowGuideLine": false,
              "SkipIfFoundAfterOpenToken": [
                ";"
              ]
            }
          },
          {
            "OpenToken": "IMPLEMENTATION",
            "CloseToken": "END.",
            "Properties": {
              "OpenTokenBeginningOfLine": true,
              "OpenIsClose": true,
              "SharedClose": true,
              "ShowGuideLine": false
            }
          },
          {
            "OpenToken": "UNIT",
            "CloseToken": "END.",
            "Properties": {
              "ShowGuideLine": false,
              "OpenTokenBeginningOfLine": true,
              "SharedClose": true
            }
          },
          {
            "OpenToken": "PROGRAM",
            "CloseToken": "END.",
            "Properties": {
              "ShowGuideLine": false,
              "OpenTokenBeginningOfLine": true,
              "SharedClose": true
            }
          },
          {
            "OpenToken": "$REGION",
            "CloseToken": "$ENDREGION",
            "Properties": {
              "OpenTokenEnd": "}",
              "ShowGuideLine": false,
              "BeginWithBreakChar": true
            }
          }
        ]
      }
    ]
  },
  "MatchingPair": {
    "Pairs": [
      {
        "OpenToken": "(",
        "CloseToken": ")"
      },
      {
        "OpenToken": "[",
        "CloseToken": "]"
      },
      {
        "OpenToken": "{",
        "CloseToken": "}"
      },
      {
        "OpenToken": "'",
        "CloseToken": "'"
      },
      {
        "OpenToken": "\"",
        "CloseToken": "\""
      },
      {
        "OpenToken": "for",
        "CloseToken": "do"
      },
      {
        "OpenToken": "repeat",
        "CloseToken": "until"
      },
      {
        "OpenToken": "while",
        "CloseToken": "do"
      },
      {
        "OpenToken": "if",
        "CloseToken": "then"
      }
    ]
  },
  "CompletionProposal": {
    "SkipRegion": [
      {
        "OpenToken": "'",
        "CloseToken": "'",
        "RegionType": "SingleLineString"
      },
      {
        "OpenToken": "//",
        "RegionType": "SingleLine"
      },
      {
        "OpenToken": "{$",
        "CloseToken": "}",
        "RegionType": "MultiLine"
      },
      {
        "OpenToken": "{",
        "CloseToken": "}",
        "RegionType": "MultiLine"
      },
      {
        "OpenToken": "(*",
        "CloseToken": "*)",
        "RegionType": "MultiLine"
      }
    ]
  }
}
