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

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!--
0003   ====================================================================
0004   Julia syntax highlighting file for the KDE editors Kate and Kwrite
0005   ====================================================================
0006 
0007   This was adapted from the Matlab syntax highlighting file
0008 
0009   Most of this XML file is straightforward. Only the character ' (&apos;)
0010   needs nontrivial treatment, since it is both a postfix operator indicating
0011   complex conjugate transpose (adjoint) and a character delimiter. It is an
0012   adjoint operator in the following positions:
0013   1) immediately after an identifier (variable, function, but not keyword)
0014   2) immediately after a number literal
0015   3) immediately after the closing parenthesis ), ] and }
0016   4) immediately after a simple transpose operator .'
0017   5) immediately after another adjoint operator '
0018   Otherwise it is a character delimiter.
0019 
0020   This is implemented using look-ahead regexps. If one of the entities in the
0021   above cases 1-4 (identifier, number literal, ...) matches and look-ahead
0022   shows that it is followed by a ', the entity is highlighted and control is
0023   passed to the special context _adjoint, whose sole purpose is to correctly
0024   highlight a series of ' (thus covering case 5 as well). _adjoint immediately
0025   returns to the default context _normal.
0026 
0027   Author: Timothy E. Holy, Washington University in St. Louis
0028 -->
0029 
0030 <!DOCTYPE language
0031 [
0032   <!ENTITY int "[0-9]+(_[0-9]+)*">
0033   <!ENTITY hex "[0-9a-fA-F]+(_[0-9a-fA-F]+)*">
0034   <!ENTITY function_disallowed_chars "\s.,(){}\[\];:&#37;'&quot;&amp;$=/?\|^#@">
0035   <!ENTITY function_disallowed_first_char "0-9!&function_disallowed_chars;">
0036   <!ENTITY function_begin_boundary "(?:(?&lt;=[&function_disallowed_chars;!]|^)(?=[^&function_disallowed_first_char;]))">
0037 ]>
0038 
0039 <language name="Julia" style="julia" indenter="julia" section="Sources" version="14" kateversion="5.62" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
0040 
0041   <highlighting>
0042     <list name="cflow_begin">
0043       <item>for</item>
0044       <item>while</item>
0045       <item>if</item>
0046       <item>begin</item>
0047       <item>do</item>
0048     </list>
0049     <list name="cflow_eb">
0050       <item>else</item>
0051       <item>elseif</item>
0052       <item>try</item>
0053       <item>catch</item>
0054       <item>finally</item>
0055     </list>
0056     <list name="cflow">
0057       <item>break</item>
0058       <item>return</item>
0059       <item>continue</item>
0060     </list>
0061     <list name="block_begin">
0062       <item>function</item>
0063       <item>let</item>
0064       <item>quote</item>
0065       <item>type</item>
0066       <item>struct</item>
0067       <item>module</item>
0068       <item>baremodule</item>
0069       <item>macro</item>
0070     </list>
0071     <list name="block_end">
0072       <item>end</item>
0073     </list>
0074     <list name="keywords">
0075       <item>abstract</item>
0076       <item>bitstype</item>
0077       <item>ccall</item>
0078       <item>const</item>
0079       <item>export</item>
0080       <item>global</item>
0081       <item>in</item>
0082       <item>local</item>
0083       <item>macro</item>
0084       <item>module</item>
0085       <item>where</item>
0086       <item>new</item>
0087       <item>in</item>
0088       <item>struct</item>
0089       <item>ans</item>
0090       <!-- C Interface -->
0091       <item>ccall</item>
0092     </list>
0093     <list name="import_keywords">
0094       <item>import</item>
0095       <item>using</item>
0096     </list>
0097     <list name="types">
0098       <item>AbstractArray</item>
0099       <item>AbstractMatrix</item>
0100       <item>AbstractVector</item>
0101       <item>Any</item>
0102       <item>Array</item>
0103       <item>ASCIIString</item>
0104       <item>Associative</item>
0105       <item>Bool</item>
0106       <item>ByteString</item>
0107       <item>Char</item>
0108       <item>Complex</item>
0109       <item>Complex64</item>
0110       <item>Complex128</item>
0111       <item>ComplexPair</item>
0112       <item>DArray</item>
0113       <item>Dict</item>
0114       <item>Exception</item>
0115       <item>Expr</item>
0116       <item>Float</item>
0117       <item>Float32</item>
0118       <item>Float64</item>
0119       <item>Function</item>
0120       <item>ObjectIdDict</item>
0121       <item>Int</item>
0122       <item>Int8</item>
0123       <item>Int16</item>
0124       <item>Int32</item>
0125       <item>Int64</item>
0126       <item>Integer</item>
0127       <item>IntSet</item>
0128       <item>IO</item>
0129       <item>IOStream</item>
0130       <item>Matrix</item>
0131       <item>Nothing</item>
0132       <item>None</item>
0133       <item>NTuple</item>
0134       <item>Number</item>
0135       <item>Ptr</item>
0136       <item>Range</item>
0137       <item>Range1</item>
0138       <item>Ranges</item>
0139       <item>Rational</item>
0140       <item>Real</item>
0141       <item>Regex</item>
0142       <item>RegexMatch</item>
0143       <item>Set</item>
0144       <item>Signed</item>
0145       <item>StridedArray</item>
0146       <item>StridedMatrix</item>
0147       <item>StridedVecOrMat</item>
0148       <item>StridedVector</item>
0149       <item>String</item>
0150       <item>SubArray</item>
0151       <item>SubString</item>
0152       <item>Symbol</item>
0153       <item>Task</item>
0154       <item>Tuple</item>
0155       <item>Type</item>
0156       <item>UInt</item>
0157       <item>UInt8</item>
0158       <item>UInt16</item>
0159       <item>UInt32</item>
0160       <item>UInt64</item>
0161       <item>Union</item>
0162       <item>Unsigned</item>
0163       <item>UTF8String</item>
0164       <item>VecOrMat</item>
0165       <item>Vector</item>
0166       <item>Void</item>
0167       <item>WeakRef</item>
0168       <!-- Essentials -->
0169       <item>Missing</item>
0170       <item>Cmd</item>
0171       <item>EnvDict</item>
0172       <item>VersionNumber</item>
0173       <item>ArgumentError</item>
0174       <item>AssertionError</item>
0175       <item>BoundsError</item>
0176       <item>CompositeException</item>
0177       <item>DimensionMismatch</item>
0178       <item>DivideError</item>
0179       <item>DomainError</item>
0180       <item>EOFError</item>
0181       <item>ErrorException</item>
0182       <item>InexactError</item>
0183       <item>InterruptException</item>
0184       <item>KeyError</item>
0185       <item>LoadError</item>
0186       <item>MethodError</item>
0187       <item>MissingException</item>
0188       <item>OutOfMemoryError</item>
0189       <item>ReadOnlyMemoryError</item>
0190       <item>OverflowError</item>
0191       <item>StackOverflowError</item>
0192       <item>SystemError</item>
0193       <item>TypeError</item>
0194       <item>UndefKeywordError</item>
0195       <item>UndefRefError</item>
0196       <item>UndefVarError</item>
0197       <item>StringIndexError</item>
0198       <item>InitError</item>
0199       <item>ExponentialBackOff</item>
0200       <item>Timer</item>
0201       <item>AsyncCondition</item>
0202       <item>ParseError</item>
0203       <!-- Collections and Data Structures -->
0204       <item>IteratorEltype</item>
0205       <item>AbstractRange</item>
0206       <item>OrdinalRange</item>
0207       <item>AbstractUnitRange</item>
0208       <item>StepRange</item>
0209       <item>UnitRange</item>
0210       <item>LinRange</item>
0211       <item>IdDict</item>
0212       <item>WeakKeyDict</item>
0213       <item>ImmutableDict</item>
0214       <item>BitSet</item>
0215       <item>Pair</item>
0216       <!-- Math -->
0217       <item>OneTo</item>
0218       <item>StepRangeLen</item>
0219       <item>RoundingMode</item>
0220       <!-- Numbers -->
0221       <item>AbstractFloat</item>
0222       <item>AbstractIrrational</item>
0223       <item>Float16</item>
0224       <item>Float32</item>
0225       <item>Float64</item>
0226       <item>BigFloat</item>
0227       <item>Int128</item>
0228       <item>UInt128</item>
0229       <item>BigInt</item>
0230       <item>ComplexF16</item>
0231       <item>ComplexF32</item>
0232       <item>ComplexF64</item>
0233       <item>Irrational</item>
0234       <item>UnionAll</item>
0235       <item>NamedTuple</item>
0236       <item>Val</item>
0237       <item>Vararg</item>
0238       <item>Some</item>
0239       <!-- String -->
0240       <item>AbstractChar</item>
0241       <item>SubstitutionString</item>
0242       <item>AbstractString</item>
0243       <!-- Array -->
0244       <item>UndefInitializer</item>
0245       <item>DenseArray</item>
0246       <item>DenseVector</item>
0247       <item>DenseMatrix</item>
0248       <item>BitArray</item>
0249       <item>IndexStyle</item>
0250       <item>IndexLinear</item>
0251       <item>IndexCartesian</item>
0252       <item>BroadcastStyle</item>
0253       <item>AbstractArrayStyle</item>
0254       <item>ArrayStyle</item>
0255       <item>DefaultArrayStyle</item>
0256       <item>Colon</item>
0257       <item>CartesianIndex</item>
0258       <item>CartesianIndices</item>
0259       <item>Dims</item>
0260       <item>LinearIndices</item>
0261       <item>PermutedDimsArray</item>
0262       <!-- Tasks -->
0263       <item>Condition</item>
0264       <item>Channel</item>
0265       <!-- Threads -->
0266       <item>Atomic</item>
0267       <item>AbstractLock</item>
0268       <item>ReentrantLock</item>
0269       <item>Mutex</item>
0270       <item>SpinLock</item>
0271       <item>RecursiveSpinLock</item>
0272       <item>Semaphore</item>
0273       <!-- Filesystem (Libc) -->
0274       <item>RawFD</item>
0275       <!-- I/O and Network -->
0276       <item>IOBuffer</item>
0277       <item>IOContext</item>
0278       <item>TextDisplay</item>
0279       <item>AbstractDisplay</item>
0280       <!-- Sort -->
0281       <item>PartialQuickSort</item>
0282       <!-- Iteration utilities -->
0283       <item>Stateful</item>
0284       <!-- Iterators -->
0285       <item>Pairs</item>
0286       <!-- C Interface -->
0287       <item>CFunction</item>
0288       <item>Ptr</item>
0289       <item>Ref</item>
0290       <item>Cchar</item>
0291       <item>Cuchar</item>
0292       <item>Cshort</item>
0293       <item>Cstring</item>
0294       <item>Cushort</item>
0295       <item>Cint</item>
0296       <item>Cuint</item>
0297       <item>Clong</item>
0298       <item>Culong</item>
0299       <item>Clonglong</item>
0300       <item>Culonglong</item>
0301       <item>Cintmax_t</item>
0302       <item>Cuintmax_t</item>
0303       <item>Csize_t</item>
0304       <item>Cssize_t</item>
0305       <item>Cptrdiff_t</item>
0306       <item>Cwchar_t</item>
0307       <item>Cwstring</item>
0308       <item>Cfloat</item>
0309       <item>Cdouble</item>
0310       <!-- C Standard Library -->
0311       <item>TmStruct</item>
0312       <!-- StackTraces -->
0313       <item>StackFrame</item>
0314       <item>StackTrace</item>
0315       <!-- Base64 -->
0316       <item>Base64EncodePipe</item>
0317       <item>Base64DecodePipe</item>
0318       <!-- Dates -->
0319       <item>Period</item>
0320       <item>CompoundPeriod</item>
0321       <item>Instant</item>
0322       <item>UTInstant</item>
0323       <item>TimeType</item>
0324       <item>DateTime</item>
0325       <item>Date</item>
0326       <item>Time</item>
0327       <item>DateFormat</item>
0328       <!-- Base.CoreLogging -->
0329       <item>LogLevel</item>
0330       <item>AbstractLogger</item>
0331       <item>NullLogger</item>
0332       <item>ConsoleLogger</item>
0333       <item>SimpleLogger</item>
0334       <!-- Mmap -->
0335       <item>Anonymous</item>
0336       <!-- Random -->
0337       <item>RandomDevice</item>
0338       <item>MersenneTwister</item>
0339       <!-- SharedArrays -->
0340       <item>SharedArray</item>
0341       <!-- Sockets -->
0342       <item>IPv4</item>
0343       <item>IPv6</item>
0344       <item>TCPSocket</item>
0345       <item>UDPSocket</item>
0346       <!-- SparseArrays -->
0347       <item>SparseVector</item>
0348       <item>SparseMatrixCSC</item>
0349       <!-- Others -->
0350       <item>AbstractChannel</item>
0351       <item>AbstractSet</item>
0352       <item>AbstractDict</item>
0353       <item>BitMatrix</item>
0354       <item>BitVector</item>
0355       <item>Enum</item>
0356       <item>CapturedException</item>
0357       <item>InvalidStateException</item>
0358       <item>ProcessFailedException</item>
0359     </list>
0360 
0361     <list name="constants">
0362       <!-- Constants -->
0363       <item>nothing</item>
0364       <item>PROGRAM_FILE</item>
0365       <item>ARGS</item>
0366       <item>C_NULL</item>
0367       <item>VERSION</item>
0368       <item>LOAD_PATH</item>
0369       <item>DEPOT_PATH</item>
0370       <!-- Sys -->
0371       <item>BINDIR</item>
0372       <item>CPU_THREADS</item>
0373       <item>WORD_SIZE</item>
0374       <item>KERNEL</item>
0375       <item>ARCH</item>
0376       <item>MACHINE</item>
0377       <!-- Essentials -->
0378       <item>missing</item>
0379       <item>devnull</item>
0380       <item>ENV</item>
0381       <!-- I/O and Network -->
0382       <item>stdout</item>
0383       <item>stderr</item>
0384       <item>stdin</item>
0385       <item>ENDIAN_BOM</item>
0386       <!-- Numbers -->
0387       <item>im</item>
0388       <item>pi</item>
0389       <item>&#960;</item>
0390       <item>e</item>
0391       <item>&#8495;</item>
0392       <item>catalan</item>
0393       <item>eulergamma</item>
0394       <item>&#611;</item>
0395       <item>golden</item>
0396       <item>&#966;</item>
0397       <item>Inf</item>
0398       <item>Inf64</item>
0399       <item>Inf32</item>
0400       <item>Inf16</item>
0401       <item>NaN</item>
0402       <item>NaN64</item>
0403       <item>NaN32</item>
0404       <item>NaN16</item>
0405       <!-- Math -->
0406       <item>RoundNearest</item>
0407       <item>RoundNearestTiesAway</item>
0408       <item>RoundNearestTiesUp</item>
0409       <item>RoundToZero</item>
0410       <item>RoundFromZero</item>
0411       <item>RoundUp</item>
0412       <item>RoundDown</item>
0413       <!-- Array -->
0414       <item>AbstractVecOrMat</item>
0415       <item>undef</item>
0416       <item>VecOrMat</item>
0417       <item>DenseVecOrMat</item>
0418       <item>StridedArray</item>
0419       <item>StridedVector</item>
0420       <item>StridedMatrix</item>
0421       <item>StridedVecOrMat</item>
0422       <!-- Sort -->
0423       <item>InsertionSort</item>
0424       <item>MergeSort</item>
0425       <item>QuickSort</item>
0426       <item>InsertionSort</item>
0427       <!-- Libc -->
0428       <item>MS_ASYNC</item>
0429       <item>MS_INVALIDATE</item>
0430       <item>MS_SYNC</item>
0431     </list>
0432     <list name="booleans">
0433       <item>true</item>
0434       <item>false</item>
0435     </list>
0436     <list name="modules">
0437       <item>Base</item>
0438       <item>Core</item>
0439       <item>Main</item>
0440       <item>Meta</item>
0441       <item>StackTraces</item>
0442       <item>Sys</item>
0443       <item>Libc</item>
0444       <item>Docs</item>
0445       <item>Threads</item>
0446       <item>Iterators</item>
0447       <item>Broadcast</item>
0448       <item>MathConstants</item>
0449       <item>Math</item>
0450       <item>Unicode</item>
0451       <item>Sort</item>
0452       <item>Artifacts</item>
0453       <item>Base64</item>
0454       <item>CRC32c</item>
0455       <item>Dates</item>
0456       <item>DelimitedFiles</item>
0457       <item>Distributed</item>
0458       <item>Downloads</item>
0459       <item>FileWatching</item>
0460       <item>Future</item>
0461       <item>InteractiveUtils</item>
0462       <item>LibGit2</item>
0463       <item>Libc</item>
0464       <item>Libdl</item>
0465       <item>LinearAlgebra</item>
0466       <item>Logging</item>
0467       <item>Mmap</item>
0468       <item>Pkg</item>
0469       <item>Printf</item>
0470       <item>Profile</item>
0471       <item>REPL</item>
0472       <item>Random</item>
0473       <item>SHA</item>
0474       <item>Serialization</item>
0475       <item>SharedArrays</item>
0476       <item>Sockets</item>
0477       <item>SparseArrays</item>
0478       <item>Statistics</item>
0479       <item>SuiteSparse</item>
0480       <item>TOML</item>
0481       <item>Test</item>
0482       <item>UUIDs</item>
0483       <item>CoreLogging</item>
0484     </list>
0485     <contexts>
0486 
0487       <context name="_normal" attribute="Normal Text" lineEndContext="#stay">
0488         <DetectSpaces />
0489 
0490         <!-- Blocks -->
0491         <keyword context="#stay" attribute="Keyword" String="block_begin"
0492                  beginRegion="block" />
0493         <keyword context="controlflow-block" attribute="Control Flow" String="cflow_begin"
0494                  beginRegion="block" />
0495         <keyword context="#stay" attribute="Control Flow" String="cflow"/>
0496         <WordDetect context="#stay" attribute="Keyword" String="end"
0497                     endRegion="block" />
0498 
0499         <IncludeRules context="coderoot"/>
0500       </context>
0501 
0502       <context name="subsetting" attribute="Normal Text" lineEndContext="#stay">
0503         <DetectSpaces attribute="Normal Text"/>
0504         <WordDetect context="#stay" attribute="Keyword" String="end"/>
0505         <IncludeRules context="coderoot"/>
0506         <DetectChar attribute="Normal Text" context="#pop" char="]"/>
0507       </context>
0508 
0509       <context name="coderoot" attribute="Normal Text" lineEndContext="#stay">
0510         <!-- functions have to be before built-in types to properly match constructors -->
0511         <RegExpr context="#stay" attribute="Function" String="&function_begin_boundary;[^&function_disallowed_first_char;][^&function_disallowed_chars;]*!?(?=\.?\()" />
0512         <RegExpr context="parametric-constructor" attribute="Function" String="&function_begin_boundary;[^&function_disallowed_first_char;][^&function_disallowed_chars;]*(?=\{.+\}.?\()" />
0513 
0514         <IncludeRules context="comment-rules"/>
0515 
0516         <!-- Keywords, types -->
0517         <RegExpr context="#stay" attribute="Keyword" String="\b(abstract|primitive)\s+type\b|\bmutable\s+struct\b" beginRegion="block"/>
0518         <keyword context="#stay" attribute="Keyword" String="keywords" />
0519         <keyword context="import" attribute="Import" String="import_keywords" />
0520         <keyword context="#stay" attribute="Data Type" String="types" />
0521         <keyword context="#stay" attribute="Boolean" String="booleans" />
0522         <keyword context="#stay" attribute="Constant" String="constants" />
0523         <keyword context="#stay" attribute="Module" String="modules" />
0524 
0525         <!-- Strings -->
0526         <StringDetect attribute="String" context="Block-String" String="&quot;&quot;&quot;" beginRegion="block-string"/>
0527         <DetectChar attribute="String" context="String" char="&quot;"/>
0528         <!-- Regular expressions -->
0529         <StringDetect attribute="String" context="Regex-Block-String" String="r&quot;&quot;&quot;" beginRegion="block-string"/>
0530         <Detect2Chars attribute="String" context="Regex-String" char="r" char1="&quot;"/>
0531         <!-- Byte Arrays -->
0532         <StringDetect attribute="String" context="Block-String" String="b&quot;&quot;&quot;" beginRegion="block-string"/>
0533         <Detect2Chars attribute="String" context="String" char="b" char1="&quot;"/>
0534         <!-- Version Number -->
0535         <Detect2Chars attribute="String" context="String" char="v" char1="&quot;"/>
0536         <!-- Raw Strings -->
0537         <StringDetect attribute="String" context="Raw-Block-String" String="raw&quot;&quot;&quot;" beginRegion="block-string"/>
0538         <StringDetect attribute="String" context="Raw-String" String="raw&quot;"/>
0539         <!-- Documentation -->
0540         <StringDetect attribute="String" context="Block-String" String="doc&quot;&quot;&quot;" beginRegion="block-string"/>
0541         <StringDetect attribute="String" context="String" String="doc&quot;"/>
0542 
0543         <!-- For Running External Programs -->
0544         <StringDetect attribute="Command String" context="Block-Backtick-String" String="```" beginRegion="block-string"/>
0545         <DetectChar attribute="Command String" context="Backtick-String" char="`"/>
0546 
0547         <!-- Subsetting. This is needed because the `end` keyword has a special meaning in subsetting operations and should not be used for folding -->
0548         <DetectChar attribute="Normal Text" context="subsetting" char="["/>
0549 
0550         <Detect2Chars context="type-annotation" attribute="Operator" char=":" char1=":"/>
0551 
0552         <!-- subtype operator -->
0553         <Detect2Chars context="type-annotation" attribute="Operator" char="&lt;" char1=":"/>
0554 
0555         <!-- Character operators
0556         this was generated semi-automatically using operators in https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm -->
0557         <RegExpr context="#stay" attribute="Operator" String="\.\.\.?|[:$]=?|\.?(?:&gt;&gt;&gt;=|&lt;--&gt;|//=|&lt;&lt;=|&gt;&gt;=|--&gt;|&lt;--|===|!==|&gt;&gt;&gt;|[-+*/\\^÷%|&amp;⊻]=|=&gt;|&amp;&amp;|\|\|?|&gt;=|&lt;=|==|!=|&lt;\||\|&gt;|\+\+|//|&lt;&lt;|&gt;&gt;|&lt;:|&gt;:|[\Q=≔⩴≕~←→↔↚↛↞↠↢↣↦↤↮⇎⇍⇏⇐⇒⇔⇴⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤌⤍⤎⤏⤐⤑⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥊⥋⥎⥐⥒⥓⥖⥗⥚⥛⥞⥟⥢⥤⥦⥧⥨⥩⥪⥫⥬⥭⥰⧴⬱⬰⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌←→⇜⇝↜↝↩↪↫↬↼↽⇀⇁⇄⇆⇇⇉⇋⇌⇚⇛⇠⇢↷↶↺↻&gt;&lt;≥≤≡≠≢∈∉∋∌⊆⊈⊂⊄⊊∝∊∍∥∦∷∺∻∽∾≁≃≂≄≅≆≇≈≉≊≋≌≍≎≐≑≒≓≖≗≘≙≚≛≜≝≞≟≣≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊃⊅⊇⊉⊋⊏⊐⊑⊒⊜⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⋍⋐⋑⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⟈⟉⟒⦷⧀⧁⧡⧣⧤⧥⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫷⫸⫹⫺⊢⊣⟂⫪⫫…⁝⋮⋱⋰⋯+-−¦|⊕⊖⊞⊟∪∨⊔±∓∔∸≏⊎⊻⊽⋎⋓⧺⧻⨈⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨹⨺⩁⩂⩅⩊⩌⩏⩐⩒⩔⩖⩗⩛⩝⩡⩢⩣*/⌿÷%&amp;··⋅∘×\∩∧⊗⊘⊙⊚⊛⊠⊡⊓∗∙∤⅋≀⊼⋄⋆⋇⋉⋊⋋⋌⋏⋒⟑⦸⦼⦾⦿⧶⧷⨇⨰⨱⨲⨳⨴⨵⨶⨷⨸⨻⨼⨽⩀⩃⩄⩋⩍⩎⩑⩓⩕⩘⩚⩜⩞⩟⩠⫛⊍▷⨝⟕⟖⟗⨟^↑↓⇵⟰⟱⤈⤉⤊⤋⤒⤓⥉⥌⥍⥏⥑⥔⥕⥘⥙⥜⥝⥠⥡⥣⥥⥮⥯↑↓\E])" />
0558 
0559         <!-- Identifiers, numbers -->
0560         <!-- We can't use HlCHex, Int, and Float because we need to allow the "im" at the end of complex numbers -->
0561         <DetectIdentifier context="_adjoint" attribute="Variable" />
0562         <RegExpr context="_adjoint" attribute="Float" String="0x(&hex;\.?|(&hex;)?\.&hex;)[pP][+-]?[0-9]+(im)?"/>
0563         <RegExpr context="_adjoint" attribute="Hex" String="0x&hex;(im)?" />
0564         <RegExpr context="_adjoint" attribute="Octal" String="0o[0-7]+(_[0-7]+)*(im)?" />
0565         <RegExpr context="_adjoint" attribute="Binary" String="0b[01]+(_[01]+)*(im)?" />
0566         <RegExpr context="_adjoint" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?" />
0567 
0568         <!-- If ' is not the adjoint operator, it starts a character or an unterminated char -->
0569         <RegExpr context="#stay" attribute="Char" String="'[^']*(''[^']*)*'(?=[^']|$)" />
0570         <RegExpr context="#stay" attribute="Incomplete Char" String="'[^']*(''[^']*)*" />
0571 
0572         <RegExpr context="#stay" attribute="Macro" String="@[a-zA-Z_]\w*" />
0573       </context>
0574 
0575       <!-- Context for user block (#BEGIN...#END) -->
0576       <context name="region_marker" lineEndContext="#pop" attribute="FoldingComment" >
0577         <IncludeRules context="1-comment" />
0578       </context>
0579 
0580       <!-- Context entered after encountering an identifier or a number -->
0581       <context name="_adjoint" attribute="Operator" lineEndContext="#pop" fallthroughContext="#pop">
0582         <DetectChar attribute="Operator" char="'" />
0583       </context>
0584 
0585       <!-- Context entered after encountering an " (string) -->
0586       <context attribute="String" lineEndContext="#pop" name="String">
0587         <DetectSpaces />
0588         <LineContinue attribute="String" context="#stay"/>
0589         <HlCStringChar attribute="String Char" context="#stay"/>
0590         <IncludeRules context="string-interpolation-rules"/>
0591         <DetectChar attribute="String" context="#pop" char="&quot;"/>
0592       </context>
0593       <context attribute="String" lineEndContext="#stay" name="Block-String">
0594         <DetectSpaces />
0595         <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" endRegion="block-string"/>
0596         <IncludeRules context="string-interpolation-rules"/>
0597         <HlCStringChar attribute="String Char" context="#stay"/>
0598       </context>
0599       <!-- Raw String -->
0600       <context attribute="String" lineEndContext="#pop" name="Raw-String">
0601         <DetectSpaces />
0602         <LineContinue attribute="String" context="#stay"/>
0603         <RegExpr attribute="String Char" context="#stay" String="(\\\\)*\\&quot;|(\\\\)+(?=&quot;)"/>
0604         <DetectChar attribute="String" context="#pop" char="&quot;"/>
0605       </context>
0606       <context attribute="String" lineEndContext="#stay" name="Raw-Block-String">
0607         <DetectSpaces />
0608         <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" endRegion="block-string"/>
0609       </context>
0610       <!-- Command String -->
0611       <context attribute="Command String" lineEndContext="#pop" name="Backtick-String">
0612         <DetectSpaces />
0613         <LineContinue attribute="Command String" context="#stay"/>
0614         <HlCStringChar attribute="String Char" context="#stay"/>
0615         <DetectChar attribute="Command String" context="#pop" char="`"/>
0616       </context>
0617       <context attribute="Command String" lineEndContext="#stay" name="Block-Backtick-String">
0618         <DetectSpaces />
0619         <StringDetect attribute="Command String" context="#pop" String="```" endRegion="block-string"/>
0620         <HlCStringChar attribute="String Char" context="#stay"/>
0621       </context>
0622 
0623       <!-- Regular expressions -->
0624       <context attribute="String" lineEndContext="#pop" name="Regex-String">
0625         <RegExpr attribute="String" context="#pop" String="&quot;[imsx]{1,4}"/>
0626         <Detect2Chars attribute="Char" context="Regex-Square-Bracket" char="[" char1="^"/>
0627         <DetectChar attribute="Char" context="Regex-Square-Bracket" char="["/>
0628         <IncludeRules context="Default-Regex"/>
0629         <IncludeRules context="String"/>
0630       </context>
0631       <context attribute="String" lineEndContext="#stay" name="Regex-Block-String">
0632         <RegExpr attribute="String" context="#pop" String="&quot;{3}[imsx]{1,4}" endRegion="block-string"/>
0633         <Detect2Chars attribute="Char" context="Block-Regex-Square-Bracket" char="[" char1="^"/>
0634         <DetectChar attribute="Char" context="Block-Regex-Square-Bracket" char="["/>
0635         <IncludeRules context="Default-Regex"/>
0636         <IncludeRules context="Block-String"/>
0637       </context>
0638 
0639       <context attribute="String" lineEndContext="#pop" name="Regex-Square-Bracket">
0640         <LineContinue attribute="String" context="#stay"/>
0641         <RegExpr attribute="String Char" context="#stay" String="\\." />
0642         <DetectChar attribute="Char" context="#pop" char="]"/>
0643         <DetectChar attribute="String" context="#pop" char="&quot;" lookAhead="true"/>
0644       </context>
0645       <context attribute="String" lineEndContext="#stay" name="Block-Regex-Square-Bracket">
0646         <RegExpr attribute="String Char" context="#stay" String="\\." />
0647         <DetectChar attribute="Char" context="#pop" char="]"/>
0648         <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" lookAhead="true"/>
0649       </context>
0650       <context attribute="String" lineEndContext="#stay" name="Default-Regex">
0651         <RegExpr attribute="String Char" context="#stay" String="\\." />
0652         <Detect2Chars attribute="Char" context="#stay" char="(" char1="?"/>
0653         <AnyChar attribute="Char" context="#stay" String="()|"/>
0654         <AnyChar attribute="String Char" context="#stay" String="?+*." />
0655       </context>
0656 
0657       <context name="string-interpolation-rules" lineEndContext="#stay" attribute="String">
0658         <Detect2Chars context="#stay" attribute="String" char="\" char1="$"/>
0659         <RegExpr context="string-interpolation" attribute="String Char" String="\$(?:\S)" lookAhead="true"/>
0660       </context>
0661       <context name="string-interpolation" lineEndContext="#stay" attribute="String">
0662         <DetectChar attribute="String Char" char="$"/>
0663         <DetectIdentifier attribute="Variable" context="#pop"/>
0664         <DetectChar char="(" context="string-interpolation-extended" attribute="Normal Text"/>
0665       </context>
0666       <context name="string-interpolation-extended" lineEndContext="#stay" attribute="Normal Text">
0667         <IncludeRules context="_normal"/>
0668         <DetectChar char="(" context="string-interpolation-internal" attribute="Normal Text"/>
0669         <DetectChar char=")" context="#pop#pop" attribute="Normal Text"/>
0670       </context>
0671       <context name="string-interpolation-internal" lineEndContext="#stay" attribute="Normal Text">
0672         <IncludeRules context="_normal"/>
0673         <DetectChar char="(" context="string-interpolation-internal" attribute="Normal Text"/>
0674         <DetectChar char=")" context="#pop" attribute="Normal Text"/>
0675       </context>
0676 
0677       <!-- 1-line comment: #pop@EOL  -->
0678       <context name="1-comment" lineEndContext="#pop" attribute="Comment">
0679         <DetectSpaces/>
0680         <IncludeRules context="##Comments"/>
0681         <DetectIdentifier/>
0682       </context>
0683 
0684       <context name="block-comment" lineEndContext="#stay" attribute="Comment">
0685         <Detect2Chars char="=" char1="#" context="#pop" attribute="Comment" endRegion="block-comment"/>
0686         <IncludeRules context="1-comment" />
0687       </context>
0688       <context name="controlflow-block" lineEndContext="#stay" attribute="Normal Text">
0689         <keyword context="#stay" attribute="Control Flow" String="cflow_eb" endRegion="block" beginRegion="block" />
0690         <WordDetect context="#pop" attribute="Control Flow" String="end" endRegion="block" />
0691         <IncludeRules context="_normal" />
0692       </context>
0693       <context name="parametric-type" lineEndContext="#stay" attribute="Data Type">
0694         <DetectChar char="{" context="parametric-type" attribute="Data Type"/>
0695         <DetectChar char="}" context="#pop" attribute="Data Type"/>
0696       </context>
0697       <context name="parametric-constructor" lineEndContext="#stay" attribute="Data Type">
0698         <DetectChar char="{" context="parametric-type" attribute="Data Type"/>
0699         <AnyChar String=",;()=:&gt;&lt;&amp;%*?[]^" attribute="Normal Text" context="#pop"/>
0700       </context>
0701 
0702       <!-- we have to allow spaces before the type, but switch to the parent context after the type -->
0703       <context name="type-annotation-internal" lineEndContext="#pop#pop" attribute="Data Type">
0704         <DetectChar char="{" context="parametric-type" attribute="Data Type"/>
0705         <AnyChar String=",;()=:&gt;&lt;&amp;%*?[]^}" context="#pop#pop" attribute="Normal Text"/>
0706         <DetectSpaces context="#pop#pop"/>
0707       </context>
0708       <context name="type-annotation" lineEndContext="#pop" attribute="Data Type">
0709         <DetectIdentifier context="type-annotation-internal" attribute="Data Type"/>
0710       </context>
0711 
0712       <!-- rules for comments, to be used by other contexts -->
0713       <context name="comment-rules" lineEndContext="#pop" attribute="Comment">
0714         <StringDetect String="#BEGIN" context="region_marker" attribute="FoldingComment" beginRegion="user_region" />
0715         <StringDetect String="#END" context="region_marker" attribute="FoldingComment" endRegion="user_region" />
0716         <Detect2Chars char="#" char1="=" context="block-comment" attribute="Comment" beginRegion="block-comment"/>
0717         <DetectChar char="#" context="1-comment" attribute="Comment"/>
0718       </context>
0719 
0720       <!-- context for imports -->
0721       <context name="import" lineEndContext="#stay" lineEmptyContext="#stay" attribute="Normal Text">
0722         <DetectSpaces attribute="Normal Text"/>
0723         <IncludeRules context="comment-rules"/>
0724         <RegExpr attribute="Module" context="import_list" String="[^:,\s]+"/>
0725       </context>
0726       <context name="import_list" lineEndContext="#pop#pop" attribute="Normal Text">
0727         <DetectSpaces attribute="Normal Text"/>
0728         <IncludeRules context="comment-rules"/>
0729         <DetectChar attribute="Normal Text" context="#pop" char=","/>
0730         <DetectChar attribute="Normal Text" context="#pop!import_vars" char=":"/>
0731       </context>
0732       <context name="import_vars" lineEndContext="#stay" lineEmptyContext="#stay" attribute="Normal Text">
0733         <DetectSpaces attribute="Normal Text"/>
0734         <IncludeRules context="comment-rules"/>
0735         <!-- we don't know if these are types, variables, or functions,
0736         so no highlighting here -->
0737         <RegExpr attribute="Normal Text" context="#stay" String="[^:,\s]+\s*(?=,)"/>
0738         <RegExpr attribute="Normal Text" context="#pop#pop" String="[^:,\s]+\s*(?![,:])"/>
0739       </context>
0740     </contexts>
0741 
0742     <itemDatas>
0743       <itemData name="Normal Text" defStyleNum="dsNormal" />
0744       <itemData name="Variable" defStyleNum="dsNormal" />
0745       <itemData name="Operator" defStyleNum="dsOperator"/>
0746       <itemData name="Float" defStyleNum="dsFloat" />
0747       <itemData name="Hex" defStyleNum="dsBaseN" />
0748       <itemData name="Octal" defStyleNum="dsBaseN" />
0749       <itemData name="Binary" defStyleNum="dsBaseN" />
0750       <itemData name="String" defStyleNum="dsString"/>
0751       <itemData name="String Char" defStyleNum="dsSpecialChar"/>
0752       <itemData name="Char" defStyleNum="dsChar"/>
0753       <itemData name="Incomplete Char" defStyleNum="dsChar"/>
0754       <itemData name="Keyword" defStyleNum="dsKeyword"/>
0755       <itemData name="Import" defStyleNum="dsImport"/>
0756       <itemData name="Control Flow" defStyleNum="dsControlFlow" />
0757       <itemData name="Data Type" defStyleNum="dsDataType"/>
0758       <itemData name="Constant" defStyleNum="dsConstant"/>
0759       <itemData name="Boolean" defStyleNum="dsConstant"/>
0760       <itemData name="Macro" defStyleNum="dsPreprocessor"/>
0761       <itemData name="Module" defStyleNum="dsBuiltIn"/>
0762       <itemData name="Function" defStyleNum="dsFunction"/>
0763       <itemData name="Command String" defStyleNum="dsSpecialString"/>
0764       <itemData name="Comment" defStyleNum="dsComment"/>
0765       <itemData name="FoldingComment" defStyleNum="dsRegionMarker" />
0766     </itemDatas>
0767 
0768   </highlighting>
0769 
0770   <general>
0771     <comments>
0772       <comment name="singleLine" start="#" />
0773       <comment name="multiLine" start="#=" end="=#" region="block-comment" />
0774     </comments>
0775     <keywords casesensitive="1" weakDeliminator=""/>
0776   </general>
0777 
0778 </language>
0779 
0780 <!-- It's recommended to put the following line in the Variables field under Settings->Configure Kate->Open/Save->Modes&Filetypes -->
0781 <!-- kate: space-indent on; indent-width 2; mixed-indent off; indent-mode cstyle; -->