Files
RedBear-OS/local/recipes/kde/kf6-syntaxhighlighting/source/data/syntax/kconfig.xml
T

1394 lines
75 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY n "[A-Za-z0-9_-]">
<!ENTITY n1 "[A-Za-z0-9_/.-]">
<!ENTITY tristateConst "[nmy](?!(&n;|\$))">
<!ENTITY badCom "[^ \t#$A-Za-z0-9_&quot;']">
<!ENTITY badParam "[^ \t$#A-Za-z0-9_/.&quot;'&amp;&lt;&gt;\|\(\)!=-]">
<!ENTITY tab "( ? ? ? ? ? ? ?\t| )">
]>
<!--
Kate Kconfig highlighting definition
This is for Kconfig files of LKC (LinuxKernelConf), the configuration system
that is in use by and maintained with the Linux Kernel since release 2.5.45,
i.e. in particular throughout all 2.6 release series and the 5.x releases so far
(up to 5.14 as of this writing).
There have been several minor syntax modifications since Linux Kernel 2.5.45,
and it is likely that there will be more in the future.
When it comes to details, the language of LKC is extremely complicated. At the
same time this definition aims to be precise. As a result it is rather long and
you may notice increased CPU usage when opening large files, depending on
your hardware.
There are other projects that use the same configuration system:
busybox (http://busybox.net/), uClibc (http://www.uclibc.org/),
OpenWrt (https://openwrt.org/) and many more. Of course you can use this
definition also for those configuration files, but be aware that the versions of
LKC in those projects may be highly outdated. Sporadically you can even find
project specific syntax modifications that have never been part of upstream LKC.
If you are interested in the standalone configuration system (e.g. for your own
project) stripped from the Linux kernel, take a look at kconfig-frontends
(https://gitlab.com/ymorin/kconfig-frontends).
Newer changes in the configuration language:
2.6.18:
- add "option" for config blocks (first options: "modules" and "defconfig_list")
2.6.24:
- remove "requires" (synonymous for "depends on", hardly ever used)
- remove "depends" (without "on", also synonymous for "depends on", was rare)
- remove "def_boolean" (synonymous for "def_bool", hardly ever used)
2.6.25:
- add option "env=..." to import values of environment variables
- remove "enable" property (you have probably never seen this one)
2.6.26
- add named choice groups like "choice FOO" (hardly ever seen, buggy, avoid it)
2.6.37:
- reduce "mainmenu" to occur only as first statement
- add "visible if" property to menus
3.15:
- add option "allnoconfig_yes"
4.2:
- add <=, >=, <, > operators
4.10:
- add "imply"
4.16:
- remove "boolean" type in favor of "bool" only (deprecated here)
4.18:
- remove option "env" (deprecated here)
- add Makefile style environment variables to quoted strings and symbols
- add Makefile style function calls to quoted strings and symbols
5.0:
- prohibit dot "." and slash "/" in unquoted strings (deprecated here)
- limit symbol options per option property to one (never seen more - dropped)
- restrict choice options to the types bool and tristate, i.e. remove string,
int and hex (they do not make much sense for choice, deprecated here)
5.6:
- remove all unquoted strings except for symbols (deprecated here)
5.8:
- reduce the permitted statements in choice blocks to config, comment
and if (deprecated here)
5.9:
- remove triple-dash enclosed "help" property (deprecated here)
5.13:
- remove "allnoconfig_yes" option introduced in 3.15 (deprecated here)
- remove "defconfig_list" option introduced in 2.6.18 (deprecated here)
- promote "modules" option to a standalone property
- remove "option" keyword introduced in 2.6.18 (deprecated here)
-->
<language name="Kconfig" section="Configuration" extensions="Kconfig*;Config.*" version="12" kateversion="5.74" casesensitive="true" priority="-9" author="Martin Walch (walch.martin@web.de)" license="GPLv3">
<highlighting>
<list name="choice_type">
<item>bool</item>
<item>tristate</item>
</list>
<list name="choice_type_deprecated">
<item>boolean</item>
</list>
<list name="choice_bad_type">
<item>string</item>
<item>int</item>
<item>hex</item>
</list>
<list name="def_type">
<item>def_bool</item>
<item>def_tristate</item>
</list>
<list name="type">
<item>bool</item>
<item>tristate</item>
<item>string</item>
<item>int</item>
<item>hex</item>
</list>
<list name="type_deprecated">
<item>boolean</item>
</list>
<list name="config">
<item>config</item>
<item>menuconfig</item>
</list>
<list name="entry">
<item>if</item>
<item>comment</item>
<item>config</item>
<item>menuconfig</item>
<item>source</item>
</list>
<list name="keyword">
<item>bool</item>
<item>choice</item>
<item>comment</item>
<item>config</item>
<item>def_bool</item>
<item>def_tristate</item>
<item>default</item>
<item>depends</item>
<item>endchoice</item>
<item>endif</item>
<item>endmenu</item>
<item>help</item>
<item>hex</item>
<item>if</item>
<item>imply</item>
<item>int</item>
<item>mainmenu</item>
<item>menu</item>
<item>menuconfig</item>
<item>modules</item>
<item>on</item>
<item>optional</item>
<item>prompt</item>
<item>range</item>
<item>select</item>
<item>source</item>
<item>string</item>
<item>tristate</item>
<item>visible</item>
</list>
<list name="entry_keyword">
<item>choice</item>
<item>comment</item>
<item>config</item>
<item>endchoice</item>
<item>endif</item>
<item>endmenu</item>
<item>if</item>
<item>menu</item>
<item>menuconfig</item>
<item>source</item>
</list>
<list name="option">
<item>modules</item>
</list>
<list name="option_deprecated">
<item>allnoconfig_y</item>
<item>defconfig_list</item>
</list>
<list name="tristate_const">
<item>n</item>
<item>m</item>
<item>y</item>
</list>
<list name="builtin_function">
<item>error-if</item>
<item>filename</item>
<item>info</item>
<item>lineno</item>
<item>shell</item>
<item>warning-if</item>
</list>
<list name="questionable_identifier">
<item>allnoconfig_y</item>
<item>boolean</item>
<item>defconfig_list</item>
<item>option</item>
</list>
<contexts>
<context name="input" attribute="Plain" lineEndContext="#stay" fallthroughContext="#pop!stmt_list">
<IncludeRules context="wsOrComment" />
<WordDetect String="mainmenu" attribute="Keyword" context="mainmenuPrompt" />
</context>
<context name="mainmenuPrompt" attribute="Plain" lineEndContext="#pop!stmt_list.error" fallthroughContext="#pop!stmt_list.error">
<IncludeRules context="wsOrComment" />
<DetectChar char="'" attribute="Quoted Mainmenu Prompt" context="#pop!stmt_list.nl.SQMainmenuPrompt" />
<DetectChar char="&quot;" attribute="Quoted Mainmenu Prompt" context="#pop!stmt_list.nl.DQMainmenuPrompt" />
<RegExpr String="&n1;+" attribute="Deprecated Unquoted Mainmenu Prompt" context="#pop!stmt_list.nl" />
</context>
<context name="stmt_list.nl.SQMainmenuPrompt" attribute="Quoted Mainmenu Prompt" lineEndContext="#pop!stmt_list.error">
<IncludeRules context="expansionAndEscape" />
<DetectChar char="'" attribute="Quoted Mainmenu Prompt" context="#pop!stmt_list.nl" />
<RegExpr String="\$&n;+" attribute="Deprecated Expansion" context="#stay" />
</context>
<context name="stmt_list.nl.DQMainmenuPrompt" attribute="Quoted Mainmenu Prompt" lineEndContext="#pop!stmt_list.error">
<DetectChar char="&quot;" attribute="Quoted Mainmenu Prompt" context="#pop!stmt_list.nl" />
<IncludeRules context="expansionAndEscape" />
<RegExpr String="\$&n;+" attribute="Deprecated Expansion" context="#stay" />
</context>
<context name="stmt_list.nl" attribute="Plain" lineEndContext="#pop!stmt_list" fallthroughContext="#pop!stmt_list.error">
<IncludeRules context="wsOrComment" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<!-- Mainmenu over -->
<context name="source_stmt" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<DetectChar char="'" attribute="Quoted Source String" context="#pop!nl.SQStringSource" />
<DetectChar char="&quot;" attribute="Quoted Source String" context="#pop!nl.DQStringSource" />
<RegExpr String="&n1;+" attribute="Deprecated Unquoted Source String" context="#pop" />
</context>
<context name="nl.SQStringSource" attribute="Quoted Source String" lineEndContext="stmt_list.error">
<DetectChar char="'" attribute="Quoted Source String" context="#pop!nl" />
<IncludeRules context="expansionAndEscape" />
<RegExpr String="\$&n;+" attribute="Deprecated Expansion" context="#stay" />
</context>
<context name="nl.DQStringSource" attribute="Quoted Source String" lineEndContext="stmt_list.error">
<DetectChar char="&quot;" attribute="Quoted Source String" context="#pop!nl" />
<IncludeRules context="expansionAndEscape" />
<RegExpr String="\$&n;+" attribute="Deprecated Expansion" context="#stay" />
</context>
<context name="choice_entry" attribute="Plain" lineEndContext="#pop!choice_option_list" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<RegExpr String="(&n;|\$)+(?!&n1;)" lookAhead="true" context="#pop!choice_option_list.nl.expandableIdentifier" />
<RegExpr String="&n1;+" attribute="Deprecated Variable Symbol" context="#pop!choice_option_list.nl" />
</context>
<context name="choice_option_list.nl.expandableIdentifier" attribute="Variable Symbol" lineEndContext="#pop!choice_option_list" fallthroughContext="#pop!error">
<IncludeRules context="expandableIdentifier" />
</context>
<context name="choice_option_list.nl" attribute="Plain" lineEndContext="#pop!choice_option_list" fallthroughContext="#pop!choice_option_list.error">
<IncludeRules context="wsOrComment" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="choice_option_list" attribute="Plain" lineEndContext="#stay" fallthroughContext="error">
<IncludeRules context="wsOrComment" />
<WordDetect String="prompt" attribute="Property" context="ifOpt.prompt" />
<keyword String="choice_type" attribute="Type" context="ifOpt.prompt_stmt_opt" />
<keyword String="choice_type_deprecated" attribute="Deprecated Type" context="ifOpt.prompt_stmt_opt" />
<keyword String="choice_bad_type" attribute="Deprecated Bad Choice Type" context="ifOpt.prompt_stmt_opt" />
<WordDetect String="optional" attribute="Property" context="nl" />
<WordDetect String="default" attribute="Property" context="ifOpt.symbolVar" />
<WordDetect String="depends" attribute="Property" context="depends" />
<WordDetect String="help" attribute="Property" beginRegion="help" context="helpEntry" />
<StringDetect String="---help---" attribute="Deprecated Property" beginRegion="help" context="helpEntry" />
<keyword String="entry" lookAhead="true" context="#pop!choice_block" />
<WordDetect String="endchoice" attribute="Keyword" endRegion="choice_stmt" context="#pop!nl" />
<IncludeRules context="ignoreBadComChars" />
</context>
<context name="choice_block" attribute="Plain" lineEndContext="#stay" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<IncludeRules context="common_stmt" />
<WordDetect String="endchoice" attribute="Keyword" endRegion="choice_stmt" context="#pop!nl" />
<IncludeRules context="ignoreBadComChars" />
</context>
<context name="depends" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<LineContinue context="#stay" />
<WordDetect String="on" attribute="Property" context="#pop!nl.expr" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="ifOpt.prompt_stmt_opt" attribute="Plain" lineEndContext="#pop">
<IncludeRules context="wsOrComment" />
<DetectChar char="'" attribute="Quoted Prompt" context="#pop!ifOpt.SQPrompt" />
<DetectChar char="&quot;" attribute="Quoted Prompt" context="#pop!ifOpt.DQPrompt" />
<RegExpr String="&n1;+" attribute="Deprecated Unquoted Prompt" context="#pop!ifOpt" />
</context>
<context name="ifOpt" attribute="Plain" lineEndContext="#pop" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<LineContinue context="#stay" />
<WordDetect String="if" attribute="Keyword" context="#pop!nl.expr" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="nl" attribute="Plain" lineEndContext="#pop" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="ifOpt.prompt" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<DetectChar char="'" attribute="Quoted Prompt" context="#pop!ifOpt.SQPrompt" />
<DetectChar char="&quot;" attribute="Quoted Prompt" context="#pop!ifOpt.DQPrompt" />
<RegExpr String="&n1;+" attribute="Deprecated Unquoted Prompt" context="#pop!ifOpt" />
</context>
<context name="ifOpt.SQPrompt" attribute="Quoted Prompt" lineEndContext="#pop!error">
<DetectChar char="'" attribute="Quoted Prompt" context="#pop!ifOpt" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="ifOpt.DQPrompt" attribute="Quoted Prompt" lineEndContext="#pop!error">
<DetectChar char="&quot;" attribute="Quoted Prompt" context="#pop!ifOpt" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="menu_visList.nl.SQPrompt" attribute="Quoted Prompt" lineEndContext="#pop!error">
<DetectChar char="'" attribute="Quoted Prompt" context="#pop!menu_visList.nl" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="menu_visList.nl.DQPrompt" attribute="Quoted Prompt" lineEndContext="#pop!error">
<DetectChar char="&quot;" attribute="Quoted Prompt" context="#pop!menu_visList.nl" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="comment_stmt.nl.prompt" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<DetectChar char="'" attribute="Quoted Prompt" context="#pop!comment_stmt.nl.SQPrompt" />
<DetectChar char="&quot;" attribute="Quoted Prompt" context="#pop!comment_stmt.nl.DQPrompt" />
<RegExpr String="&n1;+" attribute="Deprecated Unquoted Prompt" context="#pop!comment_stmt.nl" />
</context>
<context name="comment_stmt.nl.SQPrompt" attribute="Quoted Prompt" lineEndContext="#pop!error">
<DetectChar char="'" attribute="Quoted Prompt" context="#pop!comment_stmt.nl" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="comment_stmt.nl.DQPrompt" attribute="Quoted Prompt" lineEndContext="#pop!error">
<DetectChar char="&quot;" attribute="Quoted Prompt" context="#pop!comment_stmt.nl" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="comment_stmt.nl" attribute="Plain" lineEndContext="#pop!comment_stmt" fallthroughContext="error">
<IncludeRules context="wsOrComment" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="comment_stmt" attribute="Plain" lineEndContext="#stay" fallthroughContext="error">
<IncludeRules context="wsOrComment" />
<WordDetect String="depends" attribute="Property" context="depends" />
<keyword String="entry_keyword" lookAhead="true" endRegion="comment_stmt" context="#pop" />
<IncludeRules context="ignoreBadComChars" />
<RegExpr String="." lookAhead="true" endRegion="config_stmt" context="#pop" />
</context>
<context name="config_entry_start" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<RegExpr String="(&n;|\$)+(?!&n1;)" lookAhead="true" context="#pop!config_option_list.nl.expandableIdentifier" />
<RegExpr String="&n1;+" attribute="Deprecated Variable Symbol" context="#pop!config_option_list.nl" />
</context>
<context name="config_option_list.nl.expandableIdentifier" attribute="Variable Symbol" lineEndContext="#pop!config_option_list" fallthroughContext="#pop!config_option_list.nl">
<IncludeRules context="expandableIdentifier" />
</context>
<context name="config_option_list.nl" attribute="Plain" lineEndContext="#pop!config_option_list" fallthroughContext="#pop!config_option_list.error">
<IncludeRules context="wsOrComment" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="config_option_list" attribute="Plain" lineEndContext="#stay">
<IncludeRules context="wsOrComment" />
<WordDetect String="prompt" attribute="Property" context="ifOpt.prompt" />
<keyword String="type" attribute="Type" context="ifOpt.prompt_stmt_opt" />
<keyword String="type_deprecated" attribute="Deprecated Type" context="ifOpt.prompt_stmt_opt" />
<WordDetect String="default" attribute="Property" context="ifOpt.expr" />
<keyword String="def_type" lookAhead="true" context="ifOpt.expr.type" />
<WordDetect String="depends" attribute="Property" context="depends" />
<WordDetect String="select" attribute="Property" context="ifOpt.symbolVar" />
<WordDetect String="imply" attribute="Property" context="ifOpt.symbolVar" />
<WordDetect String="range" attribute="Property" context="range" />
<WordDetect String="help" attribute="Property" beginRegion="help" context="helpEntry" />
<StringDetect String="---help---" attribute="Deprecated Property" beginRegion="help" context="helpEntry" />
<WordDetect String="option" attribute="Deprecated Keyword" context="option" />
<WordDetect String="modules" attribute="Property" context="nl" />
<keyword String="entry_keyword" lookAhead="true" endRegion="config_stmt" context="#pop" />
<IncludeRules context="ignoreBadComChars" />
<RegExpr String="." lookAhead="true" endRegion="config_stmt" context="#pop" />
</context>
<context name="ifOpt.expr.type" attribute="Plain" lineEndContext="#pop!error">
<StringDetect String="def_" attribute="Property" context="#stay" />
<StringDetect String="bool" attribute="Type" context="#pop!ifOpt.expr" />
<StringDetect String="tristate" attribute="Type" context="#pop!ifOpt.expr" />
</context>
<context name="option" attribute="Plain" lineEndContext="#pop" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<keyword String="option" attribute="Option" context="optionWithoutValue" />
<keyword String="option_deprecated" attribute="Deprecated Option" context="optionWithoutValue" />
<WordDetect String="env" attribute="Deprecated Option" context="optionValue.eq" />
<RegExpr String="&n;+(?!&n1;)" attribute="Unknown Option" context="optionValue.eq" />
<RegExpr String="&n1;+" attribute="Deprecated Unknown Option String" context="optionValue.eq" />
</context>
<context name="optionValue.eq" attribute="Deprecated Option" lineEndContext="#pop" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<DetectChar char="=" attribute="Deprecated Option: Equals Sign" context="#pop!optionValue" />
</context>
<context name="optionWithoutValue" attribute="Plain" lineEndContext="#pop" fallthroughContext="#pop!error">
<DetectSpaces />
</context>
<context name="SQStringOptionValue" attribute="Deprecated Quoted Option Value" lineEndContext="#pop!error">
<DetectChar char="'" attribute="Deprecated Quoted Option Value" context="#pop" />
<DetectChar char="\" lookAhead="true" context="escapeInDeprecatedString" />
</context>
<context name="DQStringOptionValue" attribute="Deprecated Quoted Option Value" lineEndContext="#pop!error">
<DetectChar char="&quot;" attribute="Deprecated Quoted Option Value" context="#pop" />
<DetectChar char="\" lookAhead="true" context="escapeInDeprecatedString" />
</context>
<context name="optionValue" attribute="Plain" lineEndContext="#pop" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<DetectChar char="'" attribute="Deprecated Quoted Option Value" context="#pop!SQStringOptionValue" />
<DetectChar char="&quot;" attribute="Deprecated Quoted Option Value" context="#pop!DQStringOptionValue" />
<RegExpr String="&n;+(?!&n1;)" attribute="Deprecated Unquoted Option Value" context="#pop" />
<RegExpr String="&n1;+" attribute="Deprecated Unquoted Option Value String" context="#pop" />
</context>
<context name="ifOpt.expandableIdentifier" attribute="Variable Symbol" lineEndContext="#pop" fallthroughContext="#pop!ifOpt">
<IncludeRules context="expandableIdentifier" />
</context>
<context name="ifOpt.symbolVar" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<RegExpr String="&tristateConst;" attribute="Bad Tristate Constant" context="#pop!ifOpt.binOpOrEnd" />
<RegExpr String="(&n;|\$)" lookAhead="true" context="#pop!ifOpt.expandableIdentifier" />
</context>
<context name="range" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<DetectChar char="'" attribute="Constant Symbol" context="#pop!ifOpt.sym.SQSymbolConst" />
<DetectChar char="&quot;" attribute="Constant Symbol" context="#pop!ifOpt.sym.DQSymbolConst" />
<RegExpr String="&n;+(?!&n1;)" attribute="Variable Symbol" context="#pop!ifOpt.sym" />
<RegExpr String="&n1;+" attribute="Deprecated Variable Symbol" context="#pop!ifOpt.sym" />
</context>
<context name="ifOpt.sym" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<DetectChar char="'" attribute="Constant Symbol" context="#pop!ifOpt.SQSymbolConst" />
<DetectChar char="&quot;" attribute="Constant Symbol" context="#pop!ifOpt.DQSymbolConst" />
<RegExpr String="&n;+(?!&n1;)" attribute="Variable Symbol" context="#pop!ifOpt" />
<RegExpr String="&n1;+" attribute="Deprecated Variable Symbol" context="#pop!ifOpt" />
</context>
<context name="ifOpt.sym.SQSymbolConst" attribute="Constant Symbol" lineEndContext="#pop!error">
<DetectChar char="'" attribute="Constant Symbol" context="#pop!ifOpt.sym" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="ifOpt.sym.DQSymbolConst" attribute="Constant Symbol" lineEndContext="#pop!error">
<DetectChar char="&quot;" attribute="Constant Symbol" context="#pop!ifOpt.sym" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="ifOpt.SQSymbolConst" attribute="Constant Symbol" lineEndContext="#pop!error">
<DetectChar char="'" attribute="Constant Symbol" context="#pop!ifOpt" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="ifOpt.DQSymbolConst" attribute="Constant Symbol" lineEndContext="#pop!error">
<DetectChar char="&quot;" attribute="Constant Symbol" context="#pop!ifOpt" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="menu_entry" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<DetectChar char="'" attribute="Quoted Prompt" context="#pop!menu_visList.nl.SQPrompt" />
<DetectChar char="&quot;" attribute="Quoted Prompt" context="#pop!menu_visList.nl.DQPrompt" />
<RegExpr String="&n1;+" attribute="Deprecated Unquoted Prompt" context="#pop!menu_visList.nl" />
</context>
<context name="menu_visList.nl" attribute="Plain" lineEndContext="#pop!menu_visList" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="menu_visList" attribute="Plain" lineEndContext="#stay" fallthroughContext="#pop!menu_depList">
<IncludeRules context="wsOrComment" />
<WordDetect String="visible" attribute="Property" context="visible" />
<IncludeRules context="ignoreBadComChars" />
</context>
<context name="visible" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<WordDetect String="if" attribute="Property" context="#pop!nl.expr" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="menu_depList" attribute="Plain" lineEndContext="#stay" fallthroughContext="#pop!menu_stmt">
<IncludeRules context="wsOrComment" />
<WordDetect String="depends" attribute="Property" context="depends" />
<IncludeRules context="ignoreBadComChars" />
</context>
<context name="menu_stmt" attribute="Plain" lineEndContext="#stay" fallthroughContext="error">
<WordDetect String="endmenu" attribute="Keyword" endRegion="menu_stmt" context="#pop!nl" />
<IncludeRules context="stmt_list" />
</context>
<context name="if_stmt" attribute="Plain" lineEndContext="#stay">
<IncludeRules context="wsOrComment" />
<WordDetect String="endif" attribute="Keyword" endRegion="if_stmt" context="#pop" />
<IncludeRules context="stmt_list" />
</context>
<context name="nl.assign_val" attribute="Assignment Value" lineEndContext="#pop">
<IncludeRules context="expansion" />
<RegExpr String="(&n;|(\$(?!\()))+" context="#stay" />
</context>
<context name="nl.assign_val.wsOpt" attribute="Plain" lineEndContext="#pop" fallthroughContext="#pop!nl.assign_val">
<DetectSpaces />
</context>
<context name="nl.assign_val.wsOpt.assign_op" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<RegExpr String="[+:]?=" attribute="Assignment Operator" context="#pop!nl.assign_val.wsOpt" />
</context>
<context name="assignment" attribute="Variable" lineEndContext="#pop" fallthroughContext="#pop!nl.assign_val.wsOpt.assign_op">
<keyword String="questionable_identifier" attribute="Deprecated Identifier" context="#pop!nl.assign_val.wsOpt.assign_op" />
<IncludeRules context="expandableIdentifier" includeAttrib="false" />
</context>
<context name="stmt_list" attribute="Plain" lineEndContext="#stay" fallthroughContext="error">
<IncludeRules context="common_stmt" />
<WordDetect String="choice" attribute="Keyword" beginRegion="choice_stmt" context="choice_entry" />
<WordDetect String="menu" attribute="Keyword" beginRegion="menu_stmt" context="menu_entry" />
<keyword String="keyword" context="error" />
<IncludeRules context="ignoreBadComChars" />
<RegExpr String="(&n;|\$)" lookAhead="true" context="assignment" />
</context>
<context name="choice_option_list.error" attribute="Error" lineEndContext="#pop!choice_option_list" />
<context name="config_option_list.error" attribute="Error" lineEndContext="#pop!config_option_list" />
<context name="stmt_list.error" attribute="Error" lineEndContext="#pop!stmt_list" />
<context name="error" attribute="Error" lineEndContext="#pop" />
<!-- expressions -->
<context name="nl.expr" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<LineContinue context="#stay" />
<Detect2Chars char="(" char1=")" lookAhead="true" context="#pop!nl.emptyParenthesesInstance" />
<DetectChar char="(" attribute="Expression Operator" beginRegion="parentheses" context="#pop!nl.parenthesesInstance" />
<DetectChar char="!" attribute="Expression Operator" context="#stay" />
<DetectChar char="'" attribute="Constant Symbol" context="#pop!nl.binOpOrEnd.SQSymbolConst" />
<DetectChar char="&quot;" attribute="Constant Symbol" context="#pop!nl.binOpOrEnd.DQSymbolConst" />
<keyword String="keyword" context="#pop!error" />
<keyword String="tristate_const" attribute="Tristate Constant" context="#pop!nl.binOpOrEnd" />
<RegExpr String="(&n;|\$)+(?!&n1;)" lookAhead="true" context="#pop!nl.binOpOrEnd.expandableIdentifier" />
<RegExpr String="&n1;+" attribute="Deprecated Variable Symbol" context="#pop!nl.binOpOrEnd" />
</context>
<context name="nl.binOpOrEnd.expandableIdentifier" attribute="Variable Symbol" lineEndContext="#pop" fallthroughContext="#pop!nl.binOpOrEnd">
<IncludeRules context="expandableIdentifier" />
</context>
<context name="nl.emptyParenthesesInstance" attribute="Plain" lineEndContext="#stay">
<DetectChar char="(" attribute="Expression Operator" context="#pop!error" />
</context>
<context name="nl.binOpOrEnd" attribute="Plain" lineEndContext="#pop" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<LineContinue context="#stay" />
<DetectChar char=")" lookAhead="true" context="#pop" />
<Detect2Chars char="&amp;" char1="&amp;" attribute="Expression Operator" context="#pop!nl.expr" />
<Detect2Chars char="|" char1="|" attribute="Expression Operator" context="#pop!nl.expr" />
<Detect2Chars char="!" char1="=" attribute="Expression Operator" context="#pop!nl.expr" />
<Detect2Chars char="&lt;" char1="=" attribute="Expression Operator" context="#pop!nl.expr" />
<Detect2Chars char="&gt;" char1="=" attribute="Expression Operator" context="#pop!nl.expr" />
<AnyChar String="=&lt;&gt;" attribute="Expression Operator" context="#pop!nl.expr" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="nl.binOpOrEnd.SQSymbolConst" attribute="Constant Symbol" lineEndContext="#pop!error">
<DetectChar char="'" attribute="Constant Symbol" context="#pop!nl.binOpOrEnd" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="nl.binOpOrEnd.DQSymbolConst" attribute="Constant Symbol" lineEndContext="#pop!error">
<DetectChar char="&quot;" attribute="Constant Symbol" context="#pop!nl.binOpOrEnd" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="ifOpt.expr" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<LineContinue context="#stay" />
<Detect2Chars char="(" char1=")" lookAhead="true" context="#pop!nl.emptyParenthesesInstance" />
<DetectChar char="(" attribute="Expression Operator" beginRegion="parentheses" context="#pop!ifOpt.parenthesesInstance" />
<DetectChar char="!" context="#stay" />
<DetectChar char="'" attribute="Constant Symbol" context="#pop!ifOpt.binOpOrEnd.SQSymbolConst" />
<DetectChar char="&quot;" attribute="Constant Symbol" context="#pop!ifOpt.binOpOrEnd.DQSymbolConst" />
<keyword String="keyword" attribute="Error" context="#pop!error" />
<RegExpr String="&tristateConst;" attribute="Tristate Constant" context="#pop!ifOpt.binOpOrEnd" />
<RegExpr String="(&n;|\$)" lookAhead="true" context="#pop!ifOpt.binOpOrEnd.expandableIdentifier" />
</context>
<context name="ifOpt.binOpOrEnd.expandableIdentifier" attribute="Variable Symbol" lineEndContext="#pop" fallthroughContext="#pop!ifOpt.binOpOrEnd">
<IncludeRules context="expandableIdentifier" />
</context>
<context name="ifOpt.binOpOrEnd" attribute="Plain" lineEndContext="#pop" fallthroughContext="#pop!ifOpt">
<IncludeRules context="wsOrComment" />
<LineContinue context="#stay" />
<DetectChar char=")" lookAhead="true" context="#pop" />
<Detect2Chars char="&amp;" char1="&amp;" attribute="Expression Operator" context="#pop!ifOpt.expr" />
<Detect2Chars char="|" char1="|" attribute="Expression Operator" context="#pop!ifOpt.expr" />
<Detect2Chars char="!" char1="=" attribute="Expression Operator" context="#pop!ifOpt.expr" />
<Detect2Chars char="&lt;" char1="=" attribute="Expression Operator" context="#pop!ifOpt.expr" />
<Detect2Chars char="&gt;" char1="=" attribute="Expression Operator" context="#pop!ifOpt.expr" />
<AnyChar String="=&lt;&gt;" attribute="Expression Operator" context="#pop!ifOpt.expr" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="ifOpt.binOpOrEnd.SQSymbolConst" attribute="Constant Symbol" lineEndContext="#pop!error">
<DetectChar char="'" attribute="Constant Symbol" context="#pop!ifOpt.binOpOrEnd" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="ifOpt.binOpOrEnd.DQSymbolConst" attribute="Constant Symbol" lineEndContext="#pop!error">
<DetectChar char="&quot;" attribute="Constant Symbol" context="#pop!ifOpt.binOpOrEnd" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="if_stmt.nl.expr" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<LineContinue context="#stay" />
<Detect2Chars char="(" char1=")" lookAhead="true" context="#pop!nl.emptyParenthesesInstance" />
<DetectChar char="(" attribute="Expression Operator" beginRegion="parentheses" context="#pop!if_stmt.nl.parenthesesInstance" />
<DetectChar char="!" context="#stay" />
<DetectChar char="'" attribute="Constant Symbol" context="#pop!if_stmt.nl.binOpOrEnd.SQSymbolConst" />
<DetectChar char="&quot;" attribute="Constant Symbol" context="#pop!if_stmt.nl.binOpOrEnd.DQSymbolConst" />
<keyword String="keyword" context="#pop!error" />
<RegExpr String="&tristateConst;" attribute="Tristate Constant" context="#pop!if_stmt.nl.binOpOrEnd" />
<RegExpr String="(&n;|\$)" lookAhead="true" context="#pop!if_stmt.nl.binOpOrEnd.expandableIdentifier" />
</context>
<context name="if_stmt.nl.binOpOrEnd.expandableIdentifier" attribute="Variable Symbol" lineEndContext="#pop!if_stmt" fallthroughContext="#pop!if_stmt.nl.binOpOrEnd">
<IncludeRules context="expandableIdentifier" />
</context>
<context name="if_stmt.nl.binOpOrEnd" attribute="Plain" lineEndContext="#pop!if_stmt" fallthroughContext="#pop!nl">
<IncludeRules context="wsOrComment" />
<LineContinue context="#stay" />
<DetectChar char=")" lookAhead="true" context="#pop" />
<Detect2Chars char="&amp;" char1="&amp;" attribute="Expression Operator" context="#pop!if_stmt.nl.expr" />
<Detect2Chars char="|" char1="|" attribute="Expression Operator" context="#pop!if_stmt.nl.expr" />
<DetectChar char="=" attribute="Expression Operator" context="#pop!if_stmt.nl.expr" />
<Detect2Chars char="!" char1="=" attribute="Expression Operator" context="#pop!if_stmt.nl.expr" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="escapeInDeprecatedString" attribute="Plain" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr String="\\." attribute="Deprecated Escaped Character" context="#pop" />
</context>
<context name="escape" attribute="Plain" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr String="\\." attribute="Escaped Character" context="#pop" />
</context>
<context name="if_stmt.nl.binOpOrEnd.SQSymbolConst" attribute="Constant Symbol" lineEndContext="#pop!error">
<DetectChar char="'" attribute="Constant Symbol" context="#pop!if_stmt.nl.binOpOrEnd" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="if_stmt.nl.binOpOrEnd.DQSymbolConst" attribute="Constant Symbol" lineEndContext="#pop!error">
<DetectChar char="&quot;" attribute="Constant Symbol" context="#pop!if_stmt.nl.binOpOrEnd" />
<IncludeRules context="expansionAndEscape" />
</context>
<context name="nl.parenthesesInstance" attribute="Plain" lineEndContext="#stay" fallthroughContext="nl.expr">
<DetectChar char=")" attribute="Expression Operator" endRegion="parentheses" context="#pop!nl.binOpOrEnd" />
</context>
<context name="ifOpt.parenthesesInstance" attribute="Plain" lineEndContext="#stay" fallthroughContext="ifOpt.expr">
<DetectChar char=")" attribute="Expression Operator" endRegion="parentheses" context="#pop!ifOpt.binOpOrEnd" />
</context>
<context name="if_stmt.nl.parenthesesInstance" attribute="Plain" lineEndContext="#stay" fallthroughContext="nl.expr">
<DetectChar char=")" attribute="Expression Operator" endRegion="parentheses" context="#pop!if_stmt.nl.binOpOrEnd" />
</context>
<context name="parenthesesInExpansion" attribute="Expansion" lineEndContext="#pop">
<IncludeRules context="expansion" />
<DetectChar char="(" attribute="Expansion" context="parenthesesInExpansion" />
<DetectChar char=")" attribute="Expansion" context="#pop" />
</context>
<context name="expansionArgumentsAndEnd" attribute="Expansion" lineEndContext="#pop!error">
<IncludeRules context="expansion" />
<DetectChar char="(" attribute="Expansion" context="parenthesesInExpansion" />
<DetectChar char="," attribute="Argument Separator" context="#stay" />
<DetectChar char=")" attribute="Expansion Delimiter" context="#pop" />
</context>
<context name="expansionArgumentsAndEnd.functionOrVariableName" attribute="Expansion" lineEndContext="#pop!error" fallthroughContext="#pop!expansionArgumentsAndEnd">
<keyword String="builtin_function" attribute="Builtin Function" context="#pop!expansionArgumentsAndEnd" />
<IncludeRules context="expansion" />
<RegExpr String="(&n;|(\$(?!\()))+" context="#pop!expansionArgumentsAndEnd" />
</context>
<!-- help texts
This is ugly: indentation may be a mixture of
tabs and spaces. There is a minimum indentation
for the non-blank lines (i.e. lines that do not
contain only tabs and spaces) of a help text. If
a non-blank line falls below that minimum, that
line does not belong to the help text and the
help text ends.
This minimum is set by the first non-blank line
after "help". If the first line immediately
after the "help" line is non-blank, but not
indented, then the second non-blank line is
considered to determine indentation. If that
line also has no indentation, the help text
ends on that second line.
One tab corresponds to eight spaces.
As indentation may arbitrarily switch between
tabs and spaces it is perfectly OK to have e.g.
- first line: 8 spaces
- second line: 1 tab
- third line: 4 spaces, 1 tab
Tabs are aligned, so this is valid, too:
- first line: 6 spaces, 1 tab
- second line: 1 tab
Storing the reference indentation length is
hardly possible. The "dynamic" attribute does
not fit here, because each line may have a
different combination of tabs and spaces.
Instead just be pragmatic and add contexts for
any indentation length from 1 to 80.
80 should cover even any exotic useful case:
In the field, we hardly encounter more initial
indentation than 2 tabs (i.e. 16 spaces).
The Linux kernel has a line length policy that
can be summarized as
"do not exceed 80 chars without a good reason"
-->
<context name="helpEntry" attribute="Help Text" lineEndContext="#pop!helpTextFirstLine" fallthroughContext="#pop!error">
<IncludeRules context="wsOrComment" />
<IncludeRules context="ignoreBadParamChars" />
</context>
<context name="helpTextFirstLine" attribute="Help Text" lineEmptyContext="#pop!helpDetectIndentation" lineEndContext="#stay" fallthroughContext="#pop!error">
<RegExpr String="^([^ \t].*|[ \t]*)$" column="0" attribute="Help Text" context="#pop!helpDetectIndentation" />
<IncludeRules context="helpDetectIndentation" />
</context>
<context name="helpDetectIndentation" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<RegExpr String="^[ \t]*$" column="0" context="#stay" />
<RegExpr String="^(&tab;){10}(?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent80" />
<RegExpr String="^(&tab;){9} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent79" />
<RegExpr String="^(&tab;){9} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent78" />
<RegExpr String="^(&tab;){9} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent77" />
<RegExpr String="^(&tab;){9} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent76" />
<RegExpr String="^(&tab;){9} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent75" />
<RegExpr String="^(&tab;){9} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent74" />
<RegExpr String="^(&tab;){9} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent73" />
<RegExpr String="^(&tab;){9}(?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent72" />
<RegExpr String="^(&tab;){8} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent71" />
<RegExpr String="^(&tab;){8} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent70" />
<RegExpr String="^(&tab;){8} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent69" />
<RegExpr String="^(&tab;){8} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent68" />
<RegExpr String="^(&tab;){8} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent67" />
<RegExpr String="^(&tab;){8} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent66" />
<RegExpr String="^(&tab;){8} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent65" />
<RegExpr String="^(&tab;){8}(?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent64" />
<RegExpr String="^(&tab;){7} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent63" />
<RegExpr String="^(&tab;){7} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent62" />
<RegExpr String="^(&tab;){7} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent61" />
<RegExpr String="^(&tab;){7} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent60" />
<RegExpr String="^(&tab;){7} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent59" />
<RegExpr String="^(&tab;){7} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent58" />
<RegExpr String="^(&tab;){7} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent57" />
<RegExpr String="^(&tab;){7}(?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent56" />
<RegExpr String="^(&tab;){6} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent55" />
<RegExpr String="^(&tab;){6} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent54" />
<RegExpr String="^(&tab;){6} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent53" />
<RegExpr String="^(&tab;){6} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent52" />
<RegExpr String="^(&tab;){6} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent51" />
<RegExpr String="^(&tab;){6} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent50" />
<RegExpr String="^(&tab;){6} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent49" />
<RegExpr String="^(&tab;){6}(?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent48" />
<RegExpr String="^(&tab;){5} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent47" />
<RegExpr String="^(&tab;){5} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent46" />
<RegExpr String="^(&tab;){5} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent45" />
<RegExpr String="^(&tab;){5} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent44" />
<RegExpr String="^(&tab;){5} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent43" />
<RegExpr String="^(&tab;){5} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent42" />
<RegExpr String="^(&tab;){5} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent41" />
<RegExpr String="^(&tab;){5}(?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent40" />
<RegExpr String="^(&tab;){4} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent39" />
<RegExpr String="^(&tab;){4} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent38" />
<RegExpr String="^(&tab;){4} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent37" />
<RegExpr String="^(&tab;){4} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent36" />
<RegExpr String="^(&tab;){4} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent35" />
<RegExpr String="^(&tab;){4} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent34" />
<RegExpr String="^(&tab;){4} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent33" />
<RegExpr String="^(&tab;){4}(?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent32" />
<RegExpr String="^(&tab;){3} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent31" />
<RegExpr String="^(&tab;){3} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent30" />
<RegExpr String="^(&tab;){3} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent29" />
<RegExpr String="^(&tab;){3} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent28" />
<RegExpr String="^(&tab;){3} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent27" />
<RegExpr String="^(&tab;){3} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent26" />
<RegExpr String="^(&tab;){3} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent25" />
<RegExpr String="^(&tab;){3}(?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent24" />
<RegExpr String="^(&tab;){2} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent23" />
<RegExpr String="^(&tab;){2} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent22" />
<RegExpr String="^(&tab;){2} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent21" />
<RegExpr String="^(&tab;){2} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent20" />
<RegExpr String="^(&tab;){2} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent19" />
<RegExpr String="^(&tab;){2} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent18" />
<RegExpr String="^(&tab;){2} (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent17" />
<RegExpr String="^(&tab;){2}(?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent16" />
<RegExpr String="^&tab; (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent15" />
<RegExpr String="^&tab; (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent14" />
<RegExpr String="^&tab; (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent13" />
<RegExpr String="^&tab; (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent12" />
<RegExpr String="^&tab; (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent11" />
<RegExpr String="^&tab; (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent10" />
<RegExpr String="^&tab; (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent9" />
<RegExpr String="^&tab;(?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent8" />
<RegExpr String="^ (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent7" />
<RegExpr String="^ (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent6" />
<RegExpr String="^ (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent5" />
<RegExpr String="^ (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent4" />
<RegExpr String="^ (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent3" />
<RegExpr String="^ (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent2" />
<RegExpr String="^ (?![ \t])" column="0" lookAhead="true" context="#pop!helpIndent1" />
</context>
<context name="endHelp" attribute="Help Text" lineEndContext="#stay">
<DetectSpaces attribute="Help Text" context="#stay" />
<DetectChar char="#" lookAhead="true" endRegion="help" context="#pop!lineComment" />
<keyword String="keyword" lookAhead="true" endRegion="help" context="#pop" />
<RegExpr String="." lookAhead="true" endRegion="help" context="#pop!error" />
</context>
<context name="helpText" attribute="Help Text" lineEndContext="#pop">
<DetectChar char="&lt;" attribute="Help Text" context="maybeLink" />
</context>
<context name="maybeLink" attribute="Link" lineEndContext="#pop" fallthroughContext="#pop">
<RegExpr String="[^&gt;]+:[^&gt;]+(?&gt;)" attribute="Link" context="#pop" />
</context>
<context name="helpEatWsLine" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop">
<RegExpr String="^( |\t)*$" column="0" attribute="Help Text" context="#stay" />
</context>
<context name="helpIndent1" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent2" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent3" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent4" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent5" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent6" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent7" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent8" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^&tab;" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent9" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^&tab;( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent10" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^&tab;( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent11" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^&tab;( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent12" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^&tab;( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent13" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^&tab;( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent14" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^&tab;( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent15" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^&tab;( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent16" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){2}" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent17" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){2}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent18" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){2}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent19" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){2}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent20" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){2}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent21" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){2}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent22" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){2}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent23" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){2}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent24" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){3}" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent25" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){3}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent26" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){3}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent27" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){3}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent28" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){3}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent29" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){3}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent30" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){3}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent31" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){3}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent32" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){4}" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent33" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){4}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent34" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){4}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent35" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){4}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent36" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){4}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent37" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){4}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent38" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){4}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent39" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){4}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent40" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){5}" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent41" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){5}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent42" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){5}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent43" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){5}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent44" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){5}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent45" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){5}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent46" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){5}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent47" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){5}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent48" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){6}" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent49" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){6}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent50" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){6}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent51" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){6}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent52" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){6}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent53" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){6}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent54" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){6}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent55" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){6}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent56" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){7}" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent57" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){7}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent58" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){7}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent59" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){7}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent60" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){7}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent61" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){7}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent62" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){7}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent63" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){7}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent64" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){8}" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent65" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){8}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent66" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){8}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent67" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){8}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent68" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){8}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent69" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){8}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent70" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){8}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent71" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){8}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent72" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){9}" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent73" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){9}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent74" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){9}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent75" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){9}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent76" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){9}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent77" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){9}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent78" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){9}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent79" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){9}( |\t)" column="0" attribute="Help Text" context="helpText" />
</context>
<context name="helpIndent80" attribute="Help Text" lineEndContext="#stay" fallthroughContext="#pop!endHelp">
<IncludeRules context="helpEatWsLine" />
<RegExpr String="^(&tab;){10}" column="0" attribute="Help Text" context="helpText" />
</context>
<!-- only as included rules -->
<context name="common_stmt" attribute="Plain" lineEndContext="#pop!error" fallthroughContext="#pop">
<IncludeRules context="wsOrComment" />
<WordDetect String="if" attribute="Keyword" beginRegion="if_stmt" context="if_stmt.nl.expr" />
<WordDetect String="comment" attribute="Keyword" beginRegion="comment_stmt" context="comment_stmt.nl.prompt" />
<keyword String="config" attribute="Keyword" beginRegion="config_stmt" context="config_entry_start" />
<WordDetect String="source" attribute="Source" context="source_stmt" />
</context>
<context name="expandableIdentifier" attribute="Variable Symbol" lineEndContext="#pop" fallthroughContext="#pop">
<IncludeRules context="expansion" />
<RegExpr String="(&n;|(\$(?!\()))+" context="#stay" />
</context>
<context name="expansion" attribute="Expansion" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<Detect2Chars char="$" char1="(" attribute="Expansion Delimiter" context="expansionArgumentsAndEnd.functionOrVariableName" />
</context>
<context name="expansionAndEscape" attribute="Expansion" lineEndContext="#pop!error" fallthroughContext="#pop!error">
<DetectChar char="\" lookAhead="true" context="escape" />
<Detect2Chars char="$" char1="(" attribute="Expansion Delimiter" context="expansionArgumentsAndEnd.functionOrVariableName" />
</context>
<context name="wsOrComment" attribute="Plain" lineEndContext="#stay">
<DetectSpaces />
<DetectChar char="#" lookAhead="true" context="lineComment" />
</context>
<context name="ignoreBadComChars" attribute="Bad Character" lineEndContext="#stay">
<RegExpr String="&badCom;+" attribute="Bad Character" context="#stay" />
</context>
<context name="ignoreBadParamChars" attribute="Bad Character" lineEndContext="#stay">
<RegExpr String="&badParam;+" attribute="Bad Character" context="#stay" />
</context>
<context name="lineComment" attribute="Comment" lineEndContext="#pop">
<DetectSpaces />
<IncludeRules context="##Comments" />
</context>
</contexts>
<itemDatas>
<itemData name="Argument Separator" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Assignment Operator" defStyleNum="dsChar" spellChecking="false" />
<itemData name="Assignment Value" defStyleNum="dsString" spellChecking="false" />
<itemData name="Bad Character" defStyleNum="dsAlert" spellChecking="false" />
<itemData name="Bad Tristate Constant" defStyleNum="dsAlert" spellChecking="false" />
<itemData name="Builtin Function" defStyleNum="dsBuiltIn" spellChecking="false" />
<itemData name="Comment" defStyleNum="dsComment" spellChecking="true" />
<itemData name="Constant Symbol" defStyleNum="dsString" spellChecking="false" />
<itemData name="Deprecated Bad Choice Type" defStyleNum="dsAlert" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Escaped Character" defStyleNum="dsSpecialChar" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Expansion" defStyleNum="dsVariable" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Identifier" defStyleNum="dsDataType" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Keyword" defStyleNum="dsKeyword" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Option" defStyleNum="dsOthers" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Option: Equals Sign" defStyleNum="dsOperator" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Property" defStyleNum="dsOthers" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Quoted Option Value" defStyleNum="dsString" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Type" defStyleNum="dsDataType" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Unknown Option String" defStyleNum="dsAlert" italic="true" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Unquoted Mainmenu Prompt" defStyleNum="dsString" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Unquoted Option Value String" defStyleNum="dsString" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Unquoted Option Value" defStyleNum="dsString" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Unquoted Prompt" defStyleNum="dsNormal" spellChecking="true" strikeOut="true" />
<itemData name="Deprecated Unquoted Source String" defStyleNum="dsString" spellChecking="false" strikeOut="true" />
<itemData name="Deprecated Variable Symbol" defStyleNum="dsNormal" spellChecking="false" strikeOut="true" />
<itemData name="Error" defStyleNum="dsError" spellChecking="false" />
<itemData name="Escaped Character" defStyleNum="dsSpecialChar" spellChecking="false" />
<itemData name="Expansion Delimiter" defStyleNum="dsChar" spellChecking="false" />
<itemData name="Expansion" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="Expression Operator" defStyleNum="dsOperator" spellChecking="false" />
<itemData name="Help Text" defStyleNum="dsVerbatimString" spellChecking="true" />
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Link" defStyleNum="dsOthers" spellChecking="false" underline="false" />
<itemData name="Option" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Plain" defStyleNum="dsNormal" spellChecking="true" />
<itemData name="Property" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Quoted Mainmenu Prompt" defStyleNum="dsString" spellChecking="true" />
<itemData name="Quoted Prompt" defStyleNum="dsString" spellChecking="true" />
<itemData name="Quoted Source String" defStyleNum="dsString" spellChecking="false" />
<itemData name="Source" defStyleNum="dsPreprocessor" spellChecking="false" />
<itemData name="Tristate Constant" defStyleNum="dsConstant" spellChecking="false" />
<itemData name="Type" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="Unknown Option" defStyleNum="dsAlert" italic="true" spellChecking="false" />
<itemData name="Variable Symbol" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Variable" defStyleNum="dsDataType" spellChecking="false" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="#" />
</comments>
<keywords weakDeliminator=".-" additionalDeliminator="'&quot;" />
</general>
</language>
<!-- kate: replace-tabs off; -->