perl.jsf.in (6714B)
1 # JOE syntax highlight file for Perl 2 3 # Define colors 4 5 =Idle 6 =Preproc blue 7 =Comment green 8 =POD green 9 =Constant cyan 10 =Escape bold cyan 11 =Type bold 12 =Keyword bold 13 =Bad bold red 14 =Var yellow 15 16 17 :begin Idle 18 * begin noeat call=.perl() 19 20 # 21 # Perl as a subroutine for Mason 22 # 23 24 .subr perl 25 26 # Detect pod 27 28 :idle Idle 29 * idle1 noeat 30 .ifdef mason_line 31 "\n" idle return 32 .else 33 "\n" idle 34 .endif 35 "=" pod_start 36 37 # allow keywords 38 39 :idle1 Idle 40 * idle1 41 "#" line_comment_i recolor=-1 42 "\n" idle noeat 43 "0" first_digit recolor=-1 44 "1-9" decimal recolor=-1 45 "." maybe_float 46 "\"" string recolor=-1 47 "'" char recolor=-1 48 "`" backtick recolor=-1 49 "<" maybe_inc 50 "$" not_string buffer 51 .ifdef mason_block 52 "&%" perl_maybe_done buffer 53 "-@\i" ident buffer 54 .else 55 "/" regex recolor=-1 56 "-\i@%&" ident buffer 57 .endif 58 59 :perl_maybe_done Idle 60 * ident noeat 61 ">" idle1 recolor=-2 return 62 63 # prevent keywords 64 65 :rest Idle 66 * rest 67 "({;~" idle1 68 "#" line_comment recolor=-1 69 "\n" idle noeat 70 "0" first_digit recolor=-1 71 "1-9" decimal recolor=-1 72 "." maybe_float 73 "\"" string recolor=-1 74 "'" char recolor=-1 75 "`" backtick recolor=-1 76 "$" not_string buffer 77 "<" maybe_inc 78 .ifdef mason_block 79 "&%" perl_maybe_done buffer 80 "\i@" maybe_string buffer 81 .else 82 "\i@%&" maybe_string buffer 83 .endif 84 85 :pod_start Idle 86 * pod_start 87 "\n" pod_block 88 89 :pod_block POD 90 * pod_block 91 "=" pod_ident buffer 92 93 :pod_ident POD 94 * pod_block noeat strings 95 "=cut" rest 96 done 97 "\c" pod_ident 98 99 :maybe_inc Idle 100 * rest noeat 101 .ifdef mason_block 102 "/" perl_maybe_done_2 103 .endif 104 "<" maybe_inc1 105 106 :perl_maybe_done_2 Idle 107 * perl_idle noeat 108 "a-z" perl_maybe_done_2 109 ">" idle 110 111 112 :maybe_inc1 Idle 113 * rest noeat 114 " " maybe_inc1 115 "'\"" quoted_inc_start save_c recolor=-1 116 "\i" inc buffer noeat 117 118 :quoted_inc_start Var 119 * quoted_inc buffer 120 121 :quoted_inc Var 122 * quoted_inc 123 & skipline save_s 124 125 :inc Var 126 * skipline save_s noeat 127 "\c" inc 128 129 # Should be treated as a normal line here... 130 131 :skipline Idle 132 * skipline 133 "\n" next_line 134 135 :todelim Constant 136 * todelim 137 "\n" next_line strings 138 "&" founddelim 139 done 140 141 # eat \n so it's not in string. 142 :next_line Constant 143 * todelim buffer 144 "\n" next_line 145 146 :founddelim Var 147 * idle noeat 148 149 :regex Constant 150 * regex 151 "\\" regex_quote recolor=-1 152 "/" rest 153 154 :regex_quote Escape 155 * regex 156 157 :not_string Idle 158 * rest noeat 159 "\i" ident 160 "\"'`#" rest 161 162 :line_comment Comment 163 * line_comment 164 "\n" rest 165 166 :line_comment_i Comment 167 * line_comment_i 168 "\n" idle noeat 169 170 :end_of_file_comment Comment 171 * end_of_file_comment 172 173 :first_digit Constant 174 * rest noeat 175 "x" hex 176 "b" binary 177 "." float 178 "eE" epart 179 "0-7" octal 180 "89" bad_number recolor=-1 181 182 :bad_number Bad 183 * rest noeat 184 "0-9" bad_number 185 186 :octal Constant 187 * rest noeat 188 "0-7_" octal 189 "89" bad_number recolor=-1 190 191 :binary Constant 192 * rest noeat 193 "01_" binary 194 "2-9" bad_number recolor=-1 195 196 :hex Constant 197 * rest noeat 198 "0-9A-Fa-f_" hex 199 200 :decimal Constant 201 * rest noeat 202 "0-9_" decimal 203 "eE" epart 204 "." float 205 206 :maybe_float Constant 207 * rest recolor=-2 noeat 208 "0-9" float recolor=-2 209 210 :float Constant 211 * rest noeat 212 "eE" epart 213 "0-9_" float 214 215 :epart Constant 216 * rest noeat 217 "0-9+\-" enum 218 219 :enum Constant 220 * rest noeat 221 "0-9_" enum 222 223 :string Constant 224 * string 225 "\"" rest 226 "\\" string_escape recolor=-1 227 "$@" string_subst recolor=-1 228 229 :string_subst Escape 230 * string noeat recolor=-1 231 "\c" string_subst 232 233 :string_escape Escape 234 * string 235 "x" string_hex1 236 "c" string_ctrl 237 "N" string_named 238 "0-7" string_octal2 239 "\n" string recolor=-2 240 241 :string_named Escape 242 * string 243 "{" string_named_rest 244 245 :string_named_rest Escape 246 * string_named_rest 247 "}" string 248 249 :string_ctrl Escape 250 * string 251 252 :string_hex1 Escape 253 * string noeat 254 "{" string_unicode 255 "0-9a-fA-F" string_hex2 256 257 :string_unicode Escape 258 * string_unicode 259 "}" string 260 261 :string_hex2 Escape 262 * string noeat 263 "0-9a-fA-F" string 264 265 :string_octal2 Escape 266 * string noeat 267 "0-7" string_octal3 268 269 :string_octal3 Escape 270 * string noeat 271 "0-7" string 272 273 :char Constant 274 * char 275 "\n" idle noeat 276 "'" rest 277 "\\" char_escape recolor=-1 278 279 :char_escape Escape 280 * char recolor=-2 281 "\\'" char 282 283 :backtick Constant 284 * backtick 285 "`" rest 286 "\\" backtick_escape recolor=-1 287 "$@" backtick_subst recolor=-1 288 289 :backtick_subst Escape 290 * backtick noeat recolor=-1 291 "\c" backtick_subst 292 293 :backtick_escape Escape 294 * backtick 295 "x" backtick_hex1 296 "c" backtick_ctrl 297 "N" backtick_named 298 "0-7" backtick_octal2 299 "\n" backtick recolor=-2 300 301 :backtick_named Escape 302 * backtick 303 "{" backtick_named_rest 304 305 :backtick_named_rest Escape 306 * backtick_named_rest 307 "}" backtick 308 309 :backtick_ctrl Escape 310 * backtick 311 312 :backtick_hex1 Escape 313 * backtick noeat 314 "{" backtick_unicode 315 "0-9a-fA-F" backtick_hex2 316 317 :backtick_unicode Escape 318 * backtick_unicode 319 "}" backtick 320 321 :backtick_hex2 Escape 322 * backtick noeat 323 "0-9a-fA-F" backtick 324 325 :backtick_octal2 Escape 326 * backtick noeat 327 "0-7" backtick_octal3 328 329 :backtick_octal3 Escape 330 * backtick noeat 331 "0-7" backtick 332 333 :ident Idle 334 * rest noeat strings 335 "BEGIN" kw 336 "END" kw 337 "if" kw 338 "unless" kw 339 "while" kw 340 "until" kw 341 "foreach" kw 342 "sub" kw 343 "my" kw 344 "do" kw 345 "if" kw 346 "else" kw 347 "elsif" kw 348 "for" kw 349 "continue" kw 350 "last" kw 351 "print" kw 352 "reset" kw 353 "die" kw 354 "goto" kw 355 "require" kw 356 "use" kw 357 "eval" kw 358 "redo" kw 359 "next" kw 360 "warn" kw 361 "return" kw 362 "printf" kw 363 "close" kw 364 "package" kw 365 "m" match 366 "qr" match 367 "qq" match 368 "qx" match 369 "qw" match 370 "q" match 371 "s" subst 372 "tr" subst 373 "y" subst 374 "__END__" end_of_file_comment 375 "__DATA__" end_of_file_comment 376 done 377 "\c" ident 378 379 :maybe_string Idle 380 * rest noeat strings 381 "qr" match 382 "qq" match 383 "qx" match 384 "qw" match 385 "q" match 386 done 387 "\c" maybe_string 388 389 :type Type 390 * rest noeat 391 392 :kw Keyword 393 * rest noeat 394 395 :match Idle 396 * inmatch save_c recolor=-1 397 " " match 398 399 :inmatch Constant 400 * inmatch 401 % inmatch call=.inmatch() 402 & rest 403 "\\" inmatch_quote recolor=-1 404 405 :inmatch_quote Escape 406 * inmatch 407 408 :subst Idle 409 * insubst save_c recolor=-1 410 "<([{`" delim_insubst save_c recolor=-1 411 " " subst 412 413 :insubst Constant 414 * insubst 415 & inrepl 416 "\\" insubst_quote recolor=-1 417 418 :insubst_quote Escape 419 * insubst 420 421 :inrepl Constant 422 * inrepl 423 & rest 424 "\\" inrepl_quote 425 426 :inrepl_quote Escape 427 * inrepl 428 429 :delim_insubst Constant 430 * delim_insubst 431 & delim_repl 432 "\\" delim_quote 433 434 :delim_quote Escape 435 * delim_insubst 436 437 :delim_repl Constant 438 * repl save_c recolor=-1 439 " " delim_repl 440 441 :repl Constant 442 * repl 443 & rest 444 "\\" repl_quote 445 446 :repl_quote Escape 447 * repl 448 449 .end 450 451 .subr inmatch 452 453 :inmatch Constant 454 * inmatch 455 % inmatch call=.inmatch() 456 & inmatch return 457 "\\" inmatch_quote recolor=-1 458 459 :inmatch_quote Escape 460 * inmatch 461 .end