# Perl syntax file for Diffuse # Copyright (C) 2008-2009 Derrick Moser syntax Perl normal text syntax_files Perl '\.p[hlm]$' syntax_magic Perl '^#![ \t]*([^ \t/]*/)*(env[ \t]+)?perl[0-9\.]*([ \t].*)?$' # colours colour perl_comment 0.2 0.4 0.64 colour perl_fixme 1.0 0.5 0.0 colour perl_keyword 0.77 0.63 0.0 colour perl_import 0.46 0.31 0.48 colour perl_literal 1.0 0.2 0.8 colour perl_string 0.8 0.0 0.0 colour perl_escapedchar 0.46 0.31 0.48 colour perl_function 0.02 0.6 0.6 colour perl_punctuation 0.5 0.5 0.5 colour perl_variable 0.02 0.6 0.6 colour perl_regexsep 0.77 0.63 0.0 colour perl_regex 0.8 0.0 0.0 # whitespace/comments syntax_pattern normal normal text '[ \t\r\n]+' syntax_pattern expr expr text '[ \t\r\n]+' syntax_pattern normal comment perl_comment '#' syntax_pattern comment normal perl_comment '(\r\n|\r|\n)$' syntax_pattern comment comment perl_fixme '\b(TODO|FIXME|XXX)\b' syntax_pattern comment comment perl_comment '.[^TFX\r\n]*' syntax_pattern normal doc perl_comment '^=(head1|head2|item|over|back|pod|for|begin|end)\b' syntax_pattern doc normal perl_comment '^=cut\b' syntax_pattern doc doc perl_fixme '\b(TODO|FIXME|XXX)\b' syntax_pattern doc doc perl_comment '.[^TFX]*' # "-style strings syntax_pattern normal double_string perl_string '"' syntax_pattern double_string expr perl_string '"' syntax_pattern double_string double_string perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+' syntax_pattern double_string double_string perl_variable '(@|\$#?|%)[a-z_][a-z_0-9]*\b' ignorecase syntax_pattern double_string double_string perl_string '.[^\\"@\$%]*' # '-style strings syntax_pattern normal single_string perl_string "'" syntax_pattern single_string expr perl_string "'" syntax_pattern single_string single_string perl_string ".[^\\']*" # `-style strings syntax_pattern normal backquote perl_string '`' syntax_pattern backquote expr perl_string '`' syntax_pattern backquote backquote perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+' syntax_pattern backquote backquote perl_variable '(@|\$#?|%)[a-z_][a-z_0-9]*\b' ignorecase syntax_pattern backquote backquote perl_string '.[^\\`@\$%]*' # literals syntax_pattern normal expr perl_literal '(((0|[1-9][0-9])*\.[0-9]*|\.[0-9]+)(e[\+\-]?[0-9]+)?|(0|[1-9][0-9]*)e[\+\-]?[0-9]+|0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)' ignorecase # variable syntax_pattern normal expr perl_variable "(@(\\+|-|[A-Za-z_][A-Za-z0-9_]*)?|%(\\+|-|!|^H|[A-Za-z_][A-Za-z0-9_]*)?|\\$([\\?&`'\\+\\./\\|,\\\\\\\";%=\\-~^:!\\$<>\\(\\)\\[\\]]|^[ACDEFHIMNOPRSTVWX]|#?[A-Za-z0-9_]+)?)" # keywords syntax_pattern normal normal perl_keyword '\b(abs|accept|alarm|and|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|continue|cos|crypt|dbmclose|dbmopen|default|defined|delete|die|do|dump|each|else|elsif|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exit|exp|fcntl|fileno|flock|for|foreach|fork|format|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|given|glob|gmtime|goto|grep|gt|hex|if|index|int|ioctl|join|keys|kill|last|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|ne|next|not|oct|open|opendir|or|ord|pack|pipe|pop|pos|print|printf|prototype|push|quotemeta|qw|qx|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|truncate|uc|ucfirst|umask|undef|unless|unlink|unpack|unshift|untie|until|utime|values|vec|wait|waitpid|wantarray|warn|when|while|write|xor)\b' syntax_pattern normal normal perl_keyword '-[AbBcCdefgklMoOprRsStTuwWxXz]\b' # special kewords syntax_pattern normal normal perl_import '\b(import|no|package|require|use)\b' # function/class definitions syntax_pattern normal declaration perl_keyword '\b(sub)\b' syntax_pattern declaration declaration text '[ \t]+' syntax_pattern declaration normal perl_function '\b[a-z_][a-z_0-9]*\b' ignorecase syntax_pattern declaration normal text '' # expressions syntax_pattern normal expression perl_regexsep 'm?/' syntax_pattern expression expr perl_regexsep '/[cgimposx]*' syntax_pattern expression expression perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+' syntax_pattern expression expression perl_regex '.[^\\/]*' # search and replace syntax_pattern normal search perl_regexsep 's/' syntax_pattern search replace perl_regexsep '/' syntax_pattern search search perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+' syntax_pattern search search perl_regex '.[^\\/]*' syntax_pattern replace expr perl_regexsep '/[cegimposx]*' syntax_pattern replace replace perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+' syntax_pattern replace replace perl_regex '.[^\\/]*' # translate syntax_pattern normal translate_search perl_regexsep '(tr|y)/' syntax_pattern translate_search translate_replace perl_regexsep '/' syntax_pattern translate_search translate_search perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+' syntax_pattern translate_search translate_search perl_regex '.[^\\/]*' syntax_pattern translate_replace expr perl_regexsep '/[cds]*' syntax_pattern translate_replace translate_replace perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+' syntax_pattern translate_replace translate_replace perl_regex '.[^\\/]*' # punctuation syntax_pattern normal normal perl_punctuation '[=\(,~!&\|\^;\[\{\}<>\+\-\*:]+' syntax_pattern normal normal perl_punctuation '\.' syntax_pattern normal expr perl_punctuation '[\)\]]+' syntax_pattern expr normal perl_punctuation '/' # parsing optimisation syntax_pattern normal expr text '[a-z_][a-z_0-9]*' ignorecase syntax_pattern expr normal perl_regex ''