php top-level property

Language php
final

Implementation

final php = Language(
  id: "php",
  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: [
            ModeReference('~contains~0~contains~0~contains~1'),
            ModeReference('~contains~7'),
            ModeReference('~contains~0~contains~0~contains~2'),
            C_BLOCK_COMMENT_MODE,
            ModeReference('~contains~0~contains~0~contains~4'),
            ModeReference('~contains~0~contains~0~contains~5'),
            ModeReference('~contains~0~contains~0~contains~6'),
            ModeReference('~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,
            ModeReference(
                '~contains~0~contains~0~contains~4~variants~0~contains~1'),
          ],
        ),
        Mode(
          scope: "string",
          begin: "'",
          end: "'",
          illegal: null,
          contains: [
            BACKSLASH_ESCAPE,
          ],
        ),
        Mode(
          begin: "<<<[ \\t]*(?:(\\w+)|\"(\\w+)\")\\n",
          end: "[ \\t]*(\\w+)\\b",
          contains: [
            BACKSLASH_ESCAPE,
            ModeReference(
                '~contains~0~contains~0~contains~4~variants~0~contains~1'),
          ],
          onBegin:
              language_undefined_contains_0_contains_0_contains_0_variants_0_onBegin,
          onEnd: endSameAsBeginOnEnd,
        ),
        Mode(
          begin: "<<<[ \\t]*'(\\w+)'\\n",
          end: "[ \\t]*(\\w+)\\b",
          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: [
            ModeSelfReference(),
            ModeReference('~contains~0~contains~0~contains~1'),
            ModeReference('~contains~0~contains~0~contains~2'),
            C_BLOCK_COMMENT_MODE,
            ModeReference('~contains~0~contains~0~contains~4'),
            ModeReference('~contains~0~contains~0~contains~5'),
            ModeReference('~contains~0~contains~0~contains~6'),
          ],
        ),
        ModeReference('~contains~0~contains~0~contains~1'),
        ModeReference('~contains~0~contains~0~contains~2'),
        C_BLOCK_COMMENT_MODE,
        ModeReference('~contains~0~contains~0~contains~4'),
        ModeReference('~contains~0~contains~0~contains~5'),
        ModeReference('~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",
    ),
    ModeReference('~contains~7'),
    ModeReference('~contains~8'),
    ModeReference('~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"},
    ),
    ModeReference('~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: [
            ModeSelfReference(),
            ModeReference('~contains~7'),
            ModeReference('~contains~0~contains~0~contains~2'),
            C_BLOCK_COMMENT_MODE,
            ModeReference('~contains~0~contains~0~contains~4'),
            ModeReference('~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,
      ],
    ),
    ModeReference('~contains~0~contains~0~contains~4'),
    ModeReference('~contains~0~contains~0~contains~5'),
  ],
);