# JOE syntax highlight file for PHP # TODO: # * heredoc support (as good as possible) # * highlight function and class names? # * asp tag (<%...%>) support # * support # * recursive backticks: # $a = Array('x' => 'y', 'y' => 'works'); print `echo ${a[`echo -n ${a['x']}`]}`; # (supported to a few recursions) # Define no. sync lines # You can say: # -200 means 200 lines # - means always start parsing from beginning of file when we lose sync # if nothing is specified, the default is -50 -3000 # Define colors =HTML bold white =Mystery bold yellow bg_red bg_reg inverse =TransitionPHPshort bold magenta =TransitionPHPlong bold magenta =TransitionHTML bold magenta =TransitionEchoPart1 bold magenta =TransitionEchoPart2 bold white =ShComment bold black =SlashComment red =CComment bold red =Numeric cyan =InvalidNumber red =VarName white # Automatically generated string colour block =String1 bold blue # "'" =String1Content cyan # anything inside String1 =String2 bold blue # "\"" =String2Content cyan # anything inside String2 =String2Var bold cyan # var inside String2 =String2VarS1 bold white # "'" within var inside String2 =String2VarS2 bold white # "\"" within var inside String2 =String2VarSH bold white # "`" within var inside String2 =Shellcmd yellow # "`" =ShellcmdContent yellow # anything inside Shellcmd =ShellcmdVar bold yellow # var inside Shellcmd =ShellcmdVarS1 bold white # "'" within var inside Shellcmd =ShellcmdVarS2 bold white # "\"" within var inside Shellcmd =ShellcmdVarSH bold white # "`" within var inside Shellcmd # Ends =Special green =Special2 bold green =Special3 cyan =Background =ConstName white =Keyword bold white =MagicVar white :html HTML * html "<" html_lt :html_lt HTML * html "?" trans_PHP recolor=-2 :trans_PHP TransitionPHPshort * idle noeat recolor=-1 "p" maybe_php_tag_1 buffer # "*%" special1 recolor=-1 "|&!~" special1 recolor=-1 "();:?" special1 recolor=-1 "[]{}," special2 recolor=-1 "@" special3 recolor=-1 "?" idle_qmark recolor=-1 "#" sh_comment recolor=-1 "/" slash recolor=-1 "0" first_digit_0 recolor=-1 "1-9" first_digit recolor=-1 "." period recolor=-1 "'" string1begin recolor=-1 noeat "\"" string2begin recolor=-1 noeat "`" shellcmdbegin recolor=-1 noeat "a-zA-Z_€-ÿ" ident recolor=-1 buffer "$" varname recolor=-1 buffer # Delimiters :space Background * idle noeat recolor=-1 :special1 Special * idle noeat recolor=-1 :special2 Special2 * idle noeat recolor=-1 :special3 Special3 * idle noeat recolor=-1 :period String2 * idle noeat recolor=-1 "0-9" float recolor=-2 :slash Special * idle noeat recolor=-1 "*" c_comment recolor=-2 # "/*" "/" slash_comment recolor=-2 # "//" :idle_qmark Special * idle noeat recolor=-1 ">" trans_HTML recolor=-2 # "?>" # Comments :sh_comment ShComment * sh_comment "?" sh_qmark "\n" idle :sh_qmark ShComment * sh_comment noeat recolor=-1 "?" sh_qmark ">" trans_HTML recolor=-2 # "?>" :c_comment CComment * c_comment "*" maybe_end_c_comment :maybe_end_c_comment CComment * c_comment "/" idle "*" maybe_end_c_comment :slash_comment SlashComment * slash_comment "?" slash_qmark "\n" idle :slash_qmark SlashComment * slash_comment noeat recolor=-1 "?" slash_qmark ">" trans_HTML recolor=-2 # "?>" # Automatically generated string colour block :string1begin String1 * string1 :string1end String1 * idle :string1esc String1Content * string1 :string1 String1Content * string1 "'" string1end noeat recolor=-1 "\\" string1esc :string2begin String2 * string2 :string2end String2 * idle :string2esc String2Content * string2 :string2 String2Content * string2 "\"" string2end noeat recolor=-1 "\\" string2esc "$" string2_v1 recolor=-1 "{" string2_v2 recolor=-1 :string2_v1 String2Var * string2 noeat recolor=-2 "a-zA-Z_€-ÿ" string2_v "{" string2_v3 :string2_v String2Var * string2 noeat recolor=-1 "0-9a-zA-Z_€-ÿ" string2_v :string2_v2 String2Var * string2 noeat recolor=-2 "$" string2_v3 :string2_v_error Mystery * string2_v3 :string2_v3 String2Var * string2_v3 "}" string2 "\\" string2_v_error noeat recolor=-1 "'" string2_v_S1 recolor=-1 "\"" string2_v_S2 recolor=-1 "`" string2_v_SH recolor=-1 :string2_v_S1esc String2VarS1 * string2_v_S1 :string2_v_S1 String2VarS1 * string2_v_S1 "'" string2_v3 "\\" string2_v_S1esc :string2_v_S2esc String2VarS2 * string2_v_S2 :string2_v_S2 String2VarS2 * string2_v_S2 "\"" string2_v3 "\\" string2_v_S2esc "$" string2_v_S2_v1 recolor=-1 "{" string2_v_S2_v2 recolor=-1 :string2_v_S2_v1 String2VarS2 * string2_v_S2 noeat recolor=-2 "a-zA-Z_€-ÿ" string2_v_S2_v "{" string2_v_S2_v3 :string2_v_S2_v String2VarS2 * string2_v_S2 noeat recolor=-1 "0-9a-zA-Z_€-ÿ" string2_v_S2_v :string2_v_S2_v2 String2VarS2 * string2_v_S2 noeat recolor=-2 "$" string2_v_S2_v3 :string2_v_S2_v_error Mystery * string2_v_S2_v3 :string2_v_S2_v3 String2VarS2 * string2_v_S2_v3 "}" string2_v_S2 "\\" string2_v_S2_v_error noeat recolor=-1 "'" string2_v_S2_v_S1 "\"" string2_v_S2_v_S2 "`" string2_v_S2_v_SH :string2_v_S2_v_S1esc String2VarS2 * string2_v_S2_v_S1 :string2_v_S2_v_S1 String2VarS2 * string2_v_S2_v_S1 "'" string2_v_S2_v3 "\\" string2_v_S2_v_S1esc :string2_v_S2_v_S2esc String2VarS2 * string2_v_S2_v_S2 :string2_v_S2_v_S2 String2VarS2 * string2_v_S2_v_S2 "\"" string2_v_S2_v3 "\\" string2_v_S2_v_S2esc :string2_v_S2_v_SHesc String2VarS2 * string2_v_S2_v_SH :string2_v_S2_v_SH String2VarS2 * string2_v_S2_v_SH "`" string2_v_S2_v3 "\\" string2_v_S2_v_SHesc :string2_v_SHesc String2VarSH * string2_v_SH :string2_v_SH String2VarSH * string2_v_SH "`" string2_v3 "\\" string2_v_SHesc "$" string2_v_SH_v1 recolor=-1 "{" string2_v_SH_v2 recolor=-1 :string2_v_SH_v1 String2VarSH * string2_v_SH noeat recolor=-2 "a-zA-Z_€-ÿ" string2_v_SH_v "{" string2_v_SH_v3 :string2_v_SH_v String2VarSH * string2_v_SH noeat recolor=-1 "0-9a-zA-Z_€-ÿ" string2_v_SH_v :string2_v_SH_v2 String2VarSH * string2_v_SH noeat recolor=-2 "$" string2_v_SH_v3 :string2_v_SH_v_error Mystery * string2_v_SH_v3 :string2_v_SH_v3 String2VarSH * string2_v_SH_v3 "}" string2_v_SH "\\" string2_v_SH_v_error noeat recolor=-1 "'" string2_v_SH_v_S1 "\"" string2_v_SH_v_S2 "`" string2_v_SH_v_SH :string2_v_SH_v_S1esc String2VarSH * string2_v_SH_v_S1 :string2_v_SH_v_S1 String2VarSH * string2_v_SH_v_S1 "'" string2_v_SH_v3 "\\" string2_v_SH_v_S1esc :string2_v_SH_v_S2esc String2VarSH * string2_v_SH_v_S2 :string2_v_SH_v_S2 String2VarSH * string2_v_SH_v_S2 "\"" string2_v_SH_v3 "\\" string2_v_SH_v_S2esc :string2_v_SH_v_SHesc String2VarSH * string2_v_SH_v_SH :string2_v_SH_v_SH String2VarSH * string2_v_SH_v_SH "`" string2_v_SH_v3 "\\" string2_v_SH_v_SHesc :shellcmdbegin Shellcmd * shellcmd :shellcmdend Shellcmd * idle :shellcmdesc ShellcmdContent * shellcmd :shellcmd ShellcmdContent * shellcmd "`" shellcmdend noeat recolor=-1 "\\" shellcmdesc "$" shellcmd_v1 recolor=-1 "{" shellcmd_v2 recolor=-1 :shellcmd_v1 ShellcmdVar * shellcmd noeat recolor=-2 "a-zA-Z_€-ÿ" shellcmd_v "{" shellcmd_v3 :shellcmd_v ShellcmdVar * shellcmd noeat recolor=-1 "0-9a-zA-Z_€-ÿ" shellcmd_v :shellcmd_v2 ShellcmdVar * shellcmd noeat recolor=-2 "$" shellcmd_v3 :shellcmd_v_error Mystery * shellcmd_v3 :shellcmd_v3 ShellcmdVar * shellcmd_v3 "}" shellcmd "\\" shellcmd_v_error noeat recolor=-1 "'" shellcmd_v_S1 recolor=-1 "\"" shellcmd_v_S2 recolor=-1 "`" shellcmd_v_SH recolor=-1 :shellcmd_v_S1esc ShellcmdVarS1 * shellcmd_v_S1 :shellcmd_v_S1 ShellcmdVarS1 * shellcmd_v_S1 "'" shellcmd_v3 "\\" shellcmd_v_S1esc :shellcmd_v_S2esc ShellcmdVarS2 * shellcmd_v_S2 :shellcmd_v_S2 ShellcmdVarS2 * shellcmd_v_S2 "\"" shellcmd_v3 "\\" shellcmd_v_S2esc "$" shellcmd_v_S2_v1 recolor=-1 "{" shellcmd_v_S2_v2 recolor=-1 :shellcmd_v_S2_v1 ShellcmdVarS2 * shellcmd_v_S2 noeat recolor=-2 "a-zA-Z_€-ÿ" shellcmd_v_S2_v "{" shellcmd_v_S2_v3 :shellcmd_v_S2_v ShellcmdVarS2 * shellcmd_v_S2 noeat recolor=-1 "0-9a-zA-Z_€-ÿ" shellcmd_v_S2_v :shellcmd_v_S2_v2 ShellcmdVarS2 * shellcmd_v_S2 noeat recolor=-2 "$" shellcmd_v_S2_v3 :shellcmd_v_S2_v_error Mystery * shellcmd_v_S2_v3 :shellcmd_v_S2_v3 ShellcmdVarS2 * shellcmd_v_S2_v3 "}" shellcmd_v_S2 "\\" shellcmd_v_S2_v_error noeat recolor=-1 "'" shellcmd_v_S2_v_S1 "\"" shellcmd_v_S2_v_S2 "`" shellcmd_v_S2_v_SH :shellcmd_v_S2_v_S1esc ShellcmdVarS2 * shellcmd_v_S2_v_S1 :shellcmd_v_S2_v_S1 ShellcmdVarS2 * shellcmd_v_S2_v_S1 "'" shellcmd_v_S2_v3 "\\" shellcmd_v_S2_v_S1esc :shellcmd_v_S2_v_S2esc ShellcmdVarS2 * shellcmd_v_S2_v_S2 :shellcmd_v_S2_v_S2 ShellcmdVarS2 * shellcmd_v_S2_v_S2 "\"" shellcmd_v_S2_v3 "\\" shellcmd_v_S2_v_S2esc :shellcmd_v_S2_v_SHesc ShellcmdVarS2 * shellcmd_v_S2_v_SH :shellcmd_v_S2_v_SH ShellcmdVarS2 * shellcmd_v_S2_v_SH "`" shellcmd_v_S2_v3 "\\" shellcmd_v_S2_v_SHesc :shellcmd_v_SHesc ShellcmdVarSH * shellcmd_v_SH :shellcmd_v_SH ShellcmdVarSH * shellcmd_v_SH "`" shellcmd_v3 "\\" shellcmd_v_SHesc "$" shellcmd_v_SH_v1 recolor=-1 "{" shellcmd_v_SH_v2 recolor=-1 :shellcmd_v_SH_v1 ShellcmdVarSH * shellcmd_v_SH noeat recolor=-2 "a-zA-Z_€-ÿ" shellcmd_v_SH_v "{" shellcmd_v_SH_v3 :shellcmd_v_SH_v ShellcmdVarSH * shellcmd_v_SH noeat recolor=-1 "0-9a-zA-Z_€-ÿ" shellcmd_v_SH_v :shellcmd_v_SH_v2 ShellcmdVarSH * shellcmd_v_SH noeat recolor=-2 "$" shellcmd_v_SH_v3 :shellcmd_v_SH_v_error Mystery * shellcmd_v_SH_v3 :shellcmd_v_SH_v3 ShellcmdVarSH * shellcmd_v_SH_v3 "}" shellcmd_v_SH "\\" shellcmd_v_SH_v_error noeat recolor=-1 "'" shellcmd_v_SH_v_S1 "\"" shellcmd_v_SH_v_S2 "`" shellcmd_v_SH_v_SH :shellcmd_v_SH_v_S1esc ShellcmdVarSH * shellcmd_v_SH_v_S1 :shellcmd_v_SH_v_S1 ShellcmdVarSH * shellcmd_v_SH_v_S1 "'" shellcmd_v_SH_v3 "\\" shellcmd_v_SH_v_S1esc :shellcmd_v_SH_v_S2esc ShellcmdVarSH * shellcmd_v_SH_v_S2 :shellcmd_v_SH_v_S2 ShellcmdVarSH * shellcmd_v_SH_v_S2 "\"" shellcmd_v_SH_v3 "\\" shellcmd_v_SH_v_S2esc :shellcmd_v_SH_v_SHesc ShellcmdVarSH * shellcmd_v_SH_v_SH :shellcmd_v_SH_v_SH ShellcmdVarSH * shellcmd_v_SH_v_SH "`" shellcmd_v_SH_v3 "\\" shellcmd_v_SH_v_SHesc # Ends # Numeric constants :first_digit_0 Numeric * first_digit noeat "xX" hex_first :first_digit Numeric * number_before_e noeat :hex_first Numeric * end_number_suffix noeat recolor=-2 "0-9A-Fa-f" hex :hex Numeric * end_int noeat recolor=-1 "0-9A-Fa-f" hex :number_before_e Numeric * end_int noeat recolor=-1 "0-9" number_before_e "." float "eE" epart :float Numeric * end_float noeat recolor=-1 "eE" epart "0-9" float :epart Numeric * enum_first noeat "-+" enum_first :enum_first Numeric * end_number_suffix noeat recolor=-2 "0-9" enum :enum Numeric * end_float noeat recolor=-1 "0-9" enum :end_float Numeric * end_number_suffix noeat recolor=-1 :end_int Numeric * end_number_suffix noeat recolor=-1 :end_number_suffix InvalidNumber * idle noeat recolor=-1 "a-zA-Z_0-9" end_number_suffix # Keywords :ident ConstName * idle noeat recolor=-1 istrings "and" kw "array" kw "as" kw "break" kw "case" kw "class" kw "continue" kw "declare" kw "default" kw "define" kw "die" kw "do" kw "echo" kw "else" kw "elseif" kw "empty" kw "enddeclare" kw "endfor" kw "endforeach" kw "endif" kw "endswitch" kw "endwhile" kw "eval" kw "exception" kw "exit" kw "extends" kw "false" kw "for" kw "foreach" kw "function" kw "global" kw "if" kw "include" kw "include_once" kw "isset" kw "list" kw "new" kw "or" kw "print" kw "require" kw "require_once" kw "return" kw "static" kw "switch" kw "true" kw "unset" kw "use" kw "var" kw "while" kw "xor" kw done "a-zA-Z0-9_€-ÿ" ident :kw Keyword * idle noeat recolor=-1 # Special identifiers :varname VarName * idle noeat recolor=-1 strings "$GLOBALS" superglobal "$_SERVER" superglobal "$_GET" superglobal "$_POST" superglobal "$_COOKIE" superglobal "$_FILES" superglobal "$_ENV" superglobal "$_REQUEST" superglobal "$_SESSION" superglobal done "a-zA-Z0-9_€-ÿ" varname :superglobal MagicVar * idle noeat recolor=-1