/usr/share/highlight/langDefs/php.lang is in highlight-common 3.41-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | Description="PHP"
Keywords={
{ Id=1,
List={"abstract", "and", "array", "as", "break", "case",
"catch", "cfunction", "class", "clone", "const",
"continue", "declare", "default", "do", "else", "elseif",
"enddeclare", "endfor", "endforeach", "endif", "endswitch",
"endwhile", "extends", "final", "for", "foreach",
"function", "global", "goto", "if", "implements",
"interface", "instanceof", "namespace", "new",
"old_function", "or", "private", "protected", "public",
"static", "switch", "throw", "try", "use", "var", "while",
"xor", "__CLASS__", "__DIR__", "__LINE__", "__FILE__",
"__FUNCTION__", "__TRAIT__", "__METHOD__", "__NAMESPACE__",
"die", "echo", "empty", "exit", "eval", "include",
"include_once", "isset", "list", "require", "require_once",
"return", "print", "unset", "true", "false", "null", "resource"
},
},
{ Id=2,
List={"int", "integer", "real", "double", "float", "string", "array", "object", "bool", "mixed", "numeric"},
},
{ Id=3,
Regex=[[\$\w+]],
},
{ Id=4,
Regex=[[(\w+)\s*\(]],
},
}
-- hereDoc opening delimiter, see OnStateChange to handle end of string
Strings={
Delimiter=[["|'|<<<'?\w+'?]],
--Interpolation=[[ \$[\w\[\]\->]+ ]],
Interpolation=[[ [@\$%]\w+ ]]
}
IgnoreCase=true
Comments={
{ Block=false,
Delimiter= { [[\/\/|\#]] },
},
{ Block=true,
Nested=false,
Delimiter= { [[\/\*]],[[\*\/]],}
}
}
Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\|\+|\-|\.|\@]]
function OnStateChange(oldState, newState, token)
if oldState==HL_STRING and token==hereDoc then
hereDoc = nil
return HL_STRING_END
end
if (string.sub(token,1,1) =="$") and oldState==HL_STRING and newState==HL_KEYWORD then
return HL_INTERPOLATION
end
if hereDoc~=nil then
return HL_STRING
end
--recognize hereDoc multine strings
if oldState==HL_STANDARD and newState==HL_STRING and not string.find("\"'", token) then
hereDoc = string.match(token, "<<<'?(%a+)" )
end
if oldState~=HL_STRING and newState==HL_ESC_SEQ then
return oldState
end
return newState
end
|