PageRenderTime 28ms CodeModel.GetById 1ms RepoModel.GetById 1ms app.codeStats 0ms

/jEdit/tags/jedit-4-3-pre5/modes/perl.xml

#
XML | 624 lines | 593 code | 21 blank | 10 comment | 0 complexity | 18320c2cbc33ae70bd6d99be8ad732c3 MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
  1. <?xml version="1.0"?>
  2. <!DOCTYPE MODE SYSTEM "xmode.dtd">
  3. <MODE>
  4. <PROPS>
  5. <PROPERTY NAME="lineComment" VALUE="#" />
  6. <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
  7. <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
  8. <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />
  9. <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />
  10. <PROPERTY NAME="indentNextLine" VALUE="[^#]*\.\s*$" />
  11. </PROPS>
  12. <RULES ESCAPE="\" HIGHLIGHT_DIGITS="TRUE" IGNORE_CASE="FALSE">
  13. <!-- Comments -->
  14. <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
  15. <!-- TYPE is LABEL so that =head1 and =cut are highlighted as so -->
  16. <SPAN TYPE="LABEL" DELEGATE="POD">
  17. <BEGIN AT_LINE_START="TRUE">=head1</BEGIN>
  18. <END AT_LINE_START="TRUE">=cut</END>
  19. </SPAN>
  20. <SPAN TYPE="LABEL" DELEGATE="POD">
  21. <BEGIN AT_LINE_START="TRUE">=head2</BEGIN>
  22. <END AT_LINE_START="TRUE">=cut</END>
  23. </SPAN>
  24. <SPAN TYPE="LABEL" DELEGATE="POD">
  25. <BEGIN AT_LINE_START="TRUE">=head3</BEGIN>
  26. <END AT_LINE_START="TRUE">=cut</END>
  27. </SPAN>
  28. <SPAN TYPE="LABEL" DELEGATE="POD">
  29. <BEGIN AT_LINE_START="TRUE">=head4</BEGIN>
  30. <END AT_LINE_START="TRUE">=cut</END>
  31. </SPAN>
  32. <SPAN TYPE="LABEL" DELEGATE="POD">
  33. <BEGIN AT_LINE_START="TRUE">=item</BEGIN>
  34. <END AT_LINE_START="TRUE">=cut</END>
  35. </SPAN>
  36. <SPAN TYPE="LABEL" DELEGATE="POD">
  37. <BEGIN AT_LINE_START="TRUE">=over</BEGIN>
  38. <END AT_LINE_START="TRUE">=cut</END>
  39. </SPAN>
  40. <SPAN TYPE="LABEL" DELEGATE="POD">
  41. <BEGIN AT_LINE_START="TRUE">=back</BEGIN>
  42. <END AT_LINE_START="TRUE">=cut</END>
  43. </SPAN>
  44. <SPAN TYPE="LABEL" DELEGATE="POD">
  45. <BEGIN AT_LINE_START="TRUE">=pod</BEGIN>
  46. <END AT_LINE_START="TRUE">=cut</END>
  47. </SPAN>
  48. <SPAN TYPE="LABEL" DELEGATE="POD">
  49. <BEGIN AT_LINE_START="TRUE">=for</BEGIN>
  50. <END AT_LINE_START="TRUE">=cut</END>
  51. </SPAN>
  52. <SPAN TYPE="LABEL" DELEGATE="POD">
  53. <BEGIN AT_LINE_START="TRUE">=begin</BEGIN>
  54. <END AT_LINE_START="TRUE">=cut</END>
  55. </SPAN>
  56. <SPAN TYPE="LABEL" DELEGATE="POD">
  57. <BEGIN AT_LINE_START="TRUE">=end</BEGIN>
  58. <END AT_LINE_START="TRUE">=cut</END>
  59. </SPAN>
  60. <!-- Variables -->
  61. <SEQ TYPE="KEYWORD2">$`</SEQ>
  62. <SEQ TYPE="KEYWORD2">$'</SEQ>
  63. <SEQ TYPE="KEYWORD2">$"</SEQ>
  64. <!-- Some other things that confuse the mode file. -->
  65. <SEQ TYPE="OPERATOR">*"</SEQ>
  66. <SEQ TYPE="OPERATOR">*'</SEQ>
  67. <SEQ TYPE="OPERATOR">&amp;"</SEQ>
  68. <SEQ TYPE="OPERATOR">&amp;'</SEQ>
  69. <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  70. <BEGIN>${</BEGIN>
  71. <END>}</END>
  72. </SPAN>
  73. <SEQ_REGEXP HASH_CHAR="$" TYPE="KEYWORD2">\$(?:#|\w)+</SEQ_REGEXP>
  74. <SEQ_REGEXP HASH_CHAR="@" TYPE="KEYWORD2">@(?:#|\w)+</SEQ_REGEXP>
  75. <SEQ_REGEXP HASH_CHAR="%" TYPE="KEYWORD2">%(?:#|\w)+</SEQ_REGEXP>
  76. <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  77. <BEGIN>@{</BEGIN>
  78. <END>}</END>
  79. </SPAN>
  80. <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  81. <BEGIN>%{</BEGIN>
  82. <END>}</END>
  83. </SPAN>
  84. <!-- Special handling for subs, since they can have a ' in the name;
  85. try to do highlight as well as possible - this version will
  86. highlight both 'sub' and the opening '{' as KEYWORD1, so the
  87. opening bracket will be different than other brackets. -->
  88. <SPAN_REGEXP HASH_CHAR="s" TYPE="OPERATOR" NO_LINE_BREAK="FALSE" DELEGATE="SUB_NAME">
  89. <BEGIN>sub\s</BEGIN>
  90. <END>{</END>
  91. </SPAN_REGEXP>
  92. <!-- Highlight calls to subs that contain ' in the name. -->
  93. <SEQ_REGEXP HASH_CHAR="&amp;" TYPE="FUNCTION"
  94. >&amp;\p{Alpha}[\p{Alnum}_]*'\p{Alpha}[\p{Alnum}_]*</SEQ_REGEXP>
  95. <!-- Literals -->
  96. <SPAN TYPE="LITERAL1" DELEGATE="LITERAL">
  97. <BEGIN>"</BEGIN>
  98. <END>"</END>
  99. </SPAN>
  100. <SPAN TYPE="LITERAL1">
  101. <BEGIN>'</BEGIN>
  102. <END>'</END>
  103. </SPAN>
  104. <!-- Exec -->
  105. <SPAN TYPE="KEYWORD3" DELEGATE="EXEC">
  106. <BEGIN>`</BEGIN>
  107. <END>`</END>
  108. </SPAN>
  109. <!-- Heredoc -->
  110. <SPAN_REGEXP HASH_CHAR="&lt;" TYPE="LITERAL2" DELEGATE="LITERAL">
  111. <BEGIN><![CDATA[<<\p{Space}*(['"])([\p{Space}\p{Alnum}_]*)\1;?\s*]]></BEGIN>
  112. <END>$2</END>
  113. </SPAN_REGEXP>
  114. <SPAN_REGEXP HASH_CHAR="&lt;" TYPE="LITERAL2" DELEGATE="LITERAL">
  115. <BEGIN><![CDATA[<<([\p{Alpha}_][\p{Alnum}_]*);?\s*]]></BEGIN>
  116. <END>$1</END>
  117. </SPAN_REGEXP>
  118. <!-- jEdit 4.1 adds regular expression syntax rules so we can
  119. highlight this sort of crap. -->
  120. <SEQ_REGEXP TYPE="MARKUP"
  121. HASH_CHAR="/"
  122. AT_WORD_START="TRUE"
  123. >/[^\p{Blank}]*?[^\\]/</SEQ_REGEXP>
  124. <!-- q//, qq//, qr//, qx//, tr///, y///, m//, s/// -->
  125. <SEQ_REGEXP TYPE="MARKUP"
  126. HASH_CHAR="q"
  127. AT_WORD_START="TRUE">q(?:|[qx])\{.*\}</SEQ_REGEXP>
  128. <SEQ_REGEXP TYPE="MARKUP"
  129. HASH_CHAR="q"
  130. AT_WORD_START="TRUE">qr\{.*\}[imosx]*</SEQ_REGEXP>
  131. <!-- For multi-line 'q' statements.
  132. Do we really need one entry per possible delimiter? {, (, etc... -->
  133. <SPAN_REGEXP HASH_CHAR="q" TYPE="MARKUP" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE">
  134. <BEGIN>q(?:|[qrxw])\{</BEGIN>
  135. <END>}</END>
  136. </SPAN_REGEXP>
  137. <SPAN_REGEXP HASH_CHAR="q" TYPE="MARKUP" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE">
  138. <BEGIN>q(?:|[qrxw])\(</BEGIN>
  139. <END>)</END>
  140. </SPAN_REGEXP>
  141. <SPAN_REGEXP HASH_CHAR="q" TYPE="MARKUP" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE">
  142. <BEGIN>q(?:|[qrxw])\/</BEGIN>
  143. <END>/</END>
  144. </SPAN_REGEXP>
  145. <SEQ_REGEXP TYPE="MARKUP"
  146. HASH_CHAR="t"
  147. AT_WORD_START="TRUE"
  148. >tr([^\p{Alnum}\p{Space}])(?:.*?[^\\])*?\1(?:.*?[^\\])*?\1[cds]*</SEQ_REGEXP>
  149. <SEQ_REGEXP TYPE="MARKUP"
  150. HASH_CHAR="y"
  151. AT_WORD_START="TRUE"
  152. >y([^\p{Alnum}\p{Space}])(?:.*?[^\\])*?\1(?:.*?[^\\])*?\1[cds]*</SEQ_REGEXP>
  153. <SEQ_REGEXP TYPE="MARKUP"
  154. HASH_CHAR="m"
  155. AT_WORD_START="TRUE"
  156. >m\{(?:.*?[^\\])*?\}[sgiexom]*</SEQ_REGEXP>
  157. <SEQ_REGEXP TYPE="MARKUP"
  158. HASH_CHAR="m"
  159. AT_WORD_START="TRUE"
  160. >m([^\p{Alnum}\p{Space}])(?:.*?[^\\])\1[sgicxom]*</SEQ_REGEXP>
  161. <SEQ_REGEXP TYPE="MARKUP"
  162. HASH_CHAR="s"
  163. AT_WORD_START="TRUE"
  164. >s\s*\{(?:.*?[^\\])*?\}\s*\{(?:.*?[^\\])*?\}[sgiexom]*</SEQ_REGEXP>
  165. <SEQ_REGEXP TYPE="MARKUP"
  166. HASH_CHAR="s"
  167. AT_WORD_START="TRUE"
  168. >s([^\p{Alnum}\p{Space}])(?:.*?)\1(?:.*?)\1[sgiexom]*</SEQ_REGEXP>
  169. <SEQ_REGEXP TYPE="MARKUP"
  170. HASH_CHAR="/"
  171. AT_WORD_START="TRUE"
  172. >/[^\p{Blank}]*?/</SEQ_REGEXP>
  173. <!-- Operators -->
  174. <SEQ TYPE="OPERATOR">|</SEQ>
  175. <SEQ TYPE="OPERATOR">&amp;</SEQ>
  176. <SEQ TYPE="OPERATOR">!</SEQ>
  177. <SEQ TYPE="OPERATOR">&gt;=</SEQ>
  178. <SEQ TYPE="OPERATOR">&lt;=</SEQ>
  179. <SEQ TYPE="OPERATOR">&gt;</SEQ>
  180. <SEQ TYPE="OPERATOR">&lt;</SEQ>
  181. <SEQ TYPE="OPERATOR">=</SEQ>
  182. <SEQ TYPE="OPERATOR">!</SEQ>
  183. <SEQ TYPE="OPERATOR">+</SEQ>
  184. <SEQ TYPE="OPERATOR">-</SEQ>
  185. <SEQ TYPE="OPERATOR">/</SEQ>
  186. <SEQ TYPE="OPERATOR">*</SEQ>
  187. <SEQ TYPE="OPERATOR">^</SEQ>
  188. <SEQ TYPE="OPERATOR">~</SEQ>
  189. <SEQ TYPE="OPERATOR">}</SEQ>
  190. <SEQ TYPE="OPERATOR">{</SEQ>
  191. <SEQ TYPE="OPERATOR">?</SEQ>
  192. <SEQ TYPE="OPERATOR">:</SEQ>
  193. <!-- Keywords -->
  194. <KEYWORDS>
  195. <KEYWORD1>new</KEYWORD1>
  196. <KEYWORD1>if</KEYWORD1>
  197. <KEYWORD1>until</KEYWORD1>
  198. <KEYWORD1>while</KEYWORD1>
  199. <KEYWORD1>elsif</KEYWORD1>
  200. <KEYWORD1>else</KEYWORD1>
  201. <KEYWORD1>unless</KEYWORD1>
  202. <KEYWORD1>for</KEYWORD1>
  203. <KEYWORD1>foreach</KEYWORD1>
  204. <KEYWORD1>BEGIN</KEYWORD1>
  205. <KEYWORD1>END</KEYWORD1>
  206. <OPERATOR>cmp</OPERATOR>
  207. <OPERATOR>eq</OPERATOR>
  208. <OPERATOR>ne</OPERATOR>
  209. <OPERATOR>le</OPERATOR>
  210. <OPERATOR>ge</OPERATOR>
  211. <OPERATOR>not</OPERATOR>
  212. <OPERATOR>and</OPERATOR>
  213. <OPERATOR>or</OPERATOR>
  214. <OPERATOR>xor</OPERATOR>
  215. <!-- At least attempt to highlight 'x', although this misses some -->
  216. <OPERATOR>x</OPERATOR>
  217. <!--
  218. The following function list was derived from the perlfunc man
  219. page, Perl version 5.00503
  220. Certain keywords have been commented out where they appear more
  221. than once, and the y///, qx//, etc. functions have been removed,
  222. since they would are colorized not as keywords, but with separate
  223. rules.
  224. -->
  225. <!-- Functions for SCALARs or strings -->
  226. <KEYWORD3>chomp</KEYWORD3>
  227. <KEYWORD3>chop</KEYWORD3>
  228. <KEYWORD3>chr</KEYWORD3>
  229. <KEYWORD3>crypt</KEYWORD3>
  230. <KEYWORD3>hex</KEYWORD3>
  231. <KEYWORD3>index</KEYWORD3>
  232. <KEYWORD3>lc</KEYWORD3>
  233. <KEYWORD3>lcfirst</KEYWORD3>
  234. <KEYWORD3>length</KEYWORD3>
  235. <KEYWORD3>oct</KEYWORD3>
  236. <KEYWORD3>ord</KEYWORD3>
  237. <KEYWORD3>pack</KEYWORD3>
  238. <KEYWORD3>reverse</KEYWORD3>
  239. <KEYWORD3>rindex</KEYWORD3>
  240. <KEYWORD3>sprintf</KEYWORD3>
  241. <KEYWORD3>substr</KEYWORD3>
  242. <KEYWORD3>uc</KEYWORD3>
  243. <KEYWORD3>ucfirst</KEYWORD3>
  244. <!-- Regular expressions and pattern matching -->
  245. <KEYWORD3>pos</KEYWORD3>
  246. <KEYWORD3>quotemeta</KEYWORD3>
  247. <KEYWORD3>split</KEYWORD3>
  248. <KEYWORD3>study</KEYWORD3>
  249. <!-- Numeric functions -->
  250. <KEYWORD3>abs</KEYWORD3>
  251. <KEYWORD3>atan2</KEYWORD3>
  252. <KEYWORD3>cos</KEYWORD3>
  253. <KEYWORD3>exp</KEYWORD3>
  254. <!--<KEYWORD3>hex</KEYWORD3>-->
  255. <KEYWORD3>int</KEYWORD3>
  256. <KEYWORD3>log</KEYWORD3>
  257. <!--<KEYWORD3>oct</KEYWORD3>-->
  258. <KEYWORD3>rand</KEYWORD3>
  259. <KEYWORD3>sin</KEYWORD3>
  260. <KEYWORD3>sqrt</KEYWORD3>
  261. <KEYWORD3>srand</KEYWORD3>
  262. <!-- Functions for real @ARRAYs -->
  263. <KEYWORD3>pop</KEYWORD3>
  264. <KEYWORD3>push</KEYWORD3>
  265. <KEYWORD3>shift</KEYWORD3>
  266. <KEYWORD3>splice</KEYWORD3>
  267. <KEYWORD3>unshift</KEYWORD3>
  268. <!-- Functions for list data -->
  269. <KEYWORD3>grep</KEYWORD3>
  270. <KEYWORD3>join</KEYWORD3>
  271. <KEYWORD3>map</KEYWORD3>
  272. <!--<KEYWORD3>reverse</KEYWORD3>-->
  273. <KEYWORD3>sort</KEYWORD3>
  274. <KEYWORD3>unpack</KEYWORD3>
  275. <!-- Functions for real %HASHes -->
  276. <KEYWORD3>delete</KEYWORD3>
  277. <KEYWORD3>each</KEYWORD3>
  278. <KEYWORD3>exists</KEYWORD3>
  279. <KEYWORD3>keys</KEYWORD3>
  280. <KEYWORD3>values</KEYWORD3>
  281. <!-- Input and output functions -->
  282. <KEYWORD3>binmode</KEYWORD3>
  283. <KEYWORD3>close</KEYWORD3>
  284. <KEYWORD3>closedir</KEYWORD3>
  285. <KEYWORD3>dbmclose</KEYWORD3>
  286. <KEYWORD3>dbmopen</KEYWORD3>
  287. <!--<KEYWORD3>die</KEYWORD3>-->
  288. <KEYWORD3>eof</KEYWORD3>
  289. <KEYWORD3>fileno</KEYWORD3>
  290. <KEYWORD3>flock</KEYWORD3>
  291. <KEYWORD3>format</KEYWORD3>
  292. <KEYWORD3>getc</KEYWORD3>
  293. <KEYWORD3>print</KEYWORD3>
  294. <KEYWORD3>printf</KEYWORD3>
  295. <KEYWORD3>read</KEYWORD3>
  296. <KEYWORD3>readdir</KEYWORD3>
  297. <KEYWORD3>rewinddir</KEYWORD3>
  298. <KEYWORD3>seek</KEYWORD3>
  299. <KEYWORD3>seekdir</KEYWORD3>
  300. <KEYWORD3>select</KEYWORD3>
  301. <KEYWORD3>syscall</KEYWORD3>
  302. <KEYWORD3>sysread</KEYWORD3>
  303. <KEYWORD3>sysseek</KEYWORD3>
  304. <KEYWORD3>syswrite</KEYWORD3>
  305. <KEYWORD3>tell</KEYWORD3>
  306. <KEYWORD3>telldir</KEYWORD3>
  307. <KEYWORD3>truncate</KEYWORD3>
  308. <KEYWORD3>warn</KEYWORD3>
  309. <KEYWORD3>write</KEYWORD3>
  310. <!-- Functions for fixed length data or records -->
  311. <!--<KEYWORD3>pack</KEYWORD3>-->
  312. <!--<KEYWORD3>read</KEYWORD3>-->
  313. <!--<KEYWORD3>syscall</KEYWORD3>-->
  314. <!--<KEYWORD3>sysread</KEYWORD3>-->
  315. <!--<KEYWORD3>syswrite</KEYWORD3>-->
  316. <!--<KEYWORD3>unpack</KEYWORD3>-->
  317. <KEYWORD3>vec</KEYWORD3>
  318. <!-- Functions for filehandles, files, or directories -->
  319. <KEYWORD3>chdir</KEYWORD3>
  320. <KEYWORD3>chmod</KEYWORD3>
  321. <KEYWORD3>chown</KEYWORD3>
  322. <KEYWORD3>chroot</KEYWORD3>
  323. <KEYWORD3>fcntl</KEYWORD3>
  324. <KEYWORD3>glob</KEYWORD3>
  325. <KEYWORD3>ioctl</KEYWORD3>
  326. <KEYWORD3>link</KEYWORD3>
  327. <KEYWORD3>lstat</KEYWORD3>
  328. <KEYWORD3>mkdir</KEYWORD3>
  329. <KEYWORD3>open</KEYWORD3>
  330. <KEYWORD3>opendir</KEYWORD3>
  331. <KEYWORD3>readlink</KEYWORD3>
  332. <KEYWORD3>rename</KEYWORD3>
  333. <KEYWORD3>rmdir</KEYWORD3>
  334. <KEYWORD3>stat</KEYWORD3>
  335. <KEYWORD3>symlink</KEYWORD3>
  336. <KEYWORD3>umask</KEYWORD3>
  337. <KEYWORD3>unlink</KEYWORD3>
  338. <KEYWORD3>utime</KEYWORD3>
  339. <!-- Keywords related to the control flow of your perl program -->
  340. <KEYWORD1>caller</KEYWORD1>
  341. <KEYWORD1>continue</KEYWORD1>
  342. <KEYWORD1>die</KEYWORD1>
  343. <KEYWORD1>do</KEYWORD1>
  344. <KEYWORD1>dump</KEYWORD1>
  345. <KEYWORD1>eval</KEYWORD1>
  346. <KEYWORD1>exit</KEYWORD1>
  347. <KEYWORD1>goto</KEYWORD1>
  348. <KEYWORD1>last</KEYWORD1>
  349. <KEYWORD1>next</KEYWORD1>
  350. <KEYWORD1>redo</KEYWORD1>
  351. <KEYWORD1>return</KEYWORD1>
  352. <KEYWORD1>wantarray</KEYWORD1>
  353. <!-- Keywords related to scoping -->
  354. <!--<KEYWORD1>caller</KEYWORD1>-->
  355. <!--<KEYWORD1>import</KEYWORD1>-->
  356. <KEYWORD1>local</KEYWORD1>
  357. <KEYWORD1>my</KEYWORD1>
  358. <KEYWORD1>our</KEYWORD1>
  359. <KEYWORD1>package</KEYWORD1>
  360. <KEYWORD1>use</KEYWORD1>
  361. <!-- Miscellaneous functions -->
  362. <KEYWORD3>defined</KEYWORD3>
  363. <!--<KEYWORD3>dump</KEYWORD3>-->
  364. <!--<KEYWORD3>eval</KEYWORD3>-->
  365. <KEYWORD3>formline</KEYWORD3>
  366. <!--<KEYWORD3>local</KEYWORD3>-->
  367. <!--<KEYWORD3>my</KEYWORD3>-->
  368. <KEYWORD3>reset</KEYWORD3>
  369. <KEYWORD3>scalar</KEYWORD3>
  370. <KEYWORD3>undef</KEYWORD3>
  371. <!--<KEYWORD3>wantarray</KEYWORD3>-->
  372. <!-- Functions for processes and process groups -->
  373. <KEYWORD3>alarm</KEYWORD3>
  374. <KEYWORD3>exec</KEYWORD3>
  375. <KEYWORD3>fork</KEYWORD3>
  376. <KEYWORD3>getpgrp</KEYWORD3>
  377. <KEYWORD3>getppid</KEYWORD3>
  378. <KEYWORD3>getpriority</KEYWORD3>
  379. <KEYWORD3>kill</KEYWORD3>
  380. <KEYWORD3>pipe</KEYWORD3>
  381. <KEYWORD3>setpgrp</KEYWORD3>
  382. <KEYWORD3>setpriority</KEYWORD3>
  383. <KEYWORD3>sleep</KEYWORD3>
  384. <KEYWORD3>system</KEYWORD3>
  385. <KEYWORD3>times</KEYWORD3>
  386. <KEYWORD3>wait</KEYWORD3>
  387. <KEYWORD3>waitpid</KEYWORD3>
  388. <!-- Keywords related to perl modules -->
  389. <!--<KEYWORD1>do</KEYWORD1>-->
  390. <KEYWORD1>import</KEYWORD1>
  391. <KEYWORD1>no</KEYWORD1>
  392. <!--<KEYWORD1>package</KEYWORD1>-->
  393. <KEYWORD1>require</KEYWORD1>
  394. <!--<KEYWORD1>use</KEYWORD1>-->
  395. <!-- Keywords related to classes and object-orientedness -->
  396. <KEYWORD3>bless</KEYWORD3>
  397. <!--<KEYWORD3>dbmclose</KEYWORD3>-->
  398. <!--<KEYWORD3>dbmopen</KEYWORD3>-->
  399. <!--<KEYWORD3>package</KEYWORD3>-->
  400. <KEYWORD3>ref</KEYWORD3>
  401. <KEYWORD3>tie</KEYWORD3>
  402. <KEYWORD3>tied</KEYWORD3>
  403. <KEYWORD3>untie</KEYWORD3>
  404. <!--<KEYWORD3>use</KEYWORD3>-->
  405. <!-- Low-level socket functions -->
  406. <KEYWORD3>accept</KEYWORD3>
  407. <KEYWORD3>bind</KEYWORD3>
  408. <KEYWORD3>connect</KEYWORD3>
  409. <KEYWORD3>getpeername</KEYWORD3>
  410. <KEYWORD3>getsockname</KEYWORD3>
  411. <KEYWORD3>getsockopt</KEYWORD3>
  412. <KEYWORD3>listen</KEYWORD3>
  413. <KEYWORD3>recv</KEYWORD3>
  414. <KEYWORD3>send</KEYWORD3>
  415. <KEYWORD3>setsockopt</KEYWORD3>
  416. <KEYWORD3>shutdown</KEYWORD3>
  417. <KEYWORD3>socket</KEYWORD3>
  418. <KEYWORD3>socketpair</KEYWORD3>
  419. <!-- System V interprocess communication functions -->
  420. <KEYWORD3>msgctl</KEYWORD3>
  421. <KEYWORD3>msgget</KEYWORD3>
  422. <KEYWORD3>msgrcv</KEYWORD3>
  423. <KEYWORD3>msgsnd</KEYWORD3>
  424. <KEYWORD3>semctl</KEYWORD3>
  425. <KEYWORD3>semget</KEYWORD3>
  426. <KEYWORD3>semop</KEYWORD3>
  427. <KEYWORD3>shmctl</KEYWORD3>
  428. <KEYWORD3>shmget</KEYWORD3>
  429. <KEYWORD3>shmread</KEYWORD3>
  430. <KEYWORD3>shmwrite</KEYWORD3>
  431. <!-- Fetching user and group info -->
  432. <KEYWORD3>endgrent</KEYWORD3>
  433. <KEYWORD3>endhostent</KEYWORD3>
  434. <KEYWORD3>endnetent</KEYWORD3>
  435. <KEYWORD3>endpwent</KEYWORD3>
  436. <KEYWORD3>getgrent</KEYWORD3>
  437. <KEYWORD3>getgrgid</KEYWORD3>
  438. <KEYWORD3>getgrnam</KEYWORD3>
  439. <KEYWORD3>getlogin</KEYWORD3>
  440. <KEYWORD3>getpwent</KEYWORD3>
  441. <KEYWORD3>getpwnam</KEYWORD3>
  442. <KEYWORD3>getpwuid</KEYWORD3>
  443. <KEYWORD3>setgrent</KEYWORD3>
  444. <KEYWORD3>setpwent</KEYWORD3>
  445. <!-- Fetching network info -->
  446. <KEYWORD3>endprotoent</KEYWORD3>
  447. <KEYWORD3>endservent</KEYWORD3>
  448. <KEYWORD3>gethostbyaddr</KEYWORD3>
  449. <KEYWORD3>gethostbyname</KEYWORD3>
  450. <KEYWORD3>gethostent</KEYWORD3>
  451. <KEYWORD3>getnetbyaddr</KEYWORD3>
  452. <KEYWORD3>getnetbyname</KEYWORD3>
  453. <KEYWORD3>getnetent</KEYWORD3>
  454. <KEYWORD3>getprotobyname</KEYWORD3>
  455. <KEYWORD3>getprotobynumber</KEYWORD3>
  456. <KEYWORD3>getprotoent</KEYWORD3>
  457. <KEYWORD3>getservbyname</KEYWORD3>
  458. <KEYWORD3>getservbyport</KEYWORD3>
  459. <KEYWORD3>getservent</KEYWORD3>
  460. <KEYWORD3>sethostent</KEYWORD3>
  461. <KEYWORD3>setnetent</KEYWORD3>
  462. <KEYWORD3>setprotoent</KEYWORD3>
  463. <KEYWORD3>setservent</KEYWORD3>
  464. <!-- Time-related functions -->
  465. <KEYWORD3>gmtime</KEYWORD3>
  466. <KEYWORD3>localtime</KEYWORD3>
  467. <KEYWORD3>time</KEYWORD3>
  468. <!--<KEYWORD3>times</KEYWORD3>-->
  469. </KEYWORDS>
  470. </RULES>
  471. <RULES SET="POD" DEFAULT="COMMENT2">
  472. <MARK_FOLLOWING TYPE="LABEL" AT_LINE_START="TRUE">=</MARK_FOLLOWING>
  473. </RULES>
  474. <RULES SET="LITERAL" DEFAULT="LITERAL1" ESCAPE="\">
  475. <!-- Variables -->
  476. <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  477. <BEGIN>${</BEGIN>
  478. <END>}</END>
  479. </SPAN>
  480. <MARK_FOLLOWING TYPE="KEYWORD2">$#</MARK_FOLLOWING>
  481. <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>
  482. <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  483. <BEGIN>@{</BEGIN>
  484. <END>}</END>
  485. </SPAN>
  486. <MARK_FOLLOWING TYPE="KEYWORD2">@</MARK_FOLLOWING>
  487. <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  488. <BEGIN>%{</BEGIN>
  489. <END>}</END>
  490. </SPAN>
  491. <MARK_FOLLOWING TYPE="KEYWORD2">%</MARK_FOLLOWING>
  492. <SEQ TYPE="LITERAL1">|</SEQ>
  493. <SEQ TYPE="LITERAL1">&amp;</SEQ>
  494. <SEQ TYPE="LITERAL1">!</SEQ>
  495. <SEQ TYPE="LITERAL1">&gt;</SEQ>
  496. <SEQ TYPE="LITERAL1">&lt;</SEQ>
  497. <SEQ TYPE="LITERAL1">)</SEQ>
  498. <SEQ TYPE="LITERAL1">(</SEQ>
  499. <SEQ TYPE="LITERAL1">=</SEQ>
  500. <SEQ TYPE="LITERAL1">!</SEQ>
  501. <SEQ TYPE="LITERAL1">+</SEQ>
  502. <SEQ TYPE="LITERAL1">-</SEQ>
  503. <SEQ TYPE="LITERAL1">/</SEQ>
  504. <SEQ TYPE="LITERAL1">*</SEQ>
  505. <SEQ TYPE="LITERAL1">^</SEQ>
  506. <SEQ TYPE="LITERAL1">~</SEQ>
  507. <SEQ TYPE="LITERAL1">}</SEQ>
  508. <SEQ TYPE="LITERAL1">{</SEQ>
  509. <SEQ TYPE="LITERAL1">.</SEQ>
  510. <SEQ TYPE="LITERAL1">,</SEQ>
  511. <SEQ TYPE="LITERAL1">;</SEQ>
  512. <SEQ TYPE="LITERAL1">]</SEQ>
  513. <SEQ TYPE="LITERAL1">[</SEQ>
  514. <SEQ TYPE="LITERAL1">?</SEQ>
  515. <SEQ TYPE="LITERAL1">:</SEQ>
  516. </RULES>
  517. <RULES SET="EXEC" DEFAULT="KEYWORD3" ESCAPE="\">
  518. <!-- Comments -->
  519. <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
  520. <!-- Variables -->
  521. <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
  522. <BEGIN>${</BEGIN>
  523. <END>}</END>
  524. </SPAN>
  525. <MARK_FOLLOWING TYPE="KEYWORD2">$#</MARK_FOLLOWING>
  526. <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>
  527. <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
  528. <BEGIN>@{</BEGIN>
  529. <END>}</END>
  530. </SPAN>
  531. <MARK_FOLLOWING TYPE="KEYWORD2">@</MARK_FOLLOWING>
  532. <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
  533. <BEGIN>%{</BEGIN>
  534. <END>}</END>
  535. </SPAN>
  536. <MARK_FOLLOWING TYPE="KEYWORD2">%</MARK_FOLLOWING>
  537. </RULES>
  538. <RULES SET="VARIABLE" DEFAULT="KEYWORD2" ESCAPE="\">
  539. <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  540. <BEGIN>{</BEGIN>
  541. <END>}</END>
  542. </SPAN>
  543. <SEQ TYPE="OPERATOR">-&gt;</SEQ>
  544. </RULES>
  545. <RULES SET="REGEXP" DEFAULT="MARKUP" ESCAPE="\">
  546. <SEQ TYPE="MARKUP">)(</SEQ>
  547. </RULES>
  548. <RULES SET="SUB_NAME" DEFAULT="FUNCTION">
  549. <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
  550. <SPAN TYPE="OPERATOR" DELEGATE="MAIN">
  551. <BEGIN>(</BEGIN>
  552. <END>)</END>
  553. </SPAN>
  554. </RULES>
  555. </MODE>