Warning, /frameworks/syntax-highlighting/data/syntax/nim.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 Improvements:
0006 
0007 - fixed typo: "lamba" is now "lambda"
0008 - added bind, func, typed, untyped, on, off
0009 - added multiline strings
0010 - added multiline comments (with stacking!)
0011 - added support for hex, binary, and octal numbers
0012 - added support for numerical literal suffixes (e.g. 'f64)
0013 - added triple-quote strings, raw strings and regex strings
0014 - made escape sequences in strings work slightly better (still needs work)
0015 - changed pragma syntax highlighting to dsAttribute instead of dsDataType
0016 - doc comments
0017 - TODO/BUG/FIXME/HACK/XXXX/NOTE comments
0018 
0019 -->
0020 
0021 <language
0022         name="Nim"
0023         version="4"
0024         kateversion="5.53"
0025         section="Sources"
0026         extensions="*.nim;*.nims;*.nimble"
0027         mimetype="text/x-nim"
0028         indenter="python"
0029         author="github.com/juancarlospaco"
0030         license="WTFPL">
0031 
0032         <highlighting>
0033                 <list name="keywords">
0034                         <item>const</item>
0035                         <item>export</item>
0036                         <item>import</item>
0037                         <item>include</item>
0038                         <item>lambda</item>
0039                         <item>let</item>
0040                         <item>var</item>
0041                 </list>
0042 
0043                 <list name="controls">
0044                         <item>assert</item> <!-- system -->
0045                         <item>asm</item>
0046                         <item>atomic</item>
0047                         <item>block</item>
0048                         <item>break</item>
0049                         <item>case</item>
0050                         <item>cast</item>
0051                         <item>compiles</item> <!-- system -->
0052                         <item>continue</item>
0053                         <item>declared</item> <!-- system -->
0054                         <item>declaredinscope</item> <!-- system -->
0055                         <item>defined</item> <!-- system -->
0056                         <item>discard</item>
0057                         <item>do</item>
0058                         <item>echo</item> <!-- system -->
0059                         <item>elif</item>
0060                         <item>else</item>
0061                         <item>end</item>
0062                         <item>except</item>
0063                         <item>finally</item>
0064                         <item>for</item>
0065                         <item>from</item>
0066                         <item>if</item>
0067                         <item>mixin</item>
0068                         <item>bind</item>
0069                         <item>new</item> <!-- system -->
0070                         <item>raise</item>
0071                         <item>return</item>
0072                         <item>sizeof</item> <!-- system -->
0073                         <item>try</item>
0074                         <item>when</item>
0075                         <item>while</item>
0076                         <item>quit</item> <!-- system -->
0077                         <item>using</item>
0078                         <item>yield</item>
0079                 </list>
0080 
0081                 <list name="operators">
0082                         <item>addr</item>
0083                         <item>and</item>
0084                         <item>as</item>
0085                         <item>div</item>
0086                         <item>in</item>
0087                         <item>is</item>
0088                         <item>isnot</item>
0089                         <item>mod</item>
0090                         <item>not</item>
0091                         <item>notin</item>
0092                         <item>of</item>
0093                         <item>or</item>
0094                         <item>shl</item>
0095                         <item>shr</item>
0096                         <item>xor</item>
0097                 </list>
0098 
0099                 <list name="types">
0100                         <item>array</item>
0101                         <item>bool</item>
0102                         <item>byte</item>
0103                         <item>cchar</item>
0104                         <item>cdouble</item>
0105                         <item>char</item>
0106                         <item>cfloat</item>
0107                         <item>cint</item>
0108                         <item>clong</item>
0109                         <item>cshort</item>
0110                         <item>cstring</item>
0111                         <item>cuint</item>
0112                         <item>distinct</item>
0113                         <item>expr</item>
0114                         <item>float</item>
0115                         <item>float32</item>
0116                         <item>float64</item>
0117                         <item>generic</item>
0118                         <item>int</item>
0119                         <item>int8</item>
0120                         <item>int16</item>
0121                         <item>int32</item>
0122                         <item>int64</item>
0123                         <item>interface</item>
0124                         <item>openarray</item>
0125                         <item>pointer</item>
0126                         <item>set</item>
0127                         <item>seq</item>
0128                         <item>stmt</item>
0129                         <item>string</item>
0130                         <item>tuple</item>
0131                         <item>typedesc</item>
0132                         <item>uint</item>
0133                         <item>uint8</item>
0134                         <item>uint16</item>
0135                         <item>uint32</item>
0136                         <item>uint64</item>
0137                         <item>varargs</item>
0138                         <item>void</item>
0139                         <item>untyped</item>
0140                         <item>typed</item>
0141                 </list>
0142 
0143                 <list name="attrs">
0144                         <item>out</item>
0145                         <item>ptr</item>
0146                         <item>ref</item>
0147                         <item>shared</item>
0148                         <item>static</item>
0149                 </list>
0150 
0151                 <list name="consts">
0152                         <item>false</item>
0153                         <item>inf</item>
0154                         <item>nil</item>
0155                         <item>true</item>
0156                         <item>on</item>
0157                         <item>off</item>
0158                 </list>
0159 
0160                 <list name="others">
0161                         <item>result</item>
0162                 </list>
0163 
0164                 <list name="proctar">
0165                         <item>converter</item>
0166                         <item>iterator</item>
0167                         <item>macro</item>
0168                         <item>method</item>
0169                         <item>proc</item>
0170                         <item>func</item>
0171                         <item>template</item>
0172                 </list>
0173 
0174                 <list name="typetar">
0175                         <item>type</item>
0176                         <item>concept</item>
0177                         <item>object</item>
0178                         <item>enum</item>
0179                 </list>
0180 
0181                 <contexts>
0182                         <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
0183                                 <DetectSpaces/>
0184                                 <keyword context="#stay" attribute="Keywords" String="keywords"/>
0185                                 <keyword context="#stay" attribute="Controls" String="controls"/>
0186                                 <keyword context="#stay" attribute="Operators" String="operators"/>
0187                                 <keyword context="#stay" attribute="Types"    String="types"/>
0188                                 <keyword context="#stay" attribute="Attrs"    String="attrs"/>
0189                                 <keyword context="#stay" attribute="Others"   String="others"/>
0190                                 <keyword context="#stay" attribute="Constants" String="consts"/>
0191 
0192                                 <keyword context="Start-Proctar" attribute="Keywords" String="proctar"/>
0193                                 <keyword context="Start-Typetar" attribute="Keywords" String="typetar"/>
0194 
0195                                 <StringDetect context="DocComment2" attribute="DocComment" String="##[" beginRegion="DocComment"/>
0196                                 <Detect2Chars context="DocComment1" attribute="DocComment" char="#" char1="#"/>
0197                                 <Detect2Chars context="Comment2" attribute="Comment" char="#" char1="[" beginRegion="Comment"/>
0198                                 <DetectChar context="Comment1" attribute="Comment" char="#"/>
0199 
0200                                 <StringDetect context="tripleq-string" attribute="String" String="&quot;&quot;&quot;" beginRegion="String"/>
0201                                 <DetectChar   context="string"         attribute="String" char="&quot;" beginRegion="String"/>
0202                                 <StringDetect context="re-string"      attribute="String" String="re&quot;" beginRegion="String"/>
0203                                 <Detect2Chars context="raw-string"     attribute="String" char="r" char1="&quot;" beginRegion="String"/>
0204 
0205                                 <RegExpr context="#stay" attribute="Hex"    String="0[xX][0-9A-Fa-f][0-9A-Fa-f_]*(?:'(?:(?:[ui](?:8|16|32|64))|(?:f(?:32|64|128))|[ufd]))?"/>
0206                                 <RegExpr context="#stay" attribute="Octal"  String="0o[0-7][0-7_]*(?:'(?:(?:[ui](?:8|16|32|64))|(?:f(?:32|64|128))|[ufd]))?"/>
0207                                 <RegExpr context="#stay" attribute="Binary" String="0[bB][01][01_]*(?:'(?:(?:[ui](?:8|16|32|64))|(?:f(?:32|64|128))|[ufd]))?"/>
0208                                 <RegExpr context="#stay" attribute="Decimal" String="\b\d+(?=\.\.)"/>
0209                                 <Float   context="#stay" attribute="Float"/>
0210                                 <Int     context="#stay" attribute="Decimal"/>
0211 
0212                                 <RegExpr context="#stay" attribute="Types"  String="\b_*[A-Z](?:\w|\._*[A-Z])*\b"/>
0213                                 <RegExpr context="#stay" attribute="Funcs"  String="\b\w+\b\s*(?=(?:\[.*\]\w*)?(?:\(|(?:[ ](?![,+\-*/=!^&amp;&lt;&gt;|?]|and|as|div|in|is|isnot|mod|notin|of|or|shl|shr|xor))))|\b\w+(?=&quot;)"/>
0214 
0215                                 <DetectIdentifier/>
0216 
0217                                 <Detect2Chars context="Pragmatar" attribute="Pragmas" char="{" char1="."/>
0218                                 <RegExpr context="Proptar" attribute="Brackets" String="\.(?!\d)"/>
0219                                 <RegExpr context="#stay" attribute="Float" String="\.(?=\d)"/>
0220 
0221                                 <AnyChar context="#stay" attribute="Brackets" String="()[]{},:;"/>
0222                                 <AnyChar context="#stay" attribute="Symbols"  String="+-*/=!@$%^&amp;&lt;&gt;|?"/>
0223                                 <HlCChar context="#stay" attribute="Char"/>
0224                         </context>
0225 
0226                         <context name="stringescape" attribute="String" lineEndContext="#stay">
0227                                 <RegExpr attribute="String Char" String="\\[&quot;abfnrtv\\]" context="#stay"/>
0228                         </context>
0229 
0230                         <context name="string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
0231                                 <IncludeRules context="stringescape"/>
0232                                 <DetectChar context="#pop" attribute="String" char="&quot;" endRegion="String"/>
0233                         </context>
0234                         <context name="tripleq-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
0235                                 <StringDetect context="#pop" attribute="String" String="&quot;&quot;&quot;" endRegion="String"/>
0236                         </context>
0237                         <context name="raw-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
0238                                 <Detect2Chars context="#stay" attribute="String Char" char="&quot;" char1="&quot;"/>
0239                                 <DetectChar context="#pop" attribute="String" char="&quot;" endRegion="String"/>
0240                         </context>
0241                         <context name="re-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
0242                                 <DetectChar context="#pop" attribute="String" char="&quot;" endRegion="String"/>
0243                                 <DetectChar context="#stay" attribute="String" char="/"/> <!-- Avoid closing string by JavaScript -->
0244                                 <IncludeRules context="Regular Expression##JavaScript"/>
0245                         </context>
0246 
0247                         <context name="Comment1" attribute="Comment" lineEndContext="#pop">
0248                                 <LineContinue attribute="Comment" context="#stay"/>
0249                                 <IncludeRules context="##Comments"/>
0250                         </context>
0251 
0252                         <context name="DocComment1" attribute="DocComment" lineEndContext="#pop">
0253                                 <LineContinue attribute="DocComment" context="#stay"/>
0254                         </context>
0255 
0256                         <context name="DocComment2" attribute="DocComment" lineEndContext="#stay" noIndentationBasedFolding="true">
0257                                 <LineContinue attribute="DocComment" context="#stay"/>
0258                                 <StringDetect attribute="DocComment" context="DocComment2" String="##[" beginRegion="DocComment"/>
0259                                 <StringDetect attribute="DocComment" context="#pop" String="]##" endRegion="DocComment"/>
0260                         </context>
0261 
0262                         <context name="Comment2" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
0263                                 <LineContinue attribute="Comment" context="#stay"/>
0264                                 <Detect2Chars attribute="Comment" context="Comment2" char="#" char1="[" beginRegion="Comment"/>
0265                                 <Detect2Chars attribute="Comment" context="#pop" char="]" char1="#" endRegion="Comment"/>
0266                                 <IncludeRules context="##Comments"/>
0267                         </context>
0268 
0269                         <context name="Start-Typetar" attribute="TypeDefs" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!Typetar">
0270                                 <DetectSpaces context="#stay" attribute="Normal Text"/>
0271                         </context>
0272                         <context name="Typetar" attribute="TypeDefs" lineEndContext="#pop">
0273                                 <DetectChar context="#stay" attribute="Brackets" char="."/>
0274                                 <DetectChar context="#pop" char="#" lookAhead="true"/>
0275                                 <DetectSpaces context="#pop" attribute="Normal Text"/>
0276                                 <AnyChar context="#pop" attribute="Brackets" String="()[]{},:;"/>
0277                                 <AnyChar context="#pop" attribute="Symbols"  String="+-*/=!@$%^&amp;&lt;&gt;"/>
0278                                 <keyword context="#pop" attribute="Operators" String="operators"/>
0279                         </context>
0280 
0281                         <context name="Start-Proctar" attribute="TypeDefs" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!Proctar">
0282                                 <DetectSpaces context="#stay" attribute="Normal Text"/>
0283                         </context>
0284                         <context name="Proctar" attribute="ProcDefs" lineEndContext="#pop">
0285                                 <DetectChar context="QuoteProctar" attribute="ProcDefs" char="`"/>
0286                                 <DetectChar context="#stay" attribute="Brackets" char="."/>
0287                                 <DetectChar context="#pop" char="#" lookAhead="true"/>
0288                                 <DetectSpaces context="#pop" attribute="Normal Text"/>
0289                                 <AnyChar context="#pop" attribute="Brackets" String="()[]{},:;"/>
0290                                 <AnyChar context="#pop" attribute="Symbols"  String="+-*/=!@$%^&amp;&lt;&gt;"/>
0291                         </context>
0292 
0293                         <context name="QuoteProctar" attribute="ProcDefs" lineEndContext="#pop">
0294                                 <DetectChar context="#pop" attribute="ProcDefs" char="`"/>
0295                         </context>
0296 
0297                         <context name="Pragmatar" attribute="Pragmas" lineEndContext="#stay" noIndentationBasedFolding="true">
0298                                 <Detect2Chars context="#pop" attribute="Pragmas" char="." char1="}"/>
0299                         </context>
0300 
0301                         <context name="Proptar" attribute="Props" lineEndContext="#pop">
0302                                 <keyword context="#pop" attribute="Types" String="types"/>
0303                                 <RegExpr context="#pop" attribute="Types" String="_*[A-Z]\w*"/>
0304                                 <RegExpr context="#pop" attribute="Funcs" String="_*[a-z]\w*(?=\()"/>
0305                                 <RegExpr context="#pop" attribute="Props" String="_*[a-z]\w*"/>
0306                                 <RegExpr context="#pop" attribute="Brackets" String="\.+"/>
0307                         </context>
0308                 </contexts>
0309 
0310                 <itemDatas>
0311                         <itemData name="Normal Text" defStyleNum="dsNormal"    spellChecking="false"/>
0312                         <itemData name="Keywords"    defStyleNum="dsKeyword"   spellChecking="false"/>
0313                         <itemData name="Controls"    defStyleNum="dsControlFlow" spellChecking="false"/>
0314                         <itemData name="Pragmas"     defStyleNum="dsAttribute" spellChecking="false"/>
0315                         <itemData name="Types"       defStyleNum="dsAttribute" spellChecking="false"/>
0316                         <itemData name="Props"       defStyleNum="dsAttribute" spellChecking="false"/>
0317                         <itemData name="Funcs"       defStyleNum="dsFunction"  spellChecking="false"/>
0318                         <itemData name="Attrs"       defStyleNum="dsDataType"  spellChecking="false"/>
0319                         <itemData name="Others"      defStyleNum="dsOthers"    spellChecking="false"/>
0320                         <itemData name="Operators"   defStyleNum="dsComment"   spellChecking="false" bold="true" italic="false"/>
0321                         <itemData name="Constants"   defStyleNum="dsConstant"  spellChecking="false" bold="true"/>
0322 
0323                         <itemData name="TypeDefs"    defStyleNum="dsDataType" spellChecking="false" bold="true"/>
0324                         <itemData name="ProcDefs"    defStyleNum="dsString"   spellChecking="false" bold="true"/>
0325 
0326                         <itemData name="Brackets"    defStyleNum="dsKeyword"  spellChecking="false"/>
0327                         <itemData name="Symbols"     defStyleNum="dsComment"  spellChecking="false" italic="false"/>
0328 
0329                         <itemData name="Decimal"     defStyleNum="dsDecVal"   spellChecking="false"/>
0330                         <itemData name="Hex"         defStyleNum="dsBaseN"    spellChecking="false"/>
0331                         <itemData name="Binary"      defStyleNum="dsBaseN"    spellChecking="false"/>
0332                         <itemData name="Octal"       defStyleNum="dsBaseN"    spellChecking="false"/>
0333                         <itemData name="Float"       defStyleNum="dsFloat"    spellChecking="false"/>
0334                         <itemData name="Char"        defStyleNum="dsChar"     spellChecking="false"/>
0335                         <itemData name="String"      defStyleNum="dsString"   spellChecking="false"/>
0336                         <itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>
0337                         <itemData name="Comment"     defStyleNum="dsComment" />
0338                         <itemData name="DocComment"  defStyleNum="dsDocumentation" spellChecking="true"/>
0339                 </itemDatas>
0340         </highlighting>
0341 
0342         <general>
0343                 <comments>
0344                         <comment name="singleLine" start="#" position="afterwhitespace"/>
0345                         <comment name="multiLine" start="#[" end="]#" region="Comment"/>
0346                 </comments>
0347                 <folding indentationsensitive="true"/>
0348                 <keywords casesensitive="0"/>
0349         </general>
0350 
0351 </language>
0352 <!-- kate: replace-tabs off; -->