Warning, /frameworks/syntax-highlighting/data/syntax/raku.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!DOCTYPE language
0003 [
0004   <!--
0005   identifier:
0006     Alphabetic characters include characters with the Unicode General Category value Letter (L), and the underscore _.
0007     Alphanumeric characters additionally include characters with the Unicode General Category value Number, Decimal Digit (Nd).
0008   -->
0009   <!-- Large values -->
0010   <!ENTITY rangealnum "_\p{L}\p{N}">
0011   <!ENTITY alnum "[_\p{L}\p{N}]">
0012   <!ENTITY _ident "&alnum;*+(?:[-']&alnum;*+)*+">
0013   <!ENTITY ident "(?:[_\p{L}]&_ident;)">
0014   <!ENTITY datatype "(?:[_\p{Lu}\p{Lt}]&_ident;)">
0015 
0016   <!-- 0 to 0x10FFFF -->
0017   <!ENTITY unicode_hex_point "(?:0*+(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5}+)|0++)">
0018   <!-- 0 to 1114111 -->
0019   <!ENTITY unicode_dec_point "(?:0*+(?:1(?:0[0-9]{5}|1(?:0[0-9]{4}|(?:1[0-3][0-9]{3}|4(?:0[0-9]{2}|1(?:0[0-9]|1[01]))))))|[0-9]{1,6}+|0++)">
0020   <!-- 0 to 0o4177777 -->
0021   <!ENTITY unicode_oct_point "(?:0*+(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}+|0++)">
0022 
0023   <!ENTITY prefixdollarvarname "(?:[_\p{L}0-9/!]|\(\))">
0024   <!ENTITY dollarvarname "(?:&ident;|[0-9]+|[/!]|\(\))">
0025   <!ENTITY twigils "*?!.^:=~">
0026 
0027   <!ENTITY twigil_variable "[&#37;&amp;](?=[?*][_\p{L}])|[$@](?=[&twigils;][_\p{L}])">
0028   <!ENTITY variable "[&#37;@]?\$/|\$!|\$[0-9]+|[\\@&#37;&amp;$]&ident;">
0029 
0030   <!ENTITY podfmt "BCEIKLMNPRTUVXZ">
0031   <!ENTITY allnopodfmt "(?:[^&podfmt;]+|[&podfmt;](?![&lt;«]))+">
0032   <!ENTITY allnopodfmt1 "(?:[^&podfmt;&lt;>]+|[&podfmt;](&lt;(?:&lt;*(?=&lt;))|(?![&lt;«])))+">
0033   <!ENTITY allnopodfmt2 "(?:[^&podfmt;«»]+|[&podfmt;](?![&lt;«]))+">
0034   <!ENTITY allnopodfmt3 "(?:[^&podfmt;&lt;>]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+">
0035 
0036   <!ENTITY quotingform_q "(?:q?(?::?[xsahfcb]|:?ww?|:(?:v|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)|)(?::[xsahfcbv]|ww?|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)*)">
0037   <!ENTITY quotingform_q_assert "(?:\s+(?=\()|\s*(?=[^()>」\]}a-zA-Z0-9]|$))">
0038   <!ENTITY quotingconstruct "q&quotingform_q;&quotingform_q_assert;">
0039 
0040   <!ENTITY int10 "(?:[0-9]++(?:_[0-9]++)*+)">
0041   <!ENTITY exp "(?:[eE][+-]?&int10;)">
0042   <!ENTITY intN "(?:[0-9a-zA-Z]++(?:_[0-9a-zA-Z]++)*+)">
0043 
0044   <!-- https://docs.raku.org/language/operators -->
0045 
0046   <!--
0047     42.&f;
0048       ~~ access
0049     expr.&?BLOCK
0050         ~ access
0051          ~~~~~~~~ variable
0052   -->
0053   <!ENTITY method_ops "\.([=^?+*:]|&amp;(?![?][_\p{L}]))?">
0054 
0055   <!ENTITY postfix_ops "⚛?(\+\+|\-\-)">
0056 
0057   <!ENTITY prefix_unary_ops "(\+\+⚛?|\-\-⚛?|//|[+~?]\^|[-+~|?!^⚛]|\b(not|so)\b)">
0058 
0059   <!ENTITY _infix_simple_ops "\*\*|&#37;&#37;|[+~][&amp;&lt;>|^]|\?[&amp;^|]|=>|==>|&lt;==|::?=|//|\^\^|\([-+&amp;.|]\)|\^?…\^?|\^?\.\.\.\^?|[-+*/&#37;~∘&amp;∩⊍|∪⊎^⊖=]|\b(div|mod|gcd|lcm|xx?|min|max|minmax|andthen|notandthen|orelse|o)\b">
0060   <!ENTITY _infix_chaining_ops "\((elem|cont|[=&lt;>]=|[&lt;>])\)|\.\.[\^]?|\^\.\.\^?|&lt;=>|===|=:=|=~=|~~|[=&lt;>]=|[⩵≠≤≥⩶∈∉≡≢∋∌⊂⊄⊆⊈⊃⊅⊇⊉]|&lt;(?!&lt;)|>(?!>)|&amp;&amp;|\|\||\b(eq|ne|gt|ge|lt|le|before|after|eqv|and|or|xor)\b">
0061   <!-- "does" is an operator, but also a trait (separate treatment) -->
0062   <!ENTITY _infix_structural "\b(but|cmp|coll|unicmp|leg)\b">
0063   <!ENTITY _infix_other_ops "\^fff?\b|\bfff?\^|\bfff?\b|!!|\?\?">
0064   <!ENTITY _infix_ops1 "(\b[RXZS]+)?((&_infix_simple_ops;)=?|⚛[-+]?=|\\(?=\s|$)|&_infix_structural;)">
0065   <!ENTITY _infix_ops2 "\b[RXZS]+does">
0066   <!ENTITY _infix_ops3 "((\b[RXZS]|!)[RXZS!]*+)?(&_infix_chaining_ops;|=)|[XZ]+">
0067   <!ENTITY _infix_ops "&_infix_ops1;|&_infix_ops2;|&_infix_ops3;">
0068   <!ENTITY infix_ops "(&_infix_ops;|&_infix_other_ops;|->)">
0069 
0070   <!ENTITY list_ops "!!!|\?\?\?|\.\.\.">
0071 
0072   <!-- <!ENTITY regadverb "(?!\()\s*(?::\w+\s*)*(?=[^\w\s])"> -->
0073   <!ENTITY regadverb "(?!\()\s*(?=[^\p{L}\p{N}\s])">
0074 ]>
0075 <language name="Raku" version="9" kateversion="5.62" section="Scripts" extensions="*.raku;*.rakumod;*.rakudoc;*.rakutest;*.pl6;*.PL6;*.p6;*.pm6;*.pod6" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
0076   <highlighting>
0077 
0078     <!-- https://docs.raku.org/routines -->
0079 
0080     <list name="pod">
0081       <item>begin</item>
0082       <item>end</item>
0083       <item>finish</item>
0084       <item>for</item>
0085       <include>podtypename</include>
0086     </list>
0087 
0088     <list name="podblocktypename">
0089       <item>pod</item>
0090       <include>podtypename</include>
0091     </list>
0092 
0093     <list name="pod values">
0094       <item>True</item>
0095       <item>False</item>
0096     </list>
0097 
0098     <list name="podtypename">
0099       <item>head1</item>
0100       <item>head2</item>
0101       <item>head3</item>
0102       <item>head4</item>
0103       <item>head5</item>
0104       <item>head6</item>
0105       <item>item</item>
0106       <item>item1</item>
0107       <item>item2</item>
0108       <item>item3</item>
0109       <item>item4</item>
0110       <item>item5</item>
0111       <item>item6</item>
0112       <item>para</item>
0113       <item>code</item>
0114       <item>defn</item>
0115       <item>comment</item>
0116       <item>table</item>
0117       <item>input</item>
0118       <item>output</item>
0119     </list>
0120 
0121     <list name="quoting">
0122       <item>exec</item>
0123       <item>words</item>
0124       <item>quotewords</item>
0125       <item>scalar</item>
0126       <item>array</item>
0127       <item>hash</item>
0128       <item>function</item>
0129       <item>closure</item>
0130       <item>backslash</item>
0131       <item>heredoc</item>
0132       <item>val</item>
0133     </list>
0134 
0135     <list name="declare routine">
0136       <item>macro</item>
0137       <item>sub</item>
0138       <item>submethod</item>
0139       <item>method</item>
0140       <item>multi</item>
0141       <item>proto</item>
0142       <item>only</item>
0143       <item>category</item>
0144     </list>
0145 
0146     <!-- https://docs.raku.org/syntax/token -->
0147     <list name="regex keywords">
0148       <item>rule</item>
0149       <item>token</item>
0150       <item>regex</item>
0151     </list>
0152 
0153     <list name="values">
0154       <include>pod values</include>
0155       <item>self</item>
0156     </list>
0157 
0158     <list name="variable storages">
0159       <item>my</item>
0160       <item>our</item>
0161       <item>has</item>
0162       <item>state</item>
0163       <item>anon</item>
0164       <item>augment</item>
0165       <item>supersede</item>
0166       <item>let</item>
0167       <item>temp</item>
0168       <item>constant</item>
0169     </list>
0170 
0171     <!-- https://docs.raku.org/language/control -->
0172     <list name="control flow">
0173       <!-- conditional -->
0174       <item>if</item>
0175       <item>else</item>
0176       <item>elsif</item>
0177       <item>unless</item>
0178       <item>when</item>
0179       <item>with</item>
0180       <item>orwith</item>
0181       <item>without</item>
0182       <item>given</item>
0183       <item>default</item>
0184       <!-- repeat -->
0185       <item>for</item>
0186       <item>loop</item>
0187       <item>repeat</item>
0188       <item>while</item>
0189       <item>until</item>
0190       <!-- control flow -->
0191       <item>once</item>
0192       <item>take</item>
0193       <item>next</item>
0194       <item>last</item>
0195       <item>redo</item>
0196       <item>return</item>
0197       <item>return-rw</item>
0198       <item>exit</item>
0199       <item>goto</item>
0200       <!-- exception -->
0201       <item>die</item>
0202       <item>fail</item>
0203       <item>try</item>
0204       <item>warn</item>
0205       <!-- concurrency -->
0206       <item>react</item>
0207       <item>gather</item>
0208       <item>proceed</item>
0209       <item>succeed</item>
0210       <item>whenever</item>
0211       <item>supply</item>
0212       <!-- asynchronous -->
0213       <item>async</item>
0214       <item>await</item>
0215       <item>start</item>
0216       <!-- phasers -->
0217       <item>BEGIN</item>
0218       <item>CHECK</item>
0219       <item>QUIT</item>
0220       <item>CLOSE</item>
0221       <item>INIT</item>
0222       <item>FIRST</item>
0223       <item>ENTER</item>
0224       <item>LEAVE</item>
0225       <item>KEEP</item>
0226       <item>UNDO</item>
0227       <item>NEXT</item>
0228       <item>LAST</item>
0229       <item>END</item>
0230       <item>CATCH</item>
0231       <item>CONTROL</item>
0232     </list>
0233 
0234     <list name="keywords">
0235       <item>do</item>
0236       <item>no</item>
0237       <item>use</item>
0238       <item>require</item>
0239       <!-- typeConstraint -->
0240       <item>as</item>
0241       <item>does</item>
0242       <item>handles</item>
0243       <item>is</item>
0244       <item>of</item>
0245       <item>trusts</item>
0246       <item>where</item>
0247       <!-- module -->
0248       <item>module</item>
0249       <item>class</item>
0250       <item>role</item>
0251       <item>package</item>
0252       <item>enum</item>
0253       <item>grammar</item>
0254       <item>slang</item>
0255       <item>subset</item>
0256       <!-- phasers -->
0257       <item>PRE</item>
0258       <item>POST</item>
0259       <item>COMPOSE</item>
0260       <item>DOC</item>
0261     </list>
0262 
0263     <list name="properties">
0264       <item>DEPRECATED</item>
0265       <item>assoc</item>
0266       <item>binary</item>
0267       <item>built</item>
0268       <item>cached</item>
0269       <item>copy</item>
0270       <item>deep</item>
0271       <item>default</item>
0272       <item>defequiv</item>
0273       <item>dynamic</item>
0274       <item>equiv</item>
0275       <item>export</item>
0276       <item>hidden-from-backtrace</item>
0277       <item>inline</item>
0278       <item>irs</item>
0279       <item>looser</item>
0280       <item>ofs</item>
0281       <item>ors</item>
0282       <item>parsed</item>
0283       <item>prec</item>
0284       <item>pure</item>
0285       <item>raw</item>
0286       <item>readonly</item>
0287       <item>ref</item>
0288       <item>reparsed</item>
0289       <item>required</item>
0290       <item>rw</item>
0291       <item>test-assertion</item>
0292       <item>tighter</item>
0293       <item>unary</item>
0294       <item>will</item>
0295     </list>
0296 
0297     <list name="number">
0298       <item>NaN</item>
0299       <item>Inf</item>
0300     </list>
0301 
0302     <list name="types">
0303       <item>Any</item>
0304       <item>Array</item>
0305       <item>Associative</item>
0306       <item>Bag</item>
0307       <item>Blob</item>
0308       <item>Block</item>
0309       <item>Bool</item>
0310       <item>Buf</item>
0311       <item>Callable</item>
0312       <item>Capture</item>
0313       <item>Char</item>
0314       <item>Class</item>
0315       <item>Code</item>
0316       <item>Complex</item>
0317       <item>Cool</item>
0318       <item>Exception</item>
0319       <item>Failure</item>
0320       <item>False</item>
0321       <item>Grammar</item>
0322       <item>Hash</item>
0323       <item>IO</item>
0324       <item>Int</item>
0325       <item>Junction</item>
0326       <item>Bag</item>
0327       <item>List</item>
0328       <item>Macro</item>
0329       <item>Match</item>
0330       <item>Method</item>
0331       <item>Mu</item>
0332       <item>Num</item>
0333       <item>Numeric</item>
0334       <item>Order</item>
0335       <item>Pair</item>
0336       <item>Positional</item>
0337       <item>Proxy</item>
0338       <item>Range</item>
0339       <item>Rat</item>
0340       <item>Rational</item>
0341       <item>Real</item>
0342       <item>Regex</item>
0343       <item>Routine</item>
0344       <item>Scalar</item>
0345       <item>Seq</item>
0346       <item>Set</item>
0347       <item>Signature</item>
0348       <item>Str</item>
0349       <item>Sub</item>
0350       <item>Submethod</item>
0351       <item>True</item>
0352       <item>UInt</item>
0353       <item>Version</item>
0354       <item>Whatever</item>
0355       <item>buf8</item>
0356       <item>buf16</item>
0357       <item>buf32</item>
0358       <item>buf64</item>
0359       <item>int</item>
0360       <item>int8</item>
0361       <item>int16</item>
0362       <item>int32</item>
0363       <item>int64</item>
0364       <item>num</item>
0365       <item>uint</item>
0366       <item>uint8</item>
0367       <item>uint16</item>
0368       <item>uint32</item>
0369       <item>uint64</item>
0370       <item>uint</item>
0371       <item>utf8</item>
0372       <item>utf16</item>
0373       <item>utf32</item>
0374     </list>
0375 
0376     <list name="function operators">
0377       <item>print</item>
0378       <item>push</item>
0379       <item>say</item>
0380       <item>map</item>
0381       <item>substr</item>
0382       <item>die</item>
0383       <item>any</item>
0384     </list>
0385 
0386     <list name="operators">
0387       <item>X</item>
0388       <item>gcd</item>
0389       <item>ge</item>
0390       <item>gt</item>
0391       <item>lcm</item>
0392       <item>le</item>
0393       <item>leg</item>
0394       <item>lt</item>
0395       <item>max</item>
0396       <item>min</item>
0397       <item>minmax</item>
0398       <item>mod</item>
0399       <item>ne</item>
0400       <item>not</item>
0401       <item>notandthen</item>
0402       <item>o</item>
0403       <item>or</item>
0404       <item>orelse</item>
0405       <item>so</item>
0406       <item>unicmp</item>
0407       <item>x</item>
0408       <item>xor</item>
0409       <item>xx</item>
0410       <item>Z</item>
0411       <item>and</item>
0412       <item>andthen</item>
0413       <item>but</item>
0414       <item>cmp</item>
0415       <item>coll</item>
0416       <item>div</item>
0417       <item>does</item>
0418       <item>eq</item>
0419       <item>eqv</item>
0420       <item>ff</item>
0421       <item>fff</item>
0422     </list>
0423 
0424     <list name="unicode general categories">
0425       <item>L</item>  <item>Letter</item>
0426       <item>LC</item> <item>Cased_Letter</item>
0427       <item>Lu</item> <item>Uppercase_Letter</item>
0428       <item>Ll</item> <item>Lowercase_Letter</item>
0429       <item>Lt</item> <item>Titlecase_Letter</item>
0430       <item>Lm</item> <item>Modifier_Letter</item>
0431       <item>Lo</item> <item>Other_Letter</item>
0432       <item>M</item>  <item>Mark</item>
0433       <item>Mn</item> <item>Nonspacing_Mark</item>
0434       <item>Mc</item> <item>Spacing_Mark</item>
0435       <item>Me</item> <item>Enclosing_Mark</item>
0436       <item>N</item>  <item>Number</item>
0437       <item>Nd</item> <item>Decimal_Number</item> <item>digit</item>
0438       <item>Nl</item> <item>Letter_Number</item>
0439       <item>No</item> <item>Other_Number</item>
0440       <item>P</item>  <item>Punctuation</item> <item>punct</item>
0441       <item>Pc</item> <item>Connector_Punctuation</item>
0442       <item>Pd</item> <item>Dash_Punctuation</item>
0443       <item>Ps</item> <item>Open_Punctuation</item>
0444       <item>Pe</item> <item>Close_Punctuation</item>
0445       <item>Pi</item> <item>Initial_Punctuation</item>
0446       <item>Pf</item> <item>Final_Punctuation</item>
0447       <item>Po</item> <item>Other_Punctuation</item>
0448       <item>S</item>  <item>Symbol</item>
0449       <item>Sm</item> <item>Math_Symbol</item>
0450       <item>Sc</item> <item>Currency_Symbol</item>
0451       <item>Sk</item> <item>Modifier_Symbol</item>
0452       <item>So</item> <item>Other_Symbol</item>
0453       <item>Z</item>  <item>Separator</item>
0454       <item>Zs</item> <item>Space_Separator</item>
0455       <item>Zl</item> <item>Line_Separator</item>
0456       <item>Zp</item> <item>Paragraph_Separator</item>
0457       <item>C</item>  <item>Other</item>
0458       <item>Cc</item> <item>Control</item> <item>cntrl</item>
0459       <item>Cf</item> <item>Format</item>
0460       <item>Cs</item> <item>Surrogate</item>
0461       <item>Co</item> <item>Private_Use</item>
0462       <item>Cn</item> <item>Unassigned</item>
0463     </list>
0464 
0465     <list name="assertion">
0466       <item>before</item>
0467       <item>after</item>
0468     </list>
0469 
0470     <contexts>
0471 
0472       <context name="Shebang" attribute="Comment" lineEndContext="#pop!base" fallthroughContext="#pop!base">
0473         <RegExpr attribute="Keyword" context="#pop!base" String="^#!\/.*" column="0"/>
0474       </context>
0475 
0476       <context name="base" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
0477         <DetectSpaces/>
0478         <AnyChar String="{(" attribute="Symbol" beginRegion="block"/>
0479         <AnyChar String="])" context="postfix_op" attribute="Symbol" endRegion="block"/>
0480         <AnyChar String=",;" attribute="Separator Symbol"/>
0481         <DetectChar char="}" endRegion="block" attribute="Symbol"/>
0482         <DetectChar char="#" context="StartComment" attribute="Comment"/>
0483         <DetectChar char="=" context="StartPod" attribute="Pod" firstNonSpace="1"/>
0484         <IncludeRules context="find_boxed_op"/>
0485         <RegExpr String="&prefix_unary_ops;(\s*&prefix_unary_ops;)*+|&list_ops;" context="postfix_hyper_op" attribute="Operator"/>
0486       </context>
0487 
0488       <context name="find_boxed_op" attribute="Normal Text" lineEndContext="#pop">
0489         <DetectChar char="[" context="boxed_op" attribute="Symbol" beginRegion="block"/>
0490         <RegExpr String="(\b[RXZS]+)?(?=\\?\[)" context="start_boxed_op" attribute="Operator"/>
0491       </context>
0492       <context name="start_boxed_op" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!boxed_op">
0493         <DetectChar char="[" context="#pop!boxed_op" attribute="Symbol" beginRegion="block"/>
0494         <DetectChar char="\" context="boxed_op"/>
0495       </context>
0496 
0497       <context name="boxed_op" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!boxed_op2">
0498         <RegExpr String="&lt;(?![\]&lt;])" context="boxed_op_string" attribute="String Delimiter" beginRegion="block"/>
0499       </context>
0500       <context name="boxed_op2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
0501         <DetectChar char="]" context="#pop" attribute="Symbol" endRegion="block"/>
0502         <IncludeRules context="boxed_op_elem"/>
0503       </context>
0504       <!-- [<...>] -->
0505       <context name="boxed_op_string" attribute="Normal Text" lineEndContext="#stay">
0506         <DetectChar char=">" context="#pop#pop!postfix_op" attribute="String Delimiter"/>
0507         <IncludeRules context="q_String&lt;_common"/>
0508       </context>
0509 
0510       <context name="boxed_op_elem_before" attribute="Normal Text" lineEndContext="#pop">
0511         <IncludeRules context="find_boxed_op"/>
0512         <RegExpr String="(\b[RXZS]+)?(&lt;&lt;|>>|«|»)" context="hyper_op_dispatch" lookAhead="1"/>
0513         <RegExpr String="[\\&amp;]&ident;" attribute="Variable"/>
0514       </context>
0515       <context name="boxed_op_elem" attribute="Normal Text" lineEndContext="#pop">
0516         <IncludeRules context="boxed_op_elem_before"/>
0517         <RegExpr String="\bdoes\b|&infix_ops;" attribute="Operator"/>
0518         <IncludeRules context="boxed_op_elem_after"/>
0519       </context>
0520       <context name="boxed_op_elem_after" attribute="Normal Text" lineEndContext="#pop">
0521         <RegExpr String="&ident;"/>
0522       </context>
0523 
0524       <context name="postfix_hyper_op" attribute="Normal Text" lineEndContext="#pop!term" fallthroughContext="#pop!term">
0525         <StringDetect String="&lt;&lt;" context="#pop!term" attribute="Hyper Operator"/>
0526         <StringDetect String="«" context="#pop!term" attribute="Hyper Operator"/>
0527       </context>
0528 
0529       <context name="postfix_op" attribute="Normal Text" lineEndContext="#pop!infix_op" fallthroughContext="#pop!infix_op">
0530         <StringDetect String="[" context="#pop" attribute="Symbol" beginRegion="block"/>
0531         <StringDetect String="!" context="#pop" attribute="Member Operator"/>
0532         <StringDetect String="&lt;&lt;" context="#pop" attribute="Hyper Operator"/>
0533         <StringDetect String="«" context="#pop" attribute="Hyper Operator"/>
0534         <StringDetect String="&lt;" context="#pop!q_String&lt;_term" attribute="String Delimiter"/>
0535         <RegExpr String="&postfix_ops;" attribute="Operator"/>
0536       </context>
0537 
0538       <context name="infix_op" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
0539         <DetectSpaces/>
0540         <DetectChar char="#" context="StartComment" attribute="Comment"/>
0541         <WordDetect String="does" context="#pop" attribute="Keyword"/>
0542         <IncludeRules context="infix_regular_op"/>
0543       </context>
0544       <context name="infix_regular_op" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
0545         <RegExpr String="&infix_ops;(\s*&prefix_unary_ops;)*+" context="#pop!infix_postfix_hyper_op" attribute="Operator"/>
0546         <RegExpr String="&method_ops;" context="#pop" attribute="Member Operator"/>
0547         <RegExpr String="(\b[RXZS]+)?(&lt;&lt;|>>|«|»)" context="#pop!hyper_op_dispatch" lookAhead="1"/>
0548       </context>
0549 
0550       <!-- if infix operator is followed by hyper operator, then it is a postfix operator -->
0551       <context name="infix_postfix_hyper_op" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
0552         <IncludeRules context="postfix_hyper_op"/>
0553       </context>
0554 
0555       <context name="hyper_op_dispatch" attribute="Normal Text" lineEndContext="#pop">
0556         <AnyChar String="RXZS" attribute="Operator"/>
0557         <StringDetect String="&lt;&lt;" context="#pop!hyper_op1" attribute="Hyper Operator"/>
0558         <StringDetect String=">>" context="#pop!hyper_op1" attribute="Hyper Operator"/>
0559         <AnyChar String="«»" context="#pop!hyper_op2" attribute="Hyper Operator"/>
0560       </context>
0561       <context name="hyper_op1" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
0562         <StringDetect String="&lt;&lt;" context="#pop" attribute="Hyper Operator"/>
0563         <StringDetect String=">>" context="#pop" attribute="Hyper Operator"/>
0564         <IncludeRules context="boxed_op_elem_before"/>
0565         <!-- ignore > after infix operator -->
0566         <RegExpr String="(\b[RXZS]+)?([+~][&amp;>|^]?|[-=])=?|\bdoes\b|&infix_ops;" attribute="Operator"/>
0567         <IncludeRules context="boxed_op_elem_after"/>
0568       </context>
0569       <context name="hyper_op2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
0570         <AnyChar String="«»" context="#pop" attribute="Hyper Operator"/>
0571         <IncludeRules context="boxed_op_elem"/>
0572       </context>
0573 
0574       <context name="term" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
0575         <DetectSpaces/>
0576         <AnyChar String="{([])},;" context="#pop" lookAhead="1"/>
0577         <DetectChar char="#" context="StartComment" attribute="Comment"/>
0578         <DetectChar char="&quot;" context="qq_RawString_term" attribute="String Delimiter"/>
0579         <DetectChar char="'" context="q_RawString_term" attribute="String Delimiter"/>
0580         <DetectChar char="«" context="qq_String«_term" attribute="String Delimiter"/>
0581         <StringDetect String="&lt;&lt;" context="qq_String&lt;&lt;_term" attribute="String Delimiter"/>
0582         <DetectChar char="&lt;" context="q_String&lt;_term" attribute="String Delimiter"/>
0583         <DetectChar char="「" context="Q_String「_term" attribute="String Delimiter"/>
0584         <DetectChar char="/" context="Pattern/" attribute="Pattern Delimiter" beginRegion="regex"/>
0585         <DetectChar char=":" context="MaybeAttribute" attribute="Separator Symbol"/>
0586 
0587         <RegExpr String="\b(?:s|S|tr|TR)&regadverb;" context="RegexSubstitution" attribute="Pattern Delimiter"/>
0588         <RegExpr String="\b(?:rx|m)&regadverb;" context="Regex" attribute="Pattern Delimiter"/>
0589 
0590         <RegExpr String="&twigil_variable;" context="Twigil_term" attribute="Variable"/>
0591         <!-- '*' -> Whatever variable: (* + *)(1, 2) == 3 -->
0592         <RegExpr String="&variable;|\$(&lt;&ident;>)+|[$@](\(\))?|[*]" context="#pop!postfix_op" attribute="Variable"/>
0593 
0594         <RegExpr String="\bQ(\s++(?=['(_]|$)|\s*+(?=[^()>」\]}'&rangealnum;]|$))" context="Q_String" attribute="String"/>
0595 
0596         <RegExpr String="\.?\p{N}" context="Number" lookAhead="1" minimal="1"/>
0597 
0598         <RegExpr attribute="Operator" context="q_QuotingForm" String="\bq(?=&quotingform_q;&quotingform_q_assert;)"/>
0599 
0600         <IncludeRules context="infix_regular_op"/>
0601 
0602         <RegExpr String="(?&lt;=[.])(unless|when|with|without|given|default|for|loop|repeat|while|until|once|next|last|redo|goto|proceed|succeed|start|proceed|succeed)\b" context="#pop" attribute="Normal Text"/>
0603 
0604         <keyword String="control flow" context="#pop" attribute="Control Flow"/>
0605         <keyword String="variable storages" context="#stay" attribute="Variable Storage"/>
0606         <WordDetect String="is" context="Is" attribute="Keyword"/>
0607         <keyword String="keywords" context="#pop" attribute="Keyword"/>
0608         <keyword String="function operators" context="#pop" attribute="Function"/>
0609         <keyword String="declare routine" context="#stay" attribute="Declare Routine"/>
0610         <keyword String="regex keywords" context="RegexKeyword" attribute="Keyword"/>
0611         <keyword String="values" context="#pop!postfix_op" attribute="Keyword Value"/>
0612         <keyword String="number" context="#pop!postfix_op" attribute="Float"/>
0613         <RegExpr String="\b(u?int(8|16|32|64)?|utf(8|16|32)|buf(8|16|32|64)|num|&datatype;)\b" context="#pop" attribute="Data Type"/>
0614         <!-- <RegExpr String="&ident;\s*+(?=\()" context="#pop" attribute="Function"/> -->
0615         <RegExpr String="!?&ident;" context="#pop" attribute="Normal Text"/>
0616 
0617         <DetectChar char="\"/>
0618 
0619         <RegExpr String="." context="#pop" attribute="Normal Text"/>
0620       </context>
0621 
0622 
0623       <context name="Is" attribute="Normal Text" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!postfix_op">
0624         <DetectSpaces/>
0625         <keyword String="properties" context="#pop#pop!postfix_op" attribute="Property"/>
0626       </context>
0627 
0628       <context name="Interpolation" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
0629         <DetectChar char="}" context="#pop" attribute="Symbol" endRegion="block"/>
0630         <IncludeRules context="base"/>
0631       </context>
0632 
0633       <context name="SubExpression(" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
0634         <DetectChar char=")" context="#pop" attribute="Symbol" endRegion="block"/>
0635         <IncludeRules context="base"/>
0636       </context>
0637 
0638       <context name="Twigil" attribute="Variable" lineEndContext="#pop">
0639         <AnyChar String="&twigils;" attribute="Twigil"/>
0640         <RegExpr String="&ident;" context="#pop#pop" attribute="Variable"/>
0641       </context>
0642 
0643       <context name="Twigil_term" attribute="Variable" lineEndContext="#pop">
0644         <AnyChar String="&twigils;" attribute="Twigil"/>
0645         <RegExpr String="&ident;" context="#pop#pop!postfix_op" attribute="Variable"/>
0646       </context>
0647 
0648       <context name="RegexKeyword" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
0649         <DetectSpaces/>
0650         <DetectChar char="{" context="#pop!RegexKeyword-Pattern{" attribute="Symbol" beginRegion="regex"/>
0651         <DetectChar char="#" context="StartComment" attribute="Comment"/>
0652         <RegExpr String="&ident;"/>
0653       </context>
0654       <context name="RegexKeyword-Pattern{" attribute="Pattern" lineEndContext="#stay">
0655         <DetectChar char="}" context="#pop" attribute="Symbol" endRegion="regex"/>
0656         <IncludeRules context="find_Pattern"/>
0657       </context>
0658 
0659 
0660       <!-- Regex Substitution -->
0661 
0662       <context name="RegexSubstitution" attribute="Pattern Delimiter" lineEndContext="#stay">
0663         <DetectChar char="/" context="PatternSubstitution/" attribute="Pattern Delimiter" beginRegion="regex"/>
0664         <IncludeRules context="find_RegexClosure"/>
0665         <RegExpr String="([^\w\s])" context="PatternSubstitution" attribute="Pattern Delimiter" beginRegion="regex"/>
0666       </context>
0667 
0668       <context name="PatternSubstitution/" attribute="Pattern" lineEndContext="#stay">
0669         <DetectChar char="/" context="SubstitutionString/" attribute="Pattern Delimiter" endRegion="regex" beginRegion="substitution"/>
0670         <IncludeRules context="find_Pattern"/>
0671       </context>
0672 
0673       <context name="PatternSubstitution" attribute="Pattern" lineEndContext="#stay">
0674         <RegExpr String="(%1)" dynamic="1" context="SubstitutionString" attribute="Pattern Delimiter" endRegion="regex" beginRegion="substitution"/>
0675         <IncludeRules context="find_Pattern"/>
0676       </context>
0677 
0678       <context name="SubstitutionString/" attribute="String" lineEndContext="#stay">
0679         <StringDetect String="/" context="#pop#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="substitution"/>
0680         <StringDetect String="\/" attribute="String Special Character"/>
0681         <RegExpr String="([^/\\]++|\\[^/])++" attribute="String"/>
0682       </context>
0683 
0684       <context name="SubstitutionString" attribute="String" lineEndContext="#stay">
0685         <DetectChar char="1" dynamic="1" context="#pop#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="substitution"/>
0686         <StringDetect String="\%1" dynamic="1" attribute="String Special Character"/>
0687         <RegExpr String="([^%1\\]++|\\[^%1])++" dynamic="1" attribute="String"/>
0688       </context>
0689 
0690 
0691       <!-- Regex -->
0692 
0693       <context name="Regex" attribute="Pattern" lineEndContext="#stay" fallthroughContext="#pop">
0694         <DetectChar char="/" context="Pattern/" attribute="Pattern Delimiter" beginRegion="regex"/>
0695         <IncludeRules context="find_RegexClosure"/>
0696         <RegExpr String="([^\w\s])" context="Pattern" attribute="Pattern Delimiter" beginRegion="regex"/>
0697       </context>
0698 
0699       <context name="find_RegexClosure" attribute="Pattern Delimiter" lineEndContext="#stay">
0700         <DetectChar char=":" context="RegexModifier" attribute="Pattern Modifier"/>
0701         <StringDetect String="[[" context="Pattern[[" attribute="Pattern Delimiter" beginRegion="regex"/>
0702         <StringDetect String="{{" context="Pattern{{" attribute="Pattern Delimiter" beginRegion="regex"/>
0703         <StringDetect String="&lt;&lt;" context="Pattern&lt;&lt;" attribute="Pattern Delimiter" beginRegion="regex"/>
0704         <DetectChar char="[" context="Pattern[" attribute="Pattern Delimiter" beginRegion="regex"/>
0705         <DetectChar char="{" context="Pattern{" attribute="Pattern Delimiter" beginRegion="regex"/>
0706         <DetectChar char="&lt;" context="Pattern&lt;" attribute="Pattern Delimiter" beginRegion="regex"/>
0707         <DetectChar char="(" context="Pattern(" attribute="Pattern Delimiter" beginRegion="regex"/>
0708         <!-- some pairs are missing: https://github.com/Raku/roast/blob/aa4994a7f6b3f6b450a9d231bebd5fba172439b0/S02-literals/quoting-unicode.t#L49-L65 -->
0709         <DetectSpaces/>
0710       </context>
0711 
0712       <context name="RegexModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthroughContext="#pop">
0713         <StringDetect String="P5" context="RegexPerl5" attribute="Pattern Modifier"/>
0714         <StringDetect String="Perl5" context="RegexPerl5" attribute="Pattern Modifier"/>
0715         <DetectIdentifier context="RegexModifierCall" attribute="Pattern Modifier"/>
0716       </context>
0717 
0718       <!-- ':' adverb '(' expr ')' '('...')'
0719                                     ^ pattern delimiter
0720       -->
0721       <context name="RegexModifierCall" attribute="Pattern Modifier" fallthroughContext="#pop#pop">
0722         <DetectSpaces/>
0723         <DetectChar char="(" context="RegexModifier(" attribute="Symbol" beginRegion="block"/>
0724       </context>
0725       <context name="RegexModifier(" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
0726         <DetectChar char=")" context="RegexModifierPattern(" attribute="Symbol" endRegion="block"/>
0727         <IncludeRules context="base"/>
0728       </context>
0729       <context name="RegexModifierPattern(" attribute="Pattern Delimiter" lineEndContext="#stay" fallthroughContext="#pop#pop#pop#pop">
0730         <DetectSpaces/>
0731         <StringDetect String="((" context="#pop#pop#pop#pop!Pattern((" attribute="Pattern Delimiter" beginRegion="regex"/>
0732         <DetectChar char="(" context="#pop#pop#pop#pop!Pattern(" attribute="Pattern Delimiter" beginRegion="regex"/>
0733       </context>
0734 
0735       <context name="RegexPerl5" attribute="Pattern Modifier" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop!IsRegexPerl5">
0736         <DetectSpaces/>
0737       </context>
0738 
0739       <context name="IsRegexPerl5" attribute="Pattern" lineEndContext="#stay">
0740         <IncludeRules context="find_pattern##Perl"/>
0741       </context>
0742 
0743       <context name="Pattern/" attribute="Pattern" lineEndContext="#stay">
0744         <DetectChar char="/" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
0745         <IncludeRules context="find_Pattern"/>
0746       </context>
0747 
0748       <context name="Pattern{" attribute="Pattern" lineEndContext="#stay">
0749         <DetectChar char="}" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
0750         <IncludeRules context="find_Pattern"/>
0751       </context>
0752 
0753       <context name="Pattern{{" attribute="Pattern" lineEndContext="#stay">
0754         <StringDetect String="}}" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
0755         <IncludeRules context="find_Pattern"/>
0756       </context>
0757 
0758       <context name="Pattern[" attribute="Pattern" lineEndContext="#stay">
0759         <DetectChar char="[" context="PatternSub[" attribute="Symbol" beginRegion="block"/>
0760         <DetectChar char="]" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
0761         <IncludeRules context="find_Pattern"/>
0762       </context>
0763       <context name="PatternSub[" attribute="Pattern" lineEndContext="#stay">
0764         <DetectChar char="]" context="#pop" attribute="Symbol" endRegion="regex"/>
0765         <DetectChar char="[" context="PatternSub[" attribute="Symbol" beginRegion="block"/>
0766         <IncludeRules context="find_Pattern"/>
0767       </context>
0768 
0769       <context name="Pattern[[" attribute="Pattern" lineEndContext="#stay">
0770         <DetectChar char="[" context="PatternSub[" attribute="Symbol" beginRegion="block"/>
0771         <StringDetect String="]]" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
0772         <IncludeRules context="find_Pattern"/>
0773       </context>
0774 
0775       <context name="Pattern(" attribute="Pattern" lineEndContext="#stay">
0776         <DetectChar char="(" context="PatternSub(" attribute="Symbol" beginRegion="block"/>
0777         <DetectChar char=")" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
0778         <IncludeRules context="find_Pattern"/>
0779       </context>
0780       <context name="PatternSub(" attribute="Pattern" lineEndContext="#stay">
0781         <DetectChar char=")" context="#pop" attribute="Symbol" endRegion="regex"/>
0782         <DetectChar char="(" context="PatternSub(" attribute="Symbol" beginRegion="block"/>
0783         <IncludeRules context="find_Pattern"/>
0784       </context>
0785 
0786       <context name="Pattern((" attribute="Pattern" lineEndContext="#stay">
0787         <DetectChar char="(" context="PatternSub(" attribute="Symbol" beginRegion="block"/>
0788         <StringDetect String="))" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
0789         <IncludeRules context="find_Pattern"/>
0790       </context>
0791 
0792       <context name="Pattern&lt;" attribute="Pattern" lineEndContext="#stay">
0793         <DetectChar char=">" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
0794         <IncludeRules context="find_Pattern"/>
0795       </context>
0796 
0797       <context name="Pattern&lt;&lt;" attribute="Pattern" lineEndContext="#stay">
0798         <StringDetect String=">>" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
0799         <IncludeRules context="find_Pattern"/>
0800       </context>
0801 
0802       <context name="Pattern" attribute="Pattern" lineEndContext="#stay">
0803         <DetectChar char="1" dynamic="1" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
0804         <IncludeRules context="find_Pattern"/>
0805       </context>
0806 
0807       <context name="find_Pattern" attribute="Pattern" lineEndContext="#stay">
0808         <DetectSpaces/>
0809         <DetectChar char="." context="#stay" attribute="Pattern Special Character"/>
0810         <DetectChar char="&quot;" attribute="String Delimiter" context="qq_RawString"/>
0811         <DetectChar char="'" attribute="String Delimiter" context="q_RawString"/>
0812         <DetectChar char="\" context="PatternMetaChar" lookAhead="1"/>
0813         <DetectChar char=":" context="PatternModifier" attribute="Pattern Modifier"/>
0814         <DetectChar char="#" context="StartComment" attribute="Comment"/>
0815         <DetectChar char="{" context="Interpolation" attribute="Symbol" beginRegion="block"/>
0816         <StringDetect String="&lt;&lt;" attribute="Operator"/>
0817         <StringDetect String=">>" attribute="Operator"/>
0818         <StringDetect String="&lt;(" context="PatternCaptureMarker" attribute="Pattern Meta Character"/>
0819         <DetectChar char="&lt;" context="RegexClass" attribute="Pattern Meta Character"/>
0820         <StringDetect String="**" context="PatternRangeQuantifier" attribute="Pattern Quantifier"/>
0821         <AnyChar String="?*+" context="PatternAfterQuantifier" attribute="Pattern Quantifier"/>
0822         <AnyChar String="([" attribute="Symbol" beginRegion="block"/>
0823         <AnyChar String=")]" attribute="Symbol" endRegion="block"/>
0824         <StringDetect String="$(" context="PatternVariable(" attribute="Pattern Meta Character" beginRegion="block"/>
0825         <StringDetect String="@(" context="PatternVariable(" attribute="Pattern Meta Character" beginRegion="block"/>
0826         <AnyChar String="«»~" attribute="Operator"/>
0827         <RegExpr String="&twigil_variable;" context="Twigil" attribute="Variable"/>
0828         <RegExpr String="&variable;|@" attribute="Variable"/>
0829         <RegExpr String="\$&lt;&ident;>?" attribute="Pattern Named Capture"/>
0830         <AnyChar String="&amp;|^$" attribute="Pattern Control Flow"/>
0831         <RegExpr String="[&alnum;\s]+" attribute="Pattern"/>
0832         <AnyChar String=">)]" attribute="Error"/>
0833       </context>
0834 
0835       <context name="PatternVariable(" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
0836         <DetectChar char=")" context="#pop" attribute="Pattern Meta Character" endRegion="block"/>
0837         <IncludeRules context="base"/>
0838       </context>
0839 
0840 
0841       <!-- Pattern :... -->
0842 
0843       <context name="PatternModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthroughContext="#pop">
0844         <DetectIdentifier context="#pop" attribute="Pattern Modifier"/>
0845       </context>
0846 
0847 
0848       <!-- Pattern \... -->
0849 
0850       <context name="PatternMetaChar" attribute="Pattern" lineEndContext="#pop">
0851         <RegExpr String="\\[nthvsdwNTHVSDW]|\\[xX](&unicode_hex_point;(?![0-9a-fA-F])|\[\s*&unicode_hex_point;\s*\])|\\[cC](&unicode_dec_point;(?![0-9])|\[[0-9a-zA-Z\s]+\])|[oO](&unicode_oct_point;(?![0-7])|\[\s*&unicode_oct_point;\s*\])" context="#pop" attribute="Pattern Character Class"/>
0852         <RegExpr String="\\[^\p{L}\p{N}]" context="#pop" attribute="Pattern Character"/>
0853 
0854         <StringDetect String="\x[" context="PatternMetaCharX" attribute="Pattern Character Class" insensitive="1"/>
0855         <StringDetect String="\c[" context="PatternMetaCharC" attribute="Pattern Character Class" insensitive="1"/>
0856         <StringDetect String="\o[" context="PatternMetaCharO" attribute="Pattern Character Class" insensitive="1"/>
0857 
0858         <!-- error or incomplete -->
0859         <RegExpr String="\\[xX]&unicode_hex_point;|\\[oO]&unicode_oct_point;|\\[cC]&unicode_dec_point;" context="PatternMetaCharError" attribute="Pattern Character Class"/>
0860         <RegExpr String="\\[xXcCoO]?" context="#pop" attribute="Error"/>
0861       </context>
0862 
0863       <context name="PatternMetaCharError" attribute="Pattern" fallthroughContext="#pop#pop">
0864         <RegExpr String=",?\s+\]?|&alnum;*(\s*,)?\s*\]?" context="#pop#pop" attribute="Error"/>
0865       </context>
0866 
0867       <context name="X[]" attribute="Pattern">
0868         <RegExpr String="\s*\b&unicode_hex_point;\s*"/>
0869       </context>
0870 
0871       <context name="O[]" attribute="Pattern">
0872         <RegExpr String="\s*\b&unicode_oct_point;\s*"/>
0873       </context>
0874 
0875       <context name="C[]" attribute="Pattern">
0876         <RegExpr String="\s*(\b[0-9a-zA-Z]+\s*)+"/>
0877       </context>
0878 
0879       <context name="PatternMetaCharMultipleCommon" attribute="Pattern">
0880         <DetectChar char="]" context="#pop#pop" attribute="Pattern Character Class"/>
0881         <DetectChar char="," attribute="Separator Symbol"/>
0882       </context>
0883 
0884       <context name="PatternMetaCharX" attribute="Pattern Character Class">
0885         <IncludeRules context="PatternMetaCharMultipleCommon"/>
0886         <IncludeRules context="X[]"/>
0887         <RegExpr String="[^0-9a-fA-F\],\s]+|[0-9a-fA-F]+|." attribute="Error"/>
0888       </context>
0889 
0890       <context name="PatternMetaCharO" attribute="Pattern Character Class">
0891         <IncludeRules context="PatternMetaCharMultipleCommon"/>
0892         <IncludeRules context="O[]"/>
0893         <RegExpr String="[^0-7\],\s]+|[0-7]+|." attribute="Error"/>
0894       </context>
0895 
0896       <context name="PatternMetaCharC" attribute="Pattern Character Class">
0897         <IncludeRules context="PatternMetaCharMultipleCommon"/>
0898         <IncludeRules context="C[]"/>
0899         <RegExpr String="[^0-9a-zA-Z\],\s]+|[0-9a-zA-Z]+|." attribute="Error"/>
0900       </context>
0901 
0902 
0903       <!-- Pattern Capture Markers: <(...)> -->
0904 
0905       <context name="PatternCaptureMarker" attribute="Pattern">
0906         <StringDetect String=")>" context="#pop" attribute="Pattern Meta Character"/>
0907         <IncludeRules context="find_Pattern"/>
0908       </context>
0909 
0910 
0911       <!-- Pattern Character Classes : <...> -->
0912 
0913       <context name="RegexClass" attribute="Pattern Unicode Property" lineEndContext="#stay">
0914         <DetectChar char=">" context="#pop" attribute="Pattern Meta Character"/>
0915         <AnyChar String=".:" attribute="Pattern Meta Character"/>
0916         <AnyChar String="|+-" attribute="Pattern Quantifier"/>
0917         <AnyChar String="!?" attribute="Pattern Control Flow" context="PatternAssertion"/>
0918         <DetectIdentifier attribute="Pattern Unicode Property"/>
0919         <DetectChar char="[" context="RegexClassRange" attribute="Pattern Bracket"/>
0920         <DetectChar char="&lt;" context="q_String&lt;" attribute="String Delimiter"/>
0921         <DetectChar char="«" context="qq_String«" attribute="String Delimiter"/>
0922         <DetectChar char="{" context="Interpolation" attribute="Symbol" beginRegion="block"/>
0923         <DetectChar char="(" context="SubExpression(" attribute="Symbol" beginRegion="block"/>
0924         <DetectChar char="\" context="PatternMetaChar" lookAhead="1"/>
0925       </context>
0926 
0927       <!-- after <? or <! -->
0928       <context name="PatternAssertion" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="PatternAssertionCond">
0929         <DetectChar char=">" attribute="Pattern Meta Character" context="#pop#pop"/>
0930         <WordDetect String="after" attribute="Pattern Meta Character" context="PatternAssertionCond"/>
0931         <WordDetect String="before" attribute="Pattern Meta Character" context="PatternAssertionCond"/>
0932       </context>
0933       <context name="PatternAssertionCond" attribute="Pattern" lineEndContext="#stay">
0934         <DetectChar char=">" attribute="Pattern Meta Character" context="#pop#pop#pop"/>
0935         <IncludeRules context="find_Pattern"/>
0936       </context>
0937 
0938       <!-- Pattern <[...]> -->
0939       <context name="RegexClassRange" attribute="Pattern Character" lineEndContext="#stay">
0940         <DetectIdentifier/>
0941         <DetectSpaces/>
0942         <StringDetect String="]" context="#pop" attribute="Pattern Bracket"/>
0943         <StringDetect String="\" context="PatternMetaChar" lookAhead="1"/>
0944         <StringDetect String=".." attribute="Pattern Quantifier"/>
0945       </context>
0946 
0947 
0948       <context name="PatternAfterQuantifier" attribute="Pattern" lineEndContext="#stay" fallthroughContext="PatternModifierQuantifier">
0949         <StringDetect String=":" context="PatternModifierQuantifier" attribute="Pattern Modifier"/>
0950         <DetectSpaces context="PatternModifierQuantifier"/>
0951       </context>
0952       <context name="PatternModifierQuantifier" attribute="Pattern" lineEndContext="#stay" fallthroughContext="#pop#pop">
0953         <DetectSpaces/>
0954         <StringDetect String="%%" context="#pop#pop" attribute="Pattern Quantifier"/>
0955         <StringDetect String="%" context="#pop#pop" attribute="Pattern Quantifier"/>
0956       </context>
0957 
0958 
0959       <!-- General quantifier: ** min..max -->
0960 
0961       <context name="PatternRangeQuantifier" attribute="Pattern" lineEndContext="#stay" fallthroughContext="#pop">
0962         <DetectSpaces/>
0963         <Int context="#pop!PatternRangeQuantifierRng" attribute="Pattern"/>
0964         <DetectChar char="^" context="PatternRangeQuantifierInt" attribute="Operator"/>
0965         <AnyChar String=":!?" attribute="Pattern Quantifier"/>
0966       </context>
0967 
0968       <context name="PatternRangeQuantifierRng" attribute="Pattern" lineEndContext="#pop" fallthroughContext="#pop">
0969         <StringDetect String="..^" context="PatternRangeQuantifierInt" attribute="Operator"/>
0970         <StringDetect String=".." context="PatternRangeQuantifierInt" attribute="Operator"/>
0971         <StringDetect String="^..^" context="PatternRangeQuantifierInt" attribute="Operator"/>
0972         <StringDetect String="^.." context="PatternRangeQuantifierInt" attribute="Operator"/>
0973       </context>
0974 
0975       <context name="PatternRangeQuantifierInt" attribute="Pattern" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
0976         <DetectSpaces/>
0977         <Int context="#pop#pop" attribute="Pattern"/>
0978       </context>
0979 
0980 
0981       <!-- Number -->
0982 
0983       <context name="Number" attribute="Decimal" lineEndContext="#stay" fallthroughContext="#pop#pop!postfix_op">
0984         <RegExpr String="&int10;(?:\.&int10;&exp;?|&exp;)|\.&int10;&exp;?" context="NumberSuffix" attribute="Float"/>
0985         <Detect2Chars char="0" char1="x" context="HexNumber" attribute="Hex"/>
0986         <Detect2Chars char="0" char1="o" context="OctalNumber" attribute="Octal"/>
0987         <RegExpr String="\p{N}++(?:_\p{N}++)*+" context="NumberSuffix" attribute="Decimal"/>
0988       </context>
0989 
0990       <context name="HexNumber" attribute="Hex" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="NumberCheckError">
0991         <RegExpr String="[a-fA-F0-9]++(?:_[a-fA-F0-9]++)*+" context="#pop!NumberSuffix" attribute="Hex"/>
0992       </context>
0993 
0994       <context name="OctalNumber" attribute="Octal" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="NumberCheckError">
0995         <RegExpr String="[0-7]++(?:_[0-7]++)*+" context="#pop!NumberSuffix" attribute="Octal"/>
0996       </context>
0997 
0998       <context name="NumberSuffix" attribute="Decimal" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="#pop#pop#pop!postfix_op">
0999         <DetectChar char="i" context="#pop!NumberCheckError" attribute="Number Suffix"/>
1000         <IncludeRules context="NumberCheckError"/>
1001       </context>
1002       <context name="NumberCheckError" attribute="Decimal" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="#pop#pop#pop!postfix_op">
1003         <RegExpr String="&alnum;+" context="#pop#pop#pop!postfix_op" attribute="Error"/>
1004       </context>
1005 
1006 
1007       <!-- Attribute or Key -->
1008 
1009       <!--
1010         :11a
1011         :!false
1012         :attr
1013       -->
1014       <context name="MaybeAttribute" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
1015         <StringDetect String=":?" context="#pop" attribute="Separator Symbol"/>
1016         <DetectChar char=":" attribute="Separator Symbol"/>
1017         <DetectChar char="!" context="#pop" attribute="Operator"/>
1018         <Int context="MaybeAttribute2" attribute="Decimal"/>
1019         <RegExpr String="&datatype;" context="#pop" attribute="Data Type"/>
1020         <RegExpr String="\\?&ident;" context="#pop#pop!postfix_op" attribute="Attribute"/>
1021       </context>
1022 
1023       <context name="MaybeAttribute2" attribute="Decimal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop#pop!postfix_op">
1024         <DetectChar char="&lt;" context="NumberWithRadix" attribute="String Delimiter"/>
1025       </context>
1026 
1027 
1028       <!-- ':base<NNN>' -->
1029 
1030       <context name="NumberWithRadix" attribute="Decimal" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop!postfix_op">
1031         <DetectChar char="&gt;" context="#pop#pop#pop#pop!postfix_op" attribute="Error"/>
1032         <DetectSpaces context="#pop#pop#pop#pop!postfix_op" attribute="Error"/>
1033         <RegExpr String="&intN;\.&intN;|\.&intN;" context="NumberWithRadixClose" attribute="Float"/>
1034         <RegExpr String="&intN;" context="NumberWithRadixClose" attribute="Decimal"/>
1035       </context>
1036       <context name="NumberWithRadixClose" attribute="Decimal"
1037                lineEndContext="#pop#pop#pop#pop#pop!postfix_op"
1038                fallthroughContext="#pop#pop#pop#pop#pop!postfix_op">
1039         <DetectChar char="&gt;" context="NumberWithRadixSuffix" attribute="String Delimiter"/>
1040         <RegExpr String=" +|&alnum;+" context="#pop#pop#pop#pop#pop!postfix_op" attribute="Error"/>
1041       </context>
1042       <context name="NumberWithRadixSuffix" attribute="Decimal"
1043                lineEndContext="#pop#pop#pop#pop#pop#pop!postfix_op"
1044                fallthroughContext="#pop#pop#pop#pop#pop#pop!postfix_op">
1045         <WordDetect String="i" context="#pop#pop#pop#pop#pop#pop!postfix_op" attribute="Number Suffix"/>
1046       </context>
1047 
1048 
1049       <!-- Pod -->
1050 
1051       <context name="StartPod" attribute="Pod Typename" lineEndContext="#pop" fallthroughContext="#pop">
1052         <WordDetect String="begin" context="PodBegin" attribute="Pod Block"/>
1053         <WordDetect String="for"   context="PodFor" attribute="Pod Typename"/>
1054         <keyword    String="pod"   context="PodTypenameValue" attribute="Pod Typename"/>
1055         <RegExpr    String="[_A-Z][-_A-Z0-9]*\b" context="PodTypenameValue" attribute="Pod Typename"/>
1056         <RegExpr    String="&ident;" context="PodTypenameValue" attribute="Pod Unknown"/>
1057       </context>
1058 
1059       <context name="PodTypenameValue" attribute="Pod Typename Value" lineEndContext="PodTypenameValueNextLine" fallthroughContext="PodFormat">
1060         <RegExpr attribute="Pod Typename Value" context="#stay" String="&allnopodfmt;"/>
1061       </context>
1062 
1063       <context name="PodTypenameValueNextLine" attribute="Pod Typename Value" lineEndContext="#stay" lineEmptyContext="#pop#pop#pop" fallthroughContext="#pop">
1064         <DetectSpaces attribute="Normal Text" context="PodTypenameValueOrEmpty"/>
1065         <DetectChar attribute="Pod" context="#pop#pop#pop" char="=" lookAhead="true"/>
1066       </context>
1067 
1068       <context name="PodTypenameValueOrEmpty" attribute="Pod Typename Value" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop">
1069         <DetectChar attribute="Pod" context="#pop#pop#pop#pop" char="=" lookAhead="true"/>
1070       </context>
1071 
1072 
1073       <!-- Pod formatting -->
1074 
1075       <context name="PodFormat" attribute="Pod Typename Value" lineEndContext="#stay">
1076         <Detect2Chars char="B" char1="&lt;" attribute="Pod Bold" context="#pop!PodFormatB"/>
1077         <Detect2Chars char="B" char1="«"    attribute="Pod Bold" context="#pop!PodFormatB2"/>
1078         <Detect2Chars char="I" char1="&lt;" attribute="Pod Italic" context="#pop!PodFormatI"/>
1079         <Detect2Chars char="I" char1="«"    attribute="Pod Italic" context="#pop!PodFormatI2"/>
1080         <Detect2Chars char="L" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
1081         <Detect2Chars char="L" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
1082         <Detect2Chars char="N" char1="&lt;" attribute="Pod Note" context="#pop!PodFormatN"/>
1083         <Detect2Chars char="N" char1="«"    attribute="Pod Note" context="#pop!PodFormatN2"/>
1084         <Detect2Chars char="P" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
1085         <Detect2Chars char="P" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
1086         <Detect2Chars char="Z" char1="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ"/>
1087         <Detect2Chars char="Z" char1="«"    attribute="Pod Comment" context="#pop!PodFormatZ2"/>
1088         <Detect2Chars char="U" char1="&lt;" attribute="Pod Underline" context="#pop!PodFormatU"/>
1089         <Detect2Chars char="U" char1="«"    attribute="Pod Underline" context="#pop!PodFormatU2"/>
1090         <Detect2Chars char="C" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
1091         <Detect2Chars char="C" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
1092         <Detect2Chars char="E" char1="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE"/>
1093         <Detect2Chars char="E" char1="«"    attribute="Pod Unicode" context="#pop!PodFormatE2"/>
1094         <Detect2Chars char="K" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
1095         <Detect2Chars char="K" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
1096         <Detect2Chars char="R" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
1097         <Detect2Chars char="R" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
1098         <Detect2Chars char="T" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
1099         <Detect2Chars char="T" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
1100         <Detect2Chars char="V" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV"/>
1101         <Detect2Chars char="V" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatV2"/>
1102         <Detect2Chars char="X" char1="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX"/>
1103         <Detect2Chars char="X" char1="«"    attribute="Pod Indexed Terms" context="#pop!PodFormatX2"/>
1104         <Detect2Chars char="M" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
1105         <Detect2Chars char="M" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
1106       </context>
1107 
1108       <context name="PodFormatB" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="#pop!PodFormatB1">
1109         <DetectChar char="&lt;" attribute="Pod Bold" context="#pop!PodFormatB3"/>
1110       </context>
1111       <context name="PodFormatB1" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="PodFormat">
1112         <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt1;"/>
1113         <DetectChar char="&lt;" attribute="Pod Bold" context="PodFormatB1"/>
1114         <DetectChar char=">" attribute="Pod Bold" context="#pop"/>
1115       </context>
1116       <context name="PodFormatB2" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="PodFormat">
1117         <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt2;"/>
1118         <DetectChar char="«" attribute="Pod Bold" context="PodFormatB2"/>
1119         <DetectChar char="»" attribute="Pod Bold" context="#pop"/>
1120       </context>
1121       <context name="PodFormatB3" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="PodFormat">
1122         <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt3;"/>
1123         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Bold" context="PodFormatB3"/>
1124         <Detect2Chars char=">" char1=">" attribute="Pod Bold" context="#pop"/>
1125       </context>
1126 
1127       <context name="PodFormatE" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="#pop!PodFormatE1">
1128         <DetectChar char="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE3"/>
1129       </context>
1130       <context name="PodFormatE1" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="PodFormat">
1131         <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt1;"/>
1132         <DetectChar char="&lt;" attribute="Pod Unicode" context="PodFormatE1"/>
1133         <DetectChar char=">" attribute="Pod Unicode" context="#pop"/>
1134       </context>
1135       <context name="PodFormatE2" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="PodFormat">
1136         <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt2;"/>
1137         <DetectChar char="«" attribute="Pod Unicode" context="PodFormatE2"/>
1138         <DetectChar char="»" attribute="Pod Unicode" context="#pop"/>
1139       </context>
1140       <context name="PodFormatE3" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="PodFormat">
1141         <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt3;"/>
1142         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Unicode" context="PodFormatE3"/>
1143         <Detect2Chars char=">" char1=">" attribute="Pod Unicode" context="#pop"/>
1144       </context>
1145 
1146       <context name="PodFormatI" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="#pop!PodFormatI1">
1147         <DetectChar char="&lt;" attribute="Pod Italic" context="#pop!PodFormatI3"/>
1148       </context>
1149       <context name="PodFormatI1" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="PodFormat">
1150         <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt1;"/>
1151         <DetectChar char="&lt;" attribute="Pod Italic" context="PodFormatI1"/>
1152         <DetectChar char=">" attribute="Pod Italic" context="#pop"/>
1153       </context>
1154       <context name="PodFormatI2" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="PodFormat">
1155         <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt2;"/>
1156         <DetectChar char="«" attribute="Pod Italic" context="PodFormatI2"/>
1157         <DetectChar char="»" attribute="Pod Italic" context="#pop"/>
1158       </context>
1159       <context name="PodFormatI3" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="PodFormat">
1160         <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt3;"/>
1161         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Italic" context="PodFormatI3"/>
1162         <Detect2Chars char=">" char1=">" attribute="Pod Italic" context="#pop"/>
1163       </context>
1164 
1165       <context name="PodFormatL" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="#pop!PodFormatL1">
1166         <DetectChar char="&lt;" attribute="Pod Link" context="#pop!PodFormatL3"/>
1167       </context>
1168       <context name="PodFormatL1" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="PodFormat">
1169         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«]))+"/>
1170         <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
1171         <DetectChar char=">" attribute="Pod Link" context="#pop"/>
1172       </context>
1173       <context name="PodFormatL2" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="PodFormat">
1174         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|]+|[&podfmt;](?![&lt;«]))+"/>
1175         <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
1176         <DetectChar char="»" attribute="Pod Link" context="#pop"/>
1177       </context>
1178       <context name="PodFormatL3" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="PodFormat">
1179         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
1180         <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
1181         <Detect2Chars char=">" char1=">" attribute="Pod Link" context="#pop"/>
1182       </context>
1183 
1184       <context name="PodFormatN" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="#pop!PodFormatN1">
1185         <DetectChar char="&lt;" attribute="Pod Note" context="#pop!PodFormatN3"/>
1186       </context>
1187       <context name="PodFormatN1" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="PodFormat">
1188         <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt1;"/>
1189         <DetectChar char="&lt;" attribute="Pod Note" context="PodFormatN1"/>
1190         <DetectChar char=">" attribute="Pod Note" context="#pop"/>
1191       </context>
1192       <context name="PodFormatN2" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="PodFormat">
1193         <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt2;"/>
1194         <DetectChar char="«" attribute="Pod Note" context="PodFormatN2"/>
1195         <DetectChar char="»" attribute="Pod Note" context="#pop"/>
1196       </context>
1197       <context name="PodFormatN3" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="PodFormat">
1198         <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt3;"/>
1199         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Note" context="PodFormatN3"/>
1200         <Detect2Chars char=">" char1=">" attribute="Pod Note" context="#pop"/>
1201       </context>
1202 
1203       <context name="PodFormatU" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="#pop!PodFormatU1">
1204         <DetectChar char="&lt;" attribute="Pod Underline" context="#pop!PodFormatU3"/>
1205       </context>
1206       <context name="PodFormatU1" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="PodFormat">
1207         <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt1;"/>
1208         <DetectChar char="&lt;" attribute="Pod Underline" context="PodFormatU1"/>
1209         <DetectChar char=">" attribute="Pod Underline" context="#pop"/>
1210       </context>
1211       <context name="PodFormatU2" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="PodFormat">
1212         <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt2;"/>
1213         <DetectChar char="«" attribute="Pod Underline" context="PodFormatU2"/>
1214         <DetectChar char="»" attribute="Pod Underline" context="#pop"/>
1215       </context>
1216       <context name="PodFormatU3" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="PodFormat">
1217         <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt3;"/>
1218         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Underline" context="PodFormatU3"/>
1219         <Detect2Chars char=">" char1=">" attribute="Pod Underline" context="#pop"/>
1220       </context>
1221 
1222       <context name="PodFormatV" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="#pop!PodFormatV1">
1223         <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV3"/>
1224       </context>
1225       <context name="PodFormatV1" attribute="Pod Verbatim" lineEndContext="#stay">
1226         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
1227         <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatV1"/>
1228         <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
1229       </context>
1230       <context name="PodFormatV2" attribute="Pod Verbatim" lineEndContext="#stay">
1231         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
1232         <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatV2"/>
1233         <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
1234       </context>
1235       <context name="PodFormatV3" attribute="Pod Verbatim" lineEndContext="#stay">
1236         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
1237         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatV3"/>
1238         <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
1239       </context>
1240 
1241       <context name="PodFormatVT" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="#pop!PodFormatVT1">
1242         <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT3"/>
1243       </context>
1244       <context name="PodFormatVT1" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodFormat">
1245         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
1246         <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatVT1"/>
1247         <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
1248       </context>
1249       <context name="PodFormatVT2" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodFormat">
1250         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
1251         <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatVT2"/>
1252         <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
1253       </context>
1254       <context name="PodFormatVT3" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodFormat">
1255         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
1256         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatVT3"/>
1257         <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
1258       </context>
1259 
1260       <context name="PodFormatZ" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="#pop!PodFormatZ1">
1261         <DetectChar char="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ3"/>
1262       </context>
1263       <context name="PodFormatZ1" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="PodFormat">
1264         <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt1;"/>
1265         <DetectChar char="&lt;" attribute="Pod Comment" context="PodFormatZ1"/>
1266         <DetectChar char=">" attribute="Pod Comment" context="#pop"/>
1267       </context>
1268       <context name="PodFormatZ2" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="PodFormat">
1269         <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt2;"/>
1270         <DetectChar char="«" attribute="Pod Comment" context="PodFormatZ2"/>
1271         <DetectChar char="»" attribute="Pod Comment" context="#pop"/>
1272       </context>
1273       <context name="PodFormatZ3" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="PodFormat">
1274         <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt3;"/>
1275         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Comment" context="PodFormatZ3"/>
1276         <Detect2Chars char=">" char1=">" attribute="Pod Comment" context="#pop"/>
1277       </context>
1278 
1279       <context name="PodFormatX" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="#pop!PodFormatX1">
1280         <DetectChar char="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX3"/>
1281       </context>
1282       <context name="PodFormatX1" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="PodFormat">
1283         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«]))+"/>
1284         <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
1285         <DetectChar char=">" attribute="Pod Indexed Terms" context="#pop"/>
1286       </context>
1287       <context name="PodFormatX2" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="PodFormat">
1288         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|;,]+|[&podfmt;](?![&lt;«]))+"/>
1289         <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
1290         <DetectChar char="«" attribute="Pod Indexed Terms" context="PodFormatX2"/>
1291         <DetectChar char="»" attribute="Pod Indexed Terms" context="#pop"/>
1292       </context>
1293       <context name="PodFormatX3" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="PodFormat">
1294         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
1295         <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
1296         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Indexed Terms" context="PodFormatX3"/>
1297         <Detect2Chars char=">" char1=">" attribute="Pod Indexed Terms" context="#pop"/>
1298       </context>
1299 
1300       <!-- Pod =begin -->
1301 
1302       <context name="PodBegin" attribute="Pod Typename Value" lineEndContext="#pop#pop!Error">
1303         <DetectSpaces attribute="Normal Text"/>
1304         <WordDetect String="code" context="PodBeginCode" attribute="Pod Typename Value" beginRegion="pod"/>
1305         <WordDetect String="comment" context="PodBeginComment" attribute="Pod Typename Value" beginRegion="pod"/>
1306         <RegExpr String="(&ident;)" context="PodBeginTypename" attribute="Pod Typename Value" beginRegion="pod"/>
1307       </context>
1308 
1309       <context name="PodBeginCode" attribute="Error" lineEndContext="PodInnerCode">
1310         <DetectSpaces attribute="Normal Text"/>
1311         <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
1312         <DetectChar char="=" context="PodEndCode" attribute="Pod" firstNonSpace="1"/>
1313       </context>
1314 
1315       <context name="PodInnerCode" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodCode">
1316         <RegExpr String="^\s*=end\s+code\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
1317       </context>
1318       <context name="PodCode" attribute="Pod Verbatim" lineEndContext="#pop"/>
1319 
1320       <context name="PodEndCode" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
1321         <StringDetect String="end" context="PodEndCodeName" attribute="Pod Block" endRegion="pod"/>
1322       </context>
1323       <context name="PodEndCodeName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop#pop#pop!Error">
1324         <DetectSpaces attribute="Normal Text"/>
1325         <StringDetect String="code" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
1326       </context>
1327 
1328 
1329       <context name="PodBeginComment" attribute="Error" lineEndContext="PodInnerComment">
1330         <DetectSpaces attribute="Normal Text"/>
1331         <DetectChar char="=" context="PodEndComment" attribute="Pod" firstNonSpace="1"/>
1332       </context>
1333 
1334       <context name="PodInnerComment" attribute="Comment" lineEndContext="#stay" fallthroughContext="PodComment">
1335         <RegExpr String="^\s*=end\s+comment\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
1336       </context>
1337       <context name="PodComment" attribute="Comment" lineEndContext="#pop"/>
1338 
1339       <context name="PodEndComment" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
1340         <StringDetect String="end" context="PodEndCommentName" attribute="Pod Block" endRegion="pod"/>
1341       </context>
1342       <context name="PodEndCommentName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop#pop#pop!Error">
1343         <DetectSpaces attribute="Normal Text"/>
1344         <StringDetect String="comment" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
1345       </context>
1346 
1347 
1348       <context name="PodBeginTypename" attribute="Error" lineEndContext="PodInnerBlock">
1349         <RegExpr String="^\s*=end\s+%1\b" dynamic="1" context="PodEnd" attribute="Pod" column="0" lookAhead="1"/>
1350         <DetectSpaces attribute="Normal Text"/>
1351         <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
1352         <DetectChar char="=" context="PodEndError" attribute="Pod" firstNonSpace="1"/>
1353       </context>
1354 
1355       <context name="PodInnerBlock" attribute="Pod Paragraph" lineEndContext="#stay" fallthroughContext="PodInnerBlockFormat">
1356         <RegExpr String="^\s*=end\b" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
1357         <DetectSpaces/>
1358         <DetectChar char="=" context="StartPod" attribute="Pod" firstNonSpace="1"/>
1359         <RegExpr attribute="Pod Paragraph" context="#stay" String="&allnopodfmt;"/>
1360       </context>
1361 
1362       <context name="PodInnerBlockFormat" attribute="Pod Paragraph" lineEndContext="#stay">
1363         <IncludeRules context="PodFormat"/>
1364       </context>
1365 
1366       <context name="PodEnd" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
1367         <DetectSpaces attribute="Normal Text"/>
1368         <DetectChar char="=" context="#stay" attribute="Pod"/>
1369         <StringDetect String="end" context="PodEndName" attribute="Pod Block" endRegion="pod"/>
1370       </context>
1371       <context name="PodEndName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop">
1372         <DetectSpaces attribute="Normal Text"/>
1373         <RegExpr String="&ident;" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
1374       </context>
1375 
1376       <context name="PodEndError" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
1377         <StringDetect String="end" attribute="Pod Block" context="#pop#pop#pop!Error" endRegion="pod"/>
1378       </context>
1379 
1380       <!-- Pod configuration for =begin -->
1381 
1382       <context name="PodBlockConfigError" attribute="Error" lineEndContext="#pop#pop!PodInnerBlock"/>
1383 
1384       <context name="PodBlockConfigKey" attribute="Pod Key" lineEndContext="#pop!PodInnerBlock" fallthroughContext="PodBlockConfigError">
1385         <DetectChar char="!" context="#pop!PodBlockConfigKeyName" attribute="Pod Operator"/>
1386         <Int context="PodBlockConfigKeyIntName" attribute="Decimal"/>
1387         <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
1388       </context>
1389 
1390       <context name="PodBlockConfigKeyName" attribute="Pod Key" lineEndContext="#pop!PodTypenameValue" fallthroughContext="PodBlockConfigError">
1391         <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
1392       </context>
1393 
1394       <context name="PodBlockConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop!PodBlockConfigError" fallthroughContext="#pop!PodBlockConfigError">
1395         <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
1396       </context>
1397 
1398       <context name="PodBlockConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop" fallthroughContext="#pop">
1399         <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
1400         <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
1401         <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
1402       </context>
1403 
1404 
1405       <!-- Pod =for -->
1406 
1407       <context name="PodFor" attribute="Pod Typename" lineEndContext="#pop#pop!Error" fallthroughContext="#pop#pop!Error">
1408         <DetectSpaces attribute="Normal Text"/>
1409         <keyword String="podtypename" context="#pop!PodConfig" attribute="Pod Typename"/>
1410       </context>
1411 
1412       <!-- Pod configuration for =for -->
1413 
1414       <context name="PodConfigError" attribute="Error" lineEndContext="#pop#pop!PodTypenameValue"/>
1415 
1416       <context name="PodConfig" attribute="Normal Text" lineEndContext="#pop!PodTypenameValue" fallthroughContext="PodConfigError">
1417         <DetectSpaces/>
1418         <DetectChar char=":" context="PodConfigKey" attribute="Pod Operator"/>
1419       </context>
1420 
1421       <context name="PodConfigKey" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthroughContext="#pop!PodConfigError">
1422         <DetectChar char="!" context="#pop!PodConfigKeyName" attribute="Pod Operator"/>
1423         <Int context="PodConfigKeyIntName" attribute="Decimal"/>
1424         <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
1425       </context>
1426 
1427       <context name="PodConfigKeyName" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthroughContext="#pop!PodConfigError">
1428         <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
1429       </context>
1430 
1431       <context name="PodConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop#pop!PodConfigError" fallthroughContext="#pop#pop!PodConfigError">
1432         <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
1433       </context>
1434 
1435       <context name="PodConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop">
1436         <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
1437         <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
1438         <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
1439       </context>
1440 
1441       <context name="find_PodNumber" attribute="Pod Config" lineEndContext="#stay">
1442         <RegExpr String="\.?\p{N}" context="PodNumber" lookAhead="1" minimal="1"/>
1443       </context>
1444 
1445       <context name="PodParamSequence" attribute="Pod Config" lineEndContext="#stay">
1446         <DetectSpaces/>
1447         <keyword String="pod values" context="#stay" attribute="Data Type"/>
1448         <DetectIdentifier/>
1449         <IncludeRules context="find_PodNumber"/>
1450         <DetectChar char=">" context="#pop#pop#pop" attribute="Pod Operator"/>
1451         <DetectChar char="'" context="PodSQString" attribute="String"/>
1452         <DetectChar char="&quot;" context="PodQString" attribute="String"/>
1453       </context>
1454 
1455       <context name="PodParamHash" attribute="Pod Config" lineEndContext="#stay">
1456         <DetectSpaces/>
1457         <Detect2Chars char="=" char1=">" context="#stay" attribute="Pod Operator"/>
1458         <DetectChar char="," context="#stay" attribute="Pod Operator"/>
1459         <keyword String="pod values" context="#stay" attribute="Data Type"/>
1460         <DetectIdentifier/>
1461         <DetectChar char="'" context="PodSQString" attribute="String"/>
1462         <DetectChar char="&quot;" context="PodQString" attribute="String"/>
1463         <IncludeRules context="find_PodNumber"/>
1464         <DetectChar char="}" context="#pop#pop#pop" attribute="Pod Operator"/>
1465       </context>
1466 
1467       <context name="PodParamList" attribute="Pod Config" lineEndContext="#stay">
1468         <DetectSpaces/>
1469         <DetectChar char="," context="#stay" attribute="Pod Operator"/>
1470         <keyword String="pod values" context="#stay" attribute="Data Type"/>
1471         <DetectIdentifier/>
1472         <DetectChar char="'" context="PodSQString" attribute="String"/>
1473         <DetectChar char="&quot;" context="PodQString" attribute="String"/>
1474         <IncludeRules context="find_PodNumber"/>
1475         <AnyChar String="])" context="#pop#pop#pop" attribute="Pod Operator"/>
1476       </context>
1477 
1478 
1479       <!-- Pod Number (same as Number with different context pop) -->
1480 
1481       <context name="PodNumber" attribute="Decimal" lineEndContext="#stay" fallthroughContext="#pop">
1482         <RegExpr String="&int10;(?:\.&int10;&exp;?|&exp;)|\.&int10;&exp;?" context="PodNumberSuffix" attribute="Float"/>
1483         <Detect2Chars char="0" char1="x" context="HexPodNumber" attribute="Hex"/>
1484         <Detect2Chars char="0" char1="o" context="OctalPodNumber" attribute="Octal"/>
1485         <RegExpr String="\p{N}++(?:_\p{N}++)*+" context="PodNumberSuffix" attribute="Decimal"/>
1486       </context>
1487 
1488       <context name="HexPodNumber" attribute="Hex" lineEndContext="#pop#pop" fallthroughContext="PodNumberCheckError">
1489         <RegExpr String="[a-fA-F0-9]++(?:_[a-fA-F0-9]++)*+" context="#pop!PodNumberSuffix" attribute="Hex"/>
1490       </context>
1491 
1492       <context name="OctalPodNumber" attribute="Octal" lineEndContext="#pop#pop" fallthroughContext="PodNumberCheckError">
1493         <RegExpr String="[0-7]++(?:_[0-7]++)*+" context="#pop!PodNumberSuffix" attribute="Octal"/>
1494       </context>
1495 
1496       <context name="PodNumberSuffix" attribute="Decimal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
1497         <DetectChar char="i" context="#pop!PodNumberCheckError" attribute="Number Suffix"/>
1498         <IncludeRules context="PodNumberCheckError"/>
1499       </context>
1500       <context name="PodNumberCheckError" attribute="Decimal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
1501         <RegExpr String="&alnum;+" context="#pop#pop" attribute="Error"/>
1502       </context>
1503 
1504 
1505       <!-- Pod String -->
1506 
1507       <context name="PodSQString" attribute="String" lineEndContext="#stay">
1508         <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
1509         <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
1510         <RegExpr String="(?:[^\\']*|\\[^']|\\$)*" context="#stay" attribute="String"/>
1511       </context>
1512 
1513       <context name="PodQString" attribute="String" lineEndContext="#stay">
1514         <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
1515         <DetectChar char="\" context="SpecialChar" attribute="String Special Character"/>
1516         <RegExpr String="(?:[^&quot;\\]*|\\$)*" context="#stay" attribute="String"/>
1517       </context>
1518 
1519       <context name="SpecialCharPre" attribute="String Special Character" lineEndContext="#pop">
1520         <RegExpr String="[abefnrtv]|x(&unicode_hex_point;(?![0-9a-fA-F])|\[\s*&unicode_hex_point;\s*\])|c(&unicode_dec_point;(?![0-9])|\[[a-zA-Z\s]+\])|o(&unicode_oct_point;(?![0-7])|\[\s*&unicode_oct_point;\s*\])" context="#pop" attribute="String Special Character"/>
1521       </context>
1522       <context name="SpecialChar" attribute="String Special Character" lineEndContext="#pop" fallthroughContext="#pop">
1523         <IncludeRules context="SpecialCharPre"/>
1524         <RegExpr String="[^xco]" context="#pop" attribute="String"/>
1525         <IncludeRules context="SpecialCharPost"/>
1526       </context>
1527       <context name="SpecialCharPost" attribute="String Special Character" lineEndContext="#pop">
1528         <StringDetect String="x[" context="SpecialCharX" attribute="String Special Character"/>
1529         <StringDetect String="c[" context="SpecialCharC" attribute="String Special Character"/>
1530         <StringDetect String="o[" context="SpecialCharO" attribute="String Special Character"/>
1531 
1532         <RegExpr String="x&unicode_hex_point;|c&unicode_dec_point;|o&unicode_oct_point;" context="SpecialCharError" attribute="String Special Character"/>
1533 
1534         <AnyChar String="xco" context="#pop" attribute="Error"/>
1535       </context>
1536 
1537       <context name="SpecialCharError" attribute="String Special Character" fallthroughContext="#pop#pop">
1538         <AnyChar String="0123456789abcdefABCDEF" context="#pop#pop" attribute="Error"/>
1539       </context>
1540 
1541       <context name="SpecialCharPreCommon" attribute="String Special Character">
1542         <DetectChar char="]" context="#pop#pop" attribute="String Special Character"/>
1543         <DetectChar char="," attribute="Separator Symbol"/>
1544         <DetectChar char="&quot;" context="#pop#pop#pop" attribute="Error"/>
1545       </context>
1546 
1547       <context name="SpecialCharX" attribute="String Special Character">
1548         <IncludeRules context="SpecialCharPreCommon"/>
1549         <IncludeRules context="X[]"/>
1550         <RegExpr String="[^0-9a-fA-F\],\s&quot;]+|[0-9a-fA-F]+|." attribute="Error"/>
1551       </context>
1552 
1553       <context name="SpecialCharO" attribute="String Special Character">
1554         <IncludeRules context="SpecialCharPreCommon"/>
1555         <IncludeRules context="O[]"/>
1556         <RegExpr String="[^0-7\],\s&quot;]+|[0-7]+|." attribute="Error"/>
1557       </context>
1558 
1559       <context name="SpecialCharC" attribute="String Special Character">
1560         <IncludeRules context="SpecialCharPreCommon"/>
1561         <IncludeRules context="C[]"/>
1562         <RegExpr String="[^0-9a-zA-Z\],\s&quot;]+|[0-9a-zA-Z]+|." attribute="Error"/>
1563       </context>
1564 
1565 
1566       <!-- Q String -->
1567 
1568       <context name="Q_String" attribute="String" lineEndContext="#stay" fallthroughContext="#pop">
1569         <DetectSpaces attribute="String"/>
1570         <DetectChar char=":" context="#pop!Q_StringModifier" attribute="Operator"/>
1571         <DetectChar char="(" context="#pop!Q_String(" attribute="String Delimiter"/>
1572         <DetectChar char="[" context="#pop!Q_String[" attribute="String Delimiter"/>
1573         <DetectChar char="{" context="#pop!Q_String{" attribute="String Delimiter"/>
1574         <DetectChar char="「" context="#pop!Q_String「" attribute="String Delimiter"/>
1575         <DetectChar char="&lt;" context="#pop!Q_String&lt;" attribute="String Delimiter"/>
1576         <RegExpr String="([^()>」\]}'&rangealnum;])" context="#pop!Q_StringAny" attribute="String Delimiter"/>
1577       </context>
1578 
1579       <context name="Q_String(" attribute="String" lineEndContext="#stay">
1580         <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
1581         <DetectChar char="(" context="Q_String(" attribute="String Delimiter"/>
1582         <RegExpr String="[^()]*" context="#stay" attribute="String"/>
1583       </context>
1584 
1585       <context name="Q_String[" attribute="String" lineEndContext="#stay">
1586         <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
1587         <DetectChar char="[" context="Q_String[" attribute="String Delimiter"/>
1588         <RegExpr String="[^\[\]]*" context="#stay" attribute="String"/>
1589       </context>
1590 
1591       <context name="Q_String{" attribute="String" lineEndContext="#stay">
1592         <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
1593         <DetectChar char="{" context="Q_String{" attribute="String Delimiter"/>
1594         <RegExpr String="[^{}]*" context="#stay" attribute="String"/>
1595       </context>
1596 
1597       <context name="Q_String「" attribute="String" lineEndContext="#stay">
1598         <DetectChar char="」" context="#pop" attribute="String Delimiter"/>
1599         <IncludeRules context="Q_String「_common"/>
1600       </context>
1601       <context name="Q_String「_term" attribute="String" lineEndContext="#stay">
1602         <DetectChar char="」" context="#pop!postfix_op" attribute="String Delimiter"/>
1603         <IncludeRules context="Q_String「_common"/>
1604       </context>
1605       <context name="Q_String「_common" attribute="String" lineEndContext="#stay">
1606         <DetectChar char="「" context="Q_String「" attribute="String Delimiter"/>
1607         <RegExpr String="[^「」]*" context="#stay" attribute="String"/>
1608       </context>
1609 
1610       <context name="Q_String&lt;" attribute="String" lineEndContext="#stay">
1611         <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
1612         <DetectChar char="&lt;" context="Q_String&lt;" attribute="String Delimiter"/>
1613         <RegExpr String="[^&lt;>]*" context="#stay" attribute="String"/>
1614       </context>
1615 
1616       <context name="Q_StringAny" attribute="String" lineEndContext="#stay">
1617         <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
1618         <RegExpr String="[^%1]*" dynamic="1" context="#stay" attribute="String"/>
1619       </context>
1620 
1621       <context name="q_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthroughContext="#pop#pop!q_String">
1622         <DetectChar char=":" context="#pop#pop!q_QuotingForm2" attribute="Operator"/>
1623       </context>
1624 
1625       <context name="qq_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthroughContext="#pop#pop!qq_String">
1626         <DetectChar char=":" context="#pop!qq_QuotingForm" attribute="Operator"/>
1627       </context>
1628 
1629       <context name="Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthroughContext="#pop!q_QuotingForm2">
1630         <DetectChar char="q" context="#pop!q_QuotingForm" attribute="Operator"/>
1631         <DetectChar char="'" context="q_Q_StringModifier" attribute="Operator"/>
1632         <DetectChar char="&quot;" context="qq_Q_StringModifier" attribute="Operator"/>
1633       </context>
1634 
1635       <context name="q_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthroughContext="#pop!q_QuotingForm2">
1636         <DetectChar char="q" context="#pop!qq_QuotingForm" attribute="Operator"/>
1637         <DetectChar char=":" context="#pop!q_QuotingForm2" attribute="Operator"/>
1638       </context>
1639       <context name="q_QuotingForm2" attribute="Operator" lineEndContext="#pop" fallthroughContext="q_String">
1640         <WordDetect String="heredoc" context="q_Heredoc" attribute="Operator"/>
1641         <keyword String="quoting" context="#stay" attribute="Operator"/>
1642         <AnyChar String="wvx:sahfb" context="#stay" attribute="Operator"/>
1643         <!-- :closure as qq -->
1644         <DetectChar char="c" context="#pop!qq_QuotingForm" attribute="Operator"/>
1645         <Detect2Chars char="t" char1="o" context="q_Heredoc" attribute="Operator"/>
1646       </context>
1647 
1648       <context name="qq_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthroughContext="qq_String">
1649         <WordDetect String="heredoc" context="qq_Heredoc" attribute="Operator"/>
1650         <keyword String="quoting" context="#stay" attribute="Operator"/>
1651         <AnyChar String="wvx:sahfcb" context="#stay" attribute="Operator"/>
1652         <Detect2Chars char="t" char1="o" context="qq_Heredoc" attribute="Operator"/>
1653       </context>
1654 
1655 
1656       <!-- q and qq Heredoc -->
1657 
1658       <context name="q_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
1659         <RegExpr String="/([^/]+)/" context="q_HeredocTerminator" attribute="String Delimiter"/>
1660       </context>
1661       <context name="q_HeredocTerminator" attribute="String" lineEndContext="#stay">
1662         <DetectSpaces/>
1663         <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
1664         <RegExpr String="(?:[^\\]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
1665         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1666       </context>
1667 
1668       <context name="qq_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
1669         <RegExpr String="/([^/]+)/" context="qq_HeredocTerminator" attribute="String Delimiter"/>
1670       </context>
1671       <context name="qq_HeredocTerminator" attribute="String" lineEndContext="#stay">
1672         <DetectSpaces/>
1673         <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
1674         <IncludeRules context="find_qq_StringCommon"/>
1675         <RegExpr String="[^\\${@&amp;]*" context="#stay" attribute="String"/>
1676       </context>
1677 
1678 
1679       <!-- q String -->
1680 
1681       <context name="q_String" attribute="String" lineEndContext="#stay" fallthroughContext="#pop#pop">
1682         <DetectSpaces/>
1683         <DetectChar char="(" context="#pop#pop!q_String(" attribute="String Delimiter"/>
1684         <DetectChar char="[" context="#pop#pop!q_String[" attribute="String Delimiter"/>
1685         <DetectChar char="{" context="#pop#pop!q_String{" attribute="String Delimiter"/>
1686         <DetectChar char="&lt;" context="#pop#pop!q_String&lt;" attribute="String Delimiter"/>
1687         <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!q_StringAny" attribute="String Delimiter"/>
1688       </context>
1689 
1690       <context name="q_String(" attribute="String" lineEndContext="#stay">
1691         <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
1692         <DetectChar char="(" context="q_String(" attribute="String Delimiter"/>
1693         <Detect2Chars char="\" char1="(" context="#stay" attribute="String Special Character"/>
1694         <Detect2Chars char="\" char1=")" context="#stay" attribute="String Special Character"/>
1695         <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
1696         <RegExpr String="(?:[^()\\]*|\\(?![()\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
1697         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1698       </context>
1699 
1700       <context name="q_String[" attribute="String" lineEndContext="#stay">
1701         <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
1702         <DetectChar char="[" context="q_String[" attribute="String Delimiter"/>
1703         <Detect2Chars char="\" char1="[" context="#stay" attribute="String Special Character"/>
1704         <Detect2Chars char="\" char1="]" context="#stay" attribute="String Special Character"/>
1705         <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
1706         <RegExpr String="(?:[^\[\]\\]*|\\(?![\[\]\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
1707         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1708       </context>
1709 
1710       <context name="q_String{" attribute="String" lineEndContext="#stay">
1711         <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
1712         <DetectChar char="{" context="q_String{" attribute="String Delimiter"/>
1713         <Detect2Chars char="\" char1="{" context="#stay" attribute="String Special Character"/>
1714         <Detect2Chars char="\" char1="}" context="#stay" attribute="String Special Character"/>
1715         <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
1716         <RegExpr String="(?:[^{}\\]*|\\(?![{}\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
1717         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1718       </context>
1719 
1720       <context name="q_String&lt;" attribute="String" lineEndContext="#stay">
1721         <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
1722         <IncludeRules context="q_String&lt;_common"/>
1723       </context>
1724       <context name="q_String&lt;_term" attribute="String" lineEndContext="#stay">
1725         <DetectChar char=">" context="#pop!postfix_op" attribute="String Delimiter"/>
1726         <IncludeRules context="q_String&lt;_common"/>
1727       </context>
1728       <context name="q_String&lt;_common" attribute="String" lineEndContext="#stay">
1729         <DetectChar char="&lt;" context="q_String&lt;" attribute="String Delimiter"/>
1730         <Detect2Chars char="\" char1="&lt;" context="#stay" attribute="String Special Character"/>
1731         <Detect2Chars char="\" char1=">" context="#stay" attribute="String Special Character"/>
1732         <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
1733         <RegExpr String="(?:[^&lt;>\\]*|\\(?![&lt;>\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
1734         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1735       </context>
1736 
1737       <context name="q_StringAny" attribute="String" lineEndContext="#stay">
1738         <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
1739         <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
1740         <RegExpr String="(?:[^\\%1]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
1741         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1742       </context>
1743 
1744       <context name="q_RawString" attribute="String" lineEndContext="#stay">
1745         <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
1746         <IncludeRules context="q_RawString_common"/>
1747       </context>
1748       <context name="q_RawString_term" attribute="String" lineEndContext="#stay">
1749         <DetectChar char="'" context="#pop!postfix_op" attribute="String Delimiter"/>
1750         <IncludeRules context="q_RawString_common"/>
1751       </context>
1752       <context name="q_RawString_common" attribute="String" lineEndContext="#stay">
1753         <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
1754         <RegExpr String="(?:[^\\']*|\\(?![\\']|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
1755         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1756       </context>
1757 
1758       <!-- qq String -->
1759 
1760       <context name="qq_String" attribute="String" lineEndContext="#stay" fallthroughContext="#pop#pop">
1761         <DetectSpaces/>
1762         <DetectChar char="(" context="#pop#pop!qq_String(" attribute="String Delimiter"/>
1763         <DetectChar char="[" context="#pop#pop!qq_String[" attribute="String Delimiter"/>
1764         <DetectChar char="{" context="#pop#pop!qq_String{" attribute="String Delimiter"/>
1765         <DetectChar char="&lt;" context="#pop#pop!qq_String&lt;" attribute="String Delimiter"/>
1766         <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!qq_StringAny" attribute="String Delimiter"/>
1767       </context>
1768 
1769       <context name="qq_String(" attribute="String" lineEndContext="#stay">
1770         <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
1771         <DetectChar char="(" context="qq_String(" attribute="String Delimiter"/>
1772         <IncludeRules context="find_qq_StringCommon"/>
1773         <RegExpr String="[^()\\${@&amp;]*" context="#stay" attribute="String"/>
1774       </context>
1775 
1776       <context name="qq_String[" attribute="String" lineEndContext="#stay">
1777         <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
1778         <DetectChar char="[" context="qq_String[" attribute="String Delimiter"/>
1779         <IncludeRules context="find_qq_StringCommon"/>
1780         <RegExpr String="[^\[\]\\${@&amp;]*" context="#stay" attribute="String"/>
1781       </context>
1782 
1783       <context name="qq_String{" attribute="String" lineEndContext="#stay">
1784         <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
1785         <DetectChar char="{" context="qq_String{" attribute="String Delimiter"/>
1786         <IncludeRules context="find_qq_StringCommon"/>
1787         <RegExpr String="[^{}\\$@&amp;]*" context="#stay" attribute="String"/>
1788       </context>
1789 
1790       <context name="qq_String&lt;" attribute="String" lineEndContext="#stay">
1791         <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
1792         <DetectChar char="&lt;" context="qq_String&lt;" attribute="String Delimiter"/>
1793         <IncludeRules context="find_qq_StringCommon"/>
1794         <RegExpr String="[^&lt;>\\${@&amp;]*" context="#stay" attribute="String"/>
1795       </context>
1796 
1797       <context name="qq_String«" attribute="String" lineEndContext="#stay">
1798         <DetectChar char="»" context="#pop" attribute="String Delimiter"/>
1799         <IncludeRules context="qq_String«_common"/>
1800       </context>
1801       <context name="qq_String«_term" attribute="String" lineEndContext="#stay">
1802         <DetectChar char="»" context="#pop!postfix_op" attribute="String Delimiter"/>
1803         <IncludeRules context="qq_String«_common"/>
1804       </context>
1805       <context name="qq_String«_common" attribute="String" lineEndContext="#stay">
1806         <DetectChar char="«" context="qq_String«" attribute="String Delimiter"/>
1807         <IncludeRules context="find_qq_StringCommon"/>
1808         <RegExpr String="[^«»\\${@&amp;]*" context="#stay" attribute="String"/>
1809       </context>
1810 
1811       <context name="qq_String&lt;&lt;" attribute="String" lineEndContext="#stay">
1812         <Detect2Chars char=">" char1=">" context="#pop" attribute="String Delimiter"/>
1813         <IncludeRules context="qq_String&lt;&lt;_common"/>
1814       </context>
1815       <context name="qq_String&lt;&lt;_term" attribute="String" lineEndContext="#stay">
1816         <Detect2Chars char=">" char1=">" context="#pop!postfix_op" attribute="String Delimiter"/>
1817         <IncludeRules context="qq_String&lt;&lt;_common"/>
1818       </context>
1819       <context name="qq_String&lt;&lt;_common" attribute="String" lineEndContext="#stay">
1820         <Detect2Chars char="&lt;" char1="&lt;" context="qq_String&lt;&lt;" attribute="String Delimiter"/>
1821         <IncludeRules context="find_qq_StringCommon"/>
1822         <RegExpr String="([^&lt;>\\${@&amp;]*|&lt;(?!&lt;)|>(?!>))" context="#stay" attribute="String"/>
1823       </context>
1824 
1825       <context name="qq_StringAny" attribute="String" lineEndContext="#stay">
1826         <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
1827         <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
1828         <IncludeRules context="find_qq_StringCommon"/>
1829         <RegExpr String="[^%1\\${@&amp;]*" dynamic="1" context="#stay" attribute="String"/>
1830       </context>
1831 
1832       <context name="qq_RawString" attribute="String" lineEndContext="#stay">
1833         <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
1834         <IncludeRules context="qq_RawString_common"/>
1835       </context>
1836       <context name="qq_RawString_term" attribute="String" lineEndContext="#stay">
1837         <DetectChar char="&quot;" context="#pop!postfix_op" attribute="String Delimiter"/>
1838         <IncludeRules context="qq_RawString_common"/>
1839       </context>
1840       <context name="qq_RawString_common" attribute="String" lineEndContext="#stay">
1841         <IncludeRules context="find_qq_StringCommon"/>
1842         <RegExpr String="[^\\&quot;${@&amp;]*" context="#stay" attribute="String"/>
1843       </context>
1844 
1845       <context name="find_qq_StringCommon" attribute="String" lineEndContext="#stay">
1846         <DetectChar char="\" context="qq_StringEscape" attribute="Operator" lookAhead="1"/>
1847         <DetectChar char="{" context="qq_Interpolation" attribute="String (interpolated)"/>
1848         <DetectChar char="$" context="qq_StringMaybeVar$" attribute="String" lookAhead="1"/>
1849         <AnyChar String="@%" context="qq_StringMaybeVar" attribute="String" lookAhead="1"/>
1850         <DetectChar char="&amp;" context="qq_StringSigil" attribute="String" lookAhead="1"/>
1851       </context>
1852 
1853       <context name="qq_StringEscape" attribute="String Special Character" lineEndContext="#pop">
1854         <Detect2Chars char="\" char1="q" context="#pop!q_QuotingForm" attribute="Operator"/>
1855         <DetectChar char="\" context="#pop!qq_StringSpecialChar" attribute="String Special Character"/>
1856       </context>
1857       <context name="qq_StringSpecialChar" attribute="String Special Character" lineEndContext="#pop">
1858         <IncludeRules context="SpecialCharPre"/>
1859         <RegExpr String="[^xco]" context="#pop" attribute="String Special Character"/>
1860         <IncludeRules context="SpecialCharPost"/>
1861       </context>
1862 
1863       <context name="qq_Interpolation" attribute="String (interpolated)" lineEndContext="#stay" fallthroughContext="term">
1864         <DetectChar char="}" context="#pop" attribute="String (interpolated)"/>
1865         <IncludeRules context="base"/>
1866       </context>
1867 
1868       <context name="qq_StringSigil" attribute="Function" lineEndContext="#stay">
1869         <RegExpr String="&amp;&ident;\(" context="#pop!FunctionParameters" attribute="Function"/>
1870         <DetectChar char="&amp;" context="#pop" attribute="String"/>
1871       </context>
1872 
1873       <context name="qq_StringMaybeVar$" attribute="String" lineEndContext="#stay">
1874         <RegExpr String="\$(?=[&twigils;]?&prefixdollarvarname;)" context="qq_InterpolationVar" attribute="Variable"/>
1875         <DetectChar char="$" context="#pop" attribute="String"/>
1876       </context>
1877 
1878       <context name="qq_StringMaybeVar" attribute="String" lineEndContext="#stay">
1879         <RegExpr String="@\(\)|[%@]\$/|[@%]&ident;" context="qq_Interpolation1" attribute="Variable"/>
1880         <AnyChar String="@%" context="#pop" attribute="String"/>
1881       </context>
1882 
1883       <context name="qq_InterpolationVar" attribute="String" lineEndContext="#stay">
1884         <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>
1885         <RegExpr String="&dollarvarname;" context="#pop!qq_Interpolation1" attribute="Variable"/>
1886       </context>
1887 
1888       <context name="qq_Interpolation1" attribute="String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
1889         <DetectChar char="[" context="qq_InterpolationIndex" attribute="Function"/>
1890         <DetectChar char="." context="qq_InterpolationFunction" attribute="Function" lookAhead="1"/>
1891       </context>
1892 
1893       <context name="qq_InterpolationIndex" attribute="String" lineEndContext="#stay" fallthroughContext="term">
1894         <DetectChar char="]" context="#pop#pop#pop" attribute="Function"/>
1895         <IncludeRules context="base"/>
1896       </context>
1897 
1898       <context name="qq_InterpolationFunction" attribute="String" lineEndContext="#stay">
1899         <RegExpr String="(?:\.&ident;)*\.&ident;\(" context="#pop#pop#pop!FunctionParameters" attribute="Function"/>
1900         <DetectChar char="." context="#pop#pop#pop" attribute="String"/>
1901       </context>
1902 
1903       <context name="FunctionParameters" attribute="String" lineEndContext="#stay" fallthroughContext="term">
1904         <DetectChar char=")" context="#pop" attribute="Function"/>
1905         <DetectChar char="(" context="FunctionParameters" attribute="Function"/>
1906         <IncludeRules context="base"/>
1907       </context>
1908 
1909 
1910       <!-- Comment -->
1911 
1912       <context name="StartComment" attribute="Comment" lineEndContext="#pop" fallthroughContext="SingleLineComment">
1913         <DetectChar attribute="Comment" context="MultilineComment" char="`"/>
1914         <AnyChar attribute="Pod Operator" context="MultilineComment" String="=|"/>
1915       </context>
1916 
1917       <context name="MultilineComment" attribute="Comment" lineEndContext="#pop#pop" fallthroughContext="#pop!SingleLineComment">
1918         <!-- TODO a new rule is needed to find the corresponding closures -->
1919         <StringDetect attribute="Comment" context="#pop#pop!MultilineComment(((" String="(((" beginRegion="comment"/>
1920         <StringDetect attribute="Comment" context="#pop#pop!MultilineComment[[[" String="[[[" beginRegion="comment"/>
1921         <StringDetect attribute="Comment" context="#pop#pop!MultilineComment{{{" String="{{{" beginRegion="comment"/>
1922         <StringDetect attribute="Comment" context="#pop#pop!MultilineComment«««" String="«««" beginRegion="comment"/>
1923         <StringDetect attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;&lt;" String="&lt;&lt;&lt;" beginRegion="comment"/>
1924         <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment((" char="(" char1="(" beginRegion="comment"/>
1925         <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment[[" char="[" char1="[" beginRegion="comment"/>
1926         <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment{{" char="{" char1="{" beginRegion="comment"/>
1927         <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment««" char="«" char1="«" beginRegion="comment"/>
1928         <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;" char="&lt;" char1="&lt;" beginRegion="comment"/>
1929         <DetectChar attribute="Comment" context="#pop#pop!MultilineComment(" char="(" beginRegion="comment"/>
1930         <DetectChar attribute="Comment" context="#pop#pop!MultilineComment[" char="[" beginRegion="comment"/>
1931         <DetectChar attribute="Comment" context="#pop#pop!MultilineComment{" char="{" beginRegion="comment"/>
1932         <DetectChar attribute="Comment" context="#pop#pop!MultilineComment«" char="«" beginRegion="comment"/>
1933         <DetectChar attribute="Comment" context="#pop#pop!MultilineComment&lt;" char="&lt;" beginRegion="comment"/>
1934         <!-- etc -->
1935       </context>
1936 
1937       <context name="MultilineComment(((" attribute="Comment" lineEndContext="#stay">
1938         <IncludeRules context="SingleLineComment"/>
1939         <StringDetect String=")))" attribute="Comment" context="#pop" endRegion="comment"/>
1940         <StringDetect String="(((" attribute="Comment" context="MultilineComment(((" beginRegion="comment"/>
1941       </context>
1942       <context name="MultilineComment[[[" attribute="Comment" lineEndContext="#stay">
1943         <IncludeRules context="SingleLineComment"/>
1944         <StringDetect String="]]]" attribute="Comment" context="#pop" endRegion="comment"/>
1945         <StringDetect String="[[[" attribute="Comment" context="MultilineComment[[[" beginRegion="comment"/>
1946       </context>
1947       <context name="MultilineComment{{{" attribute="Comment" lineEndContext="#stay">
1948         <StringDetect String="}}}" attribute="Comment" context="#pop" endRegion="comment"/>
1949         <StringDetect String="{{{" attribute="Comment" context="MultilineComment{{{" beginRegion="comment"/>
1950         <IncludeRules context="SingleLineComment"/>
1951       </context>
1952       <context name="MultilineComment«««" attribute="Comment" lineEndContext="#stay">
1953         <IncludeRules context="SingleLineComment"/>
1954         <StringDetect String="»»»" attribute="Comment" context="#pop" endRegion="comment"/>
1955         <StringDetect String="«««" attribute="Comment" context="MultilineComment«««" beginRegion="comment"/>
1956       </context>
1957       <context name="MultilineComment&lt;&lt;&lt;" attribute="Comment" lineEndContext="#stay">
1958         <IncludeRules context="SingleLineComment"/>
1959         <StringDetect String=">>>" attribute="Comment" context="#pop" endRegion="comment"/>
1960         <StringDetect String="&lt;&lt;&lt;" attribute="Comment" context="MultilineComment&lt;&lt;&lt;" beginRegion="comment"/>
1961       </context>
1962 
1963       <context name="MultilineComment((" attribute="Comment" lineEndContext="#stay">
1964         <IncludeRules context="SingleLineComment"/>
1965         <Detect2Chars char=")" char1=")" attribute="Comment" context="#pop" endRegion="comment"/>
1966         <Detect2Chars char="(" char1="(" attribute="Comment" context="MultilineComment((" beginRegion="comment"/>
1967       </context>
1968       <context name="MultilineComment[[" attribute="Comment" lineEndContext="#stay">
1969         <IncludeRules context="SingleLineComment"/>
1970         <Detect2Chars char="]" char1="]" attribute="Comment" context="#pop" endRegion="comment"/>
1971         <Detect2Chars char="[" char1="[" attribute="Comment" context="MultilineComment[[" beginRegion="comment"/>
1972       </context>
1973       <context name="MultilineComment{{" attribute="Comment" lineEndContext="#stay">
1974         <IncludeRules context="SingleLineComment"/>
1975         <Detect2Chars char="}" char1="}" attribute="Comment" context="#pop" endRegion="comment"/>
1976         <Detect2Chars char="{" char1="{" attribute="Comment" context="MultilineComment{{" beginRegion="comment"/>
1977       </context>
1978       <context name="MultilineComment««" attribute="Comment" lineEndContext="#stay">
1979         <IncludeRules context="SingleLineComment"/>
1980         <Detect2Chars char="»" char1="»" attribute="Comment" context="#pop" endRegion="comment"/>
1981         <Detect2Chars char="«" char1="«" attribute="Comment" context="MultilineComment««" beginRegion="comment"/>
1982       </context>
1983       <context name="MultilineComment&lt;&lt;" attribute="Comment" lineEndContext="#stay">
1984         <IncludeRules context="SingleLineComment"/>
1985         <Detect2Chars char=">" char1=">" attribute="Comment" context="#pop" endRegion="comment"/>
1986         <Detect2Chars char="&lt;" char1="&lt;" attribute="Comment" context="MultilineComment&lt;&lt;" beginRegion="comment"/>
1987       </context>
1988 
1989       <context name="MultilineComment(" attribute="Comment" lineEndContext="#stay">
1990         <IncludeRules context="SingleLineComment"/>
1991         <DetectChar char=")" attribute="Comment" context="#pop" endRegion="comment"/>
1992         <DetectChar char="(" attribute="Comment" context="MultilineComment(" beginRegion="comment"/>
1993       </context>
1994       <context name="MultilineComment[" attribute="Comment" lineEndContext="#stay">
1995         <IncludeRules context="SingleLineComment"/>
1996         <DetectChar char="]" attribute="Comment" context="#pop" endRegion="comment"/>
1997         <DetectChar char="[" attribute="Comment" context="MultilineComment[" beginRegion="comment"/>
1998       </context>
1999       <context name="MultilineComment{" attribute="Comment" lineEndContext="#stay">
2000         <IncludeRules context="SingleLineComment"/>
2001         <DetectChar char="}" attribute="Comment" context="#pop" endRegion="comment"/>
2002         <DetectChar char="{" attribute="Comment" context="MultilineComment{" beginRegion="comment"/>
2003       </context>
2004       <context name="MultilineComment«" attribute="Comment" lineEndContext="#stay">
2005         <IncludeRules context="SingleLineComment"/>
2006         <DetectChar char="»" attribute="Comment" context="#pop" endRegion="comment"/>
2007         <DetectChar char="«" attribute="Comment" context="MultilineComment«" beginRegion="comment"/>
2008       </context>
2009       <context name="MultilineComment&lt;" attribute="Comment" lineEndContext="#stay">
2010         <IncludeRules context="SingleLineComment"/>
2011         <DetectChar char=">" attribute="Comment" context="#pop" endRegion="comment"/>
2012         <DetectChar char="&lt;" attribute="Comment" context="MultilineComment&lt;" beginRegion="comment"/>
2013       </context>
2014 
2015       <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop#pop">
2016         <DetectSpaces/>
2017         <IncludeRules context="##Comments"/>
2018         <DetectIdentifier/>
2019       </context>
2020 
2021 
2022       <!-- Error -->
2023 
2024       <context name="Error" attribute="Error" lineEndContext="#pop"/>
2025 
2026     </contexts>
2027 
2028     <itemDatas>
2029       <itemData name="Normal Text"               defStyleNum="dsNormal"/>
2030       <itemData name="Keyword"                   defStyleNum="dsKeyword" spellChecking="false"/>
2031       <itemData name="Keyword Value"             defStyleNum="dsKeyword" spellChecking="false"/>
2032       <itemData name="Variable"                  defStyleNum="dsVariable" spellChecking="false"/>
2033       <itemData name="Twigil"                    defStyleNum="dsAttribute" spellChecking="false"/>
2034       <itemData name="Control Flow"              defStyleNum="dsControlFlow" spellChecking="false"/>
2035       <itemData name="Variable Storage"          defStyleNum="dsKeyword" spellChecking="false" bold="1"/>
2036       <itemData name="Property"                  defStyleNum="dsBuiltIn" spellChecking="false" italic="1"/>
2037       <itemData name="Declare Routine"           defStyleNum="dsBuiltIn" spellChecking="false"/>
2038       <itemData name="Function"                  defStyleNum="dsFunction" spellChecking="false"/>
2039       <itemData name="Symbol"                    defStyleNum="dsNormal" spellChecking="false"/>
2040       <itemData name="Operator"                  defStyleNum="dsOperator" spellChecking="false"/>
2041       <itemData name="Member Operator"           defStyleNum="dsOperator" spellChecking="false"/>
2042       <itemData name="Hyper Operator"            defStyleNum="dsNormal" spellChecking="false"/>
2043       <itemData name="Separator Symbol"          defStyleNum="dsNormal" spellChecking="false"/>
2044       <itemData name="Data Type"                 defStyleNum="dsDataType" spellChecking="false"/>
2045       <itemData name="Attribute"                 defStyleNum="dsAttribute" spellChecking="false"/>
2046       <itemData name="Number Suffix"             defStyleNum="dsAttribute" spellChecking="false"/>
2047       <itemData name="Decimal"                   defStyleNum="dsDecVal" spellChecking="false"/>
2048       <itemData name="Octal"                     defStyleNum="dsBaseN" spellChecking="false"/>
2049       <itemData name="Hex"                       defStyleNum="dsBaseN" spellChecking="false"/>
2050       <itemData name="Float"                     defStyleNum="dsFloat" spellChecking="false"/>
2051       <itemData name="String"                    defStyleNum="dsString"/>
2052       <itemData name="String Delimiter"          defStyleNum="dsChar" spellChecking="false"/>
2053       <itemData name="String (interpolated)"     defStyleNum="dsString"/>
2054       <itemData name="String Special Character"  defStyleNum="dsChar"/>
2055       <itemData name="Pattern"                   defStyleNum="dsOthers" spellChecking="false"/>
2056       <itemData name="Pattern Delimiter"         defStyleNum="dsVerbatimString" spellChecking="false"/>
2057       <itemData name="Pattern Bracket"           defStyleNum="dsExtension" spellChecking="false"/>
2058       <itemData name="Pattern Meta Character"    defStyleNum="dsChar" spellChecking="false"/>
2059       <itemData name="Pattern Character Class"   defStyleNum="dsBaseN" spellChecking="false"/>
2060       <itemData name="Pattern Unicode Property"  defStyleNum="dsBaseN" spellChecking="false"/>
2061       <itemData name="Pattern Character"         defStyleNum="dsSpecialString" spellChecking="false"/>
2062       <itemData name="Pattern Modifier"          defStyleNum="dsKeyword" spellChecking="false"/>
2063       <itemData name="Pattern Quantifier"        defStyleNum="dsControlFlow" spellChecking="false"/>
2064       <itemData name="Pattern Control Flow"      defStyleNum="dsControlFlow" spellChecking="false"/>
2065       <itemData name="Pattern Special Character" defStyleNum="dsBuiltIn" spellChecking="false"/>
2066       <itemData name="Pattern Named Capture"     defStyleNum="dsAnnotation" spellChecking="false"/>
2067       <itemData name="Comment"                   defStyleNum="dsComment"/>
2068       <itemData name="Error"                     defStyleNum="dsError" spellChecking="false"/>
2069       <itemData name="Pod"                       defStyleNum="dsDocumentation" spellChecking="false"/>
2070       <itemData name="Pod Paragraph"             defStyleNum="dsDocumentation"/>
2071       <itemData name="Pod Block"                 defStyleNum="dsRegionMarker" spellChecking="false"/>
2072       <itemData name="Pod Typename"              defStyleNum="dsAnnotation" spellChecking="false"/>
2073       <itemData name="Pod Typename Value"        defStyleNum="dsCommentVar" spellChecking="false"/>
2074       <itemData name="Pod Unknown"               defStyleNum="dsError" spellChecking="false"/>
2075       <itemData name="Pod Operator"              defStyleNum="dsOperator" spellChecking="false"/>
2076       <itemData name="Pod Key"                   defStyleNum="dsAttribute" spellChecking="false"/>
2077       <itemData name="Pod Config"                defStyleNum="dsCommentVar" spellChecking="false"/>
2078       <itemData name="Pod Bold"                  defStyleNum="dsDocumentation" bold="1"/>
2079       <itemData name="Pod Italic"                defStyleNum="dsDocumentation" italic="1"/>
2080       <itemData name="Pod Underline"             defStyleNum="dsDocumentation" underline="1"/>
2081       <itemData name="Pod Link"                  defStyleNum="dsOthers" underline="1"/>
2082       <itemData name="Pod Note"                  defStyleNum="dsInformation"/>
2083       <itemData name="Pod Comment"               defStyleNum="dsComment"/>
2084       <itemData name="Pod Verbatim"              defStyleNum="dsInformation" spellChecking="false"/>
2085       <itemData name="Pod Unicode"               defStyleNum="dsChar" spellChecking="false"/>
2086       <itemData name="Pod Indexed Terms"         defStyleNum="dsOthers" spellChecking="false"/>
2087     </itemDatas>
2088   </highlighting>
2089   <general>
2090     <comments>
2091       <comment name="singleLine" start="#"/>
2092     </comments>
2093     <keywords casesensitive="1" weakDeliminator="-'"/>
2094   </general>
2095 </language>
2096 <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->