...

Text file src/github.com/alecthomas/chroma/v2/lexers/embedded/crystal.xml

Documentation: github.com/alecthomas/chroma/v2/lexers/embedded

     1<lexer>
     2  <config>
     3    <name>Crystal</name>
     4    <alias>cr</alias>
     5    <alias>crystal</alias>
     6    <filename>*.cr</filename>
     7    <mime_type>text/x-crystal</mime_type>
     8    <dot_all>true</dot_all>
     9  </config>
    10  <rules>
    11    <state name="pa-intp-string">
    12      <rule pattern="\\[\(]">
    13        <token type="LiteralStringOther"/>
    14      </rule>
    15      <rule pattern="\(">
    16        <token type="LiteralStringOther"/>
    17        <push/>
    18      </rule>
    19      <rule pattern="\)">
    20        <token type="LiteralStringOther"/>
    21        <pop depth="1"/>
    22      </rule>
    23      <rule>
    24        <include state="string-intp-escaped"/>
    25      </rule>
    26      <rule pattern="[\\#()]">
    27        <token type="LiteralStringOther"/>
    28      </rule>
    29      <rule pattern="[^\\#()]+">
    30        <token type="LiteralStringOther"/>
    31      </rule>
    32    </state>
    33    <state name="ab-regex">
    34      <rule pattern="\\[\\&lt;&gt;]">
    35        <token type="LiteralStringRegex"/>
    36      </rule>
    37      <rule pattern="&lt;">
    38        <token type="LiteralStringRegex"/>
    39        <push/>
    40      </rule>
    41      <rule pattern="&gt;[imsx]*">
    42        <token type="LiteralStringRegex"/>
    43        <pop depth="1"/>
    44      </rule>
    45      <rule>
    46        <include state="string-intp"/>
    47      </rule>
    48      <rule pattern="[\\#&lt;&gt;]">
    49        <token type="LiteralStringRegex"/>
    50      </rule>
    51      <rule pattern="[^\\#&lt;&gt;]+">
    52        <token type="LiteralStringRegex"/>
    53      </rule>
    54    </state>
    55    <state name="cb-regex">
    56      <rule pattern="\\[\\{}]">
    57        <token type="LiteralStringRegex"/>
    58      </rule>
    59      <rule pattern="\{">
    60        <token type="LiteralStringRegex"/>
    61        <push/>
    62      </rule>
    63      <rule pattern="\}[imsx]*">
    64        <token type="LiteralStringRegex"/>
    65        <pop depth="1"/>
    66      </rule>
    67      <rule>
    68        <include state="string-intp"/>
    69      </rule>
    70      <rule pattern="[\\#{}]">
    71        <token type="LiteralStringRegex"/>
    72      </rule>
    73      <rule pattern="[^\\#{}]+">
    74        <token type="LiteralStringRegex"/>
    75      </rule>
    76    </state>
    77    <state name="simple-backtick">
    78      <rule>
    79        <include state="string-intp-escaped"/>
    80      </rule>
    81      <rule pattern="[^\\`#]+">
    82        <token type="LiteralStringBacktick"/>
    83      </rule>
    84      <rule pattern="[\\#]">
    85        <token type="LiteralStringBacktick"/>
    86      </rule>
    87      <rule pattern="`">
    88        <token type="LiteralStringBacktick"/>
    89        <pop depth="1"/>
    90      </rule>
    91    </state>
    92    <state name="string-intp">
    93      <rule pattern="#\{">
    94        <token type="LiteralStringInterpol"/>
    95        <push state="in-intp"/>
    96      </rule>
    97    </state>
    98    <state name="interpolated-regex">
    99      <rule>
   100        <include state="string-intp"/>
   101      </rule>
   102      <rule pattern="[\\#]">
   103        <token type="LiteralStringRegex"/>
   104      </rule>
   105      <rule pattern="[^\\#]+">
   106        <token type="LiteralStringRegex"/>
   107      </rule>
   108    </state>
   109    <state name="cb-string">
   110      <rule pattern="\\[\\{}]">
   111        <token type="LiteralStringOther"/>
   112      </rule>
   113      <rule pattern="\{">
   114        <token type="LiteralStringOther"/>
   115        <push/>
   116      </rule>
   117      <rule pattern="\}">
   118        <token type="LiteralStringOther"/>
   119        <pop depth="1"/>
   120      </rule>
   121      <rule pattern="[\\#{}]">
   122        <token type="LiteralStringOther"/>
   123      </rule>
   124      <rule pattern="[^\\#{}]+">
   125        <token type="LiteralStringOther"/>
   126      </rule>
   127    </state>
   128    <state name="in-macro-control">
   129      <rule pattern="\{%">
   130        <token type="LiteralStringInterpol"/>
   131        <push/>
   132      </rule>
   133      <rule pattern="%\}">
   134        <token type="LiteralStringInterpol"/>
   135        <pop depth="1"/>
   136      </rule>
   137      <rule pattern="for\b|in\b">
   138        <token type="Keyword"/>
   139      </rule>
   140      <rule>
   141        <include state="root"/>
   142      </rule>
   143    </state>
   144    <state name="interpolated-string">
   145      <rule>
   146        <include state="string-intp"/>
   147      </rule>
   148      <rule pattern="[\\#]">
   149        <token type="LiteralStringOther"/>
   150      </rule>
   151      <rule pattern="[^\\#]+">
   152        <token type="LiteralStringOther"/>
   153      </rule>
   154    </state>
   155    <state name="in-macro-expr">
   156      <rule pattern="\{\{">
   157        <token type="LiteralStringInterpol"/>
   158        <push/>
   159      </rule>
   160      <rule pattern="\}\}">
   161        <token type="LiteralStringInterpol"/>
   162        <pop depth="1"/>
   163      </rule>
   164      <rule>
   165        <include state="root"/>
   166      </rule>
   167    </state>
   168    <state name="simple-string">
   169      <rule>
   170        <include state="string-intp-escaped"/>
   171      </rule>
   172      <rule pattern="[^\\&#34;#]+">
   173        <token type="LiteralStringDouble"/>
   174      </rule>
   175      <rule pattern="[\\#]">
   176        <token type="LiteralStringDouble"/>
   177      </rule>
   178      <rule pattern="&#34;">
   179        <token type="LiteralStringDouble"/>
   180        <pop depth="1"/>
   181      </rule>
   182    </state>
   183    <state name="cb-intp-string">
   184      <rule pattern="\\[\{]">
   185        <token type="LiteralStringOther"/>
   186      </rule>
   187      <rule pattern="\{">
   188        <token type="LiteralStringOther"/>
   189        <push/>
   190      </rule>
   191      <rule pattern="\}">
   192        <token type="LiteralStringOther"/>
   193        <pop depth="1"/>
   194      </rule>
   195      <rule>
   196        <include state="string-intp-escaped"/>
   197      </rule>
   198      <rule pattern="[\\#{}]">
   199        <token type="LiteralStringOther"/>
   200      </rule>
   201      <rule pattern="[^\\#{}]+">
   202        <token type="LiteralStringOther"/>
   203      </rule>
   204    </state>
   205    <state name="string-intp-escaped">
   206      <rule>
   207        <include state="string-intp"/>
   208      </rule>
   209      <rule>
   210        <include state="string-escaped"/>
   211      </rule>
   212    </state>
   213    <state name="sb-regex">
   214      <rule pattern="\\[\\\[\]]">
   215        <token type="LiteralStringRegex"/>
   216      </rule>
   217      <rule pattern="\[">
   218        <token type="LiteralStringRegex"/>
   219        <push/>
   220      </rule>
   221      <rule pattern="\][imsx]*">
   222        <token type="LiteralStringRegex"/>
   223        <pop depth="1"/>
   224      </rule>
   225      <rule>
   226        <include state="string-intp"/>
   227      </rule>
   228      <rule pattern="[\\#\[\]]">
   229        <token type="LiteralStringRegex"/>
   230      </rule>
   231      <rule pattern="[^\\#\[\]]+">
   232        <token type="LiteralStringRegex"/>
   233      </rule>
   234    </state>
   235    <state name="classname">
   236      <rule pattern="[A-Z_]\w*">
   237        <token type="NameClass"/>
   238      </rule>
   239      <rule pattern="(\()(\s*)([A-Z_]\w*)(\s*)(\))">
   240        <bygroups>
   241          <token type="Punctuation"/>
   242          <token type="Text"/>
   243          <token type="NameClass"/>
   244          <token type="Text"/>
   245          <token type="Punctuation"/>
   246        </bygroups>
   247      </rule>
   248      <rule>
   249        <pop depth="1"/>
   250      </rule>
   251    </state>
   252    <state name="string-escaped">
   253      <rule pattern="\\([\\befnstv#&#34;\&#39;]|x[a-fA-F0-9]{1,2}|[0-7]{1,3})">
   254        <token type="LiteralStringEscape"/>
   255      </rule>
   256    </state>
   257    <state name="sb-intp-string">
   258      <rule pattern="\\[\[]">
   259        <token type="LiteralStringOther"/>
   260      </rule>
   261      <rule pattern="\[">
   262        <token type="LiteralStringOther"/>
   263        <push/>
   264      </rule>
   265      <rule pattern="\]">
   266        <token type="LiteralStringOther"/>
   267        <pop depth="1"/>
   268      </rule>
   269      <rule>
   270        <include state="string-intp-escaped"/>
   271      </rule>
   272      <rule pattern="[\\#\[\]]">
   273        <token type="LiteralStringOther"/>
   274      </rule>
   275      <rule pattern="[^\\#\[\]]+">
   276        <token type="LiteralStringOther"/>
   277      </rule>
   278    </state>
   279    <state name="pa-regex">
   280      <rule pattern="\\[\\()]">
   281        <token type="LiteralStringRegex"/>
   282      </rule>
   283      <rule pattern="\(">
   284        <token type="LiteralStringRegex"/>
   285        <push/>
   286      </rule>
   287      <rule pattern="\)[imsx]*">
   288        <token type="LiteralStringRegex"/>
   289        <pop depth="1"/>
   290      </rule>
   291      <rule>
   292        <include state="string-intp"/>
   293      </rule>
   294      <rule pattern="[\\#()]">
   295        <token type="LiteralStringRegex"/>
   296      </rule>
   297      <rule pattern="[^\\#()]+">
   298        <token type="LiteralStringRegex"/>
   299      </rule>
   300    </state>
   301    <state name="in-attr">
   302      <rule pattern="\[">
   303        <token type="Operator"/>
   304        <push/>
   305      </rule>
   306      <rule pattern="\]">
   307        <token type="Operator"/>
   308        <pop depth="1"/>
   309      </rule>
   310      <rule>
   311        <include state="root"/>
   312      </rule>
   313    </state>
   314    <state name="ab-intp-string">
   315      <rule pattern="\\[&lt;]">
   316        <token type="LiteralStringOther"/>
   317      </rule>
   318      <rule pattern="&lt;">
   319        <token type="LiteralStringOther"/>
   320        <push/>
   321      </rule>
   322      <rule pattern="&gt;">
   323        <token type="LiteralStringOther"/>
   324        <pop depth="1"/>
   325      </rule>
   326      <rule>
   327        <include state="string-intp-escaped"/>
   328      </rule>
   329      <rule pattern="[\\#&lt;&gt;]">
   330        <token type="LiteralStringOther"/>
   331      </rule>
   332      <rule pattern="[^\\#&lt;&gt;]+">
   333        <token type="LiteralStringOther"/>
   334      </rule>
   335    </state>
   336    <state name="in-intp">
   337      <rule pattern="\{">
   338        <token type="LiteralStringInterpol"/>
   339        <push/>
   340      </rule>
   341      <rule pattern="\}">
   342        <token type="LiteralStringInterpol"/>
   343        <pop depth="1"/>
   344      </rule>
   345      <rule>
   346        <include state="root"/>
   347      </rule>
   348    </state>
   349    <state name="end-part">
   350      <rule pattern=".+">
   351        <token type="CommentPreproc"/>
   352        <pop depth="1"/>
   353      </rule>
   354    </state>
   355    <state name="root">
   356      <rule pattern="#.*?$">
   357        <token type="CommentSingle"/>
   358      </rule>
   359      <rule pattern="(instance_sizeof|pointerof|protected|abstract|require|private|include|unless|typeof|sizeof|return|extend|ensure|rescue|ifdef|super|break|begin|until|while|elsif|yield|next|when|else|then|case|with|end|asm|if|do|as|of)\b">
   360        <token type="Keyword"/>
   361      </rule>
   362      <rule pattern="(false|true|nil)\b">
   363        <token type="KeywordConstant"/>
   364      </rule>
   365      <rule pattern="(module|lib)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)">
   366        <bygroups>
   367          <token type="Keyword"/>
   368          <token type="Text"/>
   369          <token type="NameNamespace"/>
   370        </bygroups>
   371      </rule>
   372      <rule pattern="(def|fun|macro)(\s+)((?:[a-zA-Z_]\w*::)*)">
   373        <bygroups>
   374          <token type="Keyword"/>
   375          <token type="Text"/>
   376          <token type="NameNamespace"/>
   377        </bygroups>
   378        <push state="funcname"/>
   379      </rule>
   380      <rule pattern="def(?=[*%&amp;^`~+-/\[&lt;&gt;=])">
   381        <token type="Keyword"/>
   382        <push state="funcname"/>
   383      </rule>
   384      <rule pattern="(class|struct|union|type|alias|enum)(\s+)((?:[a-zA-Z_]\w*::)*)">
   385        <bygroups>
   386          <token type="Keyword"/>
   387          <token type="Text"/>
   388          <token type="NameNamespace"/>
   389        </bygroups>
   390        <push state="classname"/>
   391      </rule>
   392      <rule pattern="(self|out|uninitialized)\b|(is_a|responds_to)\?">
   393        <token type="KeywordPseudo"/>
   394      </rule>
   395      <rule pattern="(def_equals_and_hash|assert_responds_to|forward_missing_to|def_equals|property|def_hash|parallel|delegate|debugger|getter|record|setter|spawn|pp)\b">
   396        <token type="NameBuiltinPseudo"/>
   397      </rule>
   398      <rule pattern="getter[!?]|property[!?]|__(DIR|FILE|LINE)__\b">
   399        <token type="NameBuiltinPseudo"/>
   400      </rule>
   401      <rule pattern="(?&lt;!\.)(get_stack_top|StaticArray|Concurrent|with_color|Reference|Scheduler|read_line|Exception|at_exit|Pointer|Channel|Float64|sprintf|Float32|Process|Object|Struct|caller|UInt16|UInt32|UInt64|system|future|Number|printf|String|Symbol|Int32|Range|Slice|Regex|Mutex|sleep|Array|Class|raise|Tuple|Deque|delay|Float|Int16|print|abort|Value|UInt8|Int64|puts|Proc|File|Void|exit|fork|Bool|Char|gets|lazy|loop|main|rand|Enum|Int8|Time|Hash|Set|Box|Nil|Dir|Int|p)\b">
   402        <token type="NameBuiltin"/>
   403      </rule>
   404      <rule pattern="(?&lt;!\w)(&lt;&lt;-?)([&#34;`\&#39;]?)([a-zA-Z_]\w*)(\2)(.*?\n)">
   405        <token type="LiteralStringHeredoc"/>
   406      </rule>
   407      <rule pattern="(&lt;&lt;-?)(&#34;|\&#39;)()(\2)(.*?\n)">
   408        <token type="LiteralStringHeredoc"/>
   409      </rule>
   410      <rule pattern="__END__">
   411        <token type="CommentPreproc"/>
   412        <push state="end-part"/>
   413      </rule>
   414      <rule pattern="(?:^|(?&lt;=[=&lt;&gt;~!:])|(?&lt;=(?:\s|;)when\s)|(?&lt;=(?:\s|;)or\s)|(?&lt;=(?:\s|;)and\s)|(?&lt;=\.index\s)|(?&lt;=\.scan\s)|(?&lt;=\.sub\s)|(?&lt;=\.sub!\s)|(?&lt;=\.gsub\s)|(?&lt;=\.gsub!\s)|(?&lt;=\.match\s)|(?&lt;=(?:\s|;)if\s)|(?&lt;=(?:\s|;)elsif\s)|(?&lt;=^when\s)|(?&lt;=^index\s)|(?&lt;=^scan\s)|(?&lt;=^sub\s)|(?&lt;=^gsub\s)|(?&lt;=^sub!\s)|(?&lt;=^gsub!\s)|(?&lt;=^match\s)|(?&lt;=^if\s)|(?&lt;=^elsif\s))(\s*)(/)">
   415        <bygroups>
   416          <token type="Text"/>
   417          <token type="LiteralStringRegex"/>
   418        </bygroups>
   419        <push state="multiline-regex"/>
   420      </rule>
   421      <rule pattern="(?&lt;=\(|,|\[)/">
   422        <token type="LiteralStringRegex"/>
   423        <push state="multiline-regex"/>
   424      </rule>
   425      <rule pattern="(\s+)(/)(?![\s=])">
   426        <bygroups>
   427          <token type="Text"/>
   428          <token type="LiteralStringRegex"/>
   429        </bygroups>
   430        <push state="multiline-regex"/>
   431      </rule>
   432      <rule pattern="(0o[0-7]+(?:_[0-7]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?">
   433        <bygroups>
   434          <token type="LiteralNumberOct"/>
   435          <token type="Text"/>
   436          <token type="Operator"/>
   437        </bygroups>
   438      </rule>
   439      <rule pattern="(0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?">
   440        <bygroups>
   441          <token type="LiteralNumberHex"/>
   442          <token type="Text"/>
   443          <token type="Operator"/>
   444        </bygroups>
   445      </rule>
   446      <rule pattern="(0b[01]+(?:_[01]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?">
   447        <bygroups>
   448          <token type="LiteralNumberBin"/>
   449          <token type="Text"/>
   450          <token type="Operator"/>
   451        </bygroups>
   452      </rule>
   453      <rule pattern="((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)(?:e[+-]?[0-9]+)?(?:_?f[0-9]+)?)(\s*)([/?])?">
   454        <bygroups>
   455          <token type="LiteralNumberFloat"/>
   456          <token type="Text"/>
   457          <token type="Operator"/>
   458        </bygroups>
   459      </rule>
   460      <rule pattern="((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)(?:_?f[0-9]+)?)(\s*)([/?])?">
   461        <bygroups>
   462          <token type="LiteralNumberFloat"/>
   463          <token type="Text"/>
   464          <token type="Operator"/>
   465        </bygroups>
   466      </rule>
   467      <rule pattern="((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)?(?:_?f[0-9]+))(\s*)([/?])?">
   468        <bygroups>
   469          <token type="LiteralNumberFloat"/>
   470          <token type="Text"/>
   471          <token type="Operator"/>
   472        </bygroups>
   473      </rule>
   474      <rule pattern="(0\b|[1-9][\d]*(?:_\d+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?">
   475        <bygroups>
   476          <token type="LiteralNumberInteger"/>
   477          <token type="Text"/>
   478          <token type="Operator"/>
   479        </bygroups>
   480      </rule>
   481      <rule pattern="@@[a-zA-Z_]\w*">
   482        <token type="NameVariableClass"/>
   483      </rule>
   484      <rule pattern="@[a-zA-Z_]\w*">
   485        <token type="NameVariableInstance"/>
   486      </rule>
   487      <rule pattern="\$\w+">
   488        <token type="NameVariableGlobal"/>
   489      </rule>
   490      <rule pattern="\$[!@&amp;`\&#39;+~=/\\,;.&lt;&gt;_*$?:&#34;^-]">
   491        <token type="NameVariableGlobal"/>
   492      </rule>
   493      <rule pattern="\$-[0adFiIlpvw]">
   494        <token type="NameVariableGlobal"/>
   495      </rule>
   496      <rule pattern="::">
   497        <token type="Operator"/>
   498      </rule>
   499      <rule>
   500        <include state="strings"/>
   501      </rule>
   502      <rule pattern="\?(\\[MC]-)*(\\([\\befnrtv#&#34;\&#39;]|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)(?!\w)">
   503        <token type="LiteralStringChar"/>
   504      </rule>
   505      <rule pattern="[A-Z][A-Z_]+\b">
   506        <token type="NameConstant"/>
   507      </rule>
   508      <rule pattern="\{%">
   509        <token type="LiteralStringInterpol"/>
   510        <push state="in-macro-control"/>
   511      </rule>
   512      <rule pattern="\{\{">
   513        <token type="LiteralStringInterpol"/>
   514        <push state="in-macro-expr"/>
   515      </rule>
   516      <rule pattern="(@\[)(\s*)([A-Z]\w*)">
   517        <bygroups>
   518          <token type="Operator"/>
   519          <token type="Text"/>
   520          <token type="NameDecorator"/>
   521        </bygroups>
   522        <push state="in-attr"/>
   523      </rule>
   524      <rule pattern="(\.|::)(\[\]\?|&lt;=&gt;|===|\[\]=|&gt;&gt;|&amp;&amp;|\*\*|\[\]|\|\||&gt;=|=~|!~|&lt;&lt;|&lt;=|!=|==|&lt;|/|=|-|\+|&gt;|\*|&amp;|%|\^|!|\||~)">
   525        <bygroups>
   526          <token type="Operator"/>
   527          <token type="NameOperator"/>
   528        </bygroups>
   529      </rule>
   530      <rule pattern="(\.|::)([a-zA-Z_]\w*[!?]?|[*%&amp;^`~+\-/\[&lt;&gt;=])">
   531        <bygroups>
   532          <token type="Operator"/>
   533          <token type="Name"/>
   534        </bygroups>
   535      </rule>
   536      <rule pattern="[a-zA-Z_]\w*(?:[!?](?!=))?">
   537        <token type="Name"/>
   538      </rule>
   539      <rule pattern="(\[|\]\??|\*\*|&lt;=&gt;?|&gt;=|&lt;&lt;?|&gt;&gt;?|=~|===|!~|&amp;&amp;?|\|\||\.{1,3})">
   540        <token type="Operator"/>
   541      </rule>
   542      <rule pattern="[-+/*%=&lt;&gt;&amp;!^|~]=?">
   543        <token type="Operator"/>
   544      </rule>
   545      <rule pattern="[(){};,/?:\\]">
   546        <token type="Punctuation"/>
   547      </rule>
   548      <rule pattern="\s+">
   549        <token type="Text"/>
   550      </rule>
   551    </state>
   552    <state name="multiline-regex">
   553      <rule>
   554        <include state="string-intp"/>
   555      </rule>
   556      <rule pattern="\\\\">
   557        <token type="LiteralStringRegex"/>
   558      </rule>
   559      <rule pattern="\\/">
   560        <token type="LiteralStringRegex"/>
   561      </rule>
   562      <rule pattern="[\\#]">
   563        <token type="LiteralStringRegex"/>
   564      </rule>
   565      <rule pattern="[^\\/#]+">
   566        <token type="LiteralStringRegex"/>
   567      </rule>
   568      <rule pattern="/[imsx]*">
   569        <token type="LiteralStringRegex"/>
   570        <pop depth="1"/>
   571      </rule>
   572    </state>
   573    <state name="ab-string">
   574      <rule pattern="\\[\\&lt;&gt;]">
   575        <token type="LiteralStringOther"/>
   576      </rule>
   577      <rule pattern="&lt;">
   578        <token type="LiteralStringOther"/>
   579        <push/>
   580      </rule>
   581      <rule pattern="&gt;">
   582        <token type="LiteralStringOther"/>
   583        <pop depth="1"/>
   584      </rule>
   585      <rule pattern="[\\#&lt;&gt;]">
   586        <token type="LiteralStringOther"/>
   587      </rule>
   588      <rule pattern="[^\\#&lt;&gt;]+">
   589        <token type="LiteralStringOther"/>
   590      </rule>
   591    </state>
   592    <state name="pa-string">
   593      <rule pattern="\\[\\()]">
   594        <token type="LiteralStringOther"/>
   595      </rule>
   596      <rule pattern="\(">
   597        <token type="LiteralStringOther"/>
   598        <push/>
   599      </rule>
   600      <rule pattern="\)">
   601        <token type="LiteralStringOther"/>
   602        <pop depth="1"/>
   603      </rule>
   604      <rule pattern="[\\#()]">
   605        <token type="LiteralStringOther"/>
   606      </rule>
   607      <rule pattern="[^\\#()]+">
   608        <token type="LiteralStringOther"/>
   609      </rule>
   610    </state>
   611    <state name="strings">
   612      <rule pattern="\:@{0,2}[a-zA-Z_]\w*[!?]?">
   613        <token type="LiteralStringSymbol"/>
   614      </rule>
   615      <rule pattern="\:@{0,2}(\[\]\?|&lt;=&gt;|===|\[\]=|&gt;&gt;|&amp;&amp;|\*\*|\[\]|\|\||&gt;=|=~|!~|&lt;&lt;|&lt;=|!=|==|&lt;|/|=|-|\+|&gt;|\*|&amp;|%|\^|!|\||~)">
   616        <token type="LiteralStringSymbol"/>
   617      </rule>
   618      <rule pattern=":&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
   619        <token type="LiteralStringSymbol"/>
   620      </rule>
   621      <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;]|\\[^&#39;\\]+)&#39;">
   622        <token type="LiteralStringChar"/>
   623      </rule>
   624      <rule pattern=":&#34;">
   625        <token type="LiteralStringSymbol"/>
   626        <push state="simple-sym"/>
   627      </rule>
   628      <rule pattern="([a-zA-Z_]\w*)(:)(?!:)">
   629        <bygroups>
   630          <token type="LiteralStringSymbol"/>
   631          <token type="Punctuation"/>
   632        </bygroups>
   633      </rule>
   634      <rule pattern="&#34;">
   635        <token type="LiteralStringDouble"/>
   636        <push state="simple-string"/>
   637      </rule>
   638      <rule pattern="(?&lt;!\.)`">
   639        <token type="LiteralStringBacktick"/>
   640        <push state="simple-backtick"/>
   641      </rule>
   642      <rule pattern="%\{">
   643        <token type="LiteralStringOther"/>
   644        <push state="cb-intp-string"/>
   645      </rule>
   646      <rule pattern="%[wi]\{">
   647        <token type="LiteralStringOther"/>
   648        <push state="cb-string"/>
   649      </rule>
   650      <rule pattern="%r\{">
   651        <token type="LiteralStringRegex"/>
   652        <push state="cb-regex"/>
   653      </rule>
   654      <rule pattern="%\[">
   655        <token type="LiteralStringOther"/>
   656        <push state="sb-intp-string"/>
   657      </rule>
   658      <rule pattern="%[wi]\[">
   659        <token type="LiteralStringOther"/>
   660        <push state="sb-string"/>
   661      </rule>
   662      <rule pattern="%r\[">
   663        <token type="LiteralStringRegex"/>
   664        <push state="sb-regex"/>
   665      </rule>
   666      <rule pattern="%\(">
   667        <token type="LiteralStringOther"/>
   668        <push state="pa-intp-string"/>
   669      </rule>
   670      <rule pattern="%[wi]\(">
   671        <token type="LiteralStringOther"/>
   672        <push state="pa-string"/>
   673      </rule>
   674      <rule pattern="%r\(">
   675        <token type="LiteralStringRegex"/>
   676        <push state="pa-regex"/>
   677      </rule>
   678      <rule pattern="%&lt;">
   679        <token type="LiteralStringOther"/>
   680        <push state="ab-intp-string"/>
   681      </rule>
   682      <rule pattern="%[wi]&lt;">
   683        <token type="LiteralStringOther"/>
   684        <push state="ab-string"/>
   685      </rule>
   686      <rule pattern="%r&lt;">
   687        <token type="LiteralStringRegex"/>
   688        <push state="ab-regex"/>
   689      </rule>
   690      <rule pattern="(%r([\W_]))((?:\\\2|(?!\2).)*)(\2[imsx]*)">
   691        <token type="LiteralString"/>
   692      </rule>
   693      <rule pattern="(%[wi]([\W_]))((?:\\\2|(?!\2).)*)(\2)">
   694        <token type="LiteralString"/>
   695      </rule>
   696      <rule pattern="(?&lt;=[-+/*%=&lt;&gt;&amp;!^|~,(])(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)">
   697        <bygroups>
   698          <token type="Text"/>
   699          <token type="LiteralStringOther"/>
   700          <token type="None"/>
   701        </bygroups>
   702      </rule>
   703      <rule pattern="^(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)">
   704        <bygroups>
   705          <token type="Text"/>
   706          <token type="LiteralStringOther"/>
   707          <token type="None"/>
   708        </bygroups>
   709      </rule>
   710      <rule pattern="(%([\[{(&lt;]))((?:\\\2|(?!\2).)*)(\2)">
   711        <token type="LiteralString"/>
   712      </rule>
   713    </state>
   714    <state name="sb-string">
   715      <rule pattern="\\[\\\[\]]">
   716        <token type="LiteralStringOther"/>
   717      </rule>
   718      <rule pattern="\[">
   719        <token type="LiteralStringOther"/>
   720        <push/>
   721      </rule>
   722      <rule pattern="\]">
   723        <token type="LiteralStringOther"/>
   724        <pop depth="1"/>
   725      </rule>
   726      <rule pattern="[\\#\[\]]">
   727        <token type="LiteralStringOther"/>
   728      </rule>
   729      <rule pattern="[^\\#\[\]]+">
   730        <token type="LiteralStringOther"/>
   731      </rule>
   732    </state>
   733    <state name="funcname">
   734      <rule pattern="(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|[/%&amp;|^`~]|\[\]=?|&lt;&lt;|&gt;&gt;|&lt;=?&gt;|&gt;=?|===?)">
   735        <bygroups>
   736          <token type="NameClass"/>
   737          <token type="Operator"/>
   738          <token type="NameFunction"/>
   739        </bygroups>
   740        <pop depth="1"/>
   741      </rule>
   742      <rule>
   743        <pop depth="1"/>
   744      </rule>
   745    </state>
   746    <state name="simple-sym">
   747      <rule>
   748        <include state="string-escaped"/>
   749      </rule>
   750      <rule pattern="[^\\&#34;#]+">
   751        <token type="LiteralStringSymbol"/>
   752      </rule>
   753      <rule pattern="[\\#]">
   754        <token type="LiteralStringSymbol"/>
   755      </rule>
   756      <rule pattern="&#34;">
   757        <token type="LiteralStringSymbol"/>
   758        <pop depth="1"/>
   759      </rule>
   760    </state>
   761  </rules>
   762</lexer>

View as plain text