# $MirOS: contrib/code/jupp/syntax/perl.jsf.in,v 1.4 2017/12/02 05:38:06 tg Exp $ #- # JOE syntax highlight file for Perl # Still need: # _ in numbers # 0b for binary # \cC for Ctrl-C # \x{hex} unicode # no escapes in single quotes (except \\ and \') # \N{NAME} named character # / .. / regex # s/ .. / .. / # $name allowed in regex # m// same as // # s/// # tr/// y/// # qr// # can also do this: s(egg) # s' ' ' - no interpolation # Always reparse from beginning - # Define colors =Idle =Preproc yellow =Comment green =Constant cyan =Escape bold cyan =Type bold =Keyword bold =Bad bold red :idle Idle * idle "#" line_comment recolor=-1 "\n" idle "0" first_digit recolor=-1 "1-9" decimal recolor=-1 "." maybe_float "\"" string recolor=-1 "\\" not_string "'" char recolor=-1 "`" backtick recolor=-1 "a-zA-Z_" ident buffer :not_string Idle * idle noeat "\"'`" idle :line_comment Comment * line_comment "\n" idle :first_digit Constant * idle noeat "x" hex "b" binary "." float "eE" epart "0-7" octal "89" bad_number recolor=-1 :bad_number Bad * idle noeat "0-9" bad_number :octal Constant * idle noeat "0-7_" octal "89" bad_number recolor=-1 :binary Constant * idle noeat "01_" binary "2-9" bad_number recolor=-1 :hex Constant * idle noeat "0-9A-Fa-f_" hex :decimal Constant * idle noeat "0-9_" decimal "eE" epart "." float :maybe_float Constant * idle recolor=-2 noeat "0-9" float recolor=-2 :float Constant * idle noeat "eE" epart "0-9_" float :epart Constant * idle noeat "0-9+\-" enum :enum Constant * idle noeat "0-9_" enum :string Constant * string "\"" idle "\\" string_escape recolor=-1 "$@" string_subst recolor=-1 :string_subst Escape * string noeat recolor=-1 "a-zA-Z_0-9" string_subst :string_escape Escape * string "x" string_hex1 "c" string_ctrl "N" string_named "0-7" string_octal2 "\n" string recolor=-2 :string_named Escape * string "{" string_named_rest :string_named_rest Escape * string_named_rest "}" string :string_ctrl Escape * string :string_hex1 Escape * string noeat "{" string_unicode "0-9a-fA-F" string_hex2 :string_unicode Escape * string_unicode "}" string :string_hex2 Escape * string noeat "0-9a-fA-F" string :string_octal2 Escape * string noeat "0-7" string_octal3 :string_octal3 Escape * string noeat "0-7" string :char Constant * char "\n" reset "'" idle "\\" char_escape recolor=-1 :char_escape Escape * char recolor=-2 "\\'" char :backtick Constant * backtick "`" idle "\\" backtick_escape recolor=-1 "$@" backtick_subst recolor=-1 :backtick_subst Escape * backtick noeat recolor=-1 "a-zA-Z_0-9" backtick_subst :backtick_escape Escape * backtick "x" backtick_hex1 "c" backtick_ctrl "N" backtick_named "0-7" backtick_octal2 "\n" backtick recolor=-2 :backtick_named Escape * backtick "{" backtick_named_rest :backtick_named_rest Escape * backtick_named_rest "}" backtick :backtick_ctrl Escape * backtick :backtick_hex1 Escape * backtick noeat "{" backtick_unicode "0-9a-fA-F" backtick_hex2 :backtick_unicode Escape * backtick_unicode "}" backtick :backtick_hex2 Escape * backtick noeat "0-9a-fA-F" backtick :backtick_octal2 Escape * backtick noeat "0-7" backtick_octal3 :backtick_octal3 Escape * backtick noeat "0-7" backtick :ident Idle * idle noeat strings "if" kw "unless" kw "while" kw "until" kw "foreach" kw "sub" kw "my" kw "do" kw "if" kw "else" kw "elsif" kw "for" kw "continue" kw "last" kw "print" kw "reset" kw "die" kw "goto" kw "require" kw "use" kw "eval" kw "redo" kw "next" kw "warn" kw done "a-zA-Z0-9_" ident :type Type * idle noeat :kw Keyword * idle noeat