summaryrefslogtreecommitdiffstats
path: root/kate/data/puppet.xml
diff options
context:
space:
mode:
Diffstat (limited to 'kate/data/puppet.xml')
-rw-r--r--kate/data/puppet.xml856
1 files changed, 856 insertions, 0 deletions
diff --git a/kate/data/puppet.xml b/kate/data/puppet.xml
new file mode 100644
index 000000000..53fc1d633
--- /dev/null
+++ b/kate/data/puppet.xml
@@ -0,0 +1,856 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+
+<!--
+ Puppet syntax highlighting file:
+
+ Copyright (C) 2010 by Nick Shobe (nickshobe@gmail.com)
+
+ This file is based on:
+
+ Ruby syntax highlighting definition for Kate.
+
+ 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)
+
+ 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.
+-->
+
+<!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
+<!-- This is based on the ruby syntax file -->
+<language
+ name="Puppet"
+ section="Scripts"
+ version="1.18"
+ kateversion="2.4"
+ extensions="*.pp;*.xml.erb;*.erb"
+ mimetype="application/x-puppet"
+ style="puppet"
+ indenter="ruby"
+ author="Nick Shobe (nickshobe@gmail.com), Stefan Lang (langstefan@gmx.at), Sebastian Vuorinen (sebastian.vuorinen@helsinki.fi), Robin Pedersen (robinpeder@gmail.com)"
+ license="LGPL"
+>
+ <highlighting>
+
+ <list name="keywords">
+ <item> BEGIN </item>
+ <item> END </item>
+ <item> and </item>
+ <item> begin </item>
+ <item> break </item>
+ <item> case </item>
+ <item> defined? </item>
+ <item> do </item>
+ <item> else </item>
+ <item> elsif </item>
+ <item> end </item>
+ <item> for </item>
+ <item> if </item>
+ <item> in </item>
+ <item> include </item>
+ <item> inherits </item>
+ <item> next </item>
+ <item> not </item>
+ <item> or </item>
+ <item> redo </item>
+ <item> rescue </item>
+ <item> retry </item>
+ <item> return </item>
+ <item> then </item>
+ <item> unless </item>
+ <item> until </item>
+ <item> when </item>
+ <item> while </item>
+ <item> yield </item>
+ </list>
+
+ <list name="definitions">
+ <item> alias </item>
+ <item> module </item>
+ <item> class </item>
+ <item> define </item>
+ <!--MOD<item> undef </item>-->
+ </list>
+
+ <list name="pseudo-variables">
+ <item> self </item>
+ <item> super </item>
+ <item> nil </item>
+ <item> false </item>
+ <item> true </item>
+ <item> caller </item>
+ <item> __FILE__ </item>
+ <item> __LINE__ </item>
+ </list>
+
+ <list name="metaparameters">
+ <!-- backquote ` -->
+ <item> alias </item>
+ <item> audit </item>
+ <item> subscribe </item>
+ <item> before </item>
+ <item> check </item>
+ <item> loglevel </item>
+ <item> noop </item>
+ <item> notify </item>
+ <item> require </item>
+ <item> schedule </item>
+ <item> stage </item>
+ <item> subscribe </item>
+ <item> tag </item>
+ </list>
+
+ <list name="attention">
+ <item> TODO </item>
+ <item> FIXME </item>
+ <item> NOTE </item>
+ </list>
+
+ <contexts>
+ <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+ <!-- ruby ignores newline after \ -->
+ <LineContinue attribute="Normal Text" context="Line Continue"/>
+
+ <!-- __END__ token on own line. -->
+ <RegExpr attribute="Keyword" String="__END__$" context="DATA" column="0"/>
+
+ <!-- "shebang" line -->
+ <RegExpr attribute="Keyword" String="#!\/.*" context="#stay" column="0"/>
+
+ <!-- "def" - "end" blocks -->
+ <!-- check for statement modifiers with regexes -->
+ <DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>
+ <RegExpr attribute="Keyword" String="(\=|\(|\[|\{)\s*(if|unless|while|until)\b" context="#stay" beginRegion="def block"/>
+ <RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block" firstNonSpace="true"/>
+ <RegExpr attribute="Keyword" String="\;\s*(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
+ <RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>
+ <RegExpr attribute="Keyword" String="\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
+ <RegExpr attribute="Keyword" String="\bmodule\b" context="#stay" beginRegion="def block"/>
+ <RegExpr attribute="Keyword" String="\bbegin\b" context="#stay" beginRegion="def block"/>
+ <RegExpr attribute="Keyword" String="\bfor\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
+ <RegExpr attribute="Keyword" String="\bcase\b" context="#stay" beginRegion="def block"/>
+ <RegExpr attribute="Keyword" String="\bdo\b" context="#stay" beginRegion="def block"/>
+ <RegExpr attribute="Keyword" String="\bdef\b" context="#stay" beginRegion="def block"/>
+ <RegExpr attribute="Keyword" String="\bend\b" context="#stay" endRegion="def block"/>
+ <!-- elsif/else close the current block and start a new one -->
+ <RegExpr attribute="Keyword" String="\b(else|elsif|rescue)\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"/> -->
+
+ <!-- Check for "ASCII code operator". e.g.: ?a -->
+ <RegExpr attribute="Dec" String="\s\?(\\M\-)?(\\C\-)?\\?\S" context="check_div_1"/>
+
+ <keyword attribute="Keyword" String="keywords" context="#stay"/>
+
+ <keyword attribute="Definition" String="definitions" context="#stay" />
+ <keyword attribute="Pseudo variable" String="pseudo-variables" context="check_div_1"/>
+ <keyword attribute="Metaparameters" String="metaparameters" context="check_div_2"/>
+
+ <!-- puppet attributes attribute => value -->
+ <RegExpr attribute="Attribute" String="[a-zA-Z_0-9]+(?=\s*=>)" context="check_div_1"/>
+
+ <!-- (global) vars starting with $
+ Match them before $_.
+ -->
+ <RegExpr attribute="Variable" String="\$[a-zA-Z_0-9]+" context="check_div_1"/>
+ <RegExpr attribute="Variable" String="\$\-[a-zA-z_]\b" context="check_div_1"/>
+
+ <RegExpr attribute="List" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="check_div_2"/>
+
+ <RegExpr attribute="Hex" String="\b\-?0[xX][_0-9a-fA-F]+" context="check_div_1"/>
+ <RegExpr attribute="Bin" String="\b\-?0[bB][_01]+" context="check_div_1"/>
+ <RegExpr attribute="Octal" String="\b\-?0[1-7][_0-7]*" context="check_div_1"/>
+ <RegExpr attribute="Float" String="\b\-?[0-9][0-9_]*\.[0-9][0-9_]*([eE]\-?[1-9][0-9]*(\.[0-9]*)?)?" context="check_div_1"/>
+ <RegExpr attribute="Dec" String="\b\-?[1-9][0-9_]*\b" context="check_div_1"/>
+ <Int attribute="Dec" context="check_div_1"/>
+ <!--<HlCChar attribute="Char" context="check_div_1"/>-->
+
+ <!-- Check for =begin before assignment operator. -->
+ <RegExpr attribute="Blockcomment" String="^=begin(?:\s|$)" context="Embedded documentation" beginRegion="comment block" column="0"/>
+
+ <!-- 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*&lt;&lt;-(?=\w+|[&quot;'])" beginRegion="HereDocument" />
+ <RegExpr attribute="Operator" context="find_heredoc" String="\s*&lt;&lt;(?=\w+|[&quot;'])" beginRegion="HereDocument" />
+
+ <DetectChar attribute="Operator" char="." context="#stay"/>
+ <Detect2Chars attribute="Operator" char="&amp;" char1="&amp;" context="#stay"/>
+ <Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>
+ <RegExpr attribute="Operator" String="\s[\?\:\%]\s" context="#stay"/>
+ <RegExpr attribute="Operator" String="[|&amp;&lt;&gt;\^\+*~\-=]+" context="#stay"/>
+ <!-- regexp hack -->
+ <RegExpr attribute="Operator" String="\s!" context="#stay"/>
+ <RegExpr attribute="Operator" String="/=\s" context="#stay" insensitive="0"/>
+ <StringDetect attribute="Operator" String="%=" context="#stay" insensitive="0"/>
+ <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"/>
+ <RegExpr attribute="Symbol" String=":\[\]=?" contex="check_div_1"/>
+
+ <DetectChar attribute="String" char="&quot;" context="Quoted String"/>
+
+ <DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
+ <DetectChar attribute="Command" char="`" context="Command String"/>
+
+ <StringDetect attribute="Normal Text" String="?#" context="#stay"/>
+
+ <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"/>
+
+ <DetectChar attribute="Delimiter" char="[" context="#stay"/>
+ <DetectChar attribute="Delimiter" char="]" context="check_div_1"/>
+ <DetectChar attribute="Delimiter" char="{" context="#stay" beginRegion="def block"/>
+ <DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>
+
+ <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*[%](?=[Qqxw]?[^\s])" beginRegion="GdlInput" />
+
+ <DetectChar attribute="Normal Text" char=")" context="check_div_1"/>
+ <DetectIdentifier attribute="Normal Text" context="check_div_2"/>
+
+ </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">
+ <RegExpr attribute="Normal Text" String="\s*" context="#stay"/>
+ <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">
+ <RegExpr attribute="Normal Text" String="\s*" context="#stay"/>
+ <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">
+ <AnyChar attribute="Operator" String="/%" context="#pop"/>
+ <RegExpr attribute="Normal Text" String="\s+" 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">
+<!-- <DetectChar attribute="Operator" char="%" context="#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">
+ <AnyChar attribute="Operator" String="/%" context="#pop#pop"/>
+ <RegExpr attribute="Normal Text" String="\s+" 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">
+ <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)" context="#stay" firstNonSpace="true"/>
+ <RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" firstNonSpace="true"/>
+ <IncludeRules context="Normal"/>
+ </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">
+ <StringDetect attribute="String" String="\\" context="#stay"/>
+ <RegExpr attribute="String" String="\\\&quot;" context="#stay"/>
+ <RegExpr attribute="Variable" String="\$\{[a-zA-Z_0-9]+\}" context="#stay"/>
+ <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+ <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+ <DetectChar char="&quot;" attribute="String" context="check_div_1_pop"/>
+ </context>
+
+ <context name="Apostrophed String" attribute="Raw String" lineEndContext="#stay">
+ <StringDetect attribute="String" String="\\" context="#stay"/>
+ <RegExpr attribute="String" String="\\\'" context="#stay"/>
+ <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+ <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+ <DetectChar char="'" attribute="Raw String" context="check_div_1_pop"/>
+ </context>
+
+ <context name="Command String" attribute="Command" lineEndContext="#stay">
+ <StringDetect attribute="String" String="\\" context="#stay"/>
+ <RegExpr attribute="String" String="\\\`" context="#stay"/>
+ <RegExpr attribute="Variable" String="\$\{[a-zA-Z_0-9]+\}" 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="Embedded documentation" attribute="Blockcomment" lineEndContext="#stay">
+ <RegExpr attribute="Comment" String="^=end(?:\s.*|$)" context="#pop" endRegion="comment block" column="0"/>
+ </context>
+
+ <context name="RegEx 1" attribute="Regular Expression" lineEndContext="#stay">
+ <RegExpr attribute="Regular Expression" String="\\\/" 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="Subclass" 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="=+-*/%|&amp;[]{}~" 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="Comment Line" attribute="Comment" lineEndContext="#pop">
+ <RegExpr attribute="Comment" String="\w\:\:\s" context="RDoc Label"/>
+ <keyword attribute="Alert" String="attention" context="#stay"/>
+ </context>
+
+ <context name="General Comment" attribute="Comment" lineEndContext="#pop">
+ <keyword attribute="Dec" String="attention" context="#stay"/>
+ </context>
+
+ <context name="RDoc Label" attribute="RDoc Value" lineEndContext="#pop"/>
+
+ <!-- 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" >
+ <RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" />
+ <RegExpr attribute="Keyword" context="normal_heredoc" String="&quot;?(\w+)&quot;?" />
+ </context>
+ <context name="find_indented_heredoc" attribute="Normal Text" lineEndContext="#pop" >
+ <RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" />
+ <RegExpr attribute="Keyword" context="indented_heredoc" String="&quot;?(\w+)&quot;?" />
+ </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="^\s*%1$" dynamic="true" endRegion="HereDocument"/>-->
+ <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="^\s*%1$" dynamic="true" endRegion="HereDocument"/>-->
+ <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"/>-->
+ <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"/>-->
+ <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>
+
+ <!-- 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 -->
+ <RegExpr attribute="GDL input" context="gdl_token_array_1" String="w\(" />
+ <RegExpr attribute="GDL input" context="gdl_token_array_2" String="w\{" />
+ <RegExpr attribute="GDL input" context="gdl_token_array_3" String="w\[" />
+ <RegExpr attribute="GDL input" context="gdl_token_array_4" String="w&lt;" />
+ <!-- then we handle the 'any char' format -->
+ <RegExpr attribute="GDL input" context="gdl_token_array_5" String="w([^\s\w])" />
+
+ <!-- handle apostrophed strings -->
+ <RegExpr attribute="GDL input" context="gdl_apostrophed_1" String="q\(" />
+ <RegExpr attribute="GDL input" context="gdl_apostrophed_2" String="q\{" />
+ <RegExpr attribute="GDL input" context="gdl_apostrophed_3" String="q\[" />
+ <RegExpr attribute="GDL input" context="gdl_apostrophed_4" String="q&lt;" />
+ <!-- then we handle the 'any char' format -->
+ <RegExpr attribute="GDL input" context="gdl_apostrophed_5" String="q([^\s\w])" />
+
+ <!-- handle shell commands -->
+ <RegExpr attribute="GDL input" context="gdl_shell_command_1" String="x\(" />
+ <RegExpr attribute="GDL input" context="gdl_shell_command_2" String="x\{" />
+ <RegExpr attribute="GDL input" context="gdl_shell_command_3" String="x\[" />
+ <RegExpr attribute="GDL input" context="gdl_shell_command_4" String="x&lt;" />
+ <!-- then we handle the 'any char' format -->
+ <RegExpr attribute="GDL input" context="gdl_shell_command_5" String="x([^\s\w])" />
+
+ <!-- handle regular expressions -->
+ <RegExpr attribute="GDL input" context="gdl_regexpr_1" String="r\(" />
+ <RegExpr attribute="GDL input" context="gdl_regexpr_2" String="r\{" />
+ <RegExpr attribute="GDL input" context="gdl_regexpr_3" String="r\[" />
+ <RegExpr attribute="GDL input" context="gdl_regexpr_4" String="r&lt;" />
+ <!-- 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
+ -->
+ <RegExpr attribute="GDL input" context="gdl_dq_string_1" String="Q?\(" />
+ <RegExpr attribute="GDL input" context="gdl_dq_string_2" String="Q?\{" />
+ <RegExpr attribute="GDL input" context="gdl_dq_string_3" String="Q?\[" />
+ <RegExpr attribute="GDL input" context="gdl_dq_string_4" String="Q?&lt;" />
+ <!-- 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="&gt;" context="#stay"/>
+ <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+ <DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+ </context>
+ <context name="gdl_dq_string_4_nested" attribute="String" lineEndContext="#stay" >
+ <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+ <DetectChar attribute="String" context="#pop" char="&gt;" />
+ <IncludeRules context="dq_string_rules" />
+ </context>
+
+ <!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+ delimiter character
+ -->
+ <context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true">
+ <IncludeRules context="dq_string_rules" />
+ <RegExpr 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="&gt;" context="#stay"/>
+ <DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
+ <DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" 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="&lt;" />
+ <DetectChar attribute="String" context="#pop" char="&gt;" />
+ </context>
+
+ <!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+ delimiter character
+ -->
+ <context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true">
+ <IncludeRules context="token_array_rules" />
+ <RegExpr 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" >
+ <StringDetect attribute="String" String="\\" 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="&gt;" context="#stay"/>
+ <DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
+ <DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" 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="&lt;" />
+ <DetectChar attribute="Raw String" context="#pop" char="&gt;" />
+ </context>
+
+ <!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+ delimiter character
+ -->
+ <context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true">
+ <IncludeRules context="apostrophed_rules" />
+ <RegExpr 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="&gt;" context="#stay"/>
+ <DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
+ <DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" 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="&lt;" />
+ <DetectChar attribute="Command" context="#pop" char="&gt;" />
+ </context>
+
+ <!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+ delimiter character
+ -->
+ <context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true">
+ <IncludeRules context="shell_command_rules" />
+ <RegExpr 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="&gt;" context="#stay"/>
+ <DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
+ <RegExpr attribute="GDL input" context="#pop#pop" String="&gt;[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="&lt;" />
+ <DetectChar attribute="Regular Expression" context="#pop" char="&gt;" />
+ </context>
+
+ <!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+ delimiter character
+ -->
+ <context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true">
+ <IncludeRules context="regexpr_rules" />
+ <RegExpr 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 -->
+
+ <!-- handle data in script -->
+ <context name="DATA" attribute="Data" lineEndContext="#stay"/>
+ </contexts>
+
+ <itemDatas>
+ <itemData name="Normal Text" defStyleNum="dsNormal"/>
+
+ <itemData name="Keyword" defStyleNum="dsKeyword"/>
+ <itemData name="Attribute Definition" defStyleNum="dsOthers"/>
+ <itemData name="Access Control" defStyleNum="dsKeyword"/>
+ <itemData name="Definition" defStyleNum="dsKeyword"/>
+ <itemData name="Pseudo variable" defStyleNum="dsDecVal"/>
+
+ <itemData name="Dec" defStyleNum="dsDecVal"/>
+ <itemData name="Float" defStyleNum="dsFloat"/>
+ <!--MOD<itemData name="Char" defStyleNum="dsChar"/>-->
+ <itemData name="Octal" defStyleNum="dsBaseN"/>
+ <itemData name="Hex" defStyleNum="dsBaseN"/>
+ <itemData name="Bin" defStyleNum="dsBaseN"/>
+
+ <itemData name="Symbol" defStyleNum="dsString"/>
+ <itemData name="String" defStyleNum="dsString"/>
+ <itemData name="Raw String" defStyleNum="dsString"/>
+ <itemData name="Command" defStyleNum="dsString"/>
+<!-- <itemData name="Message" defStyleNum="dsNormal" color="#034B8E"/> -->
+ <itemData name="Regular Expression" defStyleNum="dsOthers"/>
+ <itemData name="Substitution" defStyleNum="dsOthers"/>
+ <itemData name="Data" defStyleNum="dsNormal"/>
+ <!-- short for 'general delimited input' -->
+ <itemData name="GDL input" defStyleNum="dsOthers" />
+
+
+ <itemData name="Variable" defStyleNum="dsDataType"/>
+
+ <itemData name="Constant" defStyleNum="dsDataType"/>
+ <itemData name="List" defStyleNum="dsDataType"/>
+ <itemData name="Constant Value" defStyleNum="dsDataType"/>
+ <itemData name="Attribute" defStyleNum="dsNormal"/>
+ <itemData name="Metaparameters" defStyleNum="dsNormal"/>
+ <itemData name="Member" defStyleNum="dsNormal"/>
+ <itemData name="Instance Variable" defStyleNum="dsOthers"/>
+ <itemData name="Class Variable" defStyleNum="dsOthers"/>
+
+ <itemData name="Subclass" defStyleNum="dsNormal"/>
+
+ <itemData name="Comment" defStyleNum="dsComment"/>
+ <itemData name="Blockcomment" defStyleNum="dsComment"/>
+ <itemData name="Region Marker" defStyleNum="dsNormal"/>
+ <itemData name="RDoc Value" defStyleNum="dsOthers"/>
+
+ <itemData name="Here Document" defStyleNum="dsOthers"/>
+
+ <!-- use these to mark errors and alerts things -->
+ <itemData name="Error" defStyleNum="dsError" />
+ <itemData name="Alert" defStyleNum="dsAlert" />
+
+ <itemData name="Delimiter" defStyleNum="dsNormal"/>
+ <itemData name="Expression" defStyleNum="dsOthers"/>
+ <itemData name="Operator" defStyleNum="dsNormal"/>
+ </itemDatas>
+ </highlighting>
+ <general>
+ <comments>
+ <comment name="singleLine" start="#"/>
+ </comments>
+ <keywords casesensitive="1" weakDeliminator="!?"/>
+ </general>
+</language>