php top-level property

Mode php
final

Implementation

final php = Mode(
    refs: {
      '~contains~8': Mode(relevance: 0, match: [
        "\\b",
        "(?!fn\\b|function\\b|__CLASS__\\b|__DIR__\\b|__FILE__\\b|__FUNCTION__\\b|__COMPILER_HALT_OFFSET__\\b|__LINE__\\b|__METHOD__\\b|__NAMESPACE__\\b|__TRAIT__\\b|die\\b|echo\\b|exit\\b|include\\b|include_once\\b|print\\b|require\\b|require_once\\b|array\\b|abstract\\b|and\\b|as\\b|binary\\b|bool\\b|boolean\\b|break\\b|callable\\b|case\\b|catch\\b|class\\b|clone\\b|const\\b|continue\\b|declare\\b|default\\b|do\\b|double\\b|else\\b|elseif\\b|empty\\b|enddeclare\\b|endfor\\b|endforeach\\b|endif\\b|endswitch\\b|endwhile\\b|enum\\b|eval\\b|extends\\b|final\\b|finally\\b|float\\b|for\\b|foreach\\b|from\\b|global\\b|goto\\b|if\\b|implements\\b|instanceof\\b|insteadof\\b|int\\b|integer\\b|interface\\b|isset\\b|iterable\\b|list\\b|match\\b|mixed\\b|new\\b|never\\b|object\\b|or\\b|private\\b|protected\\b|public\\b|readonly\\b|real\\b|return\\b|string\\b|switch\\b|throw\\b|trait\\b|try\\b|unset\\b|use\\b|var\\b|void\\b|while\\b|xor\\b|yield|Error\\b|AppendIterator\\b|ArgumentCountError\\b|ArithmeticError\\b|ArrayIterator\\b|ArrayObject\\b|AssertionError\\b|BadFunctionCallException\\b|BadMethodCallException\\b|CachingIterator\\b|CallbackFilterIterator\\b|CompileError\\b|Countable\\b|DirectoryIterator\\b|DivisionByZeroError\\b|DomainException\\b|EmptyIterator\\b|ErrorException\\b|Exception\\b|FilesystemIterator\\b|FilterIterator\\b|GlobIterator\\b|InfiniteIterator\\b|InvalidArgumentException\\b|IteratorIterator\\b|LengthException\\b|LimitIterator\\b|LogicException\\b|MultipleIterator\\b|NoRewindIterator\\b|OutOfBoundsException\\b|OutOfRangeException\\b|OuterIterator\\b|OverflowException\\b|ParentIterator\\b|ParseError\\b|RangeException\\b|RecursiveArrayIterator\\b|RecursiveCachingIterator\\b|RecursiveCallbackFilterIterator\\b|RecursiveDirectoryIterator\\b|RecursiveFilterIterator\\b|RecursiveIterator\\b|RecursiveIteratorIterator\\b|RecursiveRegexIterator\\b|RecursiveTreeIterator\\b|RegexIterator\\b|RuntimeException\\b|SeekableIterator\\b|SplDoublyLinkedList\\b|SplFileInfo\\b|SplFileObject\\b|SplFixedArray\\b|SplHeap\\b|SplMaxHeap\\b|SplMinHeap\\b|SplObjectStorage\\b|SplObserver\\b|SplPriorityQueue\\b|SplQueue\\b|SplStack\\b|SplSubject\\b|SplTempFileObject\\b|TypeError\\b|UnderflowException\\b|UnexpectedValueException\\b|UnhandledMatchError\\b|ArrayAccess\\b|BackedEnum\\b|Closure\\b|Fiber\\b|Generator\\b|Iterator\\b|IteratorAggregate\\b|Serializable\\b|Stringable\\b|Throwable\\b|Traversable\\b|UnitEnum\\b|WeakReference\\b|WeakMap\\b|Directory\\b|__PHP_Incomplete_Class\\b|parent\\b|php_user_filter\\b|self\\b|static\\b|stdClass\\b)",
        "[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(?![A-Za-z0-9])(?![\$])",
        "[ \t\n]*",
        "(?=(?=\\())"
      ], scope: {
        "3": "title.function.invoke"
      }, contains: [
        Mode(relevance: 0, begin: "\\(", end: "\\)", keywords: {
          "keyword": [
            "__CLASS__",
            "__DIR__",
            "__FILE__",
            "__FUNCTION__",
            "__COMPILER_HALT_OFFSET__",
            "__LINE__",
            "__METHOD__",
            "__NAMESPACE__",
            "__TRAIT__",
            "die",
            "echo",
            "exit",
            "include",
            "include_once",
            "print",
            "require",
            "require_once",
            "array",
            "abstract",
            "and",
            "as",
            "binary",
            "bool",
            "boolean",
            "break",
            "callable",
            "case",
            "catch",
            "class",
            "clone",
            "const",
            "continue",
            "declare",
            "default",
            "do",
            "double",
            "else",
            "elseif",
            "empty",
            "enddeclare",
            "endfor",
            "endforeach",
            "endif",
            "endswitch",
            "endwhile",
            "enum",
            "eval",
            "extends",
            "final",
            "finally",
            "float",
            "for",
            "foreach",
            "from",
            "global",
            "goto",
            "if",
            "implements",
            "instanceof",
            "insteadof",
            "int",
            "integer",
            "interface",
            "isset",
            "iterable",
            "list",
            "match|0",
            "mixed",
            "new",
            "never",
            "object",
            "or",
            "private",
            "protected",
            "public",
            "readonly",
            "real",
            "return",
            "string",
            "switch",
            "throw",
            "trait",
            "try",
            "unset",
            "use",
            "var",
            "void",
            "while",
            "xor",
            "yield"
          ],
          "literal": ["false", "FALSE", "null", "NULL", "true", "TRUE"],
          "built_in": [
            "Error|0",
            "AppendIterator",
            "ArgumentCountError",
            "ArithmeticError",
            "ArrayIterator",
            "ArrayObject",
            "AssertionError",
            "BadFunctionCallException",
            "BadMethodCallException",
            "CachingIterator",
            "CallbackFilterIterator",
            "CompileError",
            "Countable",
            "DirectoryIterator",
            "DivisionByZeroError",
            "DomainException",
            "EmptyIterator",
            "ErrorException",
            "Exception",
            "FilesystemIterator",
            "FilterIterator",
            "GlobIterator",
            "InfiniteIterator",
            "InvalidArgumentException",
            "IteratorIterator",
            "LengthException",
            "LimitIterator",
            "LogicException",
            "MultipleIterator",
            "NoRewindIterator",
            "OutOfBoundsException",
            "OutOfRangeException",
            "OuterIterator",
            "OverflowException",
            "ParentIterator",
            "ParseError",
            "RangeException",
            "RecursiveArrayIterator",
            "RecursiveCachingIterator",
            "RecursiveCallbackFilterIterator",
            "RecursiveDirectoryIterator",
            "RecursiveFilterIterator",
            "RecursiveIterator",
            "RecursiveIteratorIterator",
            "RecursiveRegexIterator",
            "RecursiveTreeIterator",
            "RegexIterator",
            "RuntimeException",
            "SeekableIterator",
            "SplDoublyLinkedList",
            "SplFileInfo",
            "SplFileObject",
            "SplFixedArray",
            "SplHeap",
            "SplMaxHeap",
            "SplMinHeap",
            "SplObjectStorage",
            "SplObserver",
            "SplPriorityQueue",
            "SplQueue",
            "SplStack",
            "SplSubject",
            "SplTempFileObject",
            "TypeError",
            "UnderflowException",
            "UnexpectedValueException",
            "UnhandledMatchError",
            "ArrayAccess",
            "BackedEnum",
            "Closure",
            "Fiber",
            "Generator",
            "Iterator",
            "IteratorAggregate",
            "Serializable",
            "Stringable",
            "Throwable",
            "Traversable",
            "UnitEnum",
            "WeakReference",
            "WeakMap",
            "Directory",
            "__PHP_Incomplete_Class",
            "parent",
            "php_user_filter",
            "self",
            "static",
            "stdClass"
          ]
        }, contains: [
          Mode(ref: '~contains~0~contains~0~contains~1'),
          Mode(ref: '~contains~7'),
          Mode(ref: '~contains~0~contains~0~contains~2'),
          C_BLOCK_COMMENT_MODE,
          Mode(ref: '~contains~0~contains~0~contains~4'),
          Mode(ref: '~contains~0~contains~0~contains~5'),
          Mode(ref: '~contains~0~contains~0~contains~6'),
          Mode(ref: '~contains~8')
        ])
      ]),
      '~contains~7': Mode(
          scope: "variable",
          match:
              "\\\$+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(?![A-Za-z0-9])(?![\$])"),
      '~contains~0~contains~0~contains~6': Mode(variants: [
        Mode(match: [
          "new",
          "[ \t\n]+",
          "(?!Error\\b|AppendIterator\\b|ArgumentCountError\\b|ArithmeticError\\b|ArrayIterator\\b|ArrayObject\\b|AssertionError\\b|BadFunctionCallException\\b|BadMethodCallException\\b|CachingIterator\\b|CallbackFilterIterator\\b|CompileError\\b|Countable\\b|DirectoryIterator\\b|DivisionByZeroError\\b|DomainException\\b|EmptyIterator\\b|ErrorException\\b|Exception\\b|FilesystemIterator\\b|FilterIterator\\b|GlobIterator\\b|InfiniteIterator\\b|InvalidArgumentException\\b|IteratorIterator\\b|LengthException\\b|LimitIterator\\b|LogicException\\b|MultipleIterator\\b|NoRewindIterator\\b|OutOfBoundsException\\b|OutOfRangeException\\b|OuterIterator\\b|OverflowException\\b|ParentIterator\\b|ParseError\\b|RangeException\\b|RecursiveArrayIterator\\b|RecursiveCachingIterator\\b|RecursiveCallbackFilterIterator\\b|RecursiveDirectoryIterator\\b|RecursiveFilterIterator\\b|RecursiveIterator\\b|RecursiveIteratorIterator\\b|RecursiveRegexIterator\\b|RecursiveTreeIterator\\b|RegexIterator\\b|RuntimeException\\b|SeekableIterator\\b|SplDoublyLinkedList\\b|SplFileInfo\\b|SplFileObject\\b|SplFixedArray\\b|SplHeap\\b|SplMaxHeap\\b|SplMinHeap\\b|SplObjectStorage\\b|SplObserver\\b|SplPriorityQueue\\b|SplQueue\\b|SplStack\\b|SplSubject\\b|SplTempFileObject\\b|TypeError\\b|UnderflowException\\b|UnexpectedValueException\\b|UnhandledMatchError\\b|ArrayAccess\\b|BackedEnum\\b|Closure\\b|Fiber\\b|Generator\\b|Iterator\\b|IteratorAggregate\\b|Serializable\\b|Stringable\\b|Throwable\\b|Traversable\\b|UnitEnum\\b|WeakReference\\b|WeakMap\\b|Directory\\b|__PHP_Incomplete_Class\\b|parent\\b|php_user_filter\\b|self\\b|static\\b|stdClass\\b)",
          "(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}(?![A-Za-z0-9])(?![\$])"
        ], scope: {
          "1": "keyword",
          "4": "title.class"
        })
      ]),
      '~contains~0~contains~0~contains~5': Mode(
          scope: "number",
          variants: [
            Mode(begin: "\\b0[bB][01]+(?:_[01]+)*\\b"),
            Mode(begin: "\\b0[oO][0-7]+(?:_[0-7]+)*\\b"),
            Mode(begin: "\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"),
            Mode(
                begin:
                    "(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?")
          ],
          relevance: 0),
      '~contains~0~contains~0~contains~4~variants~0~contains~1': Mode(
          scope: "subst",
          variants: [
            Mode(begin: "\\\$\\w+"),
            Mode(begin: "\\{\\\$", end: "\\}")
          ]),
      '~contains~0~contains~0~contains~4': Mode(scope: "string", variants: [
        Mode(scope: "string", begin: "\"", end: "\"", illegal: null, contains: [
          BACKSLASH_ESCAPE,
          Mode(ref: '~contains~0~contains~0~contains~4~variants~0~contains~1')
        ]),
        Mode(
            scope: "string",
            begin: "'",
            end: "'",
            illegal: null,
            contains: [BACKSLASH_ESCAPE]),
        Mode(
            begin: "<<<[ \\t]*(\\w+)\\n",
            end: "[ \\t]*(\\w+)\\b",
            contains: [
              BACKSLASH_ESCAPE,
              Mode(
                  ref:
                      '~contains~0~contains~0~contains~4~variants~0~contains~1')
            ],
            onBegin: endSameAsBeginOnBegin,
            onEnd: endSameAsBeginOnEnd)
      ]),
      '~contains~0~contains~0~contains~2': Mode(variants: [
        Mode(match: [
          "::(?=(?!class\\b))",
          "[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(?![A-Za-z0-9])(?![\$])\\b(?!\\()"
        ], scope: {
          "2": "variable.constant"
        }),
        Mode(match: ["::", "class"], scope: {"2": "variable.language"}),
        Mode(match: [
          "(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}(?![A-Za-z0-9])(?![\$])",
          "::(?=(?!class\\b))",
          "[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(?![A-Za-z0-9])(?![\$])\\b(?!\\()"
        ], scope: {
          "1": "title.class",
          "3": "variable.constant"
        }),
        Mode(match: [
          "(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}(?![A-Za-z0-9])(?![\$])",
          "::(?=(?!class\\b))"
        ], scope: {
          "1": "title.class"
        }),
        Mode(match: [
          "(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}(?![A-Za-z0-9])(?![\$])",
          "::",
          "class"
        ], scope: {
          "1": "title.class",
          "3": "variable.language"
        })
      ]),
      '~contains~0~contains~0~contains~1': Mode(
          scope: "attr",
          match:
              "[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(?![A-Za-z0-9])(?![\$])(?=:)(?=(?!::))"),
    },
    case_insensitive: false,
    keywords: {
      "keyword": [
        "__CLASS__",
        "__DIR__",
        "__FILE__",
        "__FUNCTION__",
        "__COMPILER_HALT_OFFSET__",
        "__LINE__",
        "__METHOD__",
        "__NAMESPACE__",
        "__TRAIT__",
        "die",
        "echo",
        "exit",
        "include",
        "include_once",
        "print",
        "require",
        "require_once",
        "array",
        "abstract",
        "and",
        "as",
        "binary",
        "bool",
        "boolean",
        "break",
        "callable",
        "case",
        "catch",
        "class",
        "clone",
        "const",
        "continue",
        "declare",
        "default",
        "do",
        "double",
        "else",
        "elseif",
        "empty",
        "enddeclare",
        "endfor",
        "endforeach",
        "endif",
        "endswitch",
        "endwhile",
        "enum",
        "eval",
        "extends",
        "final",
        "finally",
        "float",
        "for",
        "foreach",
        "from",
        "global",
        "goto",
        "if",
        "implements",
        "instanceof",
        "insteadof",
        "int",
        "integer",
        "interface",
        "isset",
        "iterable",
        "list",
        "match|0",
        "mixed",
        "new",
        "never",
        "object",
        "or",
        "private",
        "protected",
        "public",
        "readonly",
        "real",
        "return",
        "string",
        "switch",
        "throw",
        "trait",
        "try",
        "unset",
        "use",
        "var",
        "void",
        "while",
        "xor",
        "yield"
      ],
      "literal": ["false", "FALSE", "null", "NULL", "true", "TRUE"],
      "built_in": [
        "Error|0",
        "AppendIterator",
        "ArgumentCountError",
        "ArithmeticError",
        "ArrayIterator",
        "ArrayObject",
        "AssertionError",
        "BadFunctionCallException",
        "BadMethodCallException",
        "CachingIterator",
        "CallbackFilterIterator",
        "CompileError",
        "Countable",
        "DirectoryIterator",
        "DivisionByZeroError",
        "DomainException",
        "EmptyIterator",
        "ErrorException",
        "Exception",
        "FilesystemIterator",
        "FilterIterator",
        "GlobIterator",
        "InfiniteIterator",
        "InvalidArgumentException",
        "IteratorIterator",
        "LengthException",
        "LimitIterator",
        "LogicException",
        "MultipleIterator",
        "NoRewindIterator",
        "OutOfBoundsException",
        "OutOfRangeException",
        "OuterIterator",
        "OverflowException",
        "ParentIterator",
        "ParseError",
        "RangeException",
        "RecursiveArrayIterator",
        "RecursiveCachingIterator",
        "RecursiveCallbackFilterIterator",
        "RecursiveDirectoryIterator",
        "RecursiveFilterIterator",
        "RecursiveIterator",
        "RecursiveIteratorIterator",
        "RecursiveRegexIterator",
        "RecursiveTreeIterator",
        "RegexIterator",
        "RuntimeException",
        "SeekableIterator",
        "SplDoublyLinkedList",
        "SplFileInfo",
        "SplFileObject",
        "SplFixedArray",
        "SplHeap",
        "SplMaxHeap",
        "SplMinHeap",
        "SplObjectStorage",
        "SplObserver",
        "SplPriorityQueue",
        "SplQueue",
        "SplStack",
        "SplSubject",
        "SplTempFileObject",
        "TypeError",
        "UnderflowException",
        "UnexpectedValueException",
        "UnhandledMatchError",
        "ArrayAccess",
        "BackedEnum",
        "Closure",
        "Fiber",
        "Generator",
        "Iterator",
        "IteratorAggregate",
        "Serializable",
        "Stringable",
        "Throwable",
        "Traversable",
        "UnitEnum",
        "WeakReference",
        "WeakMap",
        "Directory",
        "__PHP_Incomplete_Class",
        "parent",
        "php_user_filter",
        "self",
        "static",
        "stdClass"
      ]
    },
    contains: [
      Mode(
          begin:
              "#\\[\\s*(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}(?![A-Za-z0-9])(?![\$])",
          beginScope: "meta",
          end: "]",
          endScope: "meta",
          keywords: {
            "literal": ["false", "null", "true"],
            "keyword": ["new", "array"]
          },
          contains: [
            Mode(begin: "\\[", end: "]", keywords: {
              "literal": ["false", "null", "true"],
              "keyword": ["new", "array"]
            }, contains: [
              Mode(self: true),
              Mode(ref: '~contains~0~contains~0~contains~1'),
              Mode(ref: '~contains~0~contains~0~contains~2'),
              C_BLOCK_COMMENT_MODE,
              Mode(ref: '~contains~0~contains~0~contains~4'),
              Mode(ref: '~contains~0~contains~0~contains~5'),
              Mode(ref: '~contains~0~contains~0~contains~6')
            ]),
            Mode(ref: '~contains~0~contains~0~contains~1'),
            Mode(ref: '~contains~0~contains~0~contains~2'),
            C_BLOCK_COMMENT_MODE,
            Mode(ref: '~contains~0~contains~0~contains~4'),
            Mode(ref: '~contains~0~contains~0~contains~5'),
            Mode(ref: '~contains~0~contains~0~contains~6'),
            Mode(
                scope: "meta",
                match:
                    "(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}(?![A-Za-z0-9])(?![\$])")
          ]),
      HASH_COMMENT_MODE,
      Mode(scope: "comment", begin: "//", end: "\$", contains: [
        Mode(
            scope: "doctag",
            begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
            end: "(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",
            excludeBegin: true,
            relevance: 0),
        Mode(
            begin:
                "[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}")
      ]),
      Mode(scope: "comment", begin: "/\\*", end: "\\*/", contains: [
        Mode(scope: "doctag", match: "@[A-Za-z]+"),
        Mode(
            scope: "doctag",
            begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
            end: "(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",
            excludeBegin: true,
            relevance: 0),
        Mode(
            begin:
                "[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}")
      ]),
      Mode(
          match: "__halt_compiler\\(\\);",
          keywords: "__halt_compiler",
          starts: Mode(scope: "comment", end: "\\b\\B", contains: [
            Mode(match: "\\?>", scope: "meta", endsParent: true)
          ])),
      Mode(scope: "meta", variants: [
        Mode(begin: "<\\?php", relevance: 10),
        Mode(begin: "<\\?="),
        Mode(begin: "<\\?", relevance: 0.1),
        Mode(begin: "\\?>")
      ]),
      Mode(scope: "variable.language", match: "\\\$this\\b"),
      Mode(ref: '~contains~7'),
      Mode(ref: '~contains~8'),
      Mode(ref: '~contains~0~contains~0~contains~2'),
      Mode(match: [
        "const",
        "\\s",
        "[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(?![A-Za-z0-9])(?![\$])"
      ], scope: {
        "1": "keyword",
        "3": "variable.constant"
      }),
      Mode(ref: '~contains~0~contains~0~contains~6'),
      Mode(
          scope: "function",
          relevance: 0,
          beginKeywords: "fn function",
          end: "[;{]",
          excludeEnd: true,
          illegal: "[\$%\\[]",
          contains: [
            Mode(beginKeywords: "use"),
            UNDERSCORE_TITLE_MODE,
            Mode(begin: "=>", endsParent: true),
            Mode(
                scope: "params",
                begin: "\\(",
                end: "\\)",
                excludeBegin: true,
                excludeEnd: true,
                keywords: {
                  "keyword": [
                    "__CLASS__",
                    "__DIR__",
                    "__FILE__",
                    "__FUNCTION__",
                    "__COMPILER_HALT_OFFSET__",
                    "__LINE__",
                    "__METHOD__",
                    "__NAMESPACE__",
                    "__TRAIT__",
                    "die",
                    "echo",
                    "exit",
                    "include",
                    "include_once",
                    "print",
                    "require",
                    "require_once",
                    "array",
                    "abstract",
                    "and",
                    "as",
                    "binary",
                    "bool",
                    "boolean",
                    "break",
                    "callable",
                    "case",
                    "catch",
                    "class",
                    "clone",
                    "const",
                    "continue",
                    "declare",
                    "default",
                    "do",
                    "double",
                    "else",
                    "elseif",
                    "empty",
                    "enddeclare",
                    "endfor",
                    "endforeach",
                    "endif",
                    "endswitch",
                    "endwhile",
                    "enum",
                    "eval",
                    "extends",
                    "final",
                    "finally",
                    "float",
                    "for",
                    "foreach",
                    "from",
                    "global",
                    "goto",
                    "if",
                    "implements",
                    "instanceof",
                    "insteadof",
                    "int",
                    "integer",
                    "interface",
                    "isset",
                    "iterable",
                    "list",
                    "match|0",
                    "mixed",
                    "new",
                    "never",
                    "object",
                    "or",
                    "private",
                    "protected",
                    "public",
                    "readonly",
                    "real",
                    "return",
                    "string",
                    "switch",
                    "throw",
                    "trait",
                    "try",
                    "unset",
                    "use",
                    "var",
                    "void",
                    "while",
                    "xor",
                    "yield"
                  ],
                  "literal": ["false", "FALSE", "null", "NULL", "true", "TRUE"],
                  "built_in": [
                    "Error|0",
                    "AppendIterator",
                    "ArgumentCountError",
                    "ArithmeticError",
                    "ArrayIterator",
                    "ArrayObject",
                    "AssertionError",
                    "BadFunctionCallException",
                    "BadMethodCallException",
                    "CachingIterator",
                    "CallbackFilterIterator",
                    "CompileError",
                    "Countable",
                    "DirectoryIterator",
                    "DivisionByZeroError",
                    "DomainException",
                    "EmptyIterator",
                    "ErrorException",
                    "Exception",
                    "FilesystemIterator",
                    "FilterIterator",
                    "GlobIterator",
                    "InfiniteIterator",
                    "InvalidArgumentException",
                    "IteratorIterator",
                    "LengthException",
                    "LimitIterator",
                    "LogicException",
                    "MultipleIterator",
                    "NoRewindIterator",
                    "OutOfBoundsException",
                    "OutOfRangeException",
                    "OuterIterator",
                    "OverflowException",
                    "ParentIterator",
                    "ParseError",
                    "RangeException",
                    "RecursiveArrayIterator",
                    "RecursiveCachingIterator",
                    "RecursiveCallbackFilterIterator",
                    "RecursiveDirectoryIterator",
                    "RecursiveFilterIterator",
                    "RecursiveIterator",
                    "RecursiveIteratorIterator",
                    "RecursiveRegexIterator",
                    "RecursiveTreeIterator",
                    "RegexIterator",
                    "RuntimeException",
                    "SeekableIterator",
                    "SplDoublyLinkedList",
                    "SplFileInfo",
                    "SplFileObject",
                    "SplFixedArray",
                    "SplHeap",
                    "SplMaxHeap",
                    "SplMinHeap",
                    "SplObjectStorage",
                    "SplObserver",
                    "SplPriorityQueue",
                    "SplQueue",
                    "SplStack",
                    "SplSubject",
                    "SplTempFileObject",
                    "TypeError",
                    "UnderflowException",
                    "UnexpectedValueException",
                    "UnhandledMatchError",
                    "ArrayAccess",
                    "BackedEnum",
                    "Closure",
                    "Fiber",
                    "Generator",
                    "Iterator",
                    "IteratorAggregate",
                    "Serializable",
                    "Stringable",
                    "Throwable",
                    "Traversable",
                    "UnitEnum",
                    "WeakReference",
                    "WeakMap",
                    "Directory",
                    "__PHP_Incomplete_Class",
                    "parent",
                    "php_user_filter",
                    "self",
                    "static",
                    "stdClass"
                  ]
                },
                contains: [
                  Mode(self: true),
                  Mode(ref: '~contains~7'),
                  Mode(ref: '~contains~0~contains~0~contains~2'),
                  C_BLOCK_COMMENT_MODE,
                  Mode(ref: '~contains~0~contains~0~contains~4'),
                  Mode(ref: '~contains~0~contains~0~contains~5')
                ])
          ]),
      Mode(
          scope: "class",
          variants: [
            Mode(beginKeywords: "enum", illegal: "[(\$\"]"),
            Mode(beginKeywords: "class interface trait", illegal: "[:(\$\"]")
          ],
          relevance: 0,
          end: "\\{",
          excludeEnd: true,
          contains: [
            Mode(beginKeywords: "extends implements"),
            UNDERSCORE_TITLE_MODE
          ]),
      Mode(
          beginKeywords: "namespace",
          relevance: 0,
          end: ";",
          illegal: "[.']",
          contains: [
            Mode(scope: "title.class", begin: "[a-zA-Z_]\\w*", relevance: 0)
          ]),
      Mode(beginKeywords: "use", relevance: 0, end: ";", contains: [
        Mode(match: "\\b(as|const|function)\\b", scope: "keyword"),
        UNDERSCORE_TITLE_MODE
      ]),
      Mode(ref: '~contains~0~contains~0~contains~4'),
      Mode(ref: '~contains~0~contains~0~contains~5')
    ]);