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 ' (')
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.,(){}\[\];:%'"&$=/?\|^#@">
0035 <!ENTITY function_disallowed_first_char "0-9!&function_disallowed_chars;">
0036 <!ENTITY function_begin_boundary "(?:(?<=[&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>π</item>
0390 <item>e</item>
0391 <item>ℯ</item>
0392 <item>catalan</item>
0393 <item>eulergamma</item>
0394 <item>ɣ</item>
0395 <item>golden</item>
0396 <item>φ</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=""""" beginRegion="block-string"/>
0527 <DetectChar attribute="String" context="String" char="""/>
0528 <!-- Regular expressions -->
0529 <StringDetect attribute="String" context="Regex-Block-String" String="r"""" beginRegion="block-string"/>
0530 <Detect2Chars attribute="String" context="Regex-String" char="r" char1="""/>
0531 <!-- Byte Arrays -->
0532 <StringDetect attribute="String" context="Block-String" String="b"""" beginRegion="block-string"/>
0533 <Detect2Chars attribute="String" context="String" char="b" char1="""/>
0534 <!-- Version Number -->
0535 <Detect2Chars attribute="String" context="String" char="v" char1="""/>
0536 <!-- Raw Strings -->
0537 <StringDetect attribute="String" context="Raw-Block-String" String="raw"""" beginRegion="block-string"/>
0538 <StringDetect attribute="String" context="Raw-String" String="raw""/>
0539 <!-- Documentation -->
0540 <StringDetect attribute="String" context="Block-String" String="doc"""" beginRegion="block-string"/>
0541 <StringDetect attribute="String" context="String" String="doc""/>
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="<" 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="\.\.\.?|[:$]=?|\.?(?:>>>=|<-->|//=|<<=|>>=|-->|<--|===|!==|>>>|[-+*/\\^÷%|&⊻]=|=>|&&|\|\|?|>=|<=|==|!=|<\||\|>|\+\+|//|<<|>>|<:|>:|[\Q=≔⩴≕~←→↔↚↛↞↠↢↣↦↤↮⇎⇍⇏⇐⇒⇔⇴⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤌⤍⤎⤏⤐⤑⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥊⥋⥎⥐⥒⥓⥖⥗⥚⥛⥞⥟⥢⥤⥦⥧⥨⥩⥪⥫⥬⥭⥰⧴⬱⬰⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌←→⇜⇝↜↝↩↪↫↬↼↽⇀⇁⇄⇆⇇⇉⇋⇌⇚⇛⇠⇢↷↶↺↻><≥≤≡≠≢∈∉∋∌⊆⊈⊂⊄⊊∝∊∍∥∦∷∺∻∽∾≁≃≂≄≅≆≇≈≉≊≋≌≍≎≐≑≒≓≖≗≘≙≚≛≜≝≞≟≣≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊃⊅⊇⊉⊋⊏⊐⊑⊒⊜⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⋍⋐⋑⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⟈⟉⟒⦷⧀⧁⧡⧣⧤⧥⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫷⫸⫹⫺⊢⊣⟂⫪⫫…⁝⋮⋱⋰⋯+-−¦|⊕⊖⊞⊟∪∨⊔±∓∔∸≏⊎⊻⊽⋎⋓⧺⧻⨈⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨹⨺⩁⩂⩅⩊⩌⩏⩐⩒⩔⩖⩗⩛⩝⩡⩢⩣*/⌿÷%&··⋅∘×\∩∧⊗⊘⊙⊚⊛⊠⊡⊓∗∙∤⅋≀⊼⋄⋆⋇⋉⋊⋋⋌⋏⋒⟑⦸⦼⦾⦿⧶⧷⨇⨰⨱⨲⨳⨴⨵⨶⨷⨸⨻⨼⨽⩀⩃⩄⩋⩍⩎⩑⩓⩕⩘⩚⩜⩞⩟⩠⫛⊍▷⨝⟕⟖⟗⨟^↑↓⇵⟰⟱⤈⤉⤊⤋⤒⤓⥉⥌⥍⥏⥑⥔⥕⥘⥙⥜⥝⥠⥡⥣⥥⥮⥯↑↓\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="(∫(\.∫)?|\.∫)([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="""/>
0592 </context>
0593 <context attribute="String" lineEndContext="#stay" name="Block-String">
0594 <DetectSpaces />
0595 <StringDetect attribute="String" context="#pop" String=""""" 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="(\\\\)*\\"|(\\\\)+(?=")"/>
0604 <DetectChar attribute="String" context="#pop" char="""/>
0605 </context>
0606 <context attribute="String" lineEndContext="#stay" name="Raw-Block-String">
0607 <DetectSpaces />
0608 <StringDetect attribute="String" context="#pop" String=""""" 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=""[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=""{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=""" 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=""""" 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=",;()=:><&%*?[]^" 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=",;()=:><&%*?[]^}" 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; -->