Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 36f0d913b965f635bbe529e17e315066 > files > 625

ghc-highlighting-kate-devel-0.2.9-2.fc14.i686.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
<title>Text/Highlighting/Kate/Syntax/Javascript.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>{- This module was generated from data in the Kate syntax highlighting file javascript.xml, version 1.18,
<a name="line-2"></a>   by  Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net) -}</span>
<a name="line-3"></a>
<a name="line-4"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Highlighting</span><span class='hs-varop'>.</span><span class='hs-conid'>Kate</span><span class='hs-varop'>.</span><span class='hs-conid'>Syntax</span><span class='hs-varop'>.</span><span class='hs-conid'>Javascript</span> <span class='hs-layout'>(</span> <span class='hs-varid'>highlight</span><span class='hs-layout'>,</span> <span class='hs-varid'>parseExpression</span><span class='hs-layout'>,</span> <span class='hs-varid'>syntaxName</span><span class='hs-layout'>,</span> <span class='hs-varid'>syntaxExtensions</span> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-5"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Highlighting</span><span class='hs-varop'>.</span><span class='hs-conid'>Kate</span><span class='hs-varop'>.</span><span class='hs-conid'>Definitions</span>
<a name="line-6"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Highlighting</span><span class='hs-varop'>.</span><span class='hs-conid'>Kate</span><span class='hs-varop'>.</span><span class='hs-conid'>Common</span>
<a name="line-7"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Highlighting</span><span class='hs-varop'>.</span><span class='hs-conid'>Kate</span><span class='hs-varop'>.</span><span class='hs-conid'>Syntax</span><span class='hs-varop'>.</span><span class='hs-conid'>Alert</span>
<a name="line-8"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>ParserCombinators</span><span class='hs-varop'>.</span><span class='hs-conid'>Parsec</span>
<a name="line-9"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span> <span class='hs-layout'>(</span><span class='hs-varid'>when</span><span class='hs-layout'>)</span>
<a name="line-10"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromList</span><span class='hs-layout'>)</span>
<a name="line-11"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromMaybe</span><span class='hs-layout'>,</span> <span class='hs-varid'>maybeToList</span><span class='hs-layout'>)</span>
<a name="line-12"></a>
<a name="line-13"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Set</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Set</span>
<a name="line-14"></a><a name="syntaxName"></a><span class='hs-comment'>-- | Full name of language.</span>
<a name="line-15"></a><span class='hs-definition'>syntaxName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span>
<a name="line-16"></a><span class='hs-definition'>syntaxName</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"JavaScript"</span>
<a name="line-17"></a>
<a name="line-18"></a><a name="syntaxExtensions"></a><span class='hs-comment'>-- | Filename extensions for this language.</span>
<a name="line-19"></a><span class='hs-definition'>syntaxExtensions</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span>
<a name="line-20"></a><span class='hs-definition'>syntaxExtensions</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"*.js"</span>
<a name="line-21"></a>
<a name="line-22"></a><a name="highlight"></a><span class='hs-comment'>-- | Highlight source code using this syntax definition.</span>
<a name="line-23"></a><span class='hs-definition'>highlight</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Either</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>SourceLine</span><span class='hs-keyglyph'>]</span>
<a name="line-24"></a><span class='hs-definition'>highlight</span> <span class='hs-varid'>input</span> <span class='hs-keyglyph'>=</span>
<a name="line-25"></a>  <span class='hs-keyword'>case</span> <span class='hs-varid'>runParser</span> <span class='hs-varid'>parseSource</span> <span class='hs-varid'>startingState</span> <span class='hs-str'>"source"</span> <span class='hs-varid'>input</span> <span class='hs-keyword'>of</span>
<a name="line-26"></a>    <span class='hs-conid'>Left</span> <span class='hs-varid'>err</span>     <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Left</span> <span class='hs-varop'>$</span> <span class='hs-varid'>show</span> <span class='hs-varid'>err</span>
<a name="line-27"></a>    <span class='hs-conid'>Right</span> <span class='hs-varid'>result</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Right</span> <span class='hs-varid'>result</span>
<a name="line-28"></a>
<a name="line-29"></a><a name="parseExpression"></a><span class='hs-comment'>-- | Parse an expression using appropriate local context.</span>
<a name="line-30"></a><span class='hs-definition'>parseExpression</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GenParser</span> <span class='hs-conid'>Char</span> <span class='hs-conid'>SyntaxState</span> <span class='hs-conid'>LabeledSource</span>
<a name="line-31"></a><span class='hs-definition'>parseExpression</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-32"></a>  <span class='hs-varid'>st</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getState</span>
<a name="line-33"></a>  <span class='hs-keyword'>let</span> <span class='hs-varid'>oldLang</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>synStLanguage</span> <span class='hs-varid'>st</span>
<a name="line-34"></a>  <span class='hs-varid'>setState</span> <span class='hs-varop'>$</span> <span class='hs-varid'>st</span> <span class='hs-layout'>{</span> <span class='hs-varid'>synStLanguage</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"JavaScript"</span> <span class='hs-layout'>}</span>
<a name="line-35"></a>  <span class='hs-varid'>context</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>currentContext</span> <span class='hs-varop'>&lt;|&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>pushContext</span> <span class='hs-str'>"Normal"</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>currentContext</span><span class='hs-layout'>)</span>
<a name="line-36"></a>  <span class='hs-varid'>result</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>parseRules</span> <span class='hs-varid'>context</span>
<a name="line-37"></a>  <span class='hs-varid'>updateState</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span> <span class='hs-layout'>{</span> <span class='hs-varid'>synStLanguage</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>oldLang</span> <span class='hs-layout'>}</span>
<a name="line-38"></a>  <span class='hs-varid'>return</span> <span class='hs-varid'>result</span>
<a name="line-39"></a>
<a name="line-40"></a><a name="parseSource"></a><span class='hs-definition'>parseSource</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span> 
<a name="line-41"></a>  <span class='hs-varid'>lineContents</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>lookAhead</span> <span class='hs-varid'>wholeLine</span>
<a name="line-42"></a>  <span class='hs-varid'>updateState</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span> <span class='hs-layout'>{</span> <span class='hs-varid'>synStCurrentLine</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lineContents</span> <span class='hs-layout'>}</span>
<a name="line-43"></a>  <span class='hs-varid'>result</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>manyTill</span> <span class='hs-varid'>parseSourceLine</span> <span class='hs-varid'>eof</span>
<a name="line-44"></a>  <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>map</span> <span class='hs-varid'>normalizeHighlighting</span> <span class='hs-varid'>result</span>
<a name="line-45"></a>
<a name="line-46"></a><a name="startingState"></a><span class='hs-definition'>startingState</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>SyntaxState</span> <span class='hs-layout'>{</span><span class='hs-varid'>synStContexts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fromList</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-str'>"JavaScript"</span><span class='hs-layout'>,</span><span class='hs-keyglyph'>[</span><span class='hs-str'>"Normal"</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>,</span> <span class='hs-varid'>synStLanguage</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"JavaScript"</span><span class='hs-layout'>,</span> <span class='hs-varid'>synStCurrentLine</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>""</span><span class='hs-layout'>,</span> <span class='hs-varid'>synStCharsParsedInLine</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>0</span><span class='hs-layout'>,</span> <span class='hs-varid'>synStPrevChar</span> <span class='hs-keyglyph'>=</span> <span class='hs-chr'>'\n'</span><span class='hs-layout'>,</span> <span class='hs-varid'>synStCaseSensitive</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span><span class='hs-layout'>,</span> <span class='hs-varid'>synStKeywordCaseSensitive</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span><span class='hs-layout'>,</span> <span class='hs-varid'>synStCaptures</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span><span class='hs-layout'>}</span>
<a name="line-47"></a>
<a name="line-48"></a><a name="parseSourceLine"></a><span class='hs-definition'>parseSourceLine</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>manyTill</span> <span class='hs-varid'>parseExpressionInternal</span> <span class='hs-varid'>pEndLine</span>
<a name="line-49"></a>
<a name="line-50"></a><a name="pEndLine"></a><span class='hs-definition'>pEndLine</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-51"></a>  <span class='hs-varid'>lookAhead</span> <span class='hs-varop'>$</span> <span class='hs-varid'>newline</span> <span class='hs-varop'>&lt;|&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>eof</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>return</span> <span class='hs-chr'>'\n'</span><span class='hs-layout'>)</span>
<a name="line-52"></a>  <span class='hs-varid'>context</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>currentContext</span>
<a name="line-53"></a>  <span class='hs-keyword'>case</span> <span class='hs-varid'>context</span> <span class='hs-keyword'>of</span>
<a name="line-54"></a>    <span class='hs-str'>"Normal"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pHandleEndLine</span>
<a name="line-55"></a>    <span class='hs-str'>"String"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pEndLine</span>
<a name="line-56"></a>    <span class='hs-str'>"String 1"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pEndLine</span>
<a name="line-57"></a>    <span class='hs-str'>"Comment"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pEndLine</span>
<a name="line-58"></a>    <span class='hs-str'>"Multi/inline Comment"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pHandleEndLine</span>
<a name="line-59"></a>    <span class='hs-str'>"Regular Expression"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pHandleEndLine</span>
<a name="line-60"></a>    <span class='hs-str'>"(Internal regex catch)"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pHandleEndLine</span>
<a name="line-61"></a>    <span class='hs-str'>"Regular Expression Character Class"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pHandleEndLine</span>
<a name="line-62"></a>    <span class='hs-str'>"(regex caret first check)"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pEndLine</span>
<a name="line-63"></a>    <span class='hs-str'>"(charclass caret first check)"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pEndLine</span>
<a name="line-64"></a>    <span class='hs-str'>"region_marker"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pEndLine</span>
<a name="line-65"></a>    <span class='hs-str'>"ObjectMember"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>pHandleEndLine</span>
<a name="line-66"></a>    <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>pHandleEndLine</span>
<a name="line-67"></a>
<a name="line-68"></a><a name="withAttribute"></a><span class='hs-definition'>withAttribute</span> <span class='hs-varid'>attr</span> <span class='hs-varid'>txt</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-69"></a>  <span class='hs-varid'>when</span> <span class='hs-layout'>(</span><span class='hs-varid'>null</span> <span class='hs-varid'>txt</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fail</span> <span class='hs-str'>"Parser matched no text"</span>
<a name="line-70"></a>  <span class='hs-keyword'>let</span> <span class='hs-varid'>labs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>attr</span> <span class='hs-conop'>:</span> <span class='hs-varid'>maybeToList</span> <span class='hs-layout'>(</span><span class='hs-varid'>lookup</span> <span class='hs-varid'>attr</span> <span class='hs-varid'>styles</span><span class='hs-layout'>)</span>
<a name="line-71"></a>  <span class='hs-varid'>st</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getState</span>
<a name="line-72"></a>  <span class='hs-keyword'>let</span> <span class='hs-varid'>oldCharsParsed</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>synStCharsParsedInLine</span> <span class='hs-varid'>st</span>
<a name="line-73"></a>  <span class='hs-keyword'>let</span> <span class='hs-varid'>prevchar</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>null</span> <span class='hs-varid'>txt</span> <span class='hs-keyword'>then</span> <span class='hs-chr'>'\n'</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>last</span> <span class='hs-varid'>txt</span>
<a name="line-74"></a>  <span class='hs-varid'>updateState</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span> <span class='hs-layout'>{</span> <span class='hs-varid'>synStCharsParsedInLine</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>oldCharsParsed</span> <span class='hs-varop'>+</span> <span class='hs-varid'>length</span> <span class='hs-varid'>txt</span><span class='hs-layout'>,</span> <span class='hs-varid'>synStPrevChar</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>prevchar</span> <span class='hs-layout'>}</span> 
<a name="line-75"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>labs</span><span class='hs-layout'>,</span> <span class='hs-varid'>txt</span><span class='hs-layout'>)</span>
<a name="line-76"></a>
<a name="line-77"></a><a name="styles"></a><span class='hs-definition'>styles</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-str'>"Keyword"</span><span class='hs-layout'>,</span><span class='hs-str'>"kw"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Function"</span><span class='hs-layout'>,</span><span class='hs-str'>"fu"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Objects"</span><span class='hs-layout'>,</span><span class='hs-str'>"kw"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Object Member"</span><span class='hs-layout'>,</span><span class='hs-str'>"fu"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Math"</span><span class='hs-layout'>,</span><span class='hs-str'>"kw"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Events"</span><span class='hs-layout'>,</span><span class='hs-str'>"kw"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Decimal"</span><span class='hs-layout'>,</span><span class='hs-str'>"dv"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Float"</span><span class='hs-layout'>,</span><span class='hs-str'>"fl"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Char"</span><span class='hs-layout'>,</span><span class='hs-str'>"ch"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"String"</span><span class='hs-layout'>,</span><span class='hs-str'>"st"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"String Char"</span><span class='hs-layout'>,</span><span class='hs-str'>"ch"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Comment"</span><span class='hs-layout'>,</span><span class='hs-str'>"co"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Regular Expression"</span><span class='hs-layout'>,</span><span class='hs-str'>"ot"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Pattern Internal Operator"</span><span class='hs-layout'>,</span><span class='hs-str'>"fl"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Pattern Character Class"</span><span class='hs-layout'>,</span><span class='hs-str'>"bn"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Region Marker"</span><span class='hs-layout'>,</span><span class='hs-str'>"re"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"JSON"</span><span class='hs-layout'>,</span><span class='hs-str'>"dt"</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-78"></a>
<a name="line-79"></a><a name="parseExpressionInternal"></a><span class='hs-definition'>parseExpressionInternal</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-80"></a>  <span class='hs-varid'>context</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>currentContext</span>
<a name="line-81"></a>  <span class='hs-varid'>parseRules</span> <span class='hs-varid'>context</span> <span class='hs-varop'>&lt;|&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>pDefault</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromMaybe</span> <span class='hs-str'>""</span> <span class='hs-varop'>$</span> <span class='hs-varid'>lookup</span> <span class='hs-varid'>context</span> <span class='hs-varid'>defaultAttributes</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-82"></a>
<a name="line-83"></a><a name="list_keywords"></a><span class='hs-definition'>list_keywords</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'>$</span> <span class='hs-varid'>words</span> <span class='hs-varop'>$</span> <span class='hs-str'>"if else for in while do continue break with try catch finally switch case new var function return delete true false void throw typeof const default"</span>
<a name="line-84"></a><a name="list_functions"></a><span class='hs-definition'>list_functions</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'>$</span> <span class='hs-varid'>words</span> <span class='hs-varop'>$</span> <span class='hs-str'>"escape isFinite isNaN Number parseFloat parseInt reload taint unescape untaint write"</span>
<a name="line-85"></a><a name="list_objects"></a><span class='hs-definition'>list_objects</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'>$</span> <span class='hs-varid'>words</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Anchor Applet Area Array Boolean Button Checkbox Date document window Image FileUpload Form Frame Function Hidden Link MimeType Math Max Min Layer navigator Object Password Plugin Radio RegExp Reset Screen Select String Text Textarea this Window"</span>
<a name="line-86"></a><a name="list_math"></a><span class='hs-definition'>list_math</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'>$</span> <span class='hs-varid'>words</span> <span class='hs-varop'>$</span> <span class='hs-str'>"abs acos asin atan atan2 ceil cos ctg E exp floor LN2 LN10 log LOG2E LOG10E PI pow round sin sqrt SQRT1_2 SQRT2 tan"</span>
<a name="line-87"></a><a name="list_events"></a><span class='hs-definition'>list_events</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'>$</span> <span class='hs-varid'>words</span> <span class='hs-varop'>$</span> <span class='hs-str'>"onAbort onBlur onChange onClick onError onFocus onLoad onMouseOut onMouseOver onReset onSelect onSubmit onUnload"</span>
<a name="line-88"></a>
<a name="line-89"></a><a name="regex_'5cb'5b'5cw'5c'2e'5d'2b'5cb'5cs'2a'28'3f'3d'3a'29"></a><span class='hs-definition'>regex_'5cb'5b'5cw'5c'2e'5d'2b'5cb'5cs'2a'28'3f'3d'3a'29</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"\\b[\\w\\.]+\\b\\s*(?=:)"</span>
<a name="line-90"></a><a name="regex_'5cb'5b'5cw'5c'2e'5d'2b'28'3f'3d'5c'2e'29"></a><span class='hs-definition'>regex_'5cb'5b'5cw'5c'2e'5d'2b'28'3f'3d'5c'2e'29</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"\\b[\\w\\.]+(?=\\.)"</span>
<a name="line-91"></a><a name="regex_'5b'3d'3f'3a'5d"></a><span class='hs-definition'>regex_'5b'3d'3f'3a'5d</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"[=?:]"</span>
<a name="line-92"></a><a name="regex_'5c'28"></a><span class='hs-definition'>regex_'5c'28</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"\\("</span>
<a name="line-93"></a><a name="regex_'2f'5big'5d'7b0'2c2'7d"></a><span class='hs-definition'>regex_'2f'5big'5d'7b0'2c2'7d</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"/[ig]{0,2}"</span>
<a name="line-94"></a><a name="regex_'5c'7b'5b'5cd'2c_'5d'2b'5c'7d"></a><span class='hs-definition'>regex_'5c'7b'5b'5cd'2c_'5d'2b'5c'7d</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"\\{[\\d, ]+\\}"</span>
<a name="line-95"></a><a name="regex_'5c'5c'5bbB'5d"></a><span class='hs-definition'>regex_'5c'5c'5bbB'5d</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"\\\\[bB]"</span>
<a name="line-96"></a><a name="regex_'5c'5c'5bnrtvfDdSsWw'5d"></a><span class='hs-definition'>regex_'5c'5c'5bnrtvfDdSsWw'5d</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"\\\\[nrtvfDdSsWw]"</span>
<a name="line-97"></a><a name="regex_'5c'5c'2e"></a><span class='hs-definition'>regex_'5c'5c'2e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"\\\\."</span>
<a name="line-98"></a><a name="regex_'5c'24'28'3f'3d'2f'29"></a><span class='hs-definition'>regex_'5c'24'28'3f'3d'2f'29</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"\\$(?=/)"</span>
<a name="line-99"></a><a name="regex_'2f'2f'28'3f'3d'3b'29"></a><span class='hs-definition'>regex_'2f'2f'28'3f'3d'3b'29</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"//(?=;)"</span>
<a name="line-100"></a><a name="regex_'5c'5c'5b'5c'5b'5c'5d'5d"></a><span class='hs-definition'>regex_'5c'5c'5b'5c'5b'5c'5d'5d</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>compileRegex</span> <span class='hs-str'>"\\\\[\\[\\]]"</span>
<a name="line-101"></a>
<a name="line-102"></a><a name="defaultAttributes"></a><span class='hs-definition'>defaultAttributes</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-str'>"Normal"</span><span class='hs-layout'>,</span><span class='hs-str'>"Normal Text"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"String"</span><span class='hs-layout'>,</span><span class='hs-str'>"String"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"String 1"</span><span class='hs-layout'>,</span><span class='hs-str'>"String Char"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Comment"</span><span class='hs-layout'>,</span><span class='hs-str'>"Comment"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Multi/inline Comment"</span><span class='hs-layout'>,</span><span class='hs-str'>"Comment"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Regular Expression"</span><span class='hs-layout'>,</span><span class='hs-str'>"Regular Expression"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"(Internal regex catch)"</span><span class='hs-layout'>,</span><span class='hs-str'>"Normal Text"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Regular Expression Character Class"</span><span class='hs-layout'>,</span><span class='hs-str'>"Pattern Character Class"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"(regex caret first check)"</span><span class='hs-layout'>,</span><span class='hs-str'>"Pattern Internal Operator"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"(charclass caret first check)"</span><span class='hs-layout'>,</span><span class='hs-str'>"Pattern Internal Operator"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"region_marker"</span><span class='hs-layout'>,</span><span class='hs-str'>"Region Marker"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"ObjectMember"</span><span class='hs-layout'>,</span><span class='hs-str'>"Normal Text"</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-103"></a>
<a name="line-104"></a><a name="parseRules"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"Normal"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-105"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectSpaces</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Normal Text"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-106"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-107"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pString</span> <span class='hs-conid'>False</span> <span class='hs-str'>"//BEGIN"</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Region Marker"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"region_marker"</span><span class='hs-layout'>)</span>
<a name="line-108"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-109"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pString</span> <span class='hs-conid'>False</span> <span class='hs-str'>"//END"</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Region Marker"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"region_marker"</span><span class='hs-layout'>)</span>
<a name="line-110"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-111"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pFloat</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Float"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-112"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-113"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pInt</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Decimal"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-114"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-115"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'5cb'5b'5cw'5c'2e'5d'2b'5cb'5cs'2a'28'3f'3d'3a'29</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"JSON"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-116"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-117"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pKeyword</span> <span class='hs-str'>" \n\t.():!+,-&lt;=&gt;%&amp;*/;?[]^{|}~\\"</span> <span class='hs-varid'>list_keywords</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Keyword"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-118"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-119"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pKeyword</span> <span class='hs-str'>" \n\t.():!+,-&lt;=&gt;%&amp;*/;?[]^{|}~\\"</span> <span class='hs-varid'>list_functions</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Function"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-120"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-121"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pKeyword</span> <span class='hs-str'>" \n\t.():!+,-&lt;=&gt;%&amp;*/;?[]^{|}~\\"</span> <span class='hs-varid'>list_objects</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Objects"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-122"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-123"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pKeyword</span> <span class='hs-str'>" \n\t.():!+,-&lt;=&gt;%&amp;*/;?[]^{|}~\\"</span> <span class='hs-varid'>list_math</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Math"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-124"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-125"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pKeyword</span> <span class='hs-str'>" \n\t.():!+,-&lt;=&gt;%&amp;*/;?[]^{|}~\\"</span> <span class='hs-varid'>list_events</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Events"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-126"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-127"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'.'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Normal Text"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"ObjectMember"</span><span class='hs-layout'>)</span>
<a name="line-128"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-129"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'5cb'5b'5cw'5c'2e'5d'2b'28'3f'3d'5c'2e'29</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Objects"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"ObjectMember"</span><span class='hs-layout'>)</span>
<a name="line-130"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-131"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectIdentifier</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Normal Text"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-132"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-133"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'"'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"String"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"String"</span><span class='hs-layout'>)</span>
<a name="line-134"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-135"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'\''</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"String Char"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"String 1"</span><span class='hs-layout'>)</span>
<a name="line-136"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-137"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetect2Chars</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'/'</span> <span class='hs-chr'>'/'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Comment"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"Comment"</span><span class='hs-layout'>)</span>
<a name="line-138"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-139"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetect2Chars</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'/'</span> <span class='hs-chr'>'*'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Comment"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"Multi/inline Comment"</span><span class='hs-layout'>)</span>
<a name="line-140"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-141"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'5b'3d'3f'3a'5d</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Normal Text"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"(Internal regex catch)"</span><span class='hs-layout'>)</span>
<a name="line-142"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-143"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'5c'28</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Normal Text"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"(Internal regex catch)"</span><span class='hs-layout'>)</span>
<a name="line-144"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-145"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'{'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Symbol"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-146"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-147"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'}'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Symbol"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-148"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-149"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pAnyChar</span> <span class='hs-str'>":!%&amp;+,-/.*&lt;=&gt;?[]|~^;"</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Symbol"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-150"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-151"></a>
<a name="line-152"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"String"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-153"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectIdentifier</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"String"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-154"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-155"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pHlCStringChar</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"String Char"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-156"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-157"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pLineContinue</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"String"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-158"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-159"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'"'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"String"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-160"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-161"></a>
<a name="line-162"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"String 1"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-163"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectIdentifier</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"String Char"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-164"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-165"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pHlCStringChar</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"String Char"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-166"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-167"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pLineContinue</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"String"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-168"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-169"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'\''</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"String Char"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-170"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-171"></a>
<a name="line-172"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"Comment"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-173"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectSpaces</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Comment"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-174"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-175"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Highlighting</span><span class='hs-varop'>.</span><span class='hs-conid'>Kate</span><span class='hs-varop'>.</span><span class='hs-conid'>Syntax</span><span class='hs-varop'>.</span><span class='hs-conid'>Alert</span><span class='hs-varop'>.</span><span class='hs-varid'>parseExpression</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-176"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-177"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectIdentifier</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Comment"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-178"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-179"></a>
<a name="line-180"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"Multi/inline Comment"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-181"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Highlighting</span><span class='hs-varop'>.</span><span class='hs-conid'>Kate</span><span class='hs-varop'>.</span><span class='hs-conid'>Syntax</span><span class='hs-varop'>.</span><span class='hs-conid'>Alert</span><span class='hs-varop'>.</span><span class='hs-varid'>parseExpression</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-182"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-183"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetect2Chars</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'*'</span> <span class='hs-chr'>'/'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Comment"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-184"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-185"></a>
<a name="line-186"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"Regular Expression"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-187"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'2f'5big'5d'7b0'2c2'7d</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Regular Expression"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>popContext</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>popContext</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-188"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-189"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'5c'7b'5b'5cd'2c_'5d'2b'5c'7d</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Internal Operator"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-190"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-191"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'5c'5c'5bbB'5d</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Internal Operator"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-192"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-193"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'5c'5c'5bnrtvfDdSsWw'5d</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Character Class"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-194"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-195"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'['</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Character Class"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"(charclass caret first check)"</span><span class='hs-layout'>)</span>
<a name="line-196"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-197"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'5c'5c'2e</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Internal Operator"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-198"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-199"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'5c'24'28'3f'3d'2f'29</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Internal Operator"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-200"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-201"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pAnyChar</span> <span class='hs-str'>"?+*()|"</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Internal Operator"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-202"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-203"></a>
<a name="line-204"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"(Internal regex catch)"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-205"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectSpaces</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Normal Text"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-206"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-207"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'2f'2f'28'3f'3d'3b'29</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Regular Expression"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-208"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-209"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetect2Chars</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'/'</span> <span class='hs-chr'>'/'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Comment"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"Comment"</span><span class='hs-layout'>)</span>
<a name="line-210"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-211"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetect2Chars</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'/'</span> <span class='hs-chr'>'*'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Comment"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"Multi/inline Comment"</span><span class='hs-layout'>)</span>
<a name="line-212"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-213"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'/'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Regular Expression"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"(regex caret first check)"</span><span class='hs-layout'>)</span>
<a name="line-214"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-215"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>[]</span><span class='hs-layout'>,</span> <span class='hs-str'>""</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-216"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-217"></a>
<a name="line-218"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"Regular Expression Character Class"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-219"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'5c'5c'5b'5c'5b'5c'5d'5d</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Character Class"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-220"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-221"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pRegExpr</span> <span class='hs-varid'>regex_'5c'5c'2e</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Internal Operator"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-222"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-223"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>']'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Character Class"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>popContext</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-224"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-225"></a>
<a name="line-226"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"(regex caret first check)"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-227"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'^'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Internal Operator"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"Regular Expression"</span><span class='hs-layout'>)</span>
<a name="line-228"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-229"></a>                        <span class='hs-layout'>(</span><span class='hs-varid'>pushContext</span> <span class='hs-str'>"Regular Expression"</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>[]</span><span class='hs-layout'>,</span> <span class='hs-str'>""</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-230"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-231"></a>
<a name="line-232"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"(charclass caret first check)"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-233"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'^'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Pattern Internal Operator"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"Regular Expression Character Class"</span><span class='hs-layout'>)</span>
<a name="line-234"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-235"></a>                        <span class='hs-layout'>(</span><span class='hs-varid'>pushContext</span> <span class='hs-str'>"Regular Expression Character Class"</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>[]</span><span class='hs-layout'>,</span> <span class='hs-str'>""</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-236"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-237"></a>
<a name="line-238"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"region_marker"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-239"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectIdentifier</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Region Marker"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-240"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-241"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectSpaces</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Region Marker"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-242"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-243"></a>
<a name="line-244"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"ObjectMember"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-245"></a>  <span class='hs-keyword'>do</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectChar</span> <span class='hs-conid'>False</span> <span class='hs-chr'>'.'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Normal Text"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-246"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-247"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectIdentifier</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Object Member"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-248"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-249"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>pDetectSpaces</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Normal Text"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-250"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-251"></a>                        <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>lookAhead</span> <span class='hs-layout'>(</span><span class='hs-varid'>pAnyChar</span> <span class='hs-str'>"(){}:!%&amp;+,-/.*&lt;=&gt;?[]|~^;"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>[]</span><span class='hs-layout'>,</span><span class='hs-str'>""</span><span class='hs-layout'>)</span> <span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-layout'>(</span><span class='hs-varid'>popContext</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-252"></a>     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>attr</span><span class='hs-layout'>,</span> <span class='hs-varid'>result</span><span class='hs-layout'>)</span>
<a name="line-253"></a>
<a name="line-254"></a><span class='hs-definition'>parseRules</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fail</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Unknown context"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>x</span>
</pre></body>
</html>