skylighting-core 0.14.2 → 0.14.3
raw patch · 5 files changed
+2618/−1 lines, 5 files
Files
- changelog.md +4/−0
- skylighting-core.cabal +1/−1
- xml/crystal.xml +993/−0
- xml/racket.xml +1309/−0
- xml/zig.xml +311/−0
changelog.md view
@@ -1,5 +1,9 @@ # Revision history for skylighting and skylighting-core +## 0.14.3++ * Add crystal, racket, zip syntax (#194).+ ## 0.14.2 * Add `loadValidSyntaxesFromDir` (Kevin Quick) [API change].
skylighting-core.cabal view
@@ -1,5 +1,5 @@ name: skylighting-core-version: 0.14.2+version: 0.14.3 synopsis: syntax highlighting library description: Skylighting is a syntax highlighting library. It derives its tokenizers from XML syntax
+ xml/crystal.xml view
@@ -0,0 +1,993 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language>++<!--+ Crystal syntax highlighting definition for Kate.+ Copyright (C) 2022 by Gaurav Shah (gauravshah.89@gmail.com)++ Forked from the Ruby syntax highlighting definition.+ Copyright (C) 2004 by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi)+ Copyright (C) 2004 by Stefan Lang (langstefan@gmx.at)+ Copyright (C) 2008 by Robin Pedersen (robinpeder@gmail.com)+ Copyright (C) 2011 by Miquel Sabaté (mikisabate@gmail.com)++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Library General Public+ License as published by the Free Software Foundation; either+ version 2 of the License, or (at your option) any later version.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Library General Public License for more details.++ You should have received a copy of the GNU Library General Public+ License along with this library; if not, write to the+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,+ Boston, MA 02110-1301, USA.+-->++<!--+ TODO: Division after gdl contexts is interpreted as regexp+-->++<!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->+<language name="Crystal" section="Sources"+ version="0" kateversion="5.0"+ extensions="*.cr"+ mimetype="application/x-crystal"+ style="crystal" indenter="ruby"+ author="Gaurav Shah (gauravshah.89@gmail.com)" license="LGPLv2+">++ <highlighting>++ <list name="keywords">+ <item>begin</item>+ <item>break</item>+ <item>case</item>+ <item>do</item>+ <item>else</item>+ <item>elsif</item>+ <item>end</item>+ <item>ensure</item>+ <item>for</item>+ <item>if</item>+ <item>in</item>+ <item>next</item>+ <item>rescue</item>+ <item>return</item>+ <item>then</item>+ <item>unless</item>+ <item>until</item>+ <item>when</item>+ <item>yield</item>+ </list>++ <list name="access-control">+ <item>private</item>+ <item>protected</item>+ </list>++ <list name="attribute-definitions">+ <item>getter</item>+ <item>setter</item>+ <item>property</item>+ </list>++ <list name="definitions">+ <item>alias</item>+ <item>module</item>+ <item>class</item>+ <item>struct</item>+ <item>def</item>+ <item>macro</item>+ </list>++ <list name="pseudo-variables">+ <item>self</item>+ <item>super</item>+ <item>nil</item>+ <item>false</item>+ <item>true</item>+ <item>caller</item>+ <!-- TODO: move these to psudo constants list -->+ <item>__FILE__</item>+ <item>__LINE__</item>+ <item>__END_LINE__</item>+ <item>__DIR__</item>+ </list>++ <!-- Kernel module methods.+ NOTE: Methods ending in ? or !+ are included below as regexes.+ -->+ <!-- TODO: replace this with Crystal Object methods? -->+ <list name="kernel-methods">+ <!-- backquote ` -->+ <item>abort</item>+ <item>at_exit</item>+ <item>autoload</item>+ <item>autoload?</item>+ <item>binding</item>+ <item>block_given?</item>+ <item>callcc</item>+ <item>caller</item>+ <item>catch</item>+ <item>chomp</item>+ <item>chomp!</item>+ <item>chop</item>+ <item>chop!</item>+ <item>eval</item>+ <item>exec</item>+ <item>exit</item>+ <item>exit!</item>+ <item>fail</item>+ <item>fork</item>+ <item>format</item>+ <item>getc</item>+ <item>gets</item>+ <item>global_variables</item>+ <item>gsub</item>+ <item>gsub!</item>+ <item>iterator?</item>+ <item>lambda</item>+ <item>load</item>+ <item>local_variables</item>+ <item>loop</item>+ <item>method_missing</item>+ <item>open</item>+ <item>p</item>+ <item>print</item>+ <item>printf</item>+ <item>proc</item>+ <item>putc</item>+ <item>puts</item>+ <item>raise</item>+ <item>rand</item>+ <item>readline</item>+ <item>readlines</item>+ <item>require</item>+ <item>require_relative</item>+ <item>scan</item>+ <item>select</item>+ <item>set_trace_func</item>+ <item>sleep</item>+ <item>split</item>+ <item>sprintf</item>+ <item>srand</item>+ <item>sub</item>+ <item>sub!</item>+ <item>syscall</item>+ <item>system</item>+ <item>test</item>+ <item>throw</item>+ <item>trace_var</item>+ <item>trap</item>+ <item>untrace_var</item>+ <item>warn</item>+ </list>++ <list name="mixin-methods">+ <item>extend</item>+ <item>include</item>+ </list>++ <contexts>+ <context name="Normal" attribute="Normal Text" lineEndContext="#stay">+ <!-- crystal ignores newline after \ -->+ <LineContinue attribute="Normal Text" context="Line Continue"/>++ <!-- "shebang" line -->+ <!-- TODO: this may be required once crystal interpreter is ready -->+ <!--<RegExpr attribute="Keyword" String="^#!\/.*" context="#stay" column="0"/>-->++ <!-- "def" - "end" blocks -->+ <!-- check for statement modifiers with regexes -->+ <Detect2Chars attribute="Operator" char="{" char1="%" context="Find closing macro brace" beginRegion="def block"/>+ <DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>+ <!-- TODO: why is this needed as a Delimiter? -->+ <DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>+ <RegExpr attribute="Keyword" String="[=([]\s*(if|unless|while|until)\b|(while|until)\b(?!.*\bdo\b)|\;\s*(while|until)\b(?!.*\bdo\b)|\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>+ <RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>+ <WordDetect attribute="Keyword" String="class" context="no_heredoc" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="struct" context="no_heredoc" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="module" context="#stay" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="begin" context="#stay" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="case" context="#stay" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="do" context="#stay" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="macro" context="#stay" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="def" context="Overloaded Operators" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="end" context="#stay" endRegion="def block"/>+ <!-- elsif/else close the current block and start a new one -->+ <RegExpr attribute="Keyword" String="\b(else|elsif|rescue|ensure)\b" context="#stay" endRegion="def block" beginRegion="def block"/>++ <StringDetect attribute="Operator" String="..." context="#stay"/>+ <Detect2Chars attribute="Operator" char="." char1="." context="#stay"/>++ <!-- marks a message being sent, not defined -->+ <RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="check_div_2"/>++ <keyword attribute="Keyword" String="keywords" context="#stay"/>+ <keyword attribute="Attribute Definition" String="attribute-definitions" context="check_div_2"/>+ <keyword attribute="Access Control" String="access-control" context="check_div_2"/>+ <keyword attribute="Definition" String="definitions" context="#stay" />+ <keyword attribute="Pseudo variable" String="pseudo-variables" context="check_div_1"/>+ <keyword attribute="Kernel methods" String="kernel-methods" context="check_div_2"/>+ <keyword attribute="Module mixin methods" String="mixin-methods" context="check_div_2"/>++ <!-- TODO: write a rule for $~ and $? -->+ <RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="check_div_2"/>+ <!-- Generally a module or class name like "File", "MyModule_1", .. -->+ <RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="check_div_2"/>++ <!-- Numeric values. Note that we have to allow underscores between two digits (thus the creepy regular expressions). -->+ <!-- TODO: add support for Crystal number literals -->+ <RegExpr attribute="Hex" String="\b\-?0[xX]([0-9a-fA-F]|_[0-9a-fA-F])+" context="check_div_1"/>+ <RegExpr attribute="Bin" String="\b\-?0[bB]([01]|_[01])+" context="check_div_1"/>+ <RegExpr attribute="Octal" String="\b\-?0[1-7]([0-7]|_[0-7])*" context="check_div_1"/>+ <RegExpr attribute="Float" String="\b\-?[0-9]([0-9]|_[0-9])*\.[0-9]([0-9]|_[0-9])*([eE]\-?[1-9]([0-9]|_[0-9])*(\.[0-9]*)?)?" context="check_div_1"/>+ <RegExpr attribute="Dec" String="\b\-?[1-9]([0-9]|_[0-9])*\b" context="check_div_1"/>+ <Int attribute="Dec" context="check_div_1"/>+ <!-- TODO: what is this? remove if this is not required. -->+ <HlCChar attribute="Char" context="check_div_1"/>++ <!-- recognize the beginning of a HEREDOC+ This uses new features in Kate 2.3 and later++ There is no other chance of keeping heredoc apart from the+ push operator '<<' than requiring to put space between the operator+ and the string.+ -->+ <RegExpr attribute="Operator" context="find_indented_heredoc" String="\s*<<[-~](?=\w+|["'`])" beginRegion="HereDocument" />+ <RegExpr attribute="Operator" context="find_heredoc" String="\s*<<(?=\w+|["'`])" beginRegion="HereDocument" />++ <DetectChar attribute="Operator" char="." context="#stay"/>+ <Detect2Chars attribute="Operator" char="&" char1="&" context="#stay"/>+ <Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>+ <!-- \s! is regexp hack -->+ <RegExpr attribute="Operator" String="\s[\?\:\%]\s|[|&<>\^\+*~\-=]+|\s!|/=\s" context="#stay"/>+ <Detect2Chars attribute="Operator" char="%" char1="=" context="#stay"/>+ <Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/>++ <RegExpr attribute="Symbol" String=":(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?|:\[\]=?" context="check_div_1"/>++ <!-- Do not send to "check_div_1" context!:+ after detecting these rules (": ") there can be a regular expression (see bug: #361875) -->+ <RegExpr attribute="Symbol" String="(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?: |\[\]=?: " context="#stay"/>++ <DetectChar attribute="String" char=""" context="Quoted String"/>+ <!-- TODO: There are no single-quoted strings in Crystal. Only single-quoted characters. Modify accordingly. -->+ <DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>+ <DetectChar attribute="Command" char="`" context="Command String"/>++ <!-- TODO: Remove this if not needed -->+ <Detect2Chars attribute="Normal Text" char="?" char1="#" context="#stay"/>++ <DetectChar attribute="Comment" char="#" context="General Comment"/>++ <DetectChar attribute="Delimiter" char="[" context="#stay"/>+ <DetectChar attribute="Delimiter" char="]" context="check_div_1"/>++ <RegExpr attribute="Instance Variable" String="@[a-zA-Z_0-9]+" context="check_div_1"/>+ <RegExpr attribute="Class Variable" String="@@[a-zA-Z_0-9]+" context="check_div_1"/>++ <!-- handle the different regular expression formats -->+ <DetectChar attribute="Regular Expression" char="/" context="RegEx 1"/>++ <!-- recognize the beginning of a general delimited input format -->+ <!-- this moves to the next context to separate out the exact nature of the GDL input -->+ <RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[QqxwW]?[^\s}])" beginRegion="GdlInput" />++ <DetectChar attribute="Normal Text" char=")" context="check_div_1"/>+ <DetectIdentifier attribute="Normal Text" context="check_div_2"/>++ </context>++ <context name="Macro" attribute="Normal Text" lineEndContext="#stay">+ <!-- TODO: copied Macro context from Normal context. repititions can be removed. pls refactor by including rules. -->+ <!-- crystal ignores newline after \ -->+ <LineContinue attribute="Normal Text" context="Line Continue"/>++ <!-- "def" - "end" blocks -->+ <!-- check for statement modifiers with regexes -->+ <DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>+ <DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>+ <RegExpr attribute="Keyword" String="[=([]\s*(if|unless|while|until)\b|(while|until)\b(?!.*\bdo\b)|\;\s*(while|until)\b(?!.*\bdo\b)|\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>+ <RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>+ <WordDetect attribute="Keyword" String="begin" context="#stay" beginRegion="def block"/>+ <RegExpr attribute="Keyword" String="\bfor\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="do" context="#stay" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="def" context="Overloaded Operators" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="end" context="#stay" endRegion="def block"/>+ <!-- elsif/else close the current block and start a new one -->+ <RegExpr attribute="Keyword" String="\b(else|elsif|rescue|ensure)\b" context="#stay" endRegion="def block" beginRegion="def block"/>++ <StringDetect attribute="Operator" String="..." context="#stay"/>+ <Detect2Chars attribute="Operator" char="." char1="." context="#stay"/>++ <!-- marks a message (being sent, not defined) -->+ <RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="check_div_2"/>++ <keyword attribute="Keyword" String="keywords" context="#stay"/>+ <keyword attribute="Attribute Definition" String="attribute-definitions" context="check_div_2"/>+ <keyword attribute="Definition" String="definitions" context="#stay" />+ <keyword attribute="Pseudo variable" String="pseudo-variables" context="check_div_1"/>++ <RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="check_div_2"/>+ <!-- Generally a module or class name like "File", "MyModule_1", .. -->+ <RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="check_div_2"/>++ <!-- Numeric values. Note that we have to allow underscores between two digits (thus the creepy regular expressions). -->+ <RegExpr attribute="Hex" String="\b\-?0[xX]([0-9a-fA-F]|_[0-9a-fA-F])+" context="check_div_1"/>+ <RegExpr attribute="Bin" String="\b\-?0[bB]([01]|_[01])+" context="check_div_1"/>+ <RegExpr attribute="Octal" String="\b\-?0[1-7]([0-7]|_[0-7])*" context="check_div_1"/>+ <RegExpr attribute="Float" String="\b\-?[0-9]([0-9]|_[0-9])*\.[0-9]([0-9]|_[0-9])*([eE]\-?[1-9]([0-9]|_[0-9])*(\.[0-9]*)?)?" context="check_div_1"/>+ <RegExpr attribute="Dec" String="\b\-?[1-9]([0-9]|_[0-9])*\b" context="check_div_1"/>+ <Int attribute="Dec" context="check_div_1"/>+ <HlCChar attribute="Char" context="check_div_1"/>++ <!-- recognize the beginning of a HEREDOC+ This uses new features in Kate 2.3 and later++ There is no other chance of keeping heredoc apart from the+ push operator '<<' than requiring to put space between the operator+ and the string.+ -->+ <RegExpr attribute="Operator" context="find_indented_heredoc" String="\s*<<[-~](?=\w+|["'`])" beginRegion="HereDocument" />+ <RegExpr attribute="Operator" context="find_heredoc" String="\s*<<(?=\w+|["'`])" beginRegion="HereDocument" />++ <DetectChar attribute="Operator" char="." context="#stay"/>+ <Detect2Chars attribute="Operator" char="&" char1="&" context="#stay"/>+ <Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>+ <!-- \s! is regexp hack -->+ <RegExpr attribute="Operator" String="\s[\?\:\%]\s|[|&<>\^\+*~\-=]+|\s!|/=\s" context="#stay"/>+ <Detect2Chars attribute="Operator" char="%" char1="=" context="#stay"/>+ <Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/>++ <RegExpr attribute="Symbol" String=":(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?|:\[\]=?" context="check_div_1"/>++ <!-- Do not send to "check_div_1" context!:+ after detecting these rules (": ") there can be a regular expression (see bug: #361875) -->+ <RegExpr attribute="Symbol" String="(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?: |\[\]=?: " context="#stay"/>++ <DetectChar attribute="String" char=""" context="Quoted String"/>+ <!-- TODO: There are no single-quoted strings in Crystal. Only single-quoted characters. Modify accordingly. -->+ <DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>+ <DetectChar attribute="Command" char="`" context="Command String"/>++ <!-- TODO: Remove this if not needed -->+ <Detect2Chars attribute="Normal Text" char="?" char1="#" context="#stay"/>++ <DetectChar attribute="Comment" char="#" context="General Comment"/>++ <DetectChar attribute="Delimiter" char="[" context="#stay"/>+ <DetectChar attribute="Delimiter" char="]" context="check_div_1"/>++ <!-- handle the different regular expression formats -->+ <DetectChar attribute="Regular Expression" char="/" context="RegEx 1"/>++ <!-- recognize the beginning of a general delimited input format -->+ <!-- this moves to the next context to separate out the exact nature of the GDL input -->+ <RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[QqxwW]?[^\s}])" beginRegion="GdlInput" />++ <DetectChar attribute="Normal Text" char=")" context="check_div_1"/>+ <DetectIdentifier attribute="Normal Text" context="check_div_2"/>+ </context>++ <context name="Overloaded Operators" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectChar attribute="Normal Text" char="/" context="#pop"/>+ </context>++ <!-- In the following contexts, a slash character ('/') is a division operator -->+ <!-- Everywhere else, it's a regular expression delimiter -->++ <!-- A slash is always a division operator, even if preceeded by whitespace -->+ <context name="check_div_1" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">+ <Detect2Chars attribute="Operator" char="/" char1="/" context="#pop"/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <Detect2Chars attribute="Operator" char="%" char1="}" context="#pop#pop"/>+ <AnyChar attribute="Operator" String="/%" context="#pop"/>+ </context>++ <!-- Same as check_div_1, but with double pop to exit the surrounding context -->+ <context name="check_div_1_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">+ <Detect2Chars attribute="Operator" char="/" char1="/" context="#pop#pop"/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <Detect2Chars attribute="Operator" char="%" char1="}" context="#pop#pop#pop#pop"/>+ <AnyChar attribute="Operator" String="/%" context="#pop#pop"/>+ </context>++ <!-- A slash is division operator if it's the first character, or if preceeded and followed by whitespace -->+ <context name="check_div_2" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">+ <Detect2Chars attribute="Operator" char="/" char1="/" context="#pop"/>+ <AnyChar attribute="Operator" String="/%" context="#pop"/>+ <DetectSpaces attribute="Normal Text" context="check_div_2_internal"/>+ </context>++ <!-- Internal context used by check_div_2 -->+ <context name="check_div_2_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">+ <RegExpr attribute="Operator" String="(//|[/%])(?=\s)" context="#pop#pop"/>+ </context>++ <!-- Same as check_div_2, but with double pop to exit the surrounding context -->+ <context name="check_div_2_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">+ <Detect2Chars attribute="Operator" char="/" char1="/" context="#pop#pop"/>+ <AnyChar attribute="Operator" String="/%" context="#pop#pop"/>+ <DetectSpaces attribute="Normal Text" context="check_div_2_pop_internal"/>+ </context>++ <!-- Internal context used by check_div_2_pop -->+ <context name="check_div_2_pop_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop#pop" lineEndContext="#pop#pop#pop">+ <RegExpr attribute="Operator" String="//(?=\s)" context="#pop#pop#pop"/>+ <DetectChar attribute="Operator" char="%" context="#pop#pop#pop"/>+ <RegExpr attribute="Operator" String="/(?=\s)" context="#pop#pop#pop"/>+ </context>++ <context name="Line Continue" attribute="Normal Text" lineEndContext="#pop">+ <RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)|(if|unless)\b" context="#stay" firstNonSpace="true"/>+ <IncludeRules context="Normal"/>+ </context>++ <context name="Find closing macro brace" attribute="Normal Text" lineEndContext="#stay">+ <Detect2Chars attribute="Operator" char="%" char1="}" context="check_div_1_pop" endRegion="def block"/>+ <IncludeRules context="Macro"/>+ </context>++ <context name="Find closing block brace" attribute="Normal Text" lineEndContext="#stay">+ <DetectChar attribute="Operator" char="}" context="check_div_1_pop" endRegion="def block"/>+ <IncludeRules context="Normal"/>+ </context>++ <context name="Quoted String" attribute="String" lineEndContext="#stay">+ <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>+ <Detect2Chars attribute="String" char="\" char1=""" context="#stay"/>+ <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>+ <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>+ <DetectChar char=""" attribute="String" context="check_div_1_pop"/>+ </context>++ <context name="Apostrophed String" attribute="Raw String" lineEndContext="#stay">+ <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>+ <Detect2Chars attribute="String" char="\" char1="'" context="#stay"/>+ <DetectChar char="'" attribute="Raw String" context="check_div_1_pop"/>+ </context>++ <context name="Command String" attribute="Command" lineEndContext="#stay">+ <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>+ <Detect2Chars attribute="String" char="\" char1="`" context="#stay"/>+ <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>+ <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>+ <DetectChar char="`" attribute="Command" context="check_div_1_pop"/>+ </context>++ <context name="RegEx 1" attribute="Regular Expression" lineEndContext="#stay">+ <Detect2Chars attribute="Regular Expression" char="\" char1="/" context="#stay"/>+ <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>+ <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>+ <RegExpr attribute="Regular Expression" String="/[uiomxn]*" context="check_div_1_pop"/>+ </context>++ <!-- Substitutions can be nested -->+ <context name="Subst" attribute="Normal Text" lineEndContext="#stay">+ <DetectChar attribute="Substitution" char="}" context="#pop"/>+ <!-- Highlight substitution as code. -->+ <IncludeRules context="Normal"/>+ </context>++ <context name="Short Subst" attribute="Substitution" lineEndContext="#pop">+ <!-- Check for e.g.: "#@var#@@xy" -->+ <RegExpr attribute="Substitution" String="#@{1,2}" context="#stay"/>+ <RegExpr attribute="Substitution" String="\w(?!\w)" context="#pop"/>+ </context>++ <!-- This handles access of nested module classes and class methods -->+ <context name="Member Access" attribute="Member" lineEndContext="#pop">+ <!-- marks a message (being sent, not defined) -->+ <RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?(?=[^\w\d\.\:])" context="check_div_2_pop"/>+ <RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?" context="#stay"/>+ <RegExpr attribute="Constant" String="[A-Z]+_*(\d|[a-z])\w*(?=[^\w\d\.\:])" context="check_div_2_pop"/>+ <RegExpr attribute="Constant" String="[A-Z]+_*([0-9]|[a-z])\w*" context="#stay"/>+ <RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*(?=[^\w\d\.\:])" context="check_div_2_pop"/>+ <RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*" context="#stay"/>+ <Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>+ <DetectChar attribute="Member" char="." context="#stay"/>++ <AnyChar attribute="Operator" String="=+-*/%|&[]{}~" context="#pop"/>+ <DetectChar attribute="Comment" char="#" context="#pop"/>+ <AnyChar attribute="Normal Text" String="()\" context="#pop"/>+ <RegExpr attribute="Member" String="\W" context="#pop"/>+ </context>++ <context name="General Comment" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces />+ <IncludeRules context="##Comments" />+ </context>++ <!-- HEREDOC support+ The contexts below support both normal and indented heredocs+ -->+ <!-- here we markup the heredoc markers -->+ <context name="find_heredoc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+ <RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" />+ <RegExpr attribute="Keyword" context="normal_heredoc" String="(?|(\w+)|"(\w+)"|`(\w+)`)" />+ </context>+ <context name="find_indented_heredoc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+ <RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" />+ <RegExpr attribute="Keyword" context="indented_heredoc" String="(?|(\w+)|"(\w+)"|`(\w+)`)" />+ </context>+ <!-- these are the real heredoc contexts -->+ <context name="indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">+ <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>+ <IncludeRules context="heredoc_rules" />+ </context>+ <context name="apostrophed_indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">+ <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>+ </context>++ <context name="normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">+ <RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>+ <IncludeRules context="heredoc_rules" />+ </context>+ <context name="apostrophed_normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">+ <RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>+ </context>++ <!-- rules for heredoc types -->+ <context name="heredoc_rules" attribute="Normal Text" lineEndContext="#stay">+ <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>+ <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>+ </context>++ <!-- avoid highlighting heredoc markers, for example, in singleton class definition (see bug: #358273) -->+ <context name="no_heredoc" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">+ <DetectSpaces />+ <Detect2Chars attribute="Operator" char="<" char1="<" context="#pop"/>+ <!-- comments -->+ <RegExpr attribute="Comment" String="^#\s*BEGIN.*$" context="#stay" beginRegion="marker" column="0"/>+ <RegExpr attribute="Comment" String="^#\s*END.*$" context="#stay" endRegion="marker" column="0"/>+ <DetectChar attribute="Comment" char="#" context="General Comment"/>+ </context>++ <!-- General delimited input support+ The contexts below handle the various gdl formats+ -->+ <context name="find_gdl_input" attribute="Normal Text" lineEndContext="#pop">++ <!-- handle token arrays -->+ <Detect2Chars attribute="GDL input" context="gdl_token_array_1" char="w" char1="(" />+ <Detect2Chars attribute="GDL input" context="gdl_token_array_2" char="w" char1="{" />+ <Detect2Chars attribute="GDL input" context="gdl_token_array_3" char="w" char1="[" />+ <Detect2Chars attribute="GDL input" context="gdl_token_array_4" char="w" char1="<" />+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="gdl_token_array_5" String="w([^\s\w])" />++ <!-- handle token arrays -->+ <Detect2Chars attribute="GDL input" context="gdl_token_array_1" char="W" char1="(" />+ <Detect2Chars attribute="GDL input" context="gdl_token_array_2" char="W" char1="{" />+ <Detect2Chars attribute="GDL input" context="gdl_token_array_3" char="W" char1="[" />+ <Detect2Chars attribute="GDL input" context="gdl_token_array_4" char="W" char1="<" />+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="gdl_token_array_5" String="W([^\s\w])" />++ <!-- handle apostrophed strings -->+ <Detect2Chars attribute="GDL input" context="gdl_apostrophed_1" char="q" char1="(" />+ <Detect2Chars attribute="GDL input" context="gdl_apostrophed_2" char="q" char1="{" />+ <Detect2Chars attribute="GDL input" context="gdl_apostrophed_3" char="q" char1="[" />+ <Detect2Chars attribute="GDL input" context="gdl_apostrophed_4" char="q" char1="<" />+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="gdl_apostrophed_5" String="q([^\s\w])" />++ <!-- handle shell commands -->+ <Detect2Chars attribute="GDL input" context="gdl_shell_command_1" char="x" char1="(" />+ <Detect2Chars attribute="GDL input" context="gdl_shell_command_2" char="x" char1="{" />+ <Detect2Chars attribute="GDL input" context="gdl_shell_command_3" char="x" char1="[" />+ <Detect2Chars attribute="GDL input" context="gdl_shell_command_4" char="x" char1="<" />+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="gdl_shell_command_5" String="x([^\s\w])" />++ <!-- handle regular expressions -->+ <Detect2Chars attribute="GDL input" context="gdl_regexpr_1" char="r" char1="(" />+ <Detect2Chars attribute="GDL input" context="gdl_regexpr_2" char="r" char1="{" />+ <Detect2Chars attribute="GDL input" context="gdl_regexpr_3" char="r" char1="[" />+ <Detect2Chars attribute="GDL input" context="gdl_regexpr_4" char="r" char1="<" />+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="gdl_regexpr_5" String="r([^\s\w])" />++ <!-- handle double-quoted strings -->+ <!--+ be careful to make this the last GDL ruleset, because the rule for+ the short form %?foo? will otherwise catch any of the other formats+ -->+ <Detect2Chars attribute="GDL input" context="gdl_dq_string_1" char="Q" char1="(" />+ <Detect2Chars attribute="GDL input" context="gdl_dq_string_2" char="Q" char1="{" />+ <Detect2Chars attribute="GDL input" context="gdl_dq_string_3" char="Q" char1="[" />+ <Detect2Chars attribute="GDL input" context="gdl_dq_string_4" char="Q" char1="<" />+ <DetectChar attribute="GDL input" context="gdl_dq_string_1" char="(" />+ <DetectChar attribute="GDL input" context="gdl_dq_string_2" char="{" />+ <DetectChar attribute="GDL input" context="gdl_dq_string_3" char="[" />+ <DetectChar attribute="GDL input" context="gdl_dq_string_4" char="<" />+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="gdl_dq_string_5" String="Q?([^\s\w])" />++ </context>+ <!-- double-quoted string specific contexts follow -->+ <context name="gdl_dq_string_1" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="dq_string_rules" />+ <Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>+ <DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />+ <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />+ </context>+ <context name="gdl_dq_string_1_nested" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="dq_string_rules" />+ <DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />+ <DetectChar attribute="String" context="#pop" char=")" />+ </context>+ <!-- note that here substitution should win over nesting -->+ <context name="gdl_dq_string_2" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="dq_string_rules" />+ <Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>+ <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />+ <DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />+ </context>+ <context name="gdl_dq_string_2_nested" attribute="String" lineEndContext="#stay" >+ <DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />+ <DetectChar attribute="String" context="#pop" char="}" />+ <IncludeRules context="dq_string_rules" />+ </context>++ <context name="gdl_dq_string_3" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="dq_string_rules" />+ <Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>+ <DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />+ <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />+ </context>+ <context name="gdl_dq_string_3_nested" attribute="String" lineEndContext="#stay" >+ <DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />+ <DetectChar attribute="String" context="#pop" char="]" />+ <IncludeRules context="dq_string_rules" />+ </context>++ <context name="gdl_dq_string_4" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="dq_string_rules" />+ <Detect2Chars attribute="String" char="\" char1=">" context="#stay"/>+ <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="<" />+ <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" />+ </context>+ <context name="gdl_dq_string_4_nested" attribute="String" lineEndContext="#stay" >+ <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="<" />+ <DetectChar attribute="String" context="#pop" char=">" />+ <IncludeRules context="dq_string_rules" />+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true">+ <IncludeRules context="dq_string_rules" />+ <StringDetect attribute="String" String="\%1" context="#stay" dynamic="true" />+ <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />+ </context>+ <!-- rules to be included in all dq_string contexts -->+ <context name="dq_string_rules" attribute="String" lineEndContext="#stay" >+ <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>+ <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>+ <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>+ </context>++ <!-- token array specific contexts -->++ <context name="gdl_token_array_1" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="token_array_rules" />+ <Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>+ <DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />+ <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />+ </context>+ <context name="gdl_token_array_1_nested" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="token_array_rules" />+ <DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />+ <DetectChar attribute="String" context="#pop" char=")" />+ </context>++ <context name="gdl_token_array_2" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="token_array_rules" />+ <Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>+ <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />+ <DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />+ </context>+ <context name="gdl_token_array_2_nested" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="token_array_rules" />+ <DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />+ <DetectChar attribute="String" context="#pop" char="}" />+ </context>++ <context name="gdl_token_array_3" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="token_array_rules" />+ <Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>+ <DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />+ <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />+ </context>+ <context name="gdl_token_array_3_nested" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="token_array_rules" />+ <DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />+ <DetectChar attribute="String" context="#pop" char="]" />+ </context>++ <context name="gdl_token_array_4" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="token_array_rules" />+ <Detect2Chars attribute="String" char="\" char1=">" context="#stay"/>+ <DetectChar attribute="String" context="gdl_token_array_4_nested" char="<" />+ <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" />+ </context>+ <context name="gdl_token_array_4_nested" attribute="String" lineEndContext="#stay" >+ <IncludeRules context="token_array_rules" />+ <DetectChar attribute="String" context="gdl_token_array_4_nested" char="<" />+ <DetectChar attribute="String" context="#pop" char=">" />+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true">+ <IncludeRules context="token_array_rules" />+ <StringDetect attribute="String" String="\%1" context="#stay" dynamic="true"/>+ <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />+ </context>++ <!-- rules to be included in all token_array contexts -->+ <context name="token_array_rules" attribute="String" lineEndContext="#stay" >+ <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>+ </context>++ <!-- apostrophed string specific contexts -->++ <context name="gdl_apostrophed_1" attribute="Raw String" lineEndContext="#stay" >+ <IncludeRules context="apostrophed_rules" />+ <Detect2Chars attribute="Raw String" char="\" char1=")" context="#stay"/>+ <DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />+ <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />+ </context>+ <context name="gdl_apostrophed_1_nested" attribute="Raw String" lineEndContext="#stay" >+ <IncludeRules context="apostrophed_rules" />+ <DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />+ <DetectChar attribute="Raw String" context="#pop" char=")" />+ </context>++ <context name="gdl_apostrophed_2" attribute="Raw String" lineEndContext="#stay" >+ <IncludeRules context="apostrophed_rules" />+ <Detect2Chars attribute="Raw String" char="\" char1="}" context="#stay"/>+ <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />+ <DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />+ </context>+ <context name="gdl_apostrophed_2_nested" attribute="Raw String" lineEndContext="#stay" >+ <IncludeRules context="apostrophed_rules" />+ <DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />+ <DetectChar attribute="Raw String" context="#pop" char="}" />+ </context>++ <context name="gdl_apostrophed_3" attribute="Raw String" lineEndContext="#stay" >+ <IncludeRules context="apostrophed_rules" />+ <Detect2Chars attribute="Raw String" char="\" char1="]" context="#stay"/>+ <DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />+ <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />+ </context>+ <context name="gdl_apostrophed_3_nested" attribute="Raw String" lineEndContext="#stay" >+ <IncludeRules context="apostrophed_rules" />+ <DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />+ <DetectChar attribute="Raw String" context="#pop" char="]" />+ </context>++ <context name="gdl_apostrophed_4" attribute="Raw String" lineEndContext="#stay" >+ <IncludeRules context="apostrophed_rules" />+ <Detect2Chars attribute="Raw String" char="\" char1=">" context="#stay"/>+ <DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="<" />+ <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" />+ </context>+ <context name="gdl_apostrophed_4_nested" attribute="Raw String" lineEndContext="#stay" >+ <IncludeRules context="apostrophed_rules" />+ <DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="<" />+ <DetectChar attribute="Raw String" context="#pop" char=">" />+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true">+ <IncludeRules context="apostrophed_rules" />+ <StringDetect attribute="Raw String" String="\%1" context="#stay" dynamic="true"/>+ <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />+ </context>++ <!-- rules to be included in all apostrophed contexts -->+ <context name="apostrophed_rules" attribute="Raw String" lineEndContext="#stay" >+ <Detect2Chars attribute="Raw String" char="\" char1="\" context="#stay"/>+ </context>++ <!-- shell command specific contexts -->++ <context name="gdl_shell_command_1" attribute="Command" lineEndContext="#stay" >+ <IncludeRules context="shell_command_rules" />+ <Detect2Chars attribute="Command" char="\" char1=")" context="#stay"/>+ <DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />+ <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />+ </context>+ <context name="gdl_shell_command_1_nested" attribute="Command" lineEndContext="#stay" >+ <IncludeRules context="shell_command_rules" />+ <DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />+ <DetectChar attribute="Command" context="#pop" char=")" />+ </context>++ <context name="gdl_shell_command_2" attribute="Command" lineEndContext="#stay" >+ <IncludeRules context="shell_command_rules" />+ <Detect2Chars attribute="Command" char="\" char1="}" context="#stay"/>+ <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />+ <DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />+ </context>+ <context name="gdl_shell_command_2_nested" attribute="Command" lineEndContext="#stay" >+ <IncludeRules context="shell_command_rules" />+ <DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />+ <DetectChar attribute="Command" context="#pop" char="}" />+ </context>++ <context name="gdl_shell_command_3" attribute="Command" lineEndContext="#stay" >+ <IncludeRules context="shell_command_rules" />+ <Detect2Chars attribute="Command" char="\" char1="]" context="#stay"/>+ <DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />+ <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />+ </context>+ <context name="gdl_shell_command_3_nested" attribute="Command" lineEndContext="#stay" >+ <IncludeRules context="shell_command_rules" />+ <DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />+ <DetectChar attribute="Command" context="#pop" char="]" />+ </context>++ <context name="gdl_shell_command_4" attribute="Command" lineEndContext="#stay" >+ <IncludeRules context="shell_command_rules" />+ <Detect2Chars attribute="Command" char="\" char1=">" context="#stay"/>+ <DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="<" />+ <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" />+ </context>+ <context name="gdl_shell_command_4_nested" attribute="Command" lineEndContext="#stay" >+ <IncludeRules context="shell_command_rules" />+ <DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="<" />+ <DetectChar attribute="Command" context="#pop" char=">" />+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true">+ <IncludeRules context="shell_command_rules" />+ <StringDetect attribute="Command" String="\%1" context="#stay" dynamic="true" />+ <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />+ </context>++ <!-- rules to be included in all shell_command contexts -->+ <context name="shell_command_rules" attribute="Command" lineEndContext="#stay" >+ <Detect2Chars attribute="Command" char="\" char1="\" context="#stay"/>+ <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>+ <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>+ </context>++ <!-- regular expression specific contexts -->++ <context name="gdl_regexpr_1" attribute="Regular Expression" lineEndContext="#stay" >+ <IncludeRules context="regexpr_rules" />+ <Detect2Chars attribute="Regular Expression" char="\" char1=")" context="#stay"/>+ <DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />+ <RegExpr attribute="GDL input" context="#pop#pop" String="\)[uiomxn]*" endRegion="GdlInput" />+ </context>+ <context name="gdl_regexpr_1_nested" attribute="Regular Expression" lineEndContext="#stay" >+ <IncludeRules context="regexpr_rules" />+ <DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />+ <DetectChar attribute="Regular Expression" context="#pop" char=")" />+ </context>++ <context name="gdl_regexpr_2" attribute="Regular Expression" lineEndContext="#stay" >+ <IncludeRules context="regexpr_rules" />+ <Detect2Chars attribute="Regular Expression" char="\" char1="}" context="#stay"/>+ <RegExpr attribute="GDL input" context="#pop#pop" String="\}[uiomxn]*" endRegion="GdlInput" />+ <DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />+ </context>+ <context name="gdl_regexpr_2_nested" attribute="Regular Expression" lineEndContext="#stay" >+ <IncludeRules context="regexpr_rules" />+ <DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />+ <DetectChar attribute="Regular Expression" context="#pop" char="}" />+ </context>++ <context name="gdl_regexpr_3" attribute="Regular Expression" lineEndContext="#stay" >+ <IncludeRules context="regexpr_rules" />+ <Detect2Chars attribute="Regular Expression" char="\" char1="]" context="#stay"/>+ <DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />+ <RegExpr attribute="GDL input" context="#pop#pop" String="\][uiomxn]*" endRegion="GdlInput" />+ </context>+ <context name="gdl_regexpr_3_nested" attribute="Regular Expression" lineEndContext="#stay" >+ <IncludeRules context="regexpr_rules" />+ <DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />+ <DetectChar attribute="Regular Expression" context="#pop" char="]" />+ </context>++ <context name="gdl_regexpr_4" attribute="Regular Expression" lineEndContext="#stay" >+ <IncludeRules context="regexpr_rules" />+ <Detect2Chars attribute="Regular Expression" char="\" char1=">" context="#stay"/>+ <DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="<" />+ <RegExpr attribute="GDL input" context="#pop#pop" String=">[uiomxn]*" endRegion="GdlInput" />+ </context>+ <context name="gdl_regexpr_4_nested" attribute="Regular Expression" lineEndContext="#stay" >+ <IncludeRules context="regexpr_rules" />+ <DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="<" />+ <DetectChar attribute="Regular Expression" context="#pop" char=">" />+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true">+ <IncludeRules context="regexpr_rules" />+ <StringDetect attribute="Regular Expression" String="\%1" context="#stay" dynamic="true" />+ <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" />+ </context>++ <!-- rules to be included in all regexpr contexts -->+ <context name="regexpr_rules" attribute="Regular Expression" lineEndContext="#stay" >+ <Detect2Chars attribute="Regular Expression" char="\" char1="\" context="#stay"/>+ <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>+ <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>+ </context>++ <!-- END of General delimited input support -->++ </contexts>++ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal"/>++ <itemData name="Keyword" defStyleNum="dsControlFlow"/>+ <itemData name="Attribute Definition" defStyleNum="dsOthers"/>+ <itemData name="Access Control" defStyleNum="dsAttribute" bold="1"/> <!-- #0000FF -->+ <itemData name="Definition" defStyleNum="dsKeyword"/>+ <itemData name="Pseudo variable" defStyleNum="dsDecVal"/>++ <itemData name="Dec" defStyleNum="dsDecVal"/>+ <itemData name="Float" defStyleNum="dsFloat"/>+ <itemData name="Char" defStyleNum="dsChar"/>+ <itemData name="Octal" defStyleNum="dsBaseN"/>+ <itemData name="Hex" defStyleNum="dsBaseN"/>+ <itemData name="Bin" defStyleNum="dsBaseN"/>++ <itemData name="Symbol" defStyleNum="dsWarning" bold="0" underline="0"/> <!-- #D40000 -->+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="Raw String" defStyleNum="dsVerbatimString" /> <!-- #DD4A4A -->+ <itemData name="Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->+ <itemData name="Message" defStyleNum="dsAttribute" bold="0"/> <!-- #4000A7 -->+ <itemData name="Regular Expression" defStyleNum="dsSpecialString"/> <!-- #4A5704 -->+ <itemData name="Substitution" defStyleNum="dsSpecialChar"/>+ <!-- short for 'general delimited input' -->+ <itemData name="GDL input" defStyleNum="dsOthers" />++ <itemData name="Global Constant" defStyleNum="dsConstant" bold="1"/> <!-- #bb1188 -->+ <itemData name="Constant" defStyleNum="dsDataType"/>+ <itemData name="Constant Value" defStyleNum="dsConstant" bold="0"/> <!-- #bb1188 -->+ <itemData name="Kernel methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->+ <itemData name="Module mixin methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->+ <itemData name="Member" defStyleNum="dsNormal"/>+ <itemData name="Instance Variable" defStyleNum="dsOthers"/>+ <itemData name="Class Variable" defStyleNum="dsOthers"/>++ <itemData name="Comment" defStyleNum="dsComment"/>++ <itemData name="Here Document" defStyleNum="dsDocumentation"/>++ <itemData name="Delimiter" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->+ <itemData name="Operator" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="#" position="afterwhitespace"/>+ </comments>+ <keywords casesensitive="1" weakDeliminator="!?"/>+ </general>+</language>++<!-- kate: replace-tabs off; -->
+ xml/racket.xml view
@@ -0,0 +1,1309 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language+[+ <!ENTITY xmlattrs "\s+([^"/>]++|"[^"]*+")*+">+ <!ENTITY tab "	">+ <!ENTITY regex "(?:[^\\(\[/]++|\\.|\[\^?\]?([^\\\[\]]++|\\.|\[(:[^:]+:\])?)++\]|\((?R)\))+">++ <!ENTITY initial_ascii_set "a-zA-Z!$%&*/:<=>?~_^">+ <!ENTITY initial_unicode_set "\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Mn}\p{Nl}\p{No}\p{Pd}\p{Pc}\p{Po}\p{Sc}\p{Sm}\p{Sk}\p{So}\p{Co}">+ <!ENTITY initial_others "\\x[0-9a-fA-F]++;|(?![\x01-\x7f])[&initial_unicode_set;]">+ <!ENTITY initial "(?:[&initial_ascii_set;]|&initial_others;)">+ <!ENTITY subsequent "(?:[&initial_ascii_set;0-9-@.+\p{Nd}\p{Mc}\p{Me}]|&initial_others;)">+ <!ENTITY symbol "(?:&initial;&subsequent;*+)">+]>+<!--+Since Racket supports multiple scheme-like language, this was an extension to scheme.xml+It also contains keywords for a few popular racket-based langs.+-->+<language version="2" kateversion="5.62" name="Racket" section="Scripts" extensions="*.rkt;*.scrbl" author="slbtty(shenlebantongying@gmail.com)" license="MIT" priority="9">+ <highlighting>+ <list name="operators">+ <item><=</item>+ <item><</item>+ <item>=</item>+ <item>=></item>+ <item>>=</item>+ <item>></item>+ <item>-</item>+ <item>/</item>+ <item>+</item>+ <item>!</item>+ <item>$</item>+ <item>%</item>+ <item>*</item>+ <item>/</item>+ <item>=</item>+ <item>></item>+ <item>?</item>+ <item>^</item>+ <item>_</item>+ <item>~</item>+ </list>++ <list name="characters">+ <item>alarm</item>+ <item>backspace</item>+ <item>delete</item>+ <item>esc</item>+ <item>linefeed</item>+ <item>newline</item>+ <item>page</item>+ <item>return</item>+ <item>space</item>+ <item>tab</item>+ <item>vtab</item>+ <!-- extension -->+ <item>nul</item>+ <item>soh</item>+ <item>stx</item>+ <item>etx</item>+ <item>eot</item>+ <item>enq</item>+ <item>ack</item>+ <item>bel</item>+ <item>bs</item>+ <item>ht</item>+ <item>nl</item>+ <item>vt</item>+ <item>np</item>+ <item>cr</item>+ <item>so</item>+ <item>si</item>+ <item>dle</item>+ <item>dc1</item>+ <item>dc2</item>+ <item>dc3</item>+ <item>dc4</item>+ <item>nak</item>+ <item>syn</item>+ <item>etb</item>+ <item>can</item>+ <item>em</item>+ <item>sub</item>+ <item>fs</item>+ <item>gs</item>+ <item>rs</item>+ <item>us</item>+ <item>sp</item>+ <item>nl</item>+ <item>ht</item>+ <item>bs</item>+ <item>cr</item>+ <item>np</item>+ <item>null</item>+ <item>nul</item>+ </list>+ <list name="defines">+ <item>define</item>+ <item>define*</item>+ <item>define-accessor</item>+ <item>define-class</item>+ <item>defined?</item>+ <item>define-generic</item>+ <item>define-macro</item>+ <item>define-method</item>+ <item>define-module</item>+ <item>define-private</item>+ <item>define-public</item>+ <item>define*-public</item>+ <item>define-reader-ctor</item>+ <item>define-syntax</item>+ <item>define-simple-macro</item>+ <item>define-syntax-macro</item>+ <item>efine-syntax-rule </item>+ <item>define-syntax-class</item>+ <item>define-syntax-parameter</item>+ <item>defmacro</item>+ <item>defmacro*</item>+ <item>defmacro*-public</item>+ </list>+ <list name="keywords">+ <item>require</item>+ <item>provide</item>+ <item>&assertion</item>+ <item>&condition</item>+ <item>&error</item>+ <item>&i/o-decoding</item>+ <item>&i/o-encoding</item>+ <item>&i/o-file-already-exists</item>+ <item>&i/o-file-does-not-exist</item>+ <item>&i/o-file-is-read-only</item>+ <item>&i/o-file-protection</item>+ <item>&i/o-filename</item>+ <item>&i/o-invalid-position</item>+ <item>&i/o-port</item>+ <item>&i/o-read</item>+ <item>&i/o-write</item>+ <item>&i/o</item>+ <item>&implementation-restriction</item>+ <item>&implementation-violation</item>+ <item>&irritants</item>+ <item>&lexical</item>+ <item>&message</item>+ <item>&mistake</item>+ <item>&no-infinities</item>+ <item>&no-nans</item>+ <item>&non-continuable</item>+ <item>&serious</item>+ <item>&syntax</item>+ <item>&undefined</item>+ <item>&violation</item>+ <item>&warning</item>+ <item>&who</item>+ <item>&xcond</item>+ <item>abs</item>+ <item>acos</item>+ <item>and</item>+ <item>angle</item>+ <item>append</item>+ <item>apply</item>+ <item>applymap</item>+ <item>asin</item>+ <item>assert</item>+ <item>assertion-violation</item>+ <item>assertion-violation?</item>+ <item>assoc</item>+ <item>assp</item>+ <item>assq</item>+ <item>assv</item>+ <item>atan</item>+ <item>begin</item>+ <item>binary-port?</item>+ <item>bitwise-and</item>+ <item>bitwise-arithmetic-shift-left</item>+ <item>bitwise-arithmetic-shift-right</item>+ <item>bitwise-arithmetic-shift</item>+ <item>bitwise-bit-count</item>+ <item>bitwise-bit-field</item>+ <item>bitwise-bit-set?</item>+ <item>bitwise-copy-bit-field</item>+ <item>bitwise-copy-bit</item>+ <item>bitwise-first-bit-set</item>+ <item>bitwise-if</item>+ <item>bitwise-ior</item>+ <item>bitwise-length</item>+ <item>bitwise-not</item>+ <item>bitwise-reverse-bit-field</item>+ <item>bitwise-rotate-bit-field</item>+ <item>bitwise-xor</item>+ <item>boolean=?</item>+ <item>boolean?</item>+ <item>bound-identifier=?</item>+ <item>break</item>+ <item>buffer-mode</item>+ <item>buffer-mode?</item>+ <item>bytevector->sint-list</item>+ <item>bytevector->string</item>+ <item>bytevector->u8-list</item>+ <item>bytevector->uint-list</item>+ <item>bytevector-copy!</item>+ <item>bytevector-copy</item>+ <item>bytevector-fill!</item>+ <item>bytevector-ieee-double-native-ref</item>+ <item>bytevector-ieee-double-native-set!</item>+ <item>bytevector-ieee-double-ref</item>+ <item>bytevector-ieee-double-set!</item>+ <item>bytevector-ieee-single-native-ref</item>+ <item>bytevector-ieee-single-native-set!</item>+ <item>bytevector-ieee-single-ref</item>+ <item>bytevector-ieee-single-set!</item>+ <item>bytevector-length</item>+ <item>bytevector-s16-native-ref</item>+ <item>bytevector-s16-native-set!</item>+ <item>bytevector-s16-ref</item>+ <item>bytevector-s16-set!</item>+ <item>bytevector-s32-native-ref</item>+ <item>bytevector-s32-native-set!</item>+ <item>bytevector-s32-ref</item>+ <item>bytevector-s32-set!</item>+ <item>bytevector-s64-native-ref</item>+ <item>bytevector-s64-native-set!</item>+ <item>bytevector-s64-ref</item>+ <item>bytevector-s64-set!</item>+ <item>bytevector-s8-ref</item>+ <item>bytevector-s8-set!</item>+ <item>bytevector-sint-ref</item>+ <item>bytevector-sint-set!</item>+ <item>bytevector-u16-native-ref</item>+ <item>bytevector-u16-native-set!</item>+ <item>bytevector-u16-ref</item>+ <item>bytevector-u16-set!</item>+ <item>bytevector-u32-native-ref</item>+ <item>bytevector-u32-native-set!</item>+ <item>bytevector-u32-ref</item>+ <item>bytevector-u32-set!</item>+ <item>bytevector-u64-native-ref</item>+ <item>bytevector-u64-native-set!</item>+ <item>bytevector-u64-ref</item>+ <item>bytevector-u64-set!</item>+ <item>bytevector-u8-ref</item>+ <item>bytevector-u8-set!</item>+ <item>bytevector-uint-ref</item>+ <item>bytevector-uint-set!</item>+ <item>bytevector=?</item>+ <item>bytevector?</item>+ <item>caaaar</item>+ <item>caaadr</item>+ <item>caaar</item>+ <item>caadar</item>+ <item>caaddr</item>+ <item>caadr</item>+ <item>caar</item>+ <item>cadaar</item>+ <item>cadadr</item>+ <item>cadar</item>+ <item>caddar</item>+ <item>cadddr</item>+ <item>caddr</item>+ <item>cadr</item>+ <item>call-with-bytevector-output-port</item>+ <item>call-with-current-continuation</item>+ <item>call-with-input-file</item>+ <item>call-with-output-file</item>+ <item>call-with-port</item>+ <item>call-with-string-output-port</item>+ <item>call-with-values</item>+ <item>call/cc</item>+ <item>let/cc</item>+ <item>car</item>+ <item>case-lambda</item>+ <item>case</item>+ <item>catch</item>+ <item>cdaaar</item>+ <item>cdaadr</item>+ <item>cdaar</item>+ <item>cdadar</item>+ <item>cdaddr</item>+ <item>cdadr</item>+ <item>cdar</item>+ <item>cddaar</item>+ <item>cddadr</item>+ <item>cddar</item>+ <item>cdddar</item>+ <item>cddddr</item>+ <item>cdddr</item>+ <item>cddr</item>+ <item>cdr</item>+ <item>ceiling</item>+ <item>char>=?</item>+ <item>char>?</item>+ <item>char<=?</item>+ <item>char<?</item>+ <item>char<?c</item>+ <item>char->integer</item>+ <item>char-alphabetic?</item>+ <item>char-ci>=?</item>+ <item>char-ci>?</item>+ <item>char-ci<=?</item>+ <item>char-ci<?</item>+ <item>char-ci=?</item>+ <item>char-downcase</item>+ <item>char-foldcase</item>+ <item>char-general-category</item>+ <item>char-lower-case?</item>+ <item>char-numeric?</item>+ <item>char-ready?</item>+ <item>char-title-case?</item>+ <item>char-titlecase</item>+ <item>char-upcase</item>+ <item>char-upper-case?</item>+ <item>char-whitespace?</item>+ <item>char=?</item>+ <item>char?</item>+ <item>close-input-port</item>+ <item>close-output-port</item>+ <item>close-port</item>+ <item>complex?</item>+ <item>cond</item>+ <item>condition-accessor</item>+ <item>condition-irritants</item>+ <item>condition-message</item>+ <item>condition-predicate</item>+ <item>condition-who</item>+ <item>condition</item>+ <item>condition?</item>+ <item>cons*</item>+ <item>cons</item>+ <item>continue</item>+ <item>cos</item>+ <item>current-error-port</item>+ <item>current-input-port</item>+ <item>current-output-port</item>+ <item>datum->syntax</item>+ <item>define-condition-type</item>+ <item>define-enumeration</item>+ <item>define-record-type</item>+ <item>delete-file</item>+ <item>denominator</item>+ <item>display</item>+ <item>div-and-mod</item>+ <item>div0-and-mod0</item>+ <item>div0</item>+ <item>div</item>+ <item>do</item>+ <item>dynamic-wind</item>+ <item>else</item>+ <item>endianness</item>+ <item>enum-set->list</item>+ <item>enum-set-complement</item>+ <item>enum-set-constructor</item>+ <item>enum-set-difference</item>+ <item>enum-set-indexer</item>+ <item>enum-set-intersection</item>+ <item>enum-set-member?</item>+ <item>enum-set-projection</item>+ <item>enum-set-subset?</item>+ <item>enum-set-union</item>+ <item>enum-set-universe</item>+ <item>enum-set=?</item>+ <item>eof-object</item>+ <item>eof-object?</item>+ <item>eol-style</item>+ <item>eq?</item>+ <item>equal-hash</item>+ <item>equal?</item>+ <item>eqv?</item>+ <item>error-handling-mode</item>+ <item>error</item>+ <item>error?</item>+ <item>eval</item>+ <item>even?</item>+ <item>exact->inexact</item>+ <item>exact->inexact</item>+ <item>exact-integer-sqrt</item>+ <item>exact</item>+ <item>exact?</item>+ <item>exp</item>+ <item>expt</item>+ <item>file-exists?</item>+ <item>file-options</item>+ <item>filter</item>+ <item>find</item>+ <item>finite?</item>+ <item>fixnum->flonum</item>+ <item>fixnum-width</item>+ <item>fixnum?</item>+ <item>fl>=?</item>+ <item>fl>?</item>+ <item>fl<=?</item>+ <item>fl<?</item>+ <item>fl*</item>+ <item>fl+</item>+ <item>fl-</item>+ <item>fl/</item>+ <item>fl=?</item>+ <item>flabs</item>+ <item>flacos</item>+ <item>flasin</item>+ <item>flatan</item>+ <item>flceiling</item>+ <item>flcos</item>+ <item>fldenominator</item>+ <item>fldiv-and-mod</item>+ <item>fldiv0-and-mod0</item>+ <item>fldiv0</item>+ <item>fldiv</item>+ <item>fleven?</item>+ <item>flexp</item>+ <item>flexpt</item>+ <item>flfinite?</item>+ <item>flfloor</item>+ <item>flinfinite?</item>+ <item>flinteger?</item>+ <item>fllog</item>+ <item>flmax</item>+ <item>flmin</item>+ <item>flmod0</item>+ <item>flmod</item>+ <item>flnan?</item>+ <item>flnegative?</item>+ <item>flnumerator</item>+ <item>flodd?</item>+ <item>flonum?</item>+ <item>floor</item>+ <item>flpositive?</item>+ <item>flround</item>+ <item>flsin</item>+ <item>flsqrt</item>+ <item>fltan</item>+ <item>fltruncate</item>+ <item>flush-output-port</item>+ <item>flzero?</item>+ <item>for-each</item>+ <item>force</item>+ <item>free-identifier=?</item>+ <item>fx>=?</item>+ <item>fx>?</item>+ <item>fx<=?</item>+ <item>fx<?</item>+ <item>fx*/carry</item>+ <item>fx*</item>+ <item>fx+/carry</item>+ <item>fx+</item>+ <item>fx-/carry</item>+ <item>fx-</item>+ <item>fx=?</item>+ <item>fxand</item>+ <item>fxarithmetic-shift-left</item>+ <item>fxarithmetic-shift-right</item>+ <item>fxarithmetic-shift</item>+ <item>fxbit-count</item>+ <item>fxbit-field</item>+ <item>fxbit-set?</item>+ <item>fxcopy-bit-field</item>+ <item>fxcopy-bit</item>+ <item>fxdiv-and-mod</item>+ <item>fxdiv0-and-mod0</item>+ <item>fxdiv0</item>+ <item>fxdiv</item>+ <item>fxeven?</item>+ <item>fxfirst-bit-set</item>+ <item>fxif</item>+ <item>fxior</item>+ <item>fxlength</item>+ <item>fxmax</item>+ <item>fxmin</item>+ <item>fxmod0</item>+ <item>fxmod</item>+ <item>fxnegative?</item>+ <item>fxnot</item>+ <item>fxodd?</item>+ <item>fxpositive?</item>+ <item>fxreverse-bit-field</item>+ <item>fxrotate-bit-field</item>+ <item>fxxor</item>+ <item>fxzero?</item>+ <item>gcd</item>+ <item>generate-temporaries</item>+ <item>get-bytevector-all</item>+ <item>get-bytevector-n!</item>+ <item>get-bytevector-n</item>+ <item>get-bytevector-some</item>+ <item>get-char</item>+ <item>get-datum</item>+ <item>get-line</item>+ <item>get-string-all</item>+ <item>get-string-n!</item>+ <item>get-string-n</item>+ <item>get-u8</item>+ <item>greatest-fixnum</item>+ <item>guard</item>+ <item>har-ci<?</item>+ <item>hashtable-clear!</item>+ <item>hashtable-contains?</item>+ <item>hashtable-copy</item>+ <item>hashtable-delete!</item>+ <item>hashtable-entries</item>+ <item>hashtable-equivalence-function</item>+ <item>hashtable-hash-function</item>+ <item>hashtable-keys</item>+ <item>hashtable-mutable?</item>+ <item>hashtable-ref</item>+ <item>hashtable-set!</item>+ <item>hashtable-size</item>+ <item>hashtable-update!</item>+ <item>hashtable?</item>+ <item>i/o-decoding-error?</item>+ <item>i/o-encoding-error-char</item>+ <item>i/o-encoding-error?</item>+ <item>i/o-error-filename</item>+ <item>i/o-error-port</item>+ <item>i/o-error-position</item>+ <item>i/o-error?</item>+ <item>i/o-file-already-exists-error?</item>+ <item>i/o-file-does-not-exist-error?</item>+ <item>i/o-file-is-read-only-error?</item>+ <item>i/o-file-protection-error?</item>+ <item>i/o-filename-error?</item>+ <item>i/o-invalid-position-error?</item>+ <item>i/o-port-error?</item>+ <item>i/o-read-error?</item>+ <item>i/o-write-error?</item>+ <item>identifier-syntax</item>+ <item>identifier?</item>+ <item>if</item>+ <item>imag-part</item>+ <item>implementation-restriction-violation?</item>+ <item>inexact->exact</item>+ <item>inexact</item>+ <item>inexact?</item>+ <item>infinite?</item>+ <item>input-port?</item>+ <item>integer->char</item>+ <item>integer-valued?</item>+ <item>integer?</item>+ <item>interaction-environment</item>+ <item>irritants-condition?</item>+ <item>lambda</item>+ <item>latin-1-codec</item>+ <item>lcm</item>+ <item>least-fixnum</item>+ <item>length</item>+ <item>let*-values</item>+ <item>let*</item>+ <item>let-syntax</item>+ <item>let-values</item>+ <item>let</item>+ <item>letrec*</item>+ <item>letrec-syntax</item>+ <item>letrec</item>+ <item>lexical-violation?</item>+ <item>list->string</item>+ <item>list->vector</item>+ <item>list-ref</item>+ <item>list-sort</item>+ <item>list-tail</item>+ <item>list</item>+ <item>list?</item>+ <item>load</item>+ <item>log</item>+ <item>lookahead-char</item>+ <item>lookahead-u8</item>+ <item>map</item>+ <item>magnitude</item>+ <item>make-assertion-violation</item>+ <item>make-bytevector</item>+ <item>make-custom-binary-input-port</item>+ <item>make-custom-binary-input/output-port</item>+ <item>make-custom-binary-output-port</item>+ <item>make-custom-textual-input-port</item>+ <item>make-custom-textual-input/output-port</item>+ <item>make-custom-textual-output-port</item>+ <item>make-enumeration</item>+ <item>make-eq-hashtable</item>+ <item>make-eqv-hashtable</item>+ <item>make-error</item>+ <item>make-hashtable</item>+ <item>make-i/o-decoding-error</item>+ <item>make-i/o-encoding-error</item>+ <item>make-i/o-error</item>+ <item>make-i/o-file-already-exists-error</item>+ <item>make-i/o-file-does-not-exist-error</item>+ <item>make-i/o-file-is-read-only-error</item>+ <item>make-i/o-file-protection-error</item>+ <item>make-i/o-filename-error</item>+ <item>make-i/o-invalid-position-error</item>+ <item>make-i/o-port-error</item>+ <item>make-i/o-read-error</item>+ <item>make-i/o-write-error</item>+ <item>make-implementation-restriction-violation</item>+ <item>make-irritants-condition</item>+ <item>make-lexical-violation</item>+ <item>make-message-condition</item>+ <item>make-no-infinities-violation</item>+ <item>make-no-nans-violation</item>+ <item>make-non-continuable-violation</item>+ <item>make-polar</item>+ <item>make-record-constructor-descriptor</item>+ <item>make-record-type-descriptor</item>+ <item>make-rectangular</item>+ <item>make-serious-condition</item>+ <item>make-string</item>+ <item>make-syntax-violation</item>+ <item>make-transcoder</item>+ <item>make-undefined-violation</item>+ <item>make-variable-transformer</item>+ <item>make-vector</item>+ <item>make-violation</item>+ <item>make-warning</item>+ <item>make-who-condition</item>+ <item>max</item>+ <item>member</item>+ <item>memp</item>+ <item>memq</item>+ <item>memv</item>+ <item>message-condition?</item>+ <item>min</item>+ <item>mod0</item>+ <item>mod</item>+ <item>modulo</item>+ <item>nan?</item>+ <item>native-endianness</item>+ <item>native-eol-style</item>+ <item>native-transcoder</item>+ <item>negative?</item>+ <item>newline</item>+ <item>no-infinities-violation?</item>+ <item>no-nans-violation?</item>+ <item>non-continuable-violation?</item>+ <item>not</item>+ <item>null-environment</item>+ <item>null?</item>+ <item>number->string</item>+ <item>number->string</item>+ <item>number?</item>+ <item>numerator</item>+ <item>odd?</item>+ <item>open-bytevector-input-port</item>+ <item>open-bytevector-output-port</item>+ <item>open-file-input-port</item>+ <item>open-file-input/output-port</item>+ <item>open-file-output-port</item>+ <item>open-input-file</item>+ <item>open-output-file</item>+ <item>open-string-input-port</item>+ <item>open-string-output-port</item>+ <item>or</item>+ <item>output-port-buffer-mode</item>+ <item>output-port?</item>+ <item>pair?</item>+ <item>partition</item>+ <item>peek-char</item>+ <item>port-eof?</item>+ <item>port-has-port-position?</item>+ <item>port-has-set-port-position!?</item>+ <item>port-position</item>+ <item>port-transcoder</item>+ <item>port?</item>+ <item>positive?</item>+ <item>procedure?</item>+ <item>put-bytevector</item>+ <item>put-char</item>+ <item>put-datum</item>+ <item>put-string</item>+ <item>put-u8</item>+ <item>quasiquote</item>+ <item>quasisyntax</item>+ <item>quote</item>+ <item>quotient</item>+ <item>raise-continuable</item>+ <item>raise</item>+ <item>rational-valued?</item>+ <item>rational?</item>+ <item>rationalize</item>+ <item>read-char</item>+ <item>read</item>+ <item>real->flonum</item>+ <item>real-part</item>+ <item>real-valued?</item>+ <item>real?</item>+ <item>record-accessor</item>+ <item>record-constructor-descriptor</item>+ <item>record-constructor</item>+ <item>record-field-mutable?</item>+ <item>record-mutator</item>+ <item>record-predicate</item>+ <item>record-rtd</item>+ <item>record-type-descriptor</item>+ <item>record-type-descriptor?</item>+ <item>record-type-field-names</item>+ <item>record-type-generative?</item>+ <item>record-type-name</item>+ <item>record-type-opaque?</item>+ <item>record-type-parent</item>+ <item>record-type-sealed?</item>+ <item>record-type-uid</item>+ <item>record?</item>+ <item>remainder</item>+ <item>remove</item>+ <item>remp</item>+ <item>remq</item>+ <item>remv</item>+ <item>reverse</item>+ <item>round</item>+ <item>scheme-report-environment</item>+ <item>serious-condition?</item>+ <item>set!</item>+ <item>set-car!</item>+ <item>set-cdr!</item>+ <item>set-port-position!</item>+ <item>simple-conditions</item>+ <item>sin</item>+ <item>sint-list->bytevector</item>+ <item>sqrt</item>+ <item>standard-error-port</item>+ <item>standard-input-port</item>+ <item>standard-output-port</item>+ <item>string>=?</item>+ <item>string>?</item>+ <item>string<=?</item>+ <item>string<?</item>+ <item>string->bytevector</item>+ <item>string->list</item>+ <item>string->number</item>+ <item>string->symbol</item>+ <item>string->utf16</item>+ <item>string->utf32</item>+ <item>string->utf8</item>+ <item>string-append</item>+ <item>string-ci>=?</item>+ <item>string-ci>?</item>+ <item>string-ci<=?</item>+ <item>string-ci<?</item>+ <item>string-ci-hash</item>+ <item>string-ci=?</item>+ <item>string-copy</item>+ <item>string-downcase</item>+ <item>string-fill!</item>+ <item>string-foldcase</item>+ <item>string-hash</item>+ <item>string-length</item>+ <item>string-normalize-nfc</item>+ <item>string-normalize-nfd</item>+ <item>string-normalize-nfkc</item>+ <item>string-normalize-nfkd</item>+ <item>string-ref</item>+ <item>string-set!</item>+ <item>string-titlecase</item>+ <item>string-upcase</item>+ <item>string</item>+ <item>string=?</item>+ <item>string?</item>+ <item>struct</item>+ <item>substring</item>+ <item>symbol->string</item>+ <item>symbol-hash</item>+ <item>symbol=?</item>+ <item>symbol?</item>+ <item>syntax->datum</item>+ <item>syntax-case</item>+ <item>syntax-rules</item>+ <item>syntax-violation-form</item>+ <item>syntax-violation-subform</item>+ <item>syntax-violation</item>+ <item>syntax-violation?</item>+ <item>syntax</item>+ <item>tan</item>+ <item>textual-port?</item>+ <item>transcoded-port</item>+ <item>transcoder-codec</item>+ <item>transcoder-eol-style</item>+ <item>transcoder-error-handling-mode</item>+ <item>transcript-off</item>+ <item>transcript-on</item>+ <item>truncate</item>+ <item>u8-list->bytevector</item>+ <item>uint-list->bytevector</item>+ <item>undefined-violation?</item>+ <item>unquote-splicing</item>+ <item>unquote</item>+ <item>unsyntax-splicing</item>+ <item>unsyntax</item>+ <item>utf-16-codec</item>+ <item>utf-8-codec</item>+ <item>utf16->string</item>+ <item>utf32->string</item>+ <item>utf8->string</item>+ <item>values</item>+ <item>vector->list</item>+ <item>vector->listlist->vector</item>+ <item>vector-fill!</item>+ <item>vector-length</item>+ <item>vector-ref</item>+ <item>vector-set!</item>+ <item>vector-sort!</item>+ <item>vector-sort</item>+ <item>vector</item>+ <item>vector?</item>+ <item>violation?</item>+ <item>warning?</item>+ <item>while</item>+ <item>who-condition?</item>+ <item>with-exception-handler</item>+ <item>with-input-from-file</item>+ <item>with-output-to-file</item>+ <item>with-syntax</item>+ <item>write-char</item>+ <item>write</item>+ <item>zero?</item>+ </list>+ <contexts>+++ <context name="Default" attribute="Normal" lineEndContext="#stay">+ <DetectSpaces/>++ <!-- "#lang x" line -->+ <RegExpr attribute="Comment" String="^#lang.*" context="#stay" column="0"/>+ <DetectChar attribute="Comment" context="hash" char="#" lookAhead="1"/>+ <DetectChar attribute="Comment" context="semicolon" char=";" lookAhead="1"/>+ <DetectChar attribute="String" context="String" char="""/>+ <Detect2Chars attribute="String" context="Template" char="&" char1="{"/>+ <AnyChar attribute="Brackets" context="#stay" String="(){}[]"/>+ <keyword attribute="Keyword" context="#stay" String="keywords"/>+ <keyword attribute="Definition" context="function_decl" String="defines"/>+ <keyword attribute="Operator" context="#stay" String="operators"/>+ <RegExpr attribute="Normal" context="#stay" String="&symbol;"/>+ <!-- s, f, d, l are extensions of Kawa -->+ <RegExpr attribute="Float" context="#stay" String="[0-9]*+\.[0-9]++([esfdl][+-]?[0-9]++)?|[0-9]++[esfdl][+-]?[0-9]++"/>+ <RegExpr attribute="Decimal" context="#stay" String="[0-9]++"/>+ </context>+++ <context name="Template" attribute="String" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <DetectChar attribute="String" context="#pop" char="}"/>+ <DetectChar attribute="String" context="Template" char="{"/>+ <DetectChar attribute="Char" context="TemplateTemplate" char="&" lookAhead="1"/>+ </context>+ <context name="TemplateTemplate" attribute="String" lineEndContext="#pop">+ <Detect2Chars attribute="Operator" context="#stay" char="&" char1="|" firstNonSpace="1"/>+ <Detect2Chars attribute="Operator" context="#pop!NotNewlineTemplate" char="&" char1="-"/>+ <Detect2Chars attribute="Extension" context="#pop!FormatTemplate" char="&" char1="~"/>+ <StringDetect attribute="Comment" context="#pop!MultiLineComment" String="&#|" beginRegion="comment"/>+ <RegExpr attribute="Char" context="#pop!EndCharTemplate" String="(&(?:#(?:[0-9]+|x[0-9a-fA-F]+)|[_a-zA-Z][-:_a-zA-Z0-9]*))" lookAhead="1"/>+ <DetectChar attribute="String" context="#pop" char="&"/>+ </context>+ <context name="FormatTemplate" attribute="Extension" lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar attribute="Extension" context="#pop" String="({["/>+ <AnyChar attribute="Extension" context="FormatTemplate" String=")}]"/>+ <RegExpr attribute="Extension" context="#pop" String="[^(){}\[\]]+"/>+ </context>+ <context name="NotNewlineTemplate" attribute="String" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectSpaces/>+ <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|" beginRegion="comment"/>+ </context>+ <context name="EndCharTemplate" attribute="Comment" lineEndContext="#stay">+ <StringDetect attribute="Char" context="#pop" String="%1;" dynamic="1"/>+ <StringDetect attribute="Error" context="#pop" String="%1" dynamic="1"/>+ </context>+++ <context name="semicolon" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop!comment">+ <RegExpr attribute="Region Marker" context="#pop" String=";+\s*BEGIN\b.*" beginRegion="region"/>+ <RegExpr attribute="Region Marker" context="#pop" String=";+\s*END\b.*" endRegion="region"/>+ </context>+ <context name="comment" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier/>+ </context>++ <context name="hash" attribute="Normal" lineEndContext="#stay">+ <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="t"/>+ <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="T"/>+ <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="f"/>+ <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="F"/>+ <Detect2Chars attribute="Base Prefix" context="#pop!Num16" char="#" char1="x"/>+ <Detect2Chars attribute="Base Prefix" context="#pop!Num8" char="#" char1="o"/>+ <Detect2Chars attribute="Base Prefix" context="#pop!Num2" char="#" char1="b"/>+ <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="e"/>+ <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="i"/>+ <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="d"/>+ <Detect2Chars attribute="Char" context="#pop!Char" char="#" char1="\"/>+ <Detect2Chars attribute="Comment" context="#pop!DatumComment" char="#" char1=";"/>+ <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|" beginRegion="comment"/>+ <Detect2Chars attribute="Comment" context="#pop!MultiLineGuileCommentOrExtension" char="#" char1="!" lookAhead="1"/>++ <!-- Kawa extension -->+ <Detect2Chars attribute="Operator" context="#pop!Regex" char="#" char1="/"/>+ <Detect2Chars attribute="XML Tag" context="#pop!XML" char="#" char1="<" lookAhead="1"/>++ <DetectChar attribute="Normal" context="#pop" char="#"/>+ </context>+++ <context name="XML" attribute="XML Tag" lineEndContext="#pop">+ <StringDetect attribute="XML Tag" context="#pop!XMLProc" String="#<?"/>+ <StringDetect attribute="XML Comment" context="#pop!XMLComment" String="#<!--"/>+ <StringDetect attribute="XML Tag" context="#pop!XMLCDATA" String="#<![CDATA["/>+ <StringDetect attribute="XML Tag" context="#pop!XMLTagExpr1" String="#<("/>+ <StringDetect attribute="XML Tag" context="#pop!XMLTagExpr2" String="#<{"/>+ <RegExpr attribute="XML Tag" context="#pop!XMLTag" String="#<[^\s>]++"/>+ <Detect2Chars attribute="Error" context="#pop" char="#" char1="<"/>+ </context>++ <context name="XMLTagExpr1" attribute="Normal" lineEndContext="#stay">+ <DetectChar attribute="XML Tag" context="#pop!XMLTag" char=")"/>+ <IncludeRules context="Default"/>+ </context>+ <context name="XMLTagExpr2" attribute="Normal" lineEndContext="#stay">+ <DetectChar attribute="XML Tag" context="#pop!XMLTag" char="}"/>+ <IncludeRules context="Default"/>+ </context>++ <context name="XMLTag" attribute="XML Attribute" lineEndContext="#stay">+ <DetectSpaces/>+ <Detect2Chars attribute="XML Tag" context="#pop" char="/" char1=">"/>+ <DetectChar attribute="XML Tag" context="#pop!XMLInnerTag" char=">"/>+ <RegExpr attribute="XML Attribute" context="XMLAttribute" String="[^\s=/>]++\s*"/>+ </context>+ <context name="XMLInnerTag" attribute="XML Tag" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <DetectChar attribute="XML String" context="XMLEscape" char="&" lookAhead="1"/>+ <DetectChar attribute="XML Tag" context="XMLFindXML" char="<" lookAhead="1"/>+ </context>+ <context name="XMLFindXML" attribute="String" lineEndContext="#stay">+ <Detect2Chars attribute="XML Tag" context="#pop!XMLProc" char="<" char1="?"/>+ <Detect2Chars attribute="XML Tag" context="#pop!XMLTagExpr1" char="<" char1="("/>+ <Detect2Chars attribute="XML Tag" context="#pop!XMLTagExpr2" char="<" char1="{"/>+ <StringDetect attribute="XML Comment" context="#pop!XMLComment" String="<!--"/>+ <StringDetect attribute="XML Tag" context="#pop!XMLCDATA" String="<![CDATA["/>+ <Detect2Chars attribute="XML Tag" context="#pop!XMLCloseTag" char="<" char1="/" lookAhead="1"/>+ <RegExpr attribute="XML Tag" context="#pop!XMLTag" String="<[^\s>]++"/>+ <DetectChar attribute="XML Error" context="#pop" char="<"/>+ </context>+ <context name="XMLCloseTag" attribute="String" lineEndContext="#pop#pop">+ <RegExpr attribute="XML Tag" context="#pop#pop" String="</[^\s>]*>"/>+ <Detect2Chars attribute="XML Error" context="#pop#pop" char="<" char1="/"/>+ </context>++ <context name="XMLAttribute" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="#pop">+ <DetectSpaces/>+ <DetectChar attribute="XML Attribute" context="XMLAttributeValue" char="="/>+ </context>+ <context name="XMLAttributeValue" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="#pop#pop">+ <DetectSpaces/>+ <DetectChar attribute="XML String" context="XMLDQ" char="""/>+ <DetectChar attribute="XML String" context="XMLSQ" char="'"/>+ </context>+ <context name="XMLDQ" attribute="XML String" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <DetectChar attribute="XML String" context="#pop#pop#pop" char="""/>+ <IncludeRules context="XMLStringEscape"/>+ </context>+ <context name="XMLSQ" attribute="XML String" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <DetectChar attribute="XML String" context="#pop#pop#pop" char="'"/>+ <IncludeRules context="XMLStringEscape"/>+ </context>+ <context name="XMLStringEscape" attribute="XML String" lineEndContext="#stay">+ <DetectChar attribute="XML String" context="XMLEscape" char="&" lookAhead="1"/>+ <DetectChar attribute="XML Error" context="#stay" char="<"/>+ </context>+ <context name="XMLEscape" attribute="XML String" lineEndContext="#stay">+ <RegExpr attribute="XML Entity" context="#pop" String="&(?:lt|gt|amp|quot|apos|#[0-9]+|x[0-9a-fA-F]+);"/>+ <DetectChar attribute="XML Error" context="#pop" char="&"/>+ </context>+ <context name="XMLProc" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="XMLProcAttrs">+ <RegExpr attribute="XML Tag" context="XMLProcAttrs" String="[^\s?]+"/>+ </context>+ <context name="XMLProcAttrs" attribute="XML Attribute" lineEndContext="#stay">+ <Detect2Chars attribute="XML Tag" context="#pop#pop" char="?" char1=">"/>+ </context>++ <context name="XMLComment" attribute="XML Comment" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <Detect2Chars attribute="XML Comment" context="XMLCommentCheck" char="-" char1="-" lookAhead="1"/>+ </context>+ <context name="XMLCommentCheck" attribute="Comment" lineEndContext="#stay">+ <StringDetect attribute="XML Tag" context="#pop#pop" String="-->"/>+ <Detect2Chars attribute="XML Error" context="#pop" char="-" char1="-"/>+ </context>++ <context name="XMLCDATA" attribute="XML CDATA" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <StringDetect attribute="XML Tag" context="#pop" String="]]>"/>+ </context>+++ <context name="Regex" attribute="Extension" lineEndContext="#pop" fallthroughContext="#pop">+ <RegExpr attribute="Extension" context="RegexEnd" String="®ex;"/>+ </context>+ <context name="RegexEnd" attribute="Extension" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">+ <DetectChar attribute="Operator" context="RegexModifier" char="/"/>+ </context>+ <context name="RegexModifier" attribute="Extension" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">+ <AnyChar attribute="Extension" context="#stay" String="ism"/>+ </context>+++ <context name="Num2" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit2">+ <IncludeRules context="NumPrefix"/>+ <AnyChar attribute="Function" context="#pop!Digit2" String="+-"/>+ </context>+ <context name="Digit2" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar attribute="Decimal" context="#stay" String="01"/>+ </context>++ <context name="Num8" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit8">+ <IncludeRules context="NumPrefix"/>+ <AnyChar attribute="Function" context="#pop!Digit8" String="+-"/>+ </context>+ <context name="Digit8" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar attribute="Decimal" context="#stay" String="01234567"/>+ </context>++ <context name="Num10" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit10">+ <IncludeRules context="NumPrefix"/>+ <AnyChar attribute="Function" context="#pop!Digit10" String="+-"/>+ </context>+ <context name="Digit10" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">+ <!-- s, f, d, l are extensions of Kawa -->+ <RegExpr attribute="Float" context="#pop" String="[0-9]*+\.[0-9]++([esfdl][+-]?[0-9]++)?|[0-9]++[esfdl][+-]?[0-9]++"/>+ <RegExpr attribute="Decimal" context="#pop" String="[0-9]++"/>+ </context>++ <context name="Num16" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit16">+ <IncludeRules context="NumPrefix"/>+ <AnyChar attribute="Function" context="#pop!Digit16" String="+-"/>+ </context>+ <context name="Digit16" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">+ <RegExpr attribute="Decimal" context="#pop" String="[0-9a-fA-F]+"/>+ </context>++ <context name="NumPrefix" attribute="Decimal" lineEndContext="#pop">+ <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="e"/>+ <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="i"/>+ </context>+++ <context name="Char" attribute="Char" lineEndContext="#pop">+ <DetectChar attribute="Char" context="HexChar" char="x"/>+ <keyword attribute="Char" context="#pop" String="characters" insensitive="1"/>+ <RegExpr attribute="Char" context="#pop" String=".(?!\w)"/>+ <RegExpr attribute="Error" context="#pop" String="\w+|."/>+ </context>+ <context name="HexChar" attribute="Char" lineEndContext="#pop#pop">+ <RegExpr attribute="Char" context="#pop#pop" String="[0-9a-fA-F]+"/>+ </context>+++ <context name="MultiLineGuileCommentOrExtension" attribute="Comment" lineEndContext="#stay">+ <RegExpr attribute="Extension" context="#pop" String="#!\w+"/>+ <Detect2Chars attribute="Comment" context="#pop!MultiLineGuileComment" char="#" char1="!" beginRegion="comment"/>+ </context>++ <context name="MultiLineGuileComment" attribute="Comment" lineEndContext="#stay" fallthroughContext="comment">+ <RegExpr attribute="Comment" context="#pop" String="^!#\s*$" endRegion="comment" column="0"/>+ </context>++ <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">+ <DetectSpaces/>+ <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="comment"/>+ <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="comment"/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier/>+ </context>+++ <context name="DatumComment" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectChar attribute="Comment" context="#pop!DatumCommentParent" char="(" beginRegion="comment"/>+ <DetectChar attribute="Comment" context="#pop!DatumCommentBracket" char="[" beginRegion="comment"/>+ <DetectChar attribute="Comment" context="#pop!DatumCommentBrace" char="{" beginRegion="comment"/>+ <DetectChar attribute="Comment" context="#pop!DatumCommentString" char="""/>++ <DetectChar attribute="Comment" context="#pop!DatumCommentHash" char="#"/>++ <RegExpr attribute="Comment" context="#pop!DatumCommentExpr" String="[^{}\[\]()\s]+"/>+ </context>+ <context name="DatumCommentHash" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectChar attribute="Comment" context="#pop!DatumCommentRegex" char="/"/>+ <DetectChar attribute="Comment" context="#pop!DatumCommentXML" char="<"/>+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentTemplate" char="&" char1="{"/>+ <DetectIdentifier/>+ </context>++ <context name="DatumCommentTemplate" attribute="Comment" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <DetectChar attribute="Comment" context="#pop" char="}"/>+ <DetectChar attribute="Comment" context="DatumCommentTemplate" char="{"/>+ <DetectChar attribute="Comment" context="DatumCommentTemplateTemplate" char="&"/>+ </context>+ <context name="DatumCommentTemplateTemplate" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectChar attribute="Comment" context="#pop!DatumCommentParent2" char="("/>+ <DetectChar attribute="Comment" context="#pop!DatumCommentBracket2" char="["/>+ <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|"/>+ <DetectChar attribute="Comment" context="#pop!DatumCommentFormatTemplate" char="~"/>+ <RegExpr attribute="Comment" context="#pop" String="&(?:#(?:[0-9]+|x[0-9a-fA-F]+)|[_a-zA-Z][-:_a-zA-Z0-9]*);?"/>+ </context>+ <context name="DatumCommentFormatTemplate" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar attribute="Comment" context="#pop" String="({["/>+ <AnyChar attribute="Comment" context="DatumCommentFormatTemplate" String=")}]"/>+ <RegExpr attribute="Comment" context="#pop" String="[^(){}\[\]]+"/>+ </context>++ <context name="DatumCommentRegex" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+ <RegExpr attribute="Comment" context="DatumCommentRegexEnd" String="®ex;"/>+ </context>+ <context name="DatumCommentRegexEnd" attribute="Comment" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">+ <DetectChar attribute="Comment" context="DatumCommentRegexModifier" char="/"/>+ </context>+ <context name="DatumCommentRegexModifier" attribute="Comment" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">+ <AnyChar attribute="Comment" context="#stay" String="ism"/>+ </context>++ <context name="DatumCommentXML" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectChar attribute="Comment" context="#pop!DatumCommentXMLProc" char="?"/>+ <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTagExpr1" char="("/>+ <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTagExpr2" char="{"/>+ <Detect2Chars attribute="Comment" context="#pop" char="/" char1=">"/>+ <StringDetect attribute="Comment" context="#pop!DatumCommentXMLComment" String="!--"/>+ <StringDetect attribute="Comment" context="#pop!DatumCommentXMLCDATA" String="![CDATA["/>+ <RegExpr attribute="Comment" context="#pop!DatumCommentXMLTag" String="[^\s>]++\s*"/>+ </context>++ <context name="DatumCommentXMLProc" attribute="Comment" lineEndContext="#stay">+ <Detect2Chars attribute="Comment" context="#pop" char="?" char1=">"/>+ </context>+ <context name="DatumCommentXMLCDATA" attribute="Comment" lineEndContext="#stay">+ <StringDetect attribute="Comment" context="#pop" String="]]>"/>+ </context>+ <context name="DatumCommentXMLComment" attribute="Comment" lineEndContext="#stay">+ <StringDetect attribute="Comment" context="#pop" String="-->"/>+ </context>+ <context name="DatumCommentXMLTagExpr1" attribute="Comment" lineEndContext="#stay">+ <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTag" char=")"/>+ <IncludeRules context="DatumCommentInExpr"/>+ </context>+ <context name="DatumCommentXMLTagExpr2" attribute="Comment" lineEndContext="#stay">+ <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTag" char="}"/>+ <IncludeRules context="DatumCommentInExpr"/>+ </context>++ <context name="DatumCommentXMLTag" attribute="Comment" lineEndContext="#stay">+ <DetectSpaces/>+ <Detect2Chars attribute="Comment" context="#pop" char="/" char1=">"/>+ <DetectChar attribute="Comment" context="#pop!DatumCommentXMLInnerTag" char=">"/>+ <RegExpr attribute="Comment" context="DatumCommentXMLAttribute" String="[^\s=/>]++\s*"/>+ </context>+ <context name="DatumCommentXMLInnerTag" attribute="Comment" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <DetectChar attribute="Comment" context="DatumCommentXMLEscape" char="&" lookAhead="1"/>+ <DetectChar attribute="Comment" context="DatumCommentXMLFindXML" char="<" lookAhead="1"/>+ </context>+ <context name="DatumCommentXMLFindXML" attribute="Comment" lineEndContext="#stay">+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLProc" char="<" char1="?"/>+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLTagExpr1" char="<" char1="("/>+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLTagExpr2" char="<" char1="{"/>+ <StringDetect attribute="Comment" context="#pop!DatumCommentXMLComment" String="<!--"/>+ <StringDetect attribute="Comment" context="#pop!DatumCommentXMLCDATA" String="<![CDATA["/>+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLCloseTag" char="<" char1="/" lookAhead="1"/>+ <RegExpr attribute="Comment" context="#pop!DatumCommentXMLTag" String="<[^\s>]++"/>+ <DetectChar attribute="Comment" context="#pop" char="<"/>+ </context>+ <context name="DatumCommentXMLCloseTag" attribute="Comment" lineEndContext="#pop#pop">+ <RegExpr attribute="Comment" context="#pop#pop" String="</[^\s>]*>"/>+ <Detect2Chars attribute="XML Error" context="#pop#pop" char="<" char1="/"/>+ </context>++ <context name="DatumCommentXMLAttribute" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop">+ <DetectSpaces/>+ <DetectChar attribute="Comment" context="DatumCommentXMLAttributeValue" char="="/>+ </context>+ <context name="DatumCommentXMLAttributeValue" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop#pop">+ <DetectSpaces/>+ <DetectChar attribute="Comment" context="DatumCommentXMLDQ" char="""/>+ <DetectChar attribute="Comment" context="DatumCommentXMLSQ" char="'"/>+ </context>+ <context name="DatumCommentXMLDQ" attribute="Comment" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <DetectChar attribute="Comment" context="#pop#pop#pop" char="""/>+ <IncludeRules context="DatumCommentXMLStringEscape"/>+ </context>+ <context name="DatumCommentXMLSQ" attribute="Comment" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <DetectChar attribute="Comment" context="#pop#pop#pop" char="'"/>+ <IncludeRules context="DatumCommentXMLStringEscape"/>+ </context>+ <context name="DatumCommentXMLStringEscape" attribute="Comment" lineEndContext="#stay">+ <DetectChar attribute="Comment" context="DatumCommentXMLEscape" char="&" lookAhead="1"/>+ <DetectChar attribute="XML Error" context="#stay" char="<"/>+ </context>++ <context name="DatumCommentXMLEscape" attribute="Comment" lineEndContext="#stay">+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentParent2" char="&" char1="("/>+ <Detect2Chars attribute="Comment" context="#pop!DatumCommentBrace2" char="&" char1="{"/>+ <RegExpr attribute="Comment" context="#pop" String="&(?:lt|gt|amp|quot|apos|#[0-9]+|x[0-9a-fA-F]+);"/>+ <DetectChar attribute="XML Error" context="#pop" char="&"/>+ </context>++ <context name="DatumCommentExpr" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectChar attribute="Comment" context="#pop!DatumCommentParent2" char="("/>+ <DetectChar attribute="Comment" context="#pop!DatumCommentBrace2" char="{"/>+ <DetectChar attribute="Comment" context="#pop!DatumCommentBracket2" char="["/>+ </context>++ <context name="DatumCommentString" attribute="Comment" lineEndContext="#stay">+ <DetectChar attribute="Comment" context="#pop" char="""/>+ <RegExpr attribute="Comment" context="#stay" String="(?:[^\\"]++|\\.)++"/>+ </context>++ <context name="DatumCommentParent" attribute="Comment" lineEndContext="#stay">+ <DetectChar attribute="Comment" context="#pop" char=")" endRegion="comment"/>+ <IncludeRules context="DatumCommentInExpr"/>+ </context>+ <context name="DatumCommentParent2" attribute="Comment" lineEndContext="#stay">+ <DetectChar attribute="Comment" context="#pop" char=")"/>+ <IncludeRules context="DatumCommentInExpr"/>+ </context>+ <context name="DatumCommentBracket" attribute="Comment" lineEndContext="#stay">+ <DetectChar attribute="Comment" context="#pop" char="]" endRegion="comment"/>+ <IncludeRules context="DatumCommentInExpr"/>+ </context>+ <context name="DatumCommentBracket2" attribute="Comment" lineEndContext="#stay">+ <DetectChar attribute="Comment" context="#pop" char="]"/>+ <IncludeRules context="DatumCommentInExpr"/>+ </context>+ <context name="DatumCommentBrace" attribute="Comment" lineEndContext="#stay">+ <DetectChar attribute="Comment" context="#pop" char="}" endRegion="comment"/>+ <IncludeRules context="DatumCommentInExpr"/>+ </context>+ <context name="DatumCommentBrace2" attribute="Comment" lineEndContext="#stay">+ <DetectChar attribute="Comment" context="#pop" char="}"/>+ <IncludeRules context="DatumCommentInExpr"/>+ </context>++ <context name="DatumCommentInExpr" attribute="Comment" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <DetectChar attribute="Comment" context="DatumCommentParent2" char="("/>+ <DetectChar attribute="Comment" context="DatumCommentBrace2" char="{"/>+ <DetectChar attribute="Comment" context="DatumCommentBracket2" char="["/>+ <DetectChar attribute="Comment" context="DatumCommentString" char="""/>+ <DetectChar attribute="Comment" context="DatumCommentHash" char="#"/>+ </context>+++ <context name="String" attribute="String" lineEndContext="#stay">+ <DetectChar attribute="String" context="#pop" char="""/>+ <DetectChar attribute="Char" context="EscapeString" char="\"/>+ </context>+ <context name="EscapeString" attribute="Char" lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar attribute="Char" context="#pop" String="abfnrtv"\"/>+ <AnyChar attribute="Char" context="MultiLineString" String="&tab; "/>+ <RegExpr attribute="Char" context="#pop" String="[xXu][0-9a-fA-F]+;|\\[0-7]{3}|(?:[MC]-|\^)?."/>+ </context>+ <context name="MultiLineString" attribute="String" lineEndContext="#stay" fallthroughContext="#pop#pop">+ <DetectSpaces/>+ </context>++ <context name="function_decl" attribute="Function" lineEndContext="#stay">+ <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-!$%"*/:<=>?~_^+.@]*\s*"/>+ </context>+ </contexts>+ <itemDatas>+ <itemData name="Normal" defStyleNum="dsNormal"/>+ <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="0"/>+ <itemData name="Definition" defStyleNum="dsExtension" spellChecking="0"/>+ <itemData name="Operator" defStyleNum="dsOperator" spellChecking="0"/>+ <itemData name="Function" defStyleNum="dsFunction" spellChecking="0"/>+ <itemData name="Base Prefix" defStyleNum="dsSpecialChar" spellChecking="0"/>+ <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="0"/>+ <itemData name="Float" defStyleNum="dsFloat" spellChecking="0"/>+ <itemData name="Char" defStyleNum="dsChar" spellChecking="0"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Error" defStyleNum="dsError" spellChecking="0"/>+ <itemData name="Extension" defStyleNum="dsExtension" spellChecking="0"/>+ <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>+ <itemData name="XML Tag" defStyleNum="dsString" spellChecking="0"/>+ <itemData name="XML Comment" defStyleNum="dsComment"/>+ <itemData name="XML CDATA" defStyleNum="dsString"/>+ <itemData name="XML Attribute" defStyleNum="dsOthers" spellChecking="0"/>+ <itemData name="XML String" defStyleNum="dsString"/>+ <itemData name="XML Error" defStyleNum="dsError" spellChecking="0"/>+ <itemData name="XML Entity" defStyleNum="dsDecVal" spellChecking="0"/>+ <itemData name="Brackets" defStyleNum="dsOperator" spellChecking="0"/>+ </itemDatas>+ </highlighting>+ <general>+ <keywords casesensitive="1" weakDeliminator="-+*?!<>=/:.,\&" additionalDeliminator="";#"/>+ <comments>+ <comment name="singleLine" start=";;"/>+ <comment name="multiLine" start="#|" end="|#" region="comment"/>+ </comments>+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
+ xml/zig.xml view
@@ -0,0 +1,311 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!ENTITY bin_int "(?:[01]+(?:_[01]+)*)">+ <!ENTITY oct_int "(?:[0-7]+(?:_[0-7]+)*)">+ <!ENTITY dec_int "(?:[0-9]+(?:_[0-9]+)*)">+ <!ENTITY hex_int "(?:[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*)">+ <!ENTITY exp_float "(?:[eE][+-]?&dec_int;)">+ <!ENTITY exp_hexfloat "(?:[pP][-+]?&dec_int;)">+]>+<language name="Zig" section="Sources" version="2" kateversion="5.62" indenter="cstyle" extensions="*.zig" mimetype="text/x-zig" priority="1" author="Waqar Ahmed (waqar.17a@gmail.com)" license="MIT">+ <highlighting>+ <list name="keywords">+ <item>addrspace</item>+ <item>align</item>+ <item>and</item>+ <item>anyframe</item>+ <item>anytype</item>+ <item>asm</item>+ <item>callconv</item>+ <item>enum</item>+ <item>error</item>+ <item>export</item>+ <item>fn</item>+ <item>inline</item>+ <item>noalias</item>+ <item>nosuspend</item>+ <item>noinline</item>+ <item>opaque</item>+ <item>or</item>+ <item>orelse</item>+ <item>packed</item>+ <item>pub</item>+ <item>resume</item>+ <item>linksection</item>+ <item>struct</item>+ <item>suspend</item>+ <item>test</item>+ <item>union</item>+ <item>unreachable</item>+ <item>usingnamespace</item>+ </list>+ <list name="controlflow">+ <item>while</item>+ <item>try</item>+ <item>switch</item>+ <item>return</item>+ <item>for</item>+ <item>if</item>+ <item>continue</item>+ <item>else</item>+ <item>break</item>+ <item>catch</item>+ <item>defer</item>+ <item>errdefer</item>+ </list>+ <list name="types">+ <item>i8</item>+ <item>u8</item>+ <item>i16</item>+ <item>u16</item>+ <item>i32</item>+ <item>u32</item>+ <item>i64</item>+ <item>u64</item>+ <item>i128</item>+ <item>u128</item>+ <item>isize</item>+ <item>usize</item>+ <item>c_short</item>+ <item>c_ushort</item>+ <item>c_int</item>+ <item>c_uint</item>+ <item>c_long</item>+ <item>c_ulong</item>+ <item>c_longlong</item>+ <item>c_ulonglong</item>+ <item>c_longdouble</item>+ <item>f16</item>+ <item>f32</item>+ <item>f64</item>+ <item>f80</item>+ <item>f128</item>+ <item>bool</item>+ <item>anyopaque</item>+ <item>void</item>+ <item>noreturn</item>+ <item>type</item>+ <item>anyerror</item>+ <item>comptime_int</item>+ <item>comptime_float</item>+ </list>+ <list name="modifiers">+ <item>async</item>+ <item>await</item>+ <item>const</item>+ <item>threadlocal</item>+ <item>extern</item>+ <item>allowzero</item>+ <item>comptime</item>+ <item>var</item>+ <item>volatile</item>+ </list>+ <list name="literals">+ <item>false</item>+ <item>null</item>+ <item>true</item>+ <item>undefined</item>+ </list>+ <list name="builtin_functions">+ <item>@addrSpaceCast</item>+ <item>@addWithOverflow</item>+ <item>@alignCast</item>+ <item>@alignOf</item>+ <item>@as</item>+ <item>@atomicLoad</item>+ <item>@atomicRmw</item>+ <item>@atomicStore</item>+ <item>@bitCast</item>+ <item>@bitOffsetOf</item>+ <item>@boolToInt</item>+ <item>@bitSizeOf</item>+ <item>@breakpoint</item>+ <item>@mulAdd</item>+ <item>@byteSwap</item>+ <item>@bitReverse</item>+ <item>@offsetOf</item>+ <item>@call</item>+ <item>@cDefine</item>+ <item>@cImport</item>+ <item>@cInclude</item>+ <item>@clz</item>+ <item>@cmpxchgStrong</item>+ <item>@cmpxchgWeak</item>+ <item>@compileError</item>+ <item>@compileLog</item>+ <item>@ctz</item>+ <item>@cUndef</item>+ <item>@cVaArg</item>+ <item>@cVaCopy</item>+ <item>@cVaEnd</item>+ <item>@cVaStart</item>+ <item>@divExact</item>+ <item>@divFloor</item>+ <item>@divTrunc</item>+ <item>@embedFile</item>+ <item>@enumToInt</item>+ <item>@errorName</item>+ <item>@errorReturnTrace</item>+ <item>@errorToInt</item>+ <item>@errSetCast</item>+ <item>@export</item>+ <item>@extern</item>+ <item>@fence</item>+ <item>@field</item>+ <item>@fieldParentPtr</item>+ <item>@floatCast</item>+ <item>@floatToInt</item>+ <item>@frameAddress</item>+ <item>@hasDecl</item>+ <item>@hasField</item>+ <item>@import</item>+ <item>@intCast</item>+ <item>@intToEnum</item>+ <item>@intToError</item>+ <item>@intToFloat</item>+ <item>@intToPtr</item>+ <item>@max</item>+ <item>@memcpy</item>+ <item>@memset</item>+ <item>@min</item>+ <item>@wasmMemorySize</item>+ <item>@wasmMemoryGrow</item>+ <item>@mod</item>+ <item>@mulWithOverflow</item>+ <item>@panic</item>+ <item>@popCount</item>+ <item>@prefetch</item>+ <item>@ptrCast</item>+ <item>@ptrToInt</item>+ <item>@rem</item>+ <item>@returnAddress</item>+ <item>@select</item>+ <item>@setAlignStack</item>+ <item>@setCold</item>+ <item>@setEvalBranchQuota</item>+ <item>@setFloatMode</item>+ <item>@setRuntimeSafety</item>+ <item>@shlExact</item>+ <item>@shlWithOverflow</item>+ <item>@shrExact</item>+ <item>@shuffle</item>+ <item>@sizeOf</item>+ <item>@splat</item>+ <item>@reduce</item>+ <item>@src</item>+ <item>@sqrt</item>+ <item>@sin</item>+ <item>@cos</item>+ <item>@tan</item>+ <item>@exp</item>+ <item>@exp2</item>+ <item>@log</item>+ <item>@log2</item>+ <item>@log10</item>+ <item>@fabs</item>+ <item>@floor</item>+ <item>@ceil</item>+ <item>@trunc</item>+ <item>@round</item>+ <item>@subWithOverflow</item>+ <item>@tagName</item>+ <item>@This</item>+ <item>@truncate</item>+ <item>@Type</item>+ <item>@typeInfo</item>+ <item>@typeName</item>+ <item>@TypeOf</item>+ <item>@unionInit</item>+ <item>@Vector</item>+ </list>+ <contexts>+ <context attribute="Normal Text" lineEndContext="#stay" name="Normal">+ <DetectSpaces/>+ <Detect2Chars char="/" char1="/" attribute="Comment" context="Comment"/>+ <AnyChar attribute="Symbol" context="#stay" String=":!%&+,-/.*<=>?|~^"/>+ <AnyChar context="Number" String="0123456789" lookAhead="1"/>+ <DetectChar attribute="String" context="DoubleQuoteString" char="""/>+ <DetectChar attribute="Character" context="SingleQuoteString" char="'"/>+ <Detect2Chars char="\" char1="\" attribute="String" context="Multiline String"/>+ <keyword String="keywords" attribute="Keyword" context="#stay"/>+ <keyword String="types" attribute="Type" context="#stay"/>+ <keyword attribute="Constant" context="#stay" String="literals"/>+ <keyword attribute="Builtin Functions" context="#stay" String="builtin_functions"/>+ <keyword attribute="Control Flow" context="#stay" String="controlflow"/>+ <keyword attribute="Modifiers" context="#stay" String="modifiers"/>+ <WordDetect attribute="Self Variable" String="self"/>+ <!-- <AnyChar context="SpecialType" String="iu" lookAhead="1"/> -->+ <DetectIdentifier/>+ </context>+ <!-- Strings -->+ <context attribute="String" lineEndContext="#pop" name="DoubleQuoteString">+ <DetectChar context="EscapeChar" char="\" lookAhead="1"/>+ <DetectChar attribute="String" context="#pop" char="""/>+ </context>+ <context attribute="Character" lineEndContext="#pop" name="SingleQuoteString">+ <DetectChar context="EscapeChar" char="\" lookAhead="1"/>+ <DetectChar attribute="Character" context="#pop" char="'"/>+ </context>+ <context attribute="String" lineEndContext="#pop" name="Multiline String"/>+ <context attribute="String Char" lineEndContext="#pop" name="EscapeChar">+ <RegExpr attribute="String Char" context="#pop" String="\\([nrt'"\\]|x[0-9a-fA-F]{2}|u\{[0-9a-fA-F]+\})"/>+ <RegExpr attribute="Error" context="#pop" String="\\(x[0-9a-fA-F]?|u\{[0-9a-fA-F]{0,8}\}?)?"/>+ </context>+ <!-- Comment -->+ <context attribute="Comment" lineEndContext="#pop" name="Comment">+ <DetectSpaces attribute="Comment"/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier attribute="Comment"/>+ </context>+ <!-- Integer / Float -->+ <context name="Number" attribute="Normal Text" lineEndContext="#pop">+ <RegExpr attribute="Float" context="#pop!SuffixNumber" String="&dec_int;(\.&dec_int;&exp_float;?|&exp_float;)"/>+ <RegExpr attribute="Decimal" context="#pop!SuffixNumber" String="0(?=[^xob]|$)|(?=0[xob])|&dec_int;"/>+ <RegExpr attribute="Hex Float" context="#pop!SuffixNumber" String="0x&hex_int;(\.&hex_int;&exp_hexfloat;?|&exp_hexfloat;)"/>+ <RegExpr attribute="Hex" context="#pop!SuffixNumber" String="0x&hex_int;"/>+ <RegExpr attribute="Octal" context="#pop!SuffixNumber" String="0o&oct_int;"/>+ <RegExpr attribute="Binary" context="#pop!SuffixNumber" String="0b&bin_int;"/>+ <DetectChar attribute="Decimal" context="#pop!SuffixNumber" char="0"/>+ </context>+ <context name="SuffixNumber" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar attribute="Error" String=".0123456789" context="#pop"/>+ <DetectIdentifier attribute="Error" context="#pop"/>+ </context>+ <!-- Integer type -->+ <!-- i or u followed by digits. The maximum allowed bit-width of an integer type is 65535 -->+ <!--<context name="SpecialType" attribute="Normal Text" lineEndContext="#pop">+ <RegExpr attribute="Type" context="#pop" String="\b[ui]([0-9]{1,4}|[1-5][0-9]{4}|6([0-4][0-9]{3}|5([0-4][0-9]{2}|5([0-2][0-9]|3[0-5]))))\b"/>+ <DetectIdentifier attribute="Normal Text" context="#pop"/>+ </context>-->+ </contexts>+ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal"/>+ <itemData name="Self Variable" defStyleNum="dsVariable" spellChecking="false"/>+ <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Type" defStyleNum="dsDataType" spellChecking="false"/>+ <itemData name="Builtin Functions" defStyleNum="dsBuiltIn" spellChecking="false"/>+ <itemData name="Constant" defStyleNum="dsConstant" spellChecking="false"/>+ <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>+ <itemData name="Modifiers" defStyleNum="dsAttribute" spellChecking="false"/>+ <itemData name="Comment" defStyleNum="dsComment" spellChecking="true"/>+ <itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>+ <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>+ <itemData name="Hex Float" defStyleNum="dsFloat" spellChecking="false"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="String Char" defStyleNum="dsSpecialChar"/>+ <itemData name="Character" defStyleNum="dsChar" spellChecking="false"/>+ <itemData name="Symbol" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="//"/>+ </comments>+ <keywords casesensitive="true"/>+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->