Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > c8ca5ed2186d6838eb8781ac723b0f06 > files > 640

ghc-highlighting-kate-devel-0.2.9-2.fc15.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/Modula2.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 modula-2.xml, version 1.03,
<a name="line-2"></a>   by   -}</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'>Modula2</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-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-8"></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-9"></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-10"></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-11"></a>
<a name="line-12"></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-13"></a><a name="syntaxName"></a><span class='hs-comment'>-- | Full name of language.</span>
<a name="line-14"></a><span class='hs-definition'>syntaxName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span>
<a name="line-15"></a><span class='hs-definition'>syntaxName</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Modula-2"</span>
<a name="line-16"></a>
<a name="line-17"></a><a name="syntaxExtensions"></a><span class='hs-comment'>-- | Filename extensions for this language.</span>
<a name="line-18"></a><span class='hs-definition'>syntaxExtensions</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span>
<a name="line-19"></a><span class='hs-definition'>syntaxExtensions</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"*.mod;*.def;*.mi;*.md"</span>
<a name="line-20"></a>
<a name="line-21"></a><a name="highlight"></a><span class='hs-comment'>-- | Highlight source code using this syntax definition.</span>
<a name="line-22"></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-23"></a><span class='hs-definition'>highlight</span> <span class='hs-varid'>input</span> <span class='hs-keyglyph'>=</span>
<a name="line-24"></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-25"></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-26"></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-27"></a>
<a name="line-28"></a><a name="parseExpression"></a><span class='hs-comment'>-- | Parse an expression using appropriate local context.</span>
<a name="line-29"></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-30"></a><span class='hs-definition'>parseExpression</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-31"></a>  <span class='hs-varid'>st</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getState</span>
<a name="line-32"></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-33"></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'>"Modula-2"</span> <span class='hs-layout'>}</span>
<a name="line-34"></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-35"></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-36"></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-37"></a>  <span class='hs-varid'>return</span> <span class='hs-varid'>result</span>
<a name="line-38"></a>
<a name="line-39"></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-40"></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-41"></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-42"></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-43"></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-44"></a>
<a name="line-45"></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'>"Modula-2"</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'>"Modula-2"</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-46"></a>
<a name="line-47"></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-48"></a>
<a name="line-49"></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-50"></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-51"></a>  <span class='hs-varid'>context</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>currentContext</span>
<a name="line-52"></a>  <span class='hs-keyword'>case</span> <span class='hs-varid'>context</span> <span class='hs-keyword'>of</span>
<a name="line-53"></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-54"></a>    <span class='hs-str'>"String1"</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-55"></a>    <span class='hs-str'>"String2"</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'>"Comment2"</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-57"></a>    <span class='hs-str'>"Comment3"</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'>"Prep1"</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-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>pHandleEndLine</span>
<a name="line-60"></a>
<a name="line-61"></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-62"></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-63"></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-64"></a>  <span class='hs-varid'>st</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getState</span>
<a name="line-65"></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-66"></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-67"></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-68"></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-69"></a>
<a name="line-70"></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'>"Type"</span><span class='hs-layout'>,</span><span class='hs-str'>"dt"</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-layout'>(</span><span class='hs-str'>"Number"</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'>"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'>"Directive"</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'>"Comment"</span><span class='hs-layout'>,</span><span class='hs-str'>"co"</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-71"></a>
<a name="line-72"></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-73"></a>  <span class='hs-varid'>context</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>currentContext</span>
<a name="line-74"></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-75"></a>
<a name="line-76"></a><a name="list_directives"></a><span class='hs-definition'>list_directives</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'>"ASSEMBLER ALLOCATE DEALLOCATE SIZE Write WriteString WriteCard WriteLn WriteBf WriteInt WriteReal WriteLongReal Read ReadString ReadCard ReadInt ReadReal ReadLongReal Open Close OpenInput OpenOutput Accessible Erase EOF Done EmptyString Assign Append Length StrEq Copy Concat pos Delete Insert compare CAPS PutBf GetArgs GetEnv ResetClock UserTime SystemTime GetChar GetInt GetCard GetString GetReal GetLongReal PutChar PutInt PutCard PutString PutReal PutLongReal PutLn"</span>
<a name="line-77"></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'>"AND ARRAY ASM BEGIN CASE CONST DIV DO ELSE ELSIF END FOR IF IMPLEMENTATION IN SET INCL EXCL ABS BITSET CAP CHR DEC HALT HIGH INC MAX MIN ODD ORD PROC TRUNC VAL MOD NIL NOT OF OR PROCEDURE MODULE DEFINITION RECORD REPEAT THEN TO TYPE UNTIL LOOP VAR WHILE WITH EXIT FALSE TRUE BY FROM IMPORT EXPORT QUALIFIED RETURN NEWPROCESS TRANSFER IOTRANSFER FOREIGN"</span>
<a name="line-78"></a><a name="list_types"></a><span class='hs-definition'>list_types</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'>"INTEGER CARDINAL SHORTINT SHORTCARD LONGINT LONGREAL CHAR BOOLEAN POINTER ADDRESS ADR REAL File"</span>
<a name="line-79"></a>
<a name="line-80"></a>
<a name="line-81"></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'>"String1"</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'>"String2"</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'>"Comment2"</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'>"Comment3"</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'>"Prep1"</span><span class='hs-layout'>,</span><span class='hs-str'>"Directive"</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-82"></a>
<a name="line-83"></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-84"></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'>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-85"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-86"></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_directives</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Directive"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-87"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-88"></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_types</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Type"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-89"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-90"></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'>"Number"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-91"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-92"></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'>"Number"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-93"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-94"></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'>"String1"</span><span class='hs-layout'>)</span>
<a name="line-95"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-96"></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'>"String2"</span><span class='hs-layout'>)</span>
<a name="line-97"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-98"></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'>"(*$"</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Directive"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"Prep1"</span><span class='hs-layout'>)</span>
<a name="line-99"></a>                        <span class='hs-varop'>&lt;|&gt;</span>
<a name="line-100"></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'>"Comment2"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-101"></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-102"></a>
<a name="line-103"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"String1"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-104"></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-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>
<a name="line-105"></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-106"></a>
<a name="line-107"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"String2"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-108"></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-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>
<a name="line-109"></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-110"></a>
<a name="line-111"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"Comment2"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-112"></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-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>
<a name="line-113"></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-114"></a>
<a name="line-115"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"Comment3"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-116"></a>  <span class='hs-varid'>pzero</span>
<a name="line-117"></a>
<a name="line-118"></a><span class='hs-definition'>parseRules</span> <span class='hs-str'>"Prep1"</span> <span class='hs-keyglyph'>=</span> 
<a name="line-119"></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-varid'>pString</span> <span class='hs-conid'>False</span> <span class='hs-str'>"$*)"</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>withAttribute</span> <span class='hs-str'>"Directive"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;~</span> <span class='hs-varid'>pushContext</span> <span class='hs-str'>"Prep1"</span><span class='hs-layout'>)</span>
<a name="line-120"></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-121"></a>
<a name="line-122"></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>