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 _rangealphabetic "A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\x{2c1}\x{2C6}-\x{2D1}\x{2E0}-\x{2EE}\x{370}-\x{588}\x{5d0}-\x{17dc}\x{1820}-\x{1aa7}\x{1b05}-\x{2139}\x{2c00}-\x{31ff}\x{3400}\x{4db5}\x{4db5}\x{4e00}-\x{ac00}\x{d7a3}-\x{d7fb}\x{f900}-\x{FD3D}\x{FF64}\x{100fa}\x{10000}-\x{100fa}\x{10280}-\x{20000}\x{2a6d6}-\x{2fa1d}">
0011   <!ENTITY rangealphabetic "_&_rangealphabetic;">
0012   <!ENTITY rangenumeric "0-9">
0013   <!ENTITY alphabetic "[&rangealphabetic;]">
0014   <!ENTITY numeric "[&rangenumeric;]">
0015   <!ENTITY alnum "[&rangealphabetic;&rangenumeric;]">
0016   <!ENTITY ident "(?:&alphabetic;(?:&alnum;+|[-']&alphabetic;)*)">
0017 
0018   <!ENTITY prefixdollarvarname "(?:[&rangealphabetic;0-9/!]|\(\))">
0019   <!ENTITY dollarvarname "(?:&ident;|[0-9]+|[/!]|\(\))">
0020   <!ENTITY twigils "*?!.&lt;^:=~">
0021 
0022   <!ENTITY podfmt "BCEIKLMNPRTUVXZ">
0023   <!ENTITY allnopodfmt "(?:[^&podfmt;]+|[&podfmt;](?![&lt;«]))+">
0024   <!ENTITY allnopodfmt1 "(?:[^&podfmt;&lt;>]+|[&podfmt;](&lt;(?:&lt;*(?=&lt;))|(?![&lt;«])))+">
0025   <!ENTITY allnopodfmt2 "(?:[^&podfmt;«»]+|[&podfmt;](?![&lt;«]))+">
0026   <!ENTITY allnopodfmt3 "(?:[^&podfmt;&lt;>]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+">
0027 
0028   <!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)*)">
0029   <!ENTITY quotingform_q_assert "(?:\s+(?=\()|\s*(?=[^()>」\]}a-zA-Z0-9]|$))">
0030   <!ENTITY quotingconstruct "q&quotingform_q;&quotingform_q_assert;">
0031 
0032   <!ENTITY int10 "(?:[0-9]+(?:_[0-9]+)*)">
0033   <!ENTITY intN "(?:[0-9a-zA-Z]+(?:_[0-9a-zA-Z]+)*)">
0034 
0035   <!-- <!ENTITY operators "(?:\b(?:X[*~]|Z=|xx=)|\((?:[&lt;>][+=]|[-&amp;+.&lt;>|^]|cont|elem)\)|\+[&amp;+&lt;=>^|]?|~[&amp;&lt;>^|~]?|\.(?::&lt;[^>]+>|\.\.?\^?|[=?^*+.])?|\^(?:fff?\b|\.\.)?\^?|(?:[?…]|f?ff)\^|\[[*+]\]|=(?:==?|=>>?|>|~=)?|&lt;(?:&lt;==|=[=>]?)?|\*\*=?|\?[?|]?|!(?:[=]|eqv\b)?|&#37;&#37;?|&amp;&amp;?|//?|\|\|?|>=?|-[-=]?|::|[−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…])"> -->
0036   <!-- <!ENTITY hyperoperators "(?:[«»]|&lt;&lt;|&gt;&gt;)"> -->
0037   <!ENTITY safesymboloperators "−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…?.+-/=!~&amp;|^&#37;">
0038   <!ENTITY unsafesymboloperators "&lt;>«»">
0039   <!ENTITY symboloperators "&safesymboloperators;&unsafesymboloperators;">
0040   <!ENTITY bracehyperoperator "(?:\[[^\s]+\]|\([^\s]+\))">
0041   <!ENTITY prefixoperator "R?(?:[XZ]|xx)?">
0042   <!ENTITY extrasymboloperators "(?:\^fff?\b\^?|\bf?ff\^|\((?:[&lt;>][+=]|[-&amp;+.&lt;>|^]|cont|elem)\))">
0043   <!ENTITY hyperoperators1 "[«»]&prefixoperator;(?:&amp;&ident;|[&safesymboloperators;&lt;>]+|&bracehyperoperator;)[«»]">
0044   <!ENTITY hyperoperators2 "(?:&lt;&lt;|&gt;&gt;)&prefixoperator;(?:&amp;&ident;|[&safesymboloperators;«»]+|&bracehyperoperator;)(?:&lt;&lt;|&gt;&gt;)">
0045   <!ENTITY hyperoperators "&hyperoperators1;|&hyperoperators2;">
0046   <!ENTITY startstringasoperator "&prefixoperator;&lt;[&symboloperators;]*(?=\s|$)">
0047   <!ENTITY funcoperator "\[\[\&amp;&ident;\]\]">
0048   <!ENTITY reductionoperator "\[&prefixoperator;[&symboloperators;]+\]">
0049   <!ENTITY innerbraceoperator "[&symboloperators;'&quot;]+">
0050   <!ENTITY operators "&prefixoperator;(?:(?:[&safesymboloperators;>]|&extrasymboloperators;)[&symboloperators;]*|\(&innerbraceoperator;\)|\[&innerbraceoperator;\]|&lt;[&safesymboloperators;'&quot;]+>)">
0051 
0052   <!-- <!ENTITY regadverb "(?!\()\s*(?::\w+\s*)*(?=[^\w\s])"> -->
0053   <!ENTITY regadverb "(?!\()\s*(?=[^\w\s])">
0054 ]>
0055 <language name="Raku" version="8" kateversion="5.53" section="Scripts" extensions="*.raku;*.rakumod;*.rakudoc;*.rakutest;*.pl6;*.PL6;*.p6;*.pm6;*.pod6" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
0056   <highlighting>
0057 
0058     <list name="pod">
0059       <item>begin</item>
0060       <item>end</item>
0061       <item>finish</item>
0062       <item>for</item>
0063       <include>podtypename</include>
0064     </list>
0065 
0066     <list name="podblocktypename">
0067       <item>pod</item>
0068       <include>podtypename</include>
0069     </list>
0070 
0071     <list name="podvalue">
0072       <item>True</item>
0073       <item>False</item>
0074     </list>
0075 
0076     <list name="podtypename">
0077       <item>head1</item>
0078       <item>head2</item>
0079       <item>head3</item>
0080       <item>head4</item>
0081       <item>head5</item>
0082       <item>head6</item>
0083       <item>item</item>
0084       <item>item1</item>
0085       <item>item2</item>
0086       <item>item3</item>
0087       <item>item4</item>
0088       <item>item5</item>
0089       <item>item6</item>
0090       <item>para</item>
0091       <item>code</item>
0092       <item>defn</item>
0093       <item>comment</item>
0094       <item>table</item>
0095       <item>input</item>
0096       <item>output</item>
0097     </list>
0098 
0099     <list name="quoting">
0100       <item>exec</item>
0101       <item>words</item>
0102       <item>quotewords</item>
0103       <item>scalar</item>
0104       <item>array</item>
0105       <item>hash</item>
0106       <item>function</item>
0107       <item>closure</item>
0108       <item>backslash</item>
0109       <item>heredoc</item>
0110       <item>val</item>
0111     </list>
0112 
0113     <list name="declareRoutine">
0114       <item>macro</item>
0115       <item>sub</item>
0116       <item>submethod</item>
0117       <item>method</item>
0118       <item>multi</item>
0119       <item>proto</item>
0120       <item>only</item>
0121       <item>category</item>
0122     </list>
0123 
0124     <list name="regexKeyword">
0125       <item>rule</item>
0126       <item>token</item>
0127       <item>regex</item>
0128     </list>
0129 
0130     <list name="value">
0131       <include>podvalue</include>
0132       <item>self</item>
0133     </list>
0134 
0135     <list name="varStorage">
0136       <item>let</item>
0137       <item>my</item>
0138       <item>our</item>
0139       <item>state</item>
0140       <item>temp</item>
0141       <item>has</item>
0142       <item>constant</item>
0143     </list>
0144 
0145     <list name="controlFlow">
0146       <!-- conditional -->
0147       <item>if</item>
0148       <item>else</item>
0149       <item>elsif</item>
0150       <item>unless</item>
0151       <!-- repeat -->
0152       <item>for</item>
0153       <item>loop</item>
0154       <item>repeat</item>
0155       <item>while</item>
0156       <item>until</item>
0157       <item>gather</item>
0158       <item>given</item>
0159       <!-- control flow -->
0160       <item>take</item>
0161       <item>do</item>
0162       <item>when</item>
0163       <item>next</item>
0164       <item>last</item>
0165       <item>redo</item>
0166       <item>return</item>
0167       <item>contend</item>
0168       <item>maybe</item>
0169       <item>defer</item>
0170       <item>default</item>
0171       <item>exit</item>
0172       <item>make</item>
0173       <item>continue</item>
0174       <item>break</item>
0175       <item>goto</item>
0176       <item>leave</item>
0177       <item>async</item>
0178       <item>lift</item>
0179       <!-- exception -->
0180       <item>die</item>
0181       <item>fail</item>
0182       <item>try</item>
0183       <item>warn</item>
0184     </list>
0185 
0186     <list name="keyword">
0187       <!-- include -->
0188       <item>no</item>
0189       <item>use</item>
0190       <item>require</item>
0191       <!-- typeConstraint -->
0192       <item>is</item>
0193       <item>as</item>
0194       <item>but</item>
0195       <item>trusts</item>
0196       <item>of</item>
0197       <item>returns</item>
0198       <item>handles</item>
0199       <item>where</item>
0200       <item>augment</item>
0201       <item>supersede</item>
0202       <!-- module -->
0203       <item>module</item>
0204       <item>class</item>
0205       <item>role</item>
0206       <item>package</item>
0207       <item>enum</item>
0208       <item>grammar</item>
0209       <item>slang</item>
0210       <item>subset</item>
0211       <!-- closure trait -->
0212       <item>BEGIN</item>
0213       <item>CHECK</item>
0214       <item>INIT</item>
0215       <item>START</item>
0216       <item>FIRST</item>
0217       <item>ENTER</item>
0218       <item>LEAVE</item>
0219       <item>KEEP</item>
0220       <item>UNDO</item>
0221       <item>NEXT</item>
0222       <item>LAST</item>
0223       <item>PRE</item>
0224       <item>POST</item>
0225       <item>END</item>
0226       <item>CATCH</item>
0227       <item>CONTROL</item>
0228       <item>TEMP</item>
0229     </list>
0230 
0231     <list name="property">
0232       <item>prec</item>
0233       <item>irs</item>
0234       <item>ofs</item>
0235       <item>ors</item>
0236       <item>export</item>
0237       <item>deep</item>
0238       <item>binary</item>
0239       <item>unary</item>
0240       <item>reparsed</item>
0241       <item>rw</item>
0242       <item>parsed</item>
0243       <item>cached</item>
0244       <item>readonly</item>
0245       <item>defequiv</item>
0246       <item>will</item>
0247       <item>ref</item>
0248       <item>copy</item>
0249       <item>inline</item>
0250       <item>tighter</item>
0251       <item>looser</item>
0252       <item>equiv</item>
0253       <item>assoc</item>
0254       <item>required</item>
0255     </list>
0256 
0257     <list name="isProperty">
0258       <include>property</include>
0259       <item>signature</item>
0260       <item>context</item>
0261       <item>also</item>
0262       <item>shape</item>
0263     </list>
0264 
0265     <list name="Number">
0266       <item>NaN</item>
0267       <item>Inf</item>
0268     </list>
0269 
0270     <list name="type">
0271       <item>Object</item>
0272       <item>Any</item>
0273       <item>Junction</item>
0274       <item>Whatever</item>
0275       <item>Capture</item>
0276       <item>Match</item>
0277       <item>Signature</item>
0278       <item>Proxy</item>
0279       <item>Matcher</item>
0280       <item>Package</item>
0281       <item>Module</item>
0282       <item>Class</item>
0283       <item>Grammar</item>
0284       <item>Scalar</item>
0285       <item>Array</item>
0286       <item>Hash</item>
0287       <item>KeyHash</item>
0288       <item>KeySet</item>
0289       <item>KeyBag</item>
0290       <item>Pair</item>
0291       <item>List</item>
0292       <item>Seq</item>
0293       <item>Range</item>
0294       <item>Set</item>
0295       <item>Bag</item>
0296       <item>Mapping</item>
0297       <item>Void</item>
0298       <item>Undef</item>
0299       <item>Failure</item>
0300       <item>Exception</item>
0301       <item>Code</item>
0302       <item>Block</item>
0303       <item>Routine</item>
0304       <item>Sub</item>
0305       <item>Macro</item>
0306       <item>Method</item>
0307       <item>Submethod</item>
0308       <item>Regex</item>
0309       <item>Str</item>
0310       <item>Blob</item>
0311       <item>Char</item>
0312       <item>Byte</item>
0313       <item>Codepoint</item>
0314       <item>Grapheme</item>
0315       <item>StrPos</item>
0316       <item>StrLen</item>
0317       <item>Version</item>
0318       <item>Num</item>
0319       <item>Complex</item>
0320       <item>num</item>
0321       <item>complex</item>
0322       <item>Bit</item>
0323       <item>bit</item>
0324       <item>bool</item>
0325       <item>True</item>
0326       <item>False</item>
0327       <item>Increasing</item>
0328       <item>Decreasing</item>
0329       <item>Ordered</item>
0330       <item>Callable</item>
0331       <item>AnyChar</item>
0332       <item>Positional</item>
0333       <item>Associative</item>
0334       <item>Ordering</item>
0335       <item>KeyExtractor</item>
0336       <item>Comparator</item>
0337       <item>OrderingPair</item>
0338       <item>IO</item>
0339       <item>KitchenSink</item>
0340       <item>Role</item>
0341       <item>Int</item>
0342       <item>int</item>
0343       <item>int1</item>
0344       <item>int2</item>
0345       <item>int4</item>
0346       <item>int8</item>
0347       <item>int16</item>
0348       <item>int32</item>
0349       <item>int64</item>
0350       <item>Rat</item>
0351       <item>rat</item>
0352       <item>rat1</item>
0353       <item>rat2</item>
0354       <item>rat4</item>
0355       <item>rat8</item>
0356       <item>rat16</item>
0357       <item>rat32</item>
0358       <item>rat64</item>
0359       <item>Buf</item>
0360       <item>buf</item>
0361       <item>buf1</item>
0362       <item>buf2</item>
0363       <item>buf4</item>
0364       <item>buf8</item>
0365       <item>buf16</item>
0366       <item>buf32</item>
0367       <item>buf64</item>
0368       <item>UInt</item>
0369       <item>uint</item>
0370       <item>uint1</item>
0371       <item>uint2</item>
0372       <item>uint4</item>
0373       <item>uint8</item>
0374       <item>uint16</item>
0375       <item>uint32</item>
0376       <item>uint64</item>
0377       <item>Abstraction</item>
0378       <item>utf8</item>
0379       <item>utf16</item>
0380       <item>utf32</item>
0381     </list>
0382 
0383     <list name="operator">
0384       <item>X</item>
0385       <item>gcd</item>
0386       <item>ge</item>
0387       <item>gt</item>
0388       <item>lcm</item>
0389       <item>le</item>
0390       <item>leg</item>
0391       <item>let</item>
0392       <item>lt</item>
0393       <item>map</item>
0394       <item>max</item>
0395       <item>min</item>
0396       <item>minmax</item>
0397       <item>mod</item>
0398       <item>ne</item>
0399       <item>not</item>
0400       <item>notandthen</item>
0401       <item>o</item>
0402       <item>or</item>
0403       <item>orelse</item>
0404       <item>print</item>
0405       <item>push</item>
0406       <item>say</item>
0407       <item>so</item>
0408       <item>substr</item>
0409       <item>temp</item>
0410       <item>unicmp</item>
0411       <item>x</item>
0412       <item>xor</item>
0413       <item>xx</item>
0414       <item>Xeqv</item>
0415       <item>Z</item>
0416       <item>and</item>
0417       <item>andthen</item>
0418       <item>any</item>
0419       <item>but</item>
0420       <item>cmp</item>
0421       <item>coll</item>
0422       <item>die</item>
0423       <item>div</item>
0424       <item>does</item>
0425       <item>eq</item>
0426       <item>eqv</item>
0427       <item>ff</item>
0428       <item>fff</item>
0429     </list>
0430 
0431     <list name="unicodeGeneralCategories">
0432       <item>L</item>  <item>Letter</item>
0433       <item>LC</item> <item>Cased_Letter</item>
0434       <item>Lu</item> <item>Uppercase_Letter</item>
0435       <item>Ll</item> <item>Lowercase_Letter</item>
0436       <item>Lt</item> <item>Titlecase_Letter</item>
0437       <item>Lm</item> <item>Modifier_Letter</item>
0438       <item>Lo</item> <item>Other_Letter</item>
0439       <item>M</item>  <item>Mark</item>
0440       <item>Mn</item> <item>Nonspacing_Mark</item>
0441       <item>Mc</item> <item>Spacing_Mark</item>
0442       <item>Me</item> <item>Enclosing_Mark</item>
0443       <item>N</item>  <item>Number</item>
0444       <item>Nd</item> <item>Decimal_Number</item> <item>digit</item>
0445       <item>Nl</item> <item>Letter_Number</item>
0446       <item>No</item> <item>Other_Number</item>
0447       <item>P</item>  <item>Punctuation</item> <item>punct</item>
0448       <item>Pc</item> <item>Connector_Punctuation</item>
0449       <item>Pd</item> <item>Dash_Punctuation</item>
0450       <item>Ps</item> <item>Open_Punctuation</item>
0451       <item>Pe</item> <item>Close_Punctuation</item>
0452       <item>Pi</item> <item>Initial_Punctuation</item>
0453       <item>Pf</item> <item>Final_Punctuation</item>
0454       <item>Po</item> <item>Other_Punctuation</item>
0455       <item>S</item>  <item>Symbol</item>
0456       <item>Sm</item> <item>Math_Symbol</item>
0457       <item>Sc</item> <item>Currency_Symbol</item>
0458       <item>Sk</item> <item>Modifier_Symbol</item>
0459       <item>So</item> <item>Other_Symbol</item>
0460       <item>Z</item>  <item>Separator</item>
0461       <item>Zs</item> <item>Space_Separator</item>
0462       <item>Zl</item> <item>Line_Separator</item>
0463       <item>Zp</item> <item>Paragraph_Separator</item>
0464       <item>C</item>  <item>Other</item>
0465       <item>Cc</item> <item>Control</item> <item>cntrl</item>
0466       <item>Cf</item> <item>Format</item>
0467       <item>Cs</item> <item>Surrogate</item>
0468       <item>Co</item> <item>Private_Use</item>
0469       <item>Cn</item> <item>Unassigned</item>
0470     </list>
0471 
0472     <list name="assertion">
0473       <item>before</item>
0474       <item>after</item>
0475     </list>
0476 
0477     <contexts>
0478 
0479       <context name="Shebang" attribute="Comment" lineEndContext="#pop!base" fallthrough="1" fallthroughContext="#pop!base">
0480         <RegExpr attribute="Keyword" context="#pop!base" String="^#!\/.*" column="0"/>
0481       </context>
0482 
0483       <context name="base" attribute="Normal Text" lineEndContext="#stay">
0484         <DetectSpaces/>
0485         <DetectChar attribute="Comment" context="StartComment" char="#"/>
0486         <!-- <DetectChar attribute="Unspace" context="#stay" char="\"/> -->
0487         <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
0488         <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
0489         <DetectChar char="{" context="Interpolation" attribute="Operator" beginRegion="block"/>
0490         <RegExpr String="(?:s|tr|TR)&regadverb;" context="RegexSubstitution" attribute="Operator"/>
0491         <RegExpr String="(?:rx|m)&regadverb;" context="Regex" attribute="Operator"/>
0492         <IncludeRules context="find_Variable"/>
0493         <DetectChar attribute="Pod" context="StartPod" char="=" firstNonSpace="1"/>
0494         <RegExpr String="»\.|&lt;&lt;\.|&hyperoperators;|&startstringasoperator;|&funcoperator;|&reductionoperator;|&operators;" context="MaybeRegex" attribute="Operator"/>
0495         <DetectChar char="(" context="SubExpression(" attribute="Operator" beginRegion="block"/>
0496         <DetectChar char="[" context="SubExpression[" attribute="Operator" beginRegion="block"/>
0497         <AnyChar String=",;" context="#stay" attribute="Separator Symbol"/>
0498         <DetectChar attribute="String Delimiter" context="qq_String«" char="«"/>
0499         <Detect2Chars attribute="String Delimiter" context="qq_String&lt;&lt;" char="&lt;" char1="&lt;"/>
0500         <DetectChar attribute="String Delimiter" context="q_String&lt;" char="&lt;"/>
0501         <DetectChar attribute="String Delimiter" context="Q_String「" char="「"/>
0502         <RegExpr String="Q(\s++(?=['(_]|$)|\s*+(?=[^()>」\]}'&rangealphabetic;&rangenumeric;]|$))" context="Q_String" attribute="String"/>
0503         <DetectChar char=":" context="MaybeAttribute" attribute="Operator"/>
0504         <AnyChar String="0123456789." context="Number" lookAhead="1"/>
0505         <RegExpr attribute="Operator" context="q_QuotingForm" String="q(?=&quotingform_q;&quotingform_q_assert;)"/>
0506         <keyword String="operator" context="#stay" attribute="Operator"/>
0507         <keyword String="varStorage" context="#stay" attribute="Variable Storage"/>
0508         <keyword String="type" context="#stay" attribute="Data Type"/>
0509         <keyword String="controlFlow" context="#stay" attribute="Control Flow"/>
0510         <WordDetect String="is" context="Is" attribute="Keyword"/>
0511         <keyword String="keyword" context="#stay" attribute="Keyword"/>
0512         <keyword String="declareRoutine" context="#stay" attribute="Declare Routine"/>
0513         <keyword String="property" context="#stay" attribute="Property"/>
0514         <keyword String="regexKeyword" context="RegexKeyword" attribute="Keyword"/>
0515         <keyword String="value" context="#stay" attribute="Keyword Value"/>
0516         <keyword String="Number" context="#stay" attribute="Float"/>
0517         <RegExpr String="[A-Z](?:[a-z]+[a-zA-Z0-9]*)+" context="#stay" attribute="Data Type"/>
0518         <RegExpr String="&ident;" context="#stay" attribute="Normal Text"/>
0519       </context>
0520 
0521       <context name="Is" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
0522         <DetectSpaces/>
0523         <keyword String="isProperty" context="#pop" attribute="Property"/>
0524       </context>
0525 
0526       <context name="Interpolation" attribute="Normal Text" lineEndContext="#stay">
0527         <DetectChar char="}" context="#pop" attribute="Operator" endRegion="block"/>
0528         <IncludeRules context="base"/>
0529       </context>
0530 
0531       <context name="SubExpression(" attribute="Normal Text" lineEndContext="#stay">
0532         <IncludeRules context="base"/>
0533         <DetectChar char=")" context="#pop" attribute="Operator" endRegion="block"/>
0534       </context>
0535 
0536       <context name="SubExpression[" attribute="Normal Text" lineEndContext="#stay">
0537         <IncludeRules context="base"/>
0538         <DetectChar char="]" context="#pop" attribute="Operator" endRegion="block"/>
0539       </context>
0540 
0541       <context name="find_Variable" attribute="Normal Text" lineEndContext="#stay">
0542         <RegExpr String="[%&amp;](?=[?*]&alphabetic;)|(?:\$[&twigils;]|::\?)(?=&alphabetic;)" context="Twigil" attribute="Variable"/>
0543         <RegExpr String="[$@]\(\)|[%@]?\$/|\$!|\$[0-9]+|[\\@%&amp;$]&ident;" context="#stay" attribute="Variable"/>
0544       </context>
0545 
0546       <context name="MaybeRegex" attribute="Normal Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
0547         <DetectSpaces/>
0548         <DetectChar char="/" context="#pop!Regex" attribute="Operator" lookAhead="1"/>
0549       </context>
0550 
0551       <context name="Twigil" attribute="Variable" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
0552         <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>
0553         <RegExpr String="&ident;" context="#pop" attribute="Variable"/>
0554       </context>
0555 
0556       <context name="RegexKeyword" attribute="Normal Text" lineEndContext="#pop">
0557         <DetectChar char="{" context="#pop!RegexKeyword-Pattern{" attribute="Operator" beginRegion="regex"/>
0558       </context>
0559       <context name="RegexKeyword-Pattern{" attribute="Pattern" lineEndContext="#stay">
0560         <DetectChar char="}" context="#pop" attribute="Operator" endRegion="regex"/>
0561         <IncludeRules context="find_Pattern"/>
0562       </context>
0563 
0564       <!-- Regex -->
0565 
0566       <context name="Regex" attribute="Pattern" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
0567         <IncludeRules context="find_RegexClosure"/>
0568         <RegExpr String="([^\w\s])" context="Pattern" attribute="Operator" beginRegion="regex"/>
0569       </context>
0570 
0571       <context name="find_RegexClosure" attribute="Pattern" lineEndContext="#stay">
0572         <DetectChar char=":" context="RegexModifier" attribute="Pattern Modifier"/>
0573         <DetectChar char="{" context="Pattern{" attribute="Operator" beginRegion="regex"/>
0574         <DetectChar char="(" context="Pattern(" attribute="Operator" beginRegion="regex"/>
0575         <DetectChar char="[" context="Pattern[" attribute="Operator" beginRegion="regex"/>
0576         <DetectChar char="&lt;" context="Pattern&lt;" attribute="Operator" beginRegion="regex"/>
0577         <DetectSpaces/>
0578       </context>
0579 
0580       <context name="RegexModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
0581         <Detect2Chars char="P" char1="5" context="RegexPerl5" attribute="Pattern Modifier"/>
0582         <StringDetect String="Perl5" context="RegexPerl5" attribute="Pattern Modifier"/>
0583         <DetectIdentifier context="#pop" attribute="Pattern Modifier"/>
0584       </context>
0585 
0586       <context name="RegexPerl5" attribute="Pattern Modifier" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop!IsRegexPerl5">
0587         <DetectSpaces/>
0588       </context>
0589 
0590       <context name="IsRegexPerl5" attribute="Pattern" lineEndContext="#stay">
0591         <IncludeRules context="find_pattern##Perl"/>
0592       </context>
0593 
0594       <context name="Pattern{" attribute="Pattern" lineEndContext="#stay">
0595         <DetectChar char="}" context="#pop#pop" attribute="Operator" endRegion="regex"/>
0596         <IncludeRules context="find_Pattern"/>
0597       </context>
0598 
0599       <context name="Pattern[" attribute="Pattern" lineEndContext="#stay">
0600         <DetectChar char="]" context="#pop#pop" attribute="Operator" endRegion="regex"/>
0601         <IncludeRules context="find_Pattern"/>
0602       </context>
0603 
0604       <context name="Pattern(" attribute="Pattern" lineEndContext="#stay">
0605         <DetectChar char=")" context="#pop#pop" attribute="Operator" endRegion="regex"/>
0606         <IncludeRules context="find_Pattern"/>
0607       </context>
0608 
0609       <context name="Pattern&lt;" attribute="Pattern" lineEndContext="#stay">
0610         <DetectChar char=">" context="#pop#pop" attribute="Operator" endRegion="regex"/>
0611         <IncludeRules context="find_Pattern"/>
0612       </context>
0613 
0614       <context name="Pattern" attribute="Pattern" lineEndContext="#stay">
0615         <DetectChar char="1" dynamic="1" context="#pop#pop" attribute="Operator" endRegion="regex"/>
0616         <IncludeRules context="find_Pattern"/>
0617       </context>
0618 
0619       <context name="find_Pattern" attribute="Pattern" lineEndContext="#stay">
0620         <DetectChar attribute="Operator" context="SubPattern" char="("/>
0621         <DetectChar char="\" context="PatternMetaChar" attribute="Pattern Character Class"/>
0622         <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
0623         <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
0624         <DetectChar attribute="Pattern Modifier" context="PatternModifier" char=":" lookAhead="1"/>
0625         <DetectChar char="{" context="Interpolation" attribute="Operator" beginRegion="block"/>
0626         <Detect2Chars attribute="Operator" context="RecursivePattern" char="&lt;" char1="("/>
0627         <Detect2Chars attribute="Operator" context="PatternAssertion" char="&lt;" char1="?"/>
0628         <Detect2Chars attribute="Operator" context="PatternAssertion" char="&lt;" char1="!"/>
0629         <Detect2Chars attribute="Operator" context="#stay" char="&lt;" char1="&lt;"/>
0630         <Detect2Chars attribute="Operator" context="#stay" char=">" char1=">"/>
0631         <DetectChar attribute="Pattern Meta Character" context="RegexClass" char="&lt;"/>
0632         <AnyChar attribute="Pattern Quantifier" context="#stay" String="?*+%"/>
0633         <Detect2Chars attribute="Pattern Quantifier" context="#stay" char="." char1="."/>
0634         <AnyChar attribute="Operator" context="#stay" String="[]«»~"/>
0635         <DetectChar attribute="Pattern Special Character" context="#stay" char="."/>
0636         <Detect2Chars attribute="Variable" context="PatternVariable" char="$" char1="&lt;"/>
0637         <AnyChar attribute="Pattern Control Flow" context="#stay" String="&amp;|^$"/>
0638         <DetectChar attribute="Comment" context="StartComment" char="#"/>
0639         <IncludeRules context="find_Variable"/>
0640         <RegExpr    String="[&rangealphabetic;&rangenumeric;\s]+" context="#stay" attribute="Pattern"/>
0641       </context>
0642 
0643       <context name="SubPattern" attribute="Pattern" lineEndContext="#stay">
0644         <DetectChar char=")" context="#pop" attribute="Operator"/>
0645         <IncludeRules context="find_Pattern"/>
0646       </context>
0647 
0648       <context name="RecursivePattern" attribute="Variable" lineEndContext="#stay">
0649         <Detect2Chars attribute="Operator" context="#pop" char=")" char1=">"/>
0650         <IncludeRules context="find_Pattern"/>
0651       </context>
0652 
0653       <context name="PatternModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
0654         <RegExpr context="#pop" attribute="Pattern Modifier" String=":\w+"/>
0655         <DetectChar attribute="Pattern Control Flow" context="#pop" char=":"/>
0656       </context>
0657 
0658       <context name="PatternVariable" attribute="Variable" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
0659         <RegExpr String="&ident;>?" context="#pop" attribute="Variable"/>
0660       </context>
0661 
0662       <context name="PatternAssertion" attribute="Normal Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!RegexClass">
0663         <DetectChar attribute="Operator" context="#pop" char=">"/>
0664         <DetectChar attribute="Operator" context="PatternAssertionCond" char="{"/>
0665         <keyword attribute="Keyword" String="assertion" context="SubPatternAssertion"/>
0666       </context>
0667       <context name="SubPatternAssertion" attribute="Pattern" lineEndContext="#stay">
0668         <DetectChar char=">" context="#pop#pop" attribute="Operator"/>
0669         <IncludeRules context="find_Pattern"/>
0670       </context>
0671 
0672       <context name="PatternAssertionCond" attribute="Normal Text" lineEndContext="#stay">
0673         <Detect2Chars attribute="Operator" context="#pop#pop" char="}" char1=">"/>
0674         <IncludeRules context="base"/>
0675       </context>
0676 
0677       <context name="PatternMetaChar" attribute="Pattern Meta Character" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!CharError">
0678         <AnyChar attribute="Pattern Character Class" context="#pop" String="nthvsdwNTHVSDW"/>
0679         <RegExpr String="[^&rangealphabetic;&rangenumeric;]" context="#pop" attribute="Pattern Meta Character"/>
0680       </context>
0681 
0682 
0683       <!-- Pattern Character Classes -->
0684 
0685       <context name="RegexClass" attribute="Pattern Meta Character" lineEndContext="#stay">
0686         <DetectSpaces/>
0687         <AnyChar    attribute="Operator" context="#stay" String="-!+()"/>
0688         <DetectChar attribute="Pattern Meta Character" context="RegexClassRange" char="["/>
0689         <DetectChar attribute="Pattern Unicode Property" context="RegexClassName" char=":"/>
0690         <DetectChar attribute="Pattern Meta Character" context="#pop" char=">"/>
0691         <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
0692         <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
0693         <DetectChar attribute="String Delimiter" context="Q_String「" char="「"/>
0694         <DetectChar attribute="String Delimiter" context="q_String&lt;" char="&lt;"/>
0695         <DetectChar attribute="String Delimiter" context="qq_String«" char="«"/>
0696         <RegExpr attribute="String" context="#stay" String="[^-!+()?:&lt;>'&quot;「«]+"/>
0697       </context>
0698 
0699       <context name="RegexClassName" attribute="Pattern Unicode Property" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
0700         <RegExpr String="\w+" context="#pop" attribute="Pattern Unicode Property"/>
0701         <!-- auto-completion only -->
0702         <keyword attribute="Pattern Unicode Property" context="#pop" String="unicodeGeneralCategories"/>
0703       </context>
0704 
0705       <context name="RegexClassRange" attribute="Pattern Character" lineEndContext="#stay">
0706         <DetectSpaces/>
0707         <DetectChar char="\" context="RegexClassRangeMetaChar" attribute="Pattern Character Class"/>
0708         <Detect2Chars char="." char1="." context="#stay" attribute="Pattern Quantifier"/>
0709         <DetectChar attribute="Pattern Meta Character" context="#pop" char="]"/>
0710       </context>
0711 
0712       <context name="RegexClassRangeMetaChar" attribute="Pattern Meta Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
0713         <DetectSpaces/>
0714         <IncludeRules context="find_SpecialChar"/>
0715         <IncludeRules context="PatternMetaChar"/>
0716       </context>
0717 
0718 
0719       <!-- Regex Substitution -->
0720 
0721       <context name="RegexSubstitution" attribute="Operator" lineEndContext="#stay">
0722         <IncludeRules context="find_RegexClosure"/>
0723         <RegExpr String="([^\w\s])" context="RegexSubstitutionPattern" attribute="Operator" beginRegion="regex"/>
0724       </context>
0725 
0726       <context name="RegexSubstitutionPattern" attribute="Pattern" lineEndContext="#stay">
0727         <RegExpr String="(%1)" dynamic="1" context="RegexSubstitutionString" attribute="Operator" endRegion="regex"/>
0728         <IncludeRules context="find_Pattern"/>
0729       </context>
0730 
0731       <context name="RegexSubstitutionString" attribute="String" lineEndContext="#stay">
0732         <DetectChar char="1" dynamic="1" context="#pop#pop#pop" attribute="Operator"/>
0733       </context>
0734 
0735 
0736       <!-- Number -->
0737 
0738       <context name="Number" attribute="Decimal" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!CharErrorIfNoSep">
0739         <RegExpr String="&int10;(?:\.&int10;(?:[eE][+-]?&int10;)?|[eE][+-]?&int10;)i?|\.&int10;(?:[eE][+-]?&int10;)?i?" context="CheckNumberError" attribute="Float"/>
0740         <Detect2Chars char="0" char1="x" context="HexNumber" attribute="Hex"/>
0741         <Detect2Chars char="0" char1="o" context="OctalNumber" attribute="Octal"/>
0742         <RegExpr String="&int10;i?" context="CheckNumberError" attribute="Decimal"/>
0743         <DetectChar char="." context="#pop" attribute="Operator"/>
0744       </context>
0745 
0746       <context name="HexNumber" attribute="Hex" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
0747         <RegExpr String="[a-fA-F0-9]+(?:_[a-fA-F0-9]+)*i?" context="#pop!CheckNumberError" attribute="Hex"/>
0748       </context>
0749 
0750       <context name="OctalNumber" attribute="Octal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
0751         <RegExpr String="[0-7]+(?:_[0-7]+)*i?" context="#pop!CheckNumberError" attribute="Octal"/>
0752       </context>
0753 
0754       <context name="BaseNumber" attribute="Decimal" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop!CharErrorIfNoSep">
0755         <DetectChar char="&gt;" context="#pop#pop#pop" attribute="Error"/>
0756         <RegExpr String="&intN;\.&intN;|\.&intN;" context="#pop#pop!BaseNumberClose" attribute="Float"/>
0757         <RegExpr String="&intN;" context="#pop#pop!BaseNumberClose" attribute="Decimal"/>
0758       </context>
0759       <context name="BaseNumberClose" attribute="Decimal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
0760         <DetectChar char="&gt;" context="#pop#pop" attribute="Operator"/>
0761         <IncludeRules context="CheckNumberError"/>
0762       </context>
0763 
0764       <context name="CheckNumberError" attribute="Octal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
0765         <RegExpr String="&alnum;+" context="#pop#pop" attribute="Error"/>
0766       </context>
0767 
0768 
0769       <!-- Attribute or Key -->
0770 
0771       <context name="MaybeAttribute" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
0772         <Int context="MaybeAttribute2" attribute="Decimal"/>
0773         <DetectChar char="!" context="#pop" attribute="Operator"/>
0774         <RegExpr String="&ident;" context="#pop" attribute="Attribute"/>
0775       </context>
0776 
0777       <context name="MaybeAttribute2" attribute="Decimal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
0778         <DetectChar char="&lt;" context="BaseNumber" attribute="Operator"/>
0779       </context>
0780 
0781 
0782       <!-- Pod -->
0783 
0784       <context name="StartPod" attribute="Pod Typename" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
0785         <WordDetect String="begin" context="PodBegin" attribute="Pod Block"/>
0786         <WordDetect String="for"   context="PodFor" attribute="Pod Typename"/>
0787         <keyword    String="pod"   context="PodTypenameValue" attribute="Pod Typename"/>
0788         <RegExpr    String="[_A-Z][-_A-Z0-9]*\b" context="PodTypenameValue" attribute="Pod Typename"/>
0789         <RegExpr    String="&ident;" context="PodTypenameValue" attribute="Pod Unknown"/>
0790       </context>
0791 
0792       <context name="PodTypenameValue" attribute="Pod Typename Value" lineEndContext="PodTypenameValueNextLine" fallthrough="1" fallthroughContext="PodFormat">
0793         <RegExpr attribute="Pod Typename Value" context="#stay" String="&allnopodfmt;"/>
0794       </context>
0795 
0796       <context name="PodTypenameValueNextLine" attribute="Pod Typename Value" lineEndContext="#stay" lineEmptyContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop">
0797         <DetectSpaces attribute="Normal Text" context="PodTypenameValueOrEmpty"/>
0798         <DetectChar attribute="Pod" context="#pop#pop#pop" char="=" lookAhead="true"/>
0799       </context>
0800 
0801       <context name="PodTypenameValueOrEmpty" attribute="Pod Typename Value" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
0802         <DetectChar attribute="Pod" context="#pop#pop#pop#pop" char="=" lookAhead="true"/>
0803       </context>
0804 
0805 
0806       <!-- Pod formatting -->
0807 
0808       <context name="PodFormat" attribute="Pod Typename Value" lineEndContext="#stay">
0809         <Detect2Chars char="B" char1="&lt;" attribute="Pod Bold" context="#pop!PodFormatB"/>
0810         <Detect2Chars char="B" char1="«"    attribute="Pod Bold" context="#pop!PodFormatB2"/>
0811         <Detect2Chars char="I" char1="&lt;" attribute="Pod Italic" context="#pop!PodFormatI"/>
0812         <Detect2Chars char="I" char1="«"    attribute="Pod Italic" context="#pop!PodFormatI2"/>
0813         <Detect2Chars char="L" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
0814         <Detect2Chars char="L" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
0815         <Detect2Chars char="N" char1="&lt;" attribute="Pod Note" context="#pop!PodFormatN"/>
0816         <Detect2Chars char="N" char1="«"    attribute="Pod Note" context="#pop!PodFormatN2"/>
0817         <Detect2Chars char="P" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
0818         <Detect2Chars char="P" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
0819         <Detect2Chars char="Z" char1="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ"/>
0820         <Detect2Chars char="Z" char1="«"    attribute="Pod Comment" context="#pop!PodFormatZ2"/>
0821         <Detect2Chars char="U" char1="&lt;" attribute="Pod Underline" context="#pop!PodFormatU"/>
0822         <Detect2Chars char="U" char1="«"    attribute="Pod Underline" context="#pop!PodFormatU2"/>
0823         <Detect2Chars char="C" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
0824         <Detect2Chars char="C" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
0825         <Detect2Chars char="E" char1="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE"/>
0826         <Detect2Chars char="E" char1="«"    attribute="Pod Unicode" context="#pop!PodFormatE2"/>
0827         <Detect2Chars char="K" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
0828         <Detect2Chars char="K" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
0829         <Detect2Chars char="R" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
0830         <Detect2Chars char="R" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
0831         <Detect2Chars char="T" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
0832         <Detect2Chars char="T" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
0833         <Detect2Chars char="V" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV"/>
0834         <Detect2Chars char="V" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatV2"/>
0835         <Detect2Chars char="X" char1="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX"/>
0836         <Detect2Chars char="X" char1="«"    attribute="Pod Indexed Terms" context="#pop!PodFormatX2"/>
0837         <Detect2Chars char="M" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
0838         <Detect2Chars char="M" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
0839       </context>
0840 
0841       <context name="PodFormatB" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatB1">
0842         <DetectChar char="&lt;" attribute="Pod Bold" context="#pop!PodFormatB3"/>
0843       </context>
0844       <context name="PodFormatB1" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0845         <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt1;"/>
0846         <DetectChar char="&lt;" attribute="Pod Bold" context="PodFormatB1"/>
0847         <DetectChar char=">" attribute="Pod Bold" context="#pop"/>
0848       </context>
0849       <context name="PodFormatB2" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0850         <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt2;"/>
0851         <DetectChar char="«" attribute="Pod Bold" context="PodFormatB2"/>
0852         <DetectChar char="»" attribute="Pod Bold" context="#pop"/>
0853       </context>
0854       <context name="PodFormatB3" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0855         <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt3;"/>
0856         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Bold" context="PodFormatB3"/>
0857         <Detect2Chars char=">" char1=">" attribute="Pod Bold" context="#pop"/>
0858       </context>
0859 
0860       <context name="PodFormatE" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatE1">
0861         <DetectChar char="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE3"/>
0862       </context>
0863       <context name="PodFormatE1" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0864         <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt1;"/>
0865         <DetectChar char="&lt;" attribute="Pod Unicode" context="PodFormatE1"/>
0866         <DetectChar char=">" attribute="Pod Unicode" context="#pop"/>
0867       </context>
0868       <context name="PodFormatE2" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0869         <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt2;"/>
0870         <DetectChar char="«" attribute="Pod Unicode" context="PodFormatE2"/>
0871         <DetectChar char="»" attribute="Pod Unicode" context="#pop"/>
0872       </context>
0873       <context name="PodFormatE3" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0874         <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt3;"/>
0875         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Unicode" context="PodFormatE3"/>
0876         <Detect2Chars char=">" char1=">" attribute="Pod Unicode" context="#pop"/>
0877       </context>
0878 
0879       <context name="PodFormatI" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatI1">
0880         <DetectChar char="&lt;" attribute="Pod Italic" context="#pop!PodFormatI3"/>
0881       </context>
0882       <context name="PodFormatI1" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0883         <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt1;"/>
0884         <DetectChar char="&lt;" attribute="Pod Italic" context="PodFormatI1"/>
0885         <DetectChar char=">" attribute="Pod Italic" context="#pop"/>
0886       </context>
0887       <context name="PodFormatI2" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0888         <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt2;"/>
0889         <DetectChar char="«" attribute="Pod Italic" context="PodFormatI2"/>
0890         <DetectChar char="»" attribute="Pod Italic" context="#pop"/>
0891       </context>
0892       <context name="PodFormatI3" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0893         <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt3;"/>
0894         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Italic" context="PodFormatI3"/>
0895         <Detect2Chars char=">" char1=">" attribute="Pod Italic" context="#pop"/>
0896       </context>
0897 
0898       <context name="PodFormatL" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatL1">
0899         <DetectChar char="&lt;" attribute="Pod Link" context="#pop!PodFormatL3"/>
0900       </context>
0901       <context name="PodFormatL1" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0902         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«]))+"/>
0903         <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
0904         <DetectChar char=">" attribute="Pod Link" context="#pop"/>
0905       </context>
0906       <context name="PodFormatL2" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0907         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|]+|[&podfmt;](?![&lt;«]))+"/>
0908         <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
0909         <DetectChar char="»" attribute="Pod Link" context="#pop"/>
0910       </context>
0911       <context name="PodFormatL3" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0912         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
0913         <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
0914         <Detect2Chars char=">" char1=">" attribute="Pod Link" context="#pop"/>
0915       </context>
0916 
0917       <context name="PodFormatN" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatN1">
0918         <DetectChar char="&lt;" attribute="Pod Note" context="#pop!PodFormatN3"/>
0919       </context>
0920       <context name="PodFormatN1" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0921         <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt1;"/>
0922         <DetectChar char="&lt;" attribute="Pod Note" context="PodFormatN1"/>
0923         <DetectChar char=">" attribute="Pod Note" context="#pop"/>
0924       </context>
0925       <context name="PodFormatN2" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0926         <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt2;"/>
0927         <DetectChar char="«" attribute="Pod Note" context="PodFormatN2"/>
0928         <DetectChar char="»" attribute="Pod Note" context="#pop"/>
0929       </context>
0930       <context name="PodFormatN3" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0931         <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt3;"/>
0932         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Note" context="PodFormatN3"/>
0933         <Detect2Chars char=">" char1=">" attribute="Pod Note" context="#pop"/>
0934       </context>
0935 
0936       <context name="PodFormatU" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatU1">
0937         <DetectChar char="&lt;" attribute="Pod Underline" context="#pop!PodFormatU3"/>
0938       </context>
0939       <context name="PodFormatU1" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0940         <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt1;"/>
0941         <DetectChar char="&lt;" attribute="Pod Underline" context="PodFormatU1"/>
0942         <DetectChar char=">" attribute="Pod Underline" context="#pop"/>
0943       </context>
0944       <context name="PodFormatU2" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0945         <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt2;"/>
0946         <DetectChar char="«" attribute="Pod Underline" context="PodFormatU2"/>
0947         <DetectChar char="»" attribute="Pod Underline" context="#pop"/>
0948       </context>
0949       <context name="PodFormatU3" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0950         <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt3;"/>
0951         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Underline" context="PodFormatU3"/>
0952         <Detect2Chars char=">" char1=">" attribute="Pod Underline" context="#pop"/>
0953       </context>
0954 
0955       <context name="PodFormatV" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatV1">
0956         <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV3"/>
0957       </context>
0958       <context name="PodFormatV1" attribute="Pod Verbatim" lineEndContext="#stay">
0959         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
0960         <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatV1"/>
0961         <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
0962       </context>
0963       <context name="PodFormatV2" attribute="Pod Verbatim" lineEndContext="#stay">
0964         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
0965         <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatV2"/>
0966         <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
0967       </context>
0968       <context name="PodFormatV3" attribute="Pod Verbatim" lineEndContext="#stay">
0969         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
0970         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatV3"/>
0971         <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
0972       </context>
0973 
0974       <context name="PodFormatVT" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatVT1">
0975         <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT3"/>
0976       </context>
0977       <context name="PodFormatVT1" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0978         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
0979         <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatVT1"/>
0980         <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
0981       </context>
0982       <context name="PodFormatVT2" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0983         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
0984         <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatVT2"/>
0985         <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
0986       </context>
0987       <context name="PodFormatVT3" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0988         <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
0989         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatVT3"/>
0990         <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
0991       </context>
0992 
0993       <context name="PodFormatZ" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatZ1">
0994         <DetectChar char="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ3"/>
0995       </context>
0996       <context name="PodFormatZ1" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
0997         <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt1;"/>
0998         <DetectChar char="&lt;" attribute="Pod Comment" context="PodFormatZ1"/>
0999         <DetectChar char=">" attribute="Pod Comment" context="#pop"/>
1000       </context>
1001       <context name="PodFormatZ2" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
1002         <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt2;"/>
1003         <DetectChar char="«" attribute="Pod Comment" context="PodFormatZ2"/>
1004         <DetectChar char="»" attribute="Pod Comment" context="#pop"/>
1005       </context>
1006       <context name="PodFormatZ3" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
1007         <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt3;"/>
1008         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Comment" context="PodFormatZ3"/>
1009         <Detect2Chars char=">" char1=">" attribute="Pod Comment" context="#pop"/>
1010       </context>
1011 
1012       <context name="PodFormatX" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatX1">
1013         <DetectChar char="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX3"/>
1014       </context>
1015       <context name="PodFormatX1" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
1016         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«]))+"/>
1017         <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
1018         <DetectChar char=">" attribute="Pod Indexed Terms" context="#pop"/>
1019       </context>
1020       <context name="PodFormatX2" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
1021         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|;,]+|[&podfmt;](?![&lt;«]))+"/>
1022         <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
1023         <DetectChar char="«" attribute="Pod Indexed Terms" context="PodFormatX2"/>
1024         <DetectChar char="»" attribute="Pod Indexed Terms" context="#pop"/>
1025       </context>
1026       <context name="PodFormatX3" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
1027         <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
1028         <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
1029         <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Indexed Terms" context="PodFormatX3"/>
1030         <Detect2Chars char=">" char1=">" attribute="Pod Indexed Terms" context="#pop"/>
1031       </context>
1032 
1033       <!-- Pod =begin -->
1034 
1035       <context name="PodBegin" attribute="Pod Typename Value" lineEndContext="#pop#pop!Error">
1036         <DetectSpaces attribute="Normal Text"/>
1037         <WordDetect String="code" context="PodBeginCode" attribute="Pod Typename Value" beginRegion="pod"/>
1038         <WordDetect String="comment" context="PodBeginComment" attribute="Pod Typename Value" beginRegion="pod"/>
1039         <RegExpr String="(&ident;)" context="PodBeginTypename" attribute="Pod Typename Value" beginRegion="pod"/>
1040         <!-- auto-completion only -->
1041         <keyword String="podblocktypename" context="#stay" attribute="Pod Typename Value"/>
1042       </context>
1043 
1044       <context name="PodBeginCode" attribute="Error" lineEndContext="PodInnerCode">
1045         <DetectSpaces attribute="Normal Text"/>
1046         <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
1047         <DetectChar char="=" context="PodEndCode" attribute="Pod" firstNonSpace="1"/>
1048       </context>
1049 
1050       <context name="PodInnerCode" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodCode">
1051         <RegExpr String="^\s*=end\s+code\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
1052       </context>
1053       <context name="PodCode" attribute="Pod Verbatim" lineEndContext="#pop"/>
1054 
1055       <context name="PodEndCode" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
1056         <StringDetect String="end" context="PodEndCodeName" attribute="Pod Block" endRegion="pod"/>
1057       </context>
1058       <context name="PodEndCodeName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop#pop!Error">
1059         <DetectSpaces attribute="Normal Text"/>
1060         <StringDetect String="code" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
1061       </context>
1062 
1063 
1064       <context name="PodBeginComment" attribute="Error" lineEndContext="PodInnerComment">
1065         <DetectSpaces attribute="Normal Text"/>
1066         <DetectChar char="=" context="PodEndComment" attribute="Pod" firstNonSpace="1"/>
1067       </context>
1068 
1069       <context name="PodInnerComment" attribute="Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodComment">
1070         <RegExpr String="^\s*=end\s+comment\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
1071       </context>
1072       <context name="PodComment" attribute="Comment" lineEndContext="#pop"/>
1073 
1074       <context name="PodEndComment" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
1075         <StringDetect String="end" context="PodEndCommentName" attribute="Pod Block" endRegion="pod"/>
1076       </context>
1077       <context name="PodEndCommentName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop#pop!Error">
1078         <DetectSpaces attribute="Normal Text"/>
1079         <StringDetect String="comment" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
1080       </context>
1081 
1082 
1083       <context name="PodBeginTypename" attribute="Error" lineEndContext="PodInnerBlock">
1084         <RegExpr String="^\s*=end\s+%1\b" dynamic="1" context="PodEnd" attribute="Pod" column="0" lookAhead="1"/>
1085         <DetectSpaces attribute="Normal Text"/>
1086         <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
1087         <DetectChar char="=" context="PodEndError" attribute="Pod" firstNonSpace="1"/>
1088       </context>
1089 
1090       <context name="PodInnerBlock" attribute="Pod Paragraph" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodInnerBlockFormat">
1091         <RegExpr String="^\s*=end\b" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
1092         <DetectSpaces/>
1093         <DetectChar char="=" context="StartPod" attribute="Pod" firstNonSpace="1"/>
1094         <RegExpr attribute="Pod Paragraph" context="#stay" String="&allnopodfmt;"/>
1095       </context>
1096 
1097       <context name="PodInnerBlockFormat" attribute="Pod Paragraph" lineEndContext="#stay">
1098         <IncludeRules context="PodFormat"/>
1099       </context>
1100 
1101       <context name="PodEnd" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
1102         <DetectSpaces attribute="Normal Text"/>
1103         <DetectChar char="=" context="#stay" attribute="Pod"/>
1104         <StringDetect String="end" context="PodEndName" attribute="Pod Block" endRegion="pod"/>
1105       </context>
1106       <context name="PodEndName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop">
1107         <DetectSpaces attribute="Normal Text"/>
1108         <RegExpr String="&ident;" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
1109       </context>
1110 
1111       <context name="PodEndError" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
1112         <StringDetect String="end" attribute="Pod Block" context="#pop#pop#pop!Error" endRegion="pod"/>
1113       </context>
1114 
1115       <!-- Pod configuration for =begin -->
1116 
1117       <context name="PodBlockConfigError" attribute="Error" lineEndContext="#pop#pop!PodInnerBlock"/>
1118 
1119       <context name="PodBlockConfigKey" attribute="Pod Key" lineEndContext="#pop!PodInnerBlock" fallthrough="1" fallthroughContext="PodBlockConfigError">
1120         <DetectChar char="!" context="#pop!PodBlockConfigKeyName" attribute="Pod Operator"/>
1121         <Int context="PodBlockConfigKeyIntName" attribute="Decimal"/>
1122         <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
1123       </context>
1124 
1125       <context name="PodBlockConfigKeyName" attribute="Pod Key" lineEndContext="#pop!PodTypenameValue" fallthrough="1" fallthroughContext="PodBlockConfigError">
1126         <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
1127       </context>
1128 
1129       <context name="PodBlockConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop!PodBlockConfigError" fallthrough="1" fallthroughContext="#pop!PodBlockConfigError">
1130         <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
1131       </context>
1132 
1133       <context name="PodBlockConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop">
1134         <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
1135         <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
1136         <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
1137       </context>
1138 
1139 
1140       <!-- Pod =for -->
1141 
1142       <context name="PodFor" attribute="Pod Typename" lineEndContext="#pop#pop!Error" fallthrough="1" fallthroughContext="#pop#pop!Error">
1143         <DetectSpaces attribute="Normal Text"/>
1144         <keyword String="podtypename" context="#pop!PodConfig" attribute="Pod Typename"/>
1145       </context>
1146 
1147       <!-- Pod configuration for =for -->
1148 
1149       <context name="PodConfigError" attribute="Error" lineEndContext="#pop#pop!PodTypenameValue"/>
1150 
1151       <context name="PodConfig" attribute="Normal Text" lineEndContext="#pop!PodTypenameValue" fallthrough="1" fallthroughContext="PodConfigError">
1152         <DetectSpaces/>
1153         <DetectChar char=":" context="PodConfigKey" attribute="Pod Operator"/>
1154       </context>
1155 
1156       <context name="PodConfigKey" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthrough="1" fallthroughContext="#pop!PodConfigError">
1157         <DetectChar char="!" context="#pop!PodConfigKeyName" attribute="Pod Operator"/>
1158         <Int context="PodConfigKeyIntName" attribute="Decimal"/>
1159         <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
1160       </context>
1161 
1162       <context name="PodConfigKeyName" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthrough="1" fallthroughContext="#pop!PodConfigError">
1163         <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
1164       </context>
1165 
1166       <context name="PodConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop#pop!PodConfigError" fallthrough="1" fallthroughContext="#pop#pop!PodConfigError">
1167         <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
1168       </context>
1169 
1170       <context name="PodConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
1171         <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
1172         <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
1173         <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
1174       </context>
1175 
1176       <context name="PodParamSequence" attribute="Pod Config" lineEndContext="#stay">
1177         <DetectSpaces/>
1178         <keyword String="podvalue" context="#stay" attribute="Data Type"/>
1179         <DetectIdentifier/>
1180         <AnyChar String="0123456789." context="Number" lookAhead="1"/>
1181         <DetectChar char=">" context="#pop#pop#pop" attribute="Pod Operator"/>
1182         <DetectChar char="'" context="PodSQString" attribute="String"/>
1183         <DetectChar char="&quot;" context="PodQString" attribute="String"/>
1184       </context>
1185 
1186       <context name="PodParamHash" attribute="Pod Config" lineEndContext="#stay">
1187         <DetectSpaces/>
1188         <Detect2Chars char="=" char1=">" context="#stay" attribute="Pod Operator"/>
1189         <DetectChar char="," context="#stay" attribute="Pod Operator"/>
1190         <keyword String="podvalue" context="#stay" attribute="Data Type"/>
1191         <DetectIdentifier/>
1192         <DetectChar char="'" context="PodSQString" attribute="String"/>
1193         <DetectChar char="&quot;" context="PodQString" attribute="String"/>
1194         <AnyChar String="0123456789." context="Number" lookAhead="1"/>
1195         <DetectChar char="}" context="#pop#pop#pop" attribute="Pod Operator"/>
1196       </context>
1197 
1198       <context name="PodParamList" attribute="Pod Config" lineEndContext="#stay">
1199         <DetectSpaces/>
1200         <DetectChar char="," context="#stay" attribute="Pod Operator"/>
1201         <keyword String="podvalue" context="#stay" attribute="Data Type"/>
1202         <DetectIdentifier/>
1203         <DetectChar char="'" context="PodSQString" attribute="String"/>
1204         <DetectChar char="&quot;" context="PodQString" attribute="String"/>
1205         <AnyChar String="0123456789." context="Number" lookAhead="1"/>
1206         <AnyChar String="])" context="#pop#pop#pop" attribute="Pod Operator"/>
1207       </context>
1208 
1209 
1210       <!-- Pod String -->
1211 
1212       <context name="PodSQString" attribute="String" lineEndContext="#stay">
1213         <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
1214         <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
1215         <RegExpr String="(?:[^\\']*|\\[^']|\\$)*" context="#stay" attribute="String"/>
1216       </context>
1217 
1218       <context name="PodQString" attribute="String" lineEndContext="#stay">
1219         <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
1220         <DetectChar char="\" context="SpecialChar" attribute="String Special Character"/>
1221         <RegExpr String="(?:[^&quot;\\]*|\\$)*" context="#stay" attribute="String"/>
1222       </context>
1223 
1224       <context name="find_SpecialChar" attribute="String Special Character" lineEndContext="#stay">
1225         <Detect2Chars char="c" char1="[" context="UnicodeCodepoint" attribute="String Special Character"/>
1226         <DetectChar char="c" context="UnicodeCodepointDecimal" attribute="String Special Character"/>
1227         <DetectChar char="x" context="HexaString" attribute="String Special Character"/>
1228         <DetectChar char="o" context="OctalString" attribute="String Special Character"/>
1229       </context>
1230 
1231       <context name="SpecialChar" attribute="String Special Character" lineEndContext="#pop">
1232         <IncludeRules context="find_SpecialChar"/>
1233         <RegExpr String="." context="#pop" attribute="String"/>
1234       </context>
1235 
1236       <context name="UnicodeCodepoint" attribute="String Special Character" lineEndContext="#stay">
1237         <DetectSpaces/>
1238         <DetectIdentifier/>
1239         <DetectChar char="]" context="#pop#pop" attribute="String Special Character"/>
1240         <DetectChar char="," context="#stay" attribute="Separator Symbol"/>
1241       </context>
1242 
1243       <context name="UnicodeCodepointDecimal" attribute="String Special Character" lineEndContext="#pop#pop">
1244         <!-- 0 to 1114111 -->
1245         <RegExpr String="0*(?:1(?:0\d{5}|1(?:O\d{4}|(?:1[0-3]\d{3}|4(?:0\d\d|1(?:0\d|1[01]))))))|\d{1,6}|0+" context="UnicodeCodepointDecimalCheck" attribute="String Special Character"/>
1246         <RegExpr String="[^&quot;]" context="#pop" attribute="Error"/>
1247       </context>
1248       <context name="UnicodeCodepointDecimalCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
1249         <AnyChar String="0123456789" context="#pop#pop#pop" attribute="Error"/>
1250       </context>
1251 
1252       <context name="HexaString" attribute="String Special Character" lineEndContext="#pop#pop">
1253         <DetectChar char="[" context="HexaStringBracket" attribute="String Special Character"/>
1254         <!-- 0 to 0x10FFFF -->
1255         <RegExpr String="0*(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5})|0+" context="HexaStringCheck" attribute="String Special Character"/>
1256         <RegExpr String="[^&quot;]" context="#pop#pop" attribute="Error"/>
1257       </context>
1258       <context name="HexaStringCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
1259         <AnyChar String="0123456789abcdefABCDEF" context="#pop#pop#pop" attribute="Error"/>
1260       </context>
1261       <context name="HexaStringBracket" attribute="String Special Character" lineEndContext="#stay">
1262         <DetectSpaces/>
1263         <DetectChar char="]" context="#pop#pop#pop" attribute="Error"/>
1264         <!-- 0 to 0x10FFFF -->
1265         <RegExpr String="0*(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5})|0+" context="HexaStringBracketCheck" attribute="String Special Character"/>
1266       </context>
1267       <context name="HexaStringBracketCheck" attribute="String Special Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop#pop">
1268         <DetectChar char="]" context="#pop#pop#pop#pop" attribute="String Special Character"/>
1269         <DetectChar char="," context="#pop" attribute="Separator Symbol"/>
1270         <RegExpr String="[^]&quot;]" context="#stay" attribute="Error"/>
1271       </context>
1272 
1273       <context name="OctalString" attribute="String Special Character" lineEndContext="#pop#pop">
1274         <DetectChar char="[" context="OctalStringBracket" attribute="String Special Character"/>
1275         <!-- 0 to 0o4177777 -->
1276         <RegExpr String="0*(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}|0+" context="OctalStringCheck" attribute="String Special Character"/>
1277         <RegExpr String="[^&quot;]" context="#stay" attribute="Error"/>
1278       </context>
1279       <context name="OctalStringCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
1280         <AnyChar String="01234567" context="#pop#pop#pop" attribute="Error"/>
1281       </context>
1282       <context name="OctalStringBracket" attribute="String Special Character" lineEndContext="#stay">
1283         <DetectChar char="]" context="#pop#pop#pop" attribute="Error"/>
1284         <!-- 0 to 0o4177777 -->
1285         <RegExpr String="0*(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}|0+" context="OctalStringBracketCheck" attribute="String Special Character"/>
1286       </context>
1287       <context name="OctalStringBracketCheck" attribute="String Special Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop#pop">
1288         <DetectChar char="]" context="#pop#pop#pop#pop" attribute="String Special Character"/>
1289         <DetectChar char="," context="#pop" attribute="Separator Symbol"/>
1290         <RegExpr String="[^]&quot;]" context="#stay" attribute="Error"/>
1291       </context>
1292 
1293 
1294       <!-- Q String -->
1295 
1296       <context name="Q_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
1297         <DetectSpaces attribute="String"/>
1298         <DetectChar char=":" context="#pop!Q_StringModifier" attribute="Operator"/>
1299         <DetectChar char="(" context="#pop!Q_String(" attribute="String Delimiter"/>
1300         <DetectChar char="[" context="#pop!Q_String[" attribute="String Delimiter"/>
1301         <DetectChar char="{" context="#pop!Q_String{" attribute="String Delimiter"/>
1302         <DetectChar char="「" context="#pop!Q_String「" attribute="String Delimiter"/>
1303         <DetectChar char="&lt;" context="#pop!Q_String&lt;" attribute="String Delimiter"/>
1304         <RegExpr String="([^()>」\]}'&_rangealphabetic;&rangenumeric;])" context="#pop!Q_StringAny" attribute="String Delimiter"/>
1305       </context>
1306 
1307       <context name="Q_String(" attribute="String" lineEndContext="#stay">
1308         <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
1309         <DetectChar char="(" context="Q_String(" attribute="String Delimiter"/>
1310         <RegExpr String="[^()]*" context="#stay" attribute="String"/>
1311       </context>
1312 
1313       <context name="Q_String[" attribute="String" lineEndContext="#stay">
1314         <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
1315         <DetectChar char="[" context="Q_String[" attribute="String Delimiter"/>
1316         <RegExpr String="[^\[\]]*" context="#stay" attribute="String"/>
1317       </context>
1318 
1319       <context name="Q_String{" attribute="String" lineEndContext="#stay">
1320         <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
1321         <DetectChar char="{" context="Q_String{" attribute="String Delimiter"/>
1322         <RegExpr String="[^{}]*" context="#stay" attribute="String"/>
1323       </context>
1324 
1325       <context name="Q_String「" attribute="String" lineEndContext="#stay">
1326         <DetectChar char="」" context="#pop" attribute="String Delimiter"/>
1327         <DetectChar char="「" context="Q_String「" attribute="String Delimiter"/>
1328         <RegExpr String="[^「」]*" context="#stay" attribute="String"/>
1329       </context>
1330 
1331       <context name="Q_String&lt;" attribute="String" lineEndContext="#stay">
1332         <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
1333         <DetectChar char="&lt;" context="Q_String&lt;" attribute="String Delimiter"/>
1334         <RegExpr String="[^&lt;>]*" context="#stay" attribute="String"/>
1335       </context>
1336 
1337       <context name="Q_StringAny" attribute="String" lineEndContext="#stay">
1338         <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
1339         <RegExpr String="[^%1]*" dynamic="1" context="#stay" attribute="String"/>
1340       </context>
1341 
1342       <context name="q_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop!q_String">
1343         <DetectChar char=":" context="#pop#pop!q_QuotingForm2" attribute="Operator"/>
1344       </context>
1345 
1346       <context name="qq_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop!qq_String">
1347         <DetectChar char=":" context="#pop!qq_QuotingForm" attribute="Operator"/>
1348       </context>
1349 
1350       <context name="Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!q_QuotingForm2">
1351         <DetectChar char="q" context="#pop!q_QuotingForm" attribute="Operator"/>
1352         <DetectChar char="'" context="q_Q_StringModifier" attribute="Operator"/>
1353         <DetectChar char="&quot;" context="qq_Q_StringModifier" attribute="Operator"/>
1354       </context>
1355 
1356       <context name="q_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!q_QuotingForm2">
1357         <DetectChar char="q" context="#pop!qq_QuotingForm" attribute="Operator"/>
1358         <DetectChar char=":" context="#pop!q_QuotingForm2" attribute="Operator"/>
1359       </context>
1360       <context name="q_QuotingForm2" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="q_String">
1361         <WordDetect String="heredoc" context="q_Heredoc" attribute="Operator"/>
1362         <keyword String="quoting" context="#stay" attribute="Operator"/>
1363         <AnyChar String="wvx:sahfb" context="#stay" attribute="Operator"/>
1364         <!-- :closure as qq -->
1365         <DetectChar char="c" context="#pop!qq_QuotingForm" attribute="Operator"/>
1366         <Detect2Chars char="t" char1="o" context="q_Heredoc" attribute="Operator"/>
1367       </context>
1368 
1369       <context name="qq_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="qq_String">
1370         <WordDetect String="heredoc" context="qq_Heredoc" attribute="Operator"/>
1371         <keyword String="quoting" context="#stay" attribute="Operator"/>
1372         <AnyChar String="wvx:sahfcb" context="#stay" attribute="Operator"/>
1373         <Detect2Chars char="t" char1="o" context="qq_Heredoc" attribute="Operator"/>
1374       </context>
1375 
1376 
1377       <!-- q and qq Heredoc -->
1378 
1379       <context name="q_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
1380         <RegExpr String="/([^/]+)/" context="q_HeredocTerminator" attribute="String Delimiter"/>
1381       </context>
1382       <context name="q_HeredocTerminator" attribute="String" lineEndContext="#stay">
1383         <DetectSpaces/>
1384         <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
1385         <RegExpr String="(?:[^\\]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
1386         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1387       </context>
1388 
1389       <context name="qq_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
1390         <RegExpr String="/([^/]+)/" context="qq_HeredocTerminator" attribute="String Delimiter"/>
1391       </context>
1392       <context name="qq_HeredocTerminator" attribute="String" lineEndContext="#stay">
1393         <DetectSpaces/>
1394         <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
1395         <IncludeRules context="find_qq_StringCommon"/>
1396         <RegExpr String="[^\\${@&amp;]*" context="#stay" attribute="String"/>
1397       </context>
1398 
1399 
1400       <!-- q String -->
1401 
1402       <context name="q_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop">
1403         <DetectSpaces/>
1404         <DetectChar char="(" context="#pop#pop!q_String(" attribute="String Delimiter"/>
1405         <DetectChar char="[" context="#pop#pop!q_String[" attribute="String Delimiter"/>
1406         <DetectChar char="{" context="#pop#pop!q_String{" attribute="String Delimiter"/>
1407         <DetectChar char="&lt;" context="#pop#pop!q_String&lt;" attribute="String Delimiter"/>
1408         <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!q_StringAny" attribute="String Delimiter"/>
1409       </context>
1410 
1411       <context name="q_String(" attribute="String" lineEndContext="#stay">
1412         <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
1413         <DetectChar char="(" context="q_String(" attribute="String Delimiter"/>
1414         <Detect2Chars char="\" char1="(" context="#stay" attribute="String Special Character"/>
1415         <Detect2Chars char="\" char1=")" context="#stay" attribute="String Special Character"/>
1416         <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
1417         <RegExpr String="(?:[^()\\]*|\\(?![()\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
1418         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1419       </context>
1420 
1421       <context name="q_String[" attribute="String" lineEndContext="#stay">
1422         <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
1423         <DetectChar char="[" context="q_String[" attribute="String Delimiter"/>
1424         <Detect2Chars char="\" char1="[" context="#stay" attribute="String Special Character"/>
1425         <Detect2Chars char="\" char1="]" context="#stay" attribute="String Special Character"/>
1426         <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
1427         <RegExpr String="(?:[^\[\]\\]*|\\(?![\[\]\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
1428         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1429       </context>
1430 
1431       <context name="q_String{" attribute="String" lineEndContext="#stay">
1432         <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
1433         <DetectChar char="{" context="q_String{" attribute="String Delimiter"/>
1434         <Detect2Chars char="\" char1="{" context="#stay" attribute="String Special Character"/>
1435         <Detect2Chars char="\" char1="}" context="#stay" attribute="String Special Character"/>
1436         <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
1437         <RegExpr String="(?:[^{}\\]*|\\(?![{}\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
1438         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1439       </context>
1440 
1441       <context name="q_String&lt;" attribute="String" lineEndContext="#stay">
1442         <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
1443         <DetectChar char="&lt;" context="q_String&lt;" attribute="String Delimiter"/>
1444         <Detect2Chars char="\" char1="&lt;" context="#stay" attribute="String Special Character"/>
1445         <Detect2Chars char="\" char1=">" context="#stay" attribute="String Special Character"/>
1446         <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
1447         <RegExpr String="(?:[^&lt;>\\]*|\\(?![&lt;>\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
1448         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1449       </context>
1450 
1451       <context name="q_StringAny" attribute="String" lineEndContext="#stay">
1452         <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
1453         <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
1454         <RegExpr String="(?:[^\\%1]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
1455         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1456       </context>
1457 
1458       <context name="q_RawString" attribute="String" lineEndContext="#stay">
1459         <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
1460         <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
1461         <RegExpr String="(?:[^\\']*|\\(?![\\']|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
1462         <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
1463       </context>
1464 
1465       <!-- qq String -->
1466 
1467       <context name="qq_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop">
1468         <DetectSpaces/>
1469         <DetectChar char="(" context="#pop#pop!qq_String(" attribute="String Delimiter"/>
1470         <DetectChar char="[" context="#pop#pop!qq_String[" attribute="String Delimiter"/>
1471         <DetectChar char="{" context="#pop#pop!qq_String{" attribute="String Delimiter"/>
1472         <DetectChar char="&lt;" context="#pop#pop!qq_String&lt;" attribute="String Delimiter"/>
1473         <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!qq_StringAny" attribute="String Delimiter"/>
1474       </context>
1475 
1476       <context name="qq_String(" attribute="String" lineEndContext="#stay">
1477         <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
1478         <DetectChar char="(" context="qq_String(" attribute="String Delimiter"/>
1479         <IncludeRules context="find_qq_StringCommon"/>
1480         <RegExpr String="[^()\\${@&amp;]*" context="#stay" attribute="String"/>
1481       </context>
1482 
1483       <context name="qq_String[" attribute="String" lineEndContext="#stay">
1484         <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
1485         <DetectChar char="[" context="qq_String[" attribute="String Delimiter"/>
1486         <IncludeRules context="find_qq_StringCommon"/>
1487         <RegExpr String="[^\[\]\\${@&amp;]*" context="#stay" attribute="String"/>
1488       </context>
1489 
1490       <context name="qq_String{" attribute="String" lineEndContext="#stay">
1491         <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
1492         <DetectChar char="{" context="qq_String{" attribute="String Delimiter"/>
1493         <IncludeRules context="find_qq_StringCommon"/>
1494         <RegExpr String="[^{}\\$@&amp;]*" context="#stay" attribute="String"/>
1495       </context>
1496 
1497       <context name="qq_String&lt;" attribute="String" lineEndContext="#stay">
1498         <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
1499         <DetectChar char="&lt;" context="qq_String&lt;" attribute="String Delimiter"/>
1500         <IncludeRules context="find_qq_StringCommon"/>
1501         <RegExpr String="[^&lt;>\\${@&amp;]*" context="#stay" attribute="String"/>
1502       </context>
1503 
1504       <context name="qq_String«" attribute="String" lineEndContext="#stay">
1505         <DetectChar char="»" context="#pop" attribute="String Delimiter"/>
1506         <DetectChar char="«" context="qq_String«" attribute="String Delimiter"/>
1507         <IncludeRules context="find_qq_StringCommon"/>
1508         <RegExpr String="[^«»\\${@&amp;]*" context="#stay" attribute="String"/>
1509       </context>
1510 
1511       <context name="qq_String&lt;&lt;" attribute="String" lineEndContext="#stay">
1512         <Detect2Chars char=">" char1=">" context="#pop" attribute="String Delimiter"/>
1513         <Detect2Chars char="&lt;" char1="&lt;" context="qq_String&lt;&lt;" attribute="String Delimiter"/>
1514         <IncludeRules context="find_qq_StringCommon"/>
1515         <RegExpr String="([^&lt;>\\${@&amp;]*|&lt;(?!&lt;)|>(?!>))" context="#stay" attribute="String"/>
1516       </context>
1517 
1518       <context name="qq_StringAny" attribute="String" lineEndContext="#stay">
1519         <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
1520         <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
1521         <IncludeRules context="find_qq_StringCommon"/>
1522         <RegExpr String="[^%1\\${@&amp;]*" dynamic="1" context="#stay" attribute="String"/>
1523       </context>
1524 
1525       <context name="qq_RawString" attribute="String" lineEndContext="#stay">
1526         <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
1527         <IncludeRules context="find_qq_StringCommon"/>
1528         <RegExpr String="[^\\&quot;${@&amp;]*" context="#stay" attribute="String"/>
1529       </context>
1530 
1531       <context name="find_qq_StringCommon" attribute="String" lineEndContext="#stay">
1532         <DetectChar char="\" context="qq_StringEscape" attribute="Operator" lookAhead="1"/>
1533         <DetectChar char="{" context="qq_Interpolation" attribute="String (interpolated)"/>
1534         <DetectChar char="$" context="qq_StringMaybeVar$" attribute="String" lookAhead="1"/>
1535         <AnyChar String="@%" context="qq_StringMaybeVar" attribute="String" lookAhead="1"/>
1536         <DetectChar char="&amp;" context="qq_StringSigil" attribute="String" lookAhead="1"/>
1537       </context>
1538 
1539       <context name="qq_StringEscape" attribute="String Special Character" lineEndContext="#pop">
1540         <Detect2Chars char="\" char1="q" context="#pop!q_QuotingForm" attribute="Operator"/>
1541         <Detect2Chars char="\" char1="x" context="HexaString" attribute="String Special Character"/>
1542         <StringDetect String="\c[" context="UnicodeCodepoint" attribute="String Special Character"/>
1543         <Detect2Chars char="\" char1="c" context="UnicodeCodepointDecimal" attribute="String Special Character"/>
1544         <Detect2Chars char="\" char1="o" context="OctalString" attribute="String Special Character"/>
1545         <RegExpr String="\\.?" context="#pop" attribute="String Special Character"/>
1546       </context>
1547 
1548       <context name="qq_Interpolation" attribute="String (interpolated)" lineEndContext="#stay">
1549         <DetectChar char="}" context="#pop" attribute="String (interpolated)"/>
1550         <IncludeRules context="base"/>
1551       </context>
1552 
1553       <context name="qq_StringSigil" attribute="Function" lineEndContext="#stay">
1554         <RegExpr String="&amp;&ident;\(" context="#pop!FunctionParameters" attribute="Function"/>
1555         <DetectChar char="&amp;" context="#pop" attribute="String"/>
1556       </context>
1557 
1558       <context name="qq_StringMaybeVar$" attribute="String" lineEndContext="#stay">
1559         <RegExpr String="\$(?=[&twigils;]?&prefixdollarvarname;)" context="qq_InterpolationVar" attribute="Variable"/>
1560         <DetectChar char="$" context="#pop" attribute="String"/>
1561       </context>
1562 
1563       <context name="qq_StringMaybeVar" attribute="String" lineEndContext="#stay">
1564         <RegExpr String="@\(\)|[%@]\$/|[@%]&ident;" context="qq_Interpolation1" attribute="Variable"/>
1565         <AnyChar String="@%" context="#pop" attribute="String"/>
1566       </context>
1567 
1568       <context name="qq_InterpolationVar" attribute="String" lineEndContext="#stay">
1569         <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>
1570         <RegExpr String="&dollarvarname;" context="#pop!qq_Interpolation1" attribute="Variable"/>
1571       </context>
1572 
1573       <context name="qq_Interpolation1" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
1574         <DetectChar char="[" context="qq_InterpolationIndex" attribute="Function"/>
1575         <DetectChar char="." context="qq_InterpolationFunction" attribute="Function" lookAhead="1"/>
1576       </context>
1577 
1578       <context name="qq_InterpolationIndex" attribute="String" lineEndContext="#stay">
1579         <DetectChar char="]" context="#pop#pop#pop" attribute="Function"/>
1580         <IncludeRules context="base"/>
1581       </context>
1582 
1583       <context name="qq_InterpolationFunction" attribute="String" lineEndContext="#stay">
1584         <RegExpr String="(?:\.&ident;)*\.&ident;\(" context="#pop#pop#pop!FunctionParameters" attribute="Function"/>
1585         <DetectChar char="." context="#pop#pop#pop" attribute="String"/>
1586       </context>
1587 
1588       <context name="FunctionParameters" attribute="String" lineEndContext="#stay">
1589         <DetectChar char=")" context="#pop" attribute="Function"/>
1590         <DetectChar char="(" context="FunctionParameters" attribute="Function"/>
1591         <IncludeRules context="base"/>
1592       </context>
1593 
1594 
1595       <!-- Comment -->
1596 
1597       <context name="StartComment" attribute="Comment" lineEndContext="#pop" fallthrough="1" fallthroughContext="SingleLineComment">
1598         <DetectChar attribute="Comment" context="MultilineComment" char="`"/>
1599         <AnyChar attribute="Pod Operator" context="MultilineComment" String="=|"/>
1600       </context>
1601 
1602       <context name="MultilineComment" attribute="Comment" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop!SingleLineComment">
1603         <!-- TODO a new rule is needed to find the corresponding closures -->
1604         <StringDetect attribute="Comment" context="#pop#pop!MultilineComment(((" String="(((" beginRegion="comment"/>
1605         <StringDetect attribute="Comment" context="#pop#pop!MultilineComment[[[" String="[[[" beginRegion="comment"/>
1606         <StringDetect attribute="Comment" context="#pop#pop!MultilineComment{{{" String="{{{" beginRegion="comment"/>
1607         <StringDetect attribute="Comment" context="#pop#pop!MultilineComment«««" String="«««" beginRegion="comment"/>
1608         <StringDetect attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;&lt;" String="&lt;&lt;&lt;" beginRegion="comment"/>
1609         <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment((" char="(" char1="(" beginRegion="comment"/>
1610         <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment[[" char="[" char1="[" beginRegion="comment"/>
1611         <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment{{" char="{" char1="{" beginRegion="comment"/>
1612         <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment««" char="«" char1="«" beginRegion="comment"/>
1613         <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;" char="&lt;" char1="&lt;" beginRegion="comment"/>
1614         <DetectChar attribute="Comment" context="#pop#pop!MultilineComment(" char="(" beginRegion="comment"/>
1615         <DetectChar attribute="Comment" context="#pop#pop!MultilineComment[" char="[" beginRegion="comment"/>
1616         <DetectChar attribute="Comment" context="#pop#pop!MultilineComment{" char="{" beginRegion="comment"/>
1617         <DetectChar attribute="Comment" context="#pop#pop!MultilineComment«" char="«" beginRegion="comment"/>
1618         <DetectChar attribute="Comment" context="#pop#pop!MultilineComment&lt;" char="&lt;" beginRegion="comment"/>
1619         <!-- etc -->
1620       </context>
1621 
1622       <context name="MultilineComment(((" attribute="Comment" lineEndContext="#stay">
1623         <IncludeRules context="SingleLineComment"/>
1624         <StringDetect String=")))" attribute="Comment" context="#pop" endRegion="comment"/>
1625         <StringDetect String="(((" attribute="Comment" context="MultilineComment(((" beginRegion="comment"/>
1626       </context>
1627       <context name="MultilineComment[[[" attribute="Comment" lineEndContext="#stay">
1628         <IncludeRules context="SingleLineComment"/>
1629         <StringDetect String="]]]" attribute="Comment" context="#pop" endRegion="comment"/>
1630         <StringDetect String="[[[" attribute="Comment" context="MultilineComment[[[" beginRegion="comment"/>
1631       </context>
1632       <context name="MultilineComment{{{" attribute="Comment" lineEndContext="#stay">
1633         <StringDetect String="}}}" attribute="Comment" context="#pop" endRegion="comment"/>
1634         <StringDetect String="{{{" attribute="Comment" context="MultilineComment{{{" beginRegion="comment"/>
1635         <IncludeRules context="SingleLineComment"/>
1636       </context>
1637       <context name="MultilineComment«««" attribute="Comment" lineEndContext="#stay">
1638         <IncludeRules context="SingleLineComment"/>
1639         <StringDetect String="»»»" attribute="Comment" context="#pop" endRegion="comment"/>
1640         <StringDetect String="«««" attribute="Comment" context="MultilineComment«««" beginRegion="comment"/>
1641       </context>
1642       <context name="MultilineComment&lt;&lt;&lt;" attribute="Comment" lineEndContext="#stay">
1643         <IncludeRules context="SingleLineComment"/>
1644         <StringDetect String=">>>" attribute="Comment" context="#pop" endRegion="comment"/>
1645         <StringDetect String="&lt;&lt;&lt;" attribute="Comment" context="MultilineComment&lt;&lt;&lt;" beginRegion="comment"/>
1646       </context>
1647 
1648       <context name="MultilineComment((" attribute="Comment" lineEndContext="#stay">
1649         <IncludeRules context="SingleLineComment"/>
1650         <Detect2Chars char=")" char1=")" attribute="Comment" context="#pop" endRegion="comment"/>
1651         <Detect2Chars char="(" char1="(" attribute="Comment" context="MultilineComment((" beginRegion="comment"/>
1652       </context>
1653       <context name="MultilineComment[[" attribute="Comment" lineEndContext="#stay">
1654         <IncludeRules context="SingleLineComment"/>
1655         <Detect2Chars char="]" char1="]" attribute="Comment" context="#pop" endRegion="comment"/>
1656         <Detect2Chars char="[" char1="[" attribute="Comment" context="MultilineComment[[" beginRegion="comment"/>
1657       </context>
1658       <context name="MultilineComment{{" attribute="Comment" lineEndContext="#stay">
1659         <IncludeRules context="SingleLineComment"/>
1660         <Detect2Chars char="}" char1="}" attribute="Comment" context="#pop" endRegion="comment"/>
1661         <Detect2Chars char="{" char1="{" attribute="Comment" context="MultilineComment{{" beginRegion="comment"/>
1662       </context>
1663       <context name="MultilineComment««" attribute="Comment" lineEndContext="#stay">
1664         <IncludeRules context="SingleLineComment"/>
1665         <Detect2Chars char="»" char1="»" attribute="Comment" context="#pop" endRegion="comment"/>
1666         <Detect2Chars char="«" char1="«" attribute="Comment" context="MultilineComment««" beginRegion="comment"/>
1667       </context>
1668       <context name="MultilineComment&lt;&lt;" attribute="Comment" lineEndContext="#stay">
1669         <IncludeRules context="SingleLineComment"/>
1670         <Detect2Chars char=">" char1=">" attribute="Comment" context="#pop" endRegion="comment"/>
1671         <Detect2Chars char="&lt;" char1="&lt;" attribute="Comment" context="MultilineComment&lt;&lt;" beginRegion="comment"/>
1672       </context>
1673 
1674       <context name="MultilineComment(" attribute="Comment" lineEndContext="#stay">
1675         <IncludeRules context="SingleLineComment"/>
1676         <DetectChar char=")" attribute="Comment" context="#pop" endRegion="comment"/>
1677         <DetectChar char="(" attribute="Comment" context="MultilineComment(" beginRegion="comment"/>
1678       </context>
1679       <context name="MultilineComment[" attribute="Comment" lineEndContext="#stay">
1680         <IncludeRules context="SingleLineComment"/>
1681         <DetectChar char="]" attribute="Comment" context="#pop" endRegion="comment"/>
1682         <DetectChar char="[" attribute="Comment" context="MultilineComment[" beginRegion="comment"/>
1683       </context>
1684       <context name="MultilineComment{" attribute="Comment" lineEndContext="#stay">
1685         <IncludeRules context="SingleLineComment"/>
1686         <DetectChar char="}" attribute="Comment" context="#pop" endRegion="comment"/>
1687         <DetectChar char="{" attribute="Comment" context="MultilineComment{" beginRegion="comment"/>
1688       </context>
1689       <context name="MultilineComment«" attribute="Comment" lineEndContext="#stay">
1690         <IncludeRules context="SingleLineComment"/>
1691         <DetectChar char="»" attribute="Comment" context="#pop" endRegion="comment"/>
1692         <DetectChar char="«" attribute="Comment" context="MultilineComment«" beginRegion="comment"/>
1693       </context>
1694       <context name="MultilineComment&lt;" attribute="Comment" lineEndContext="#stay">
1695         <IncludeRules context="SingleLineComment"/>
1696         <DetectChar char=">" attribute="Comment" context="#pop" endRegion="comment"/>
1697         <DetectChar char="&lt;" attribute="Comment" context="MultilineComment&lt;" beginRegion="comment"/>
1698       </context>
1699 
1700       <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop#pop">
1701         <DetectSpaces/>
1702         <IncludeRules context="##Comments"/>
1703         <DetectIdentifier/>
1704       </context>
1705 
1706 
1707       <!-- Error -->
1708 
1709       <context name="Error" attribute="Error" lineEndContext="#pop"/>
1710 
1711       <context name="CharErrorIfNoSep" attribute="Error" lineEndContext="#pop">
1712         <RegExpr String="[^;)]" context="#pop" attribute="Error"/>
1713       </context>
1714 
1715       <context name="CharError" attribute="Error" lineEndContext="#pop">
1716         <RegExpr String="." context="#pop" attribute="Error"/>
1717       </context>
1718 
1719     </contexts>
1720 
1721     <itemDatas>
1722       <itemData name="Normal Text"               defStyleNum="dsNormal"/>
1723       <itemData name="Keyword"                   defStyleNum="dsKeyword" spellChecking="false"/>
1724       <itemData name="Keyword Value"             defStyleNum="dsKeyword" spellChecking="false"/>
1725       <itemData name="Variable"                  defStyleNum="dsVariable" spellChecking="false"/>
1726       <itemData name="Twigil"                    defStyleNum="dsAttribute" spellChecking="false"/>
1727       <itemData name="Control Flow"              defStyleNum="dsControlFlow" spellChecking="false"/>
1728       <itemData name="Variable Storage"          defStyleNum="dsKeyword" spellChecking="false" bold="1"/>
1729       <itemData name="Property"                  defStyleNum="dsBuiltIn" spellChecking="false" italic="1"/>
1730       <itemData name="Declare Routine"           defStyleNum="dsBuiltIn" spellChecking="false"/>
1731       <itemData name="Function"                  defStyleNum="dsFunction" spellChecking="false"/>
1732       <itemData name="Operator"                  defStyleNum="dsKeyword" spellChecking="false"/>
1733       <itemData name="Separator Symbol"          defStyleNum="dsNormal" spellChecking="false"/>
1734       <itemData name="Data Type"                 defStyleNum="dsDataType" spellChecking="false"/>
1735       <itemData name="Attribute"                 defStyleNum="dsAttribute" spellChecking="false"/>
1736       <itemData name="Decimal"                   defStyleNum="dsDecVal" spellChecking="false"/>
1737       <itemData name="Octal"                     defStyleNum="dsBaseN" spellChecking="false"/>
1738       <itemData name="Hex"                       defStyleNum="dsBaseN" spellChecking="false"/>
1739       <itemData name="Float"                     defStyleNum="dsFloat" spellChecking="false"/>
1740       <itemData name="String"                    defStyleNum="dsString"/>
1741       <itemData name="String Delimiter"          defStyleNum="dsChar" spellChecking="false"/>
1742       <itemData name="String (interpolated)"     defStyleNum="dsString"/>
1743       <itemData name="String Special Character"  defStyleNum="dsChar"/>
1744       <itemData name="Pattern"                   defStyleNum="dsOthers" spellChecking="false"/>
1745       <itemData name="Pattern Meta Character"    defStyleNum="dsChar" spellChecking="false"/>
1746       <itemData name="Pattern Character Class"   defStyleNum="dsBaseN" spellChecking="false"/>
1747       <itemData name="Pattern Unicode Property"  defStyleNum="dsBaseN" spellChecking="false"/>
1748       <itemData name="Pattern Character"         defStyleNum="dsChar" spellChecking="false"/>
1749       <itemData name="Pattern Modifier"          defStyleNum="dsKeyword" spellChecking="false"/>
1750       <itemData name="Pattern Quantifier"        defStyleNum="dsControlFlow" spellChecking="false"/>
1751       <itemData name="Pattern Control Flow"      defStyleNum="dsControlFlow" spellChecking="false"/>
1752       <itemData name="Pattern Special Character" defStyleNum="dsBuiltIn" spellChecking="false"/>
1753       <itemData name="Comment"                   defStyleNum="dsComment"/>
1754       <itemData name="Error"                     defStyleNum="dsError" spellChecking="false"/>
1755       <itemData name="Pod"                       defStyleNum="dsDocumentation" spellChecking="false"/>
1756       <itemData name="Pod Paragraph"             defStyleNum="dsDocumentation"/>
1757       <itemData name="Pod Block"                 defStyleNum="dsRegionMarker" spellChecking="false"/>
1758       <itemData name="Pod Typename"              defStyleNum="dsAnnotation" spellChecking="false"/>
1759       <itemData name="Pod Typename Value"        defStyleNum="dsCommentVar" spellChecking="false"/>
1760       <itemData name="Pod Unknown"               defStyleNum="dsError" spellChecking="false"/>
1761       <itemData name="Pod Operator"              defStyleNum="dsOperator" spellChecking="false"/>
1762       <itemData name="Pod Key"                   defStyleNum="dsAttribute" spellChecking="false"/>
1763       <itemData name="Pod Config"                defStyleNum="dsCommentVar" spellChecking="false"/>
1764       <itemData name="Pod Bold"                  defStyleNum="dsDocumentation" bold="1"/>
1765       <itemData name="Pod Italic"                defStyleNum="dsDocumentation" italic="1"/>
1766       <itemData name="Pod Underline"             defStyleNum="dsDocumentation" underline="1"/>
1767       <itemData name="Pod Link"                  defStyleNum="dsOthers" underline="1"/>
1768       <itemData name="Pod Note"                  defStyleNum="dsInformation"/>
1769       <itemData name="Pod Comment"               defStyleNum="dsComment"/>
1770       <itemData name="Pod Verbatim"              defStyleNum="dsInformation" spellChecking="false"/>
1771       <itemData name="Pod Unicode"               defStyleNum="dsChar" spellChecking="false"/>
1772       <itemData name="Pod Indexed Terms"         defStyleNum="dsOthers" spellChecking="false"/>
1773     </itemDatas>
1774   </highlighting>
1775   <general>
1776     <comments>
1777       <comment name="singleLine" start="#"/>
1778     </comments>
1779     <keywords casesensitive="1" weakDeliminator="-'"/>
1780   </general>
1781 </language>
1782 <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->