summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattMorrow <>2008-06-25 05:49:26 (GMT)
committerLuite Stegeman <luite@luite.com>2008-06-25 05:49:26 (GMT)
commit1572e792f6d612767bb036407d5261e2f2374ba8 (patch)
tree20be29cd7b48d45cdc137e797bf1ad88ac7cea85
version 0.10.1
-rw-r--r--EXAMPLES35
-rw-r--r--LICENSE26
-rw-r--r--QQ.html144
-rw-r--r--README14
-rw-r--r--README.ghc-6.813
-rw-r--r--Setup.lhs4
-rw-r--r--Text/Regex/PCRE/QQ.hs140
-rw-r--r--docs/Text-Regex-PCRE-QQ.html235
-rw-r--r--docs/doc-index.html2122
-rw-r--r--docs/haddock-util.js133
-rw-r--r--docs/haddock.css267
-rw-r--r--docs/haskell_icon.gifbin0 -> 911 bytes
-rw-r--r--docs/index.html131
-rw-r--r--docs/minus.gifbin0 -> 56 bytes
-rw-r--r--docs/plus.gifbin0 -> 59 bytes
-rw-r--r--docs/regexqq.haddockbin0 -> 14636 bytes
-rw-r--r--regexqq.cabal28
17 files changed, 3292 insertions, 0 deletions
diff --git a/EXAMPLES b/EXAMPLES
new file mode 100644
index 0000000..4f89800
--- /dev/null
+++ b/EXAMPLES
@@ -0,0 +1,35 @@
+regexqq - EXAMPLES
+----------------------------------------------------------------------------------------
+
+-- Here is a pasteable-into-ghci version of the below:
+
+:m + Text.Regex.PCRE.QQ
+[$rx|([aeiou]).*(er|ing|tion)([\.,!\?]*)$|] "helloing.!?!?!"
+[$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+tail `fmap` [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+return . tail =<< [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+maybe [] tail $ [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+maybe [] tail $ [$rx|^([+-])?([0-9]+)\.([0-9]+)(.*)$|] (show (negate pi) ++ "asdx")
+
+----------------------------------------------------------------------------------------
+
+ghci> :m + Text.Regex.PCRE.QQ
+
+ghci> [$rx|([aeiou]).*(er|ing|tion)([\.,!\?]*)$|] "helloing.!?!?!"
+Just ["elloing.!?!?!","e","ing",".!?!?!"]
+
+ghci> [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+Just ["-3.141592653589793","-","3","141592653589793"]
+
+ghci> tail `fmap` [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+Just ["-","3","141592653589793"]
+ghci> return . tail =<< [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+Just ["-","3","141592653589793"]
+
+ghci> maybe [] tail $ [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+["-","3","141592653589793"]
+
+ghci> maybe [] tail $ [$rx|^([+-])?([0-9]+)\.([0-9]+)(.*)$|] (show (negate pi) ++ "asdx")
+["-","3","141592653589793","asdx"]
+
+----------------------------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..73ad910
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,26 @@
+Copyright (c) Matt Morrow.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. The names of the author may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/QQ.html b/QQ.html
new file mode 100644
index 0000000..9706020
--- /dev/null
+++ b/QQ.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<pre><font color=Blue>{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}</font>
+
+<font color=Blue>{-|
+ Module : Text.Regex.PCRE.QQ
+ Copyright : (c) Matt Morrow 2008
+ License : BSD3
+
+ Maintainer : mjm2002@gmail.com
+ Stability : unstable
+ Portability : non-portable (GHC QuasiQuotes)
+
+ A quasiquoter for Text.Regex.PCRE regexes.
+ This makes use of a new GHC extension known as QuasiQuotes.
+ See the README for the temporary location of the docs for
+ Language.Haskell.TH.Quote. See the EXAMPLES file for examples.
+
+ &gt; ghci&gt; [$rx|([aeiou]).*(er|ing|tion)([\.,\?]*)$|] "helloing.!?!?!"
+ &gt; Just ["elloing.!?!?!","e","ing",".!?!?!"]
+-}</font>
+
+<font color=Green><u>module</u></font> Text<font color=Cyan>.</font>Regex<font color=Cyan>.</font>PCRE<font color=Cyan>.</font>QQ <font color=Cyan>(</font>
+ rx <font color=Blue>-- the regex QuasiQuoter</font>
+ <font color=Cyan>,</font> regexToExpQ <font color=Blue>-- String -&gt; ExpQ</font>
+ <font color=Cyan>,</font> regexToPatQ <font color=Blue>-- String -&gt; PatQ</font>
+
+ <font color=Blue>-- should these be being exported here??</font>
+ <font color=Cyan>,</font> <font color=Green><u>module</u></font> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>TH<font color=Cyan>.</font>Quote
+ <font color=Cyan>,</font> <font color=Green><u>module</u></font> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>TH<font color=Cyan>.</font>Syntax
+ <font color=Cyan>,</font> <font color=Green><u>module</u></font> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>TH<font color=Cyan>.</font>Lib
+ <font color=Cyan>,</font> <font color=Green><u>module</u></font> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>TH<font color=Cyan>.</font>Ppr
+<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+
+<font color=Green><u>import</u></font> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>TH<font color=Cyan>.</font>Quote
+<font color=Green><u>import</u></font> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>TH<font color=Cyan>.</font>Syntax
+<font color=Green><u>import</u></font> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>TH<font color=Cyan>.</font>Lib
+ hiding <font color=Cyan>(</font>match<font color=Cyan>)</font>
+<font color=Green><u>import</u></font> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>TH<font color=Cyan>.</font>Ppr
+<font color=Green><u>import</u></font> Text<font color=Cyan>.</font>Regex<font color=Cyan>.</font>PCRE<font color=Cyan>.</font>Light
+ <font color=Cyan>(</font>Regex<font color=Cyan>,</font>PCREOption<font color=Cyan>,</font>PCREExecOption<font color=Cyan>)</font>
+<font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font>
+ Text<font color=Cyan>.</font>Regex<font color=Cyan>.</font>PCRE<font color=Cyan>.</font>Light <font color=Green><u>as</u></font> PCRE
+<font color=Green><u>import</u></font> Data<font color=Cyan>.</font>ByteString <font color=Cyan>(</font>ByteString<font color=Cyan>)</font>
+<font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>ByteString <font color=Green><u>as</u></font> B
+<font color=Green><u>import</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Internal <font color=Cyan>(</font>c2w<font color=Cyan>,</font>w2c<font color=Cyan>)</font>
+
+<font color=Blue>-----------------------------------------------------------------------------</font>
+
+<font color=Blue>{- data QuasiQuoter
+ = QuasiQuoter { quoteExp :: String -&gt; Q Exp,
+ quotePat :: String -&gt; Q Pat}
+ -- Defined in Language.Haskell.TH.Quote -}</font>
+
+<font color=Blue>{- |
+&gt; ghci&gt; maybe [] tail $ [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+&gt; ["-","3","141592653589793"]
+-}</font>
+<font color=Blue>rx</font> <font color=Red>::</font> QuasiQuoter
+<font color=Blue>rx</font> <font color=Red>=</font> QuasiQuoter
+ regexToExpQ
+ regexToPatQ
+
+<font color=Blue>-- | Transform a string rep</font>
+<font color=Blue>-- of a regex to an ExpQ. The</font>
+<font color=Blue>-- resulting ExpQ, when spliced,</font>
+<font color=Blue>-- results in a function of type</font>
+<font color=Blue>-- @String -&gt; Maybe [String]@,</font>
+<font color=Blue>-- where the input is the String</font>
+<font color=Blue>-- to match on. The result is</font>
+<font color=Blue>-- Nothing on error, and Just</font>
+<font color=Blue>-- a list of results on success.</font>
+<font color=Blue>-- Note: I'm packing\/unpacking\/...</font>
+<font color=Blue>-- the ByteString unnecessarily</font>
+<font color=Blue>-- for convenience in testing</font>
+<font color=Blue>-- out the first go at this.</font>
+<font color=Blue>-- This will be dealt with in</font>
+<font color=Blue>-- the future.</font>
+<font color=Blue>regexToExpQ</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> ExpQ
+<font color=Blue>regexToExpQ</font> s <font color=Red>=</font> <font color=Green><u>case</u></font> PCRE<font color=Cyan>.</font>compileM <font color=Cyan>(</font>pack s<font color=Cyan>)</font> pcreOpts <font color=Green><u>of</u></font>
+ Left err <font color=Red>-&gt;</font> error err
+ <font color=Blue>-- Give an error at compile time</font>
+ <font color=Blue>-- if the regex string is invalid</font>
+ Right <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Red>|</font>
+ <font color=Cyan>(</font>return <font color=Cyan>.</font> fmap unpack <font color=Cyan>=&lt;&lt;</font><font color=Cyan>)</font>
+ <font color=Cyan>.</font> match <font color=Cyan>(</font>regex s<font color=Cyan>)</font> <font color=Cyan>.</font> pack
+ <font color=Red>|</font><font color=Red>]</font>
+
+<font color=Blue>-- | Transform a string (presumably)</font>
+<font color=Blue>-- containing a regex to a PatQ.</font>
+<font color=Blue>-- NOTE: Given a regex, a pattern</font>
+<font color=Blue>-- is constructed which matches</font>
+<font color=Blue>-- a literal string containing</font>
+<font color=Blue>-- the verbatim regex. It does</font>
+<font color=Blue>-- this because I couldn't think</font>
+<font color=Blue>-- of anything better for it to</font>
+<font color=Blue>-- do off the cuff. This needs</font>
+<font color=Blue>-- thought.</font>
+<font color=Blue>regexToPatQ</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> PatQ
+<font color=Blue>regexToPatQ</font> <font color=Red>=</font>
+ litP <font color=Cyan>.</font> stringL
+ <font color=Cyan>.</font> dropWhile <font color=Cyan>(</font><font color=Cyan>/=</font><font color=Magenta>'"'</font><font color=Cyan>)</font>
+ <font color=Cyan>.</font> show <font color=Cyan>.</font> regex
+
+<font color=Blue>-- | Regex compilation. Temporarily uses</font>
+<font color=Blue>-- hardcoded options @extended@ and</font>
+<font color=Blue>-- @multiline@.</font>
+<font color=Blue>regex</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> Regex
+<font color=Blue>regex</font> <font color=Red>=</font> flip PCRE<font color=Cyan>.</font>compile pcreOpts <font color=Cyan>.</font> pack
+
+<font color=Blue>-- | Regex matching.</font>
+<font color=Blue>match</font> <font color=Red>::</font> Regex <font color=Red>-&gt;</font> B<font color=Cyan>.</font>ByteString <font color=Red>-&gt;</font> Maybe <font color=Red>[</font>B<font color=Cyan>.</font>ByteString<font color=Red>]</font>
+<font color=Blue>match</font> rx <font color=Red>=</font> flip <font color=Cyan>(</font>PCRE<font color=Cyan>.</font>match rx<font color=Cyan>)</font> pcreExecOpts
+
+<font color=Blue>-- | Adjust these to your tastes. An</font>
+<font color=Blue>-- interface to options seems to be</font>
+<font color=Blue>-- the next logical (and practical)</font>
+<font color=Blue>-- step.</font>
+<font color=Blue>pcreOpts</font> <font color=Red>::</font> <font color=Red>[</font>PCREOption<font color=Red>]</font>
+<font color=Blue>pcreOpts</font> <font color=Red>=</font>
+ <font color=Red>[</font> PCRE<font color=Cyan>.</font>extended
+ <font color=Cyan>,</font> PCRE<font color=Cyan>.</font>multiline <font color=Red>]</font>
+ <font color=Blue>-- , dotall, caseless, utf8</font>
+ <font color=Blue>-- , newline_any, PCRE.newline_crlf ]</font>
+
+<font color=Blue>-- | Adjust these to your tastes. An</font>
+<font color=Blue>-- interface to options seems to be</font>
+<font color=Blue>-- the next logical (and practical)</font>
+<font color=Blue>-- step.</font>
+<font color=Blue>pcreExecOpts</font> <font color=Red>::</font> <font color=Red>[</font>PCREExecOption<font color=Red>]</font>
+<font color=Blue>pcreExecOpts</font> <font color=Red>=</font> []
+ <font color=Blue>-- [ PCRE.exec_newline_crlf</font>
+ <font color=Blue>-- , exec_newline_any, PCRE.exec_notempty</font>
+ <font color=Blue>-- , PCRE.exec_notbol, PCRE.exec_noteol ]</font>
+
+<font color=Blue>pack</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> ByteString
+<font color=Blue>pack</font> <font color=Red>=</font> B<font color=Cyan>.</font>pack <font color=Cyan>.</font> fmap c2w
+
+<font color=Blue>unpack</font> <font color=Red>::</font> ByteString <font color=Red>-&gt;</font> String
+<font color=Blue>unpack</font> <font color=Red>=</font> fmap w2c <font color=Cyan>.</font> B<font color=Cyan>.</font>unpack
+
+<font color=Blue>-----------------------------------------------------------------------------</font>
+</pre>
+</html> \ No newline at end of file
diff --git a/README b/README
new file mode 100644
index 0000000..82cee6a
--- /dev/null
+++ b/README
@@ -0,0 +1,14 @@
+regexqq - Matt Morrow, 2008.
+
+The current (as of 080623) location of the
+current template-haskell docs are temporarily
+(until they're located in the standard place)
+available at:
+
+http://code.haskell.org/~morrow/code/haskell/misc/template-haskell-HEAD_080623/
+
+An example:
+
+ghci> :m + Text.Regex.PCRE.QQ
+ghci> [$rx|([aeiou]).*(er|ing|tion)([\.,!\?]*)$|] "helloing.!?!?!"
+Just ["elloing.!?!?!","e","ing",".!?!?!"]
diff --git a/README.ghc-6.8 b/README.ghc-6.8
new file mode 100644
index 0000000..cf093eb
--- /dev/null
+++ b/README.ghc-6.8
@@ -0,0 +1,13 @@
+ghc-6.8.* doesn't yet support QuasiQuotes.
+
+BUT, there is a patched ghc-6.8.3 that *does*
+support QuasiQuotes at:
+
+http://code.haskell.org/~morrow/quasiquotes/ghc-6.8.3_QQ-0.1.tar.bz2
+
+NOTE:
+ ghc-6.8.3_QQ-0.1.tar.bz2 *already*
+ has the extralibs included.
+
+If you are unwilling/unable to use ghc-6.9, then building
+ghc-6.8.3_QQ-0.1 is the only option.
diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
index 0000000..fa82b83
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,4 @@
+> import Distribution.Simple
+> main :: IO ()
+> main = defaultMain
+
diff --git a/Text/Regex/PCRE/QQ.hs b/Text/Regex/PCRE/QQ.hs
new file mode 100644
index 0000000..72996e8
--- /dev/null
+++ b/Text/Regex/PCRE/QQ.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
+
+{-|
+ Module : Text.Regex.PCRE.QQ
+ Copyright : (c) Matt Morrow 2008
+ License : BSD3
+
+ Maintainer : mjm2002@gmail.com
+ Stability : unstable
+ Portability : non-portable (GHC QuasiQuotes)
+
+ A quasiquoter for Text.Regex.PCRE regexes.
+ This makes use of a new GHC extension known as QuasiQuotes.
+ See the README for the temporary location of the docs for
+ Language.Haskell.TH.Quote. See the EXAMPLES file for examples.
+
+ > ghci> [$rx|([aeiou]).*(er|ing|tion)([\.,\?]*)$|] "helloing.!?!?!"
+ > Just ["elloing.!?!?!","e","ing",".!?!?!"]
+-}
+
+module Text.Regex.PCRE.QQ (
+ rx -- the regex QuasiQuoter
+ , regexToExpQ -- String -> ExpQ
+ , regexToPatQ -- String -> PatQ
+
+ -- should these be being exported here??
+ , module Language.Haskell.TH.Quote
+ , module Language.Haskell.TH.Syntax
+ , module Language.Haskell.TH.Lib
+ , module Language.Haskell.TH.Ppr
+) where
+
+import Language.Haskell.TH.Quote
+import Language.Haskell.TH.Syntax
+import Language.Haskell.TH.Lib
+ hiding (match)
+import Language.Haskell.TH.Ppr
+import Text.Regex.PCRE.Light
+ (Regex,PCREOption,PCREExecOption)
+import qualified
+ Text.Regex.PCRE.Light as PCRE
+import Data.ByteString (ByteString)
+import qualified Data.ByteString as B
+import Data.ByteString.Internal (c2w,w2c)
+
+-----------------------------------------------------------------------------
+
+{- data QuasiQuoter
+ = QuasiQuoter { quoteExp :: String -> Q Exp,
+ quotePat :: String -> Q Pat}
+ -- Defined in Language.Haskell.TH.Quote -}
+
+{- |
+> ghci> maybe [] tail $ [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+> ["-","3","141592653589793"]
+-}
+rx :: QuasiQuoter
+rx = QuasiQuoter
+ regexToExpQ
+ regexToPatQ
+
+-- | Transform a string rep
+-- of a regex to an ExpQ. The
+-- resulting ExpQ, when spliced,
+-- results in a function of type
+-- @String -> Maybe [String]@,
+-- where the input is the String
+-- to match on. The result is
+-- Nothing on error, and Just
+-- a list of results on success.
+-- Note: I'm packing\/unpacking\/...
+-- the ByteString unnecessarily
+-- for convenience in testing
+-- out the first go at this.
+-- This will be dealt with in
+-- the future.
+regexToExpQ :: String -> ExpQ
+regexToExpQ s = case PCRE.compileM (pack s) pcreOpts of
+ Left err -> error err
+ -- Give an error at compile time
+ -- if the regex string is invalid
+ Right _ -> [|
+ (return . fmap unpack =<<)
+ . match (regex s) . pack
+ |]
+
+-- | Transform a string (presumably)
+-- containing a regex to a PatQ.
+-- NOTE: Given a regex, a pattern
+-- is constructed which matches
+-- a literal string containing
+-- the verbatim regex. It does
+-- this because I couldn't think
+-- of anything better for it to
+-- do off the cuff. This needs
+-- thought.
+regexToPatQ :: String -> PatQ
+regexToPatQ =
+ litP . stringL
+ . dropWhile (/='"')
+ . show . regex
+
+-- | Regex compilation. Temporarily uses
+-- hardcoded options @extended@ and
+-- @multiline@.
+regex :: String -> Regex
+regex = flip PCRE.compile pcreOpts . pack
+
+-- | Regex matching.
+match :: Regex -> B.ByteString -> Maybe [B.ByteString]
+match rx = flip (PCRE.match rx) pcreExecOpts
+
+-- | Adjust these to your tastes. An
+-- interface to options seems to be
+-- the next logical (and practical)
+-- step.
+pcreOpts :: [PCREOption]
+pcreOpts =
+ [ PCRE.extended
+ , PCRE.multiline ]
+ -- , dotall, caseless, utf8
+ -- , newline_any, PCRE.newline_crlf ]
+
+-- | Adjust these to your tastes. An
+-- interface to options seems to be
+-- the next logical (and practical)
+-- step.
+pcreExecOpts :: [PCREExecOption]
+pcreExecOpts = []
+ -- [ PCRE.exec_newline_crlf
+ -- , exec_newline_any, PCRE.exec_notempty
+ -- , PCRE.exec_notbol, PCRE.exec_noteol ]
+
+pack :: String -> ByteString
+pack = B.pack . fmap c2w
+
+unpack :: ByteString -> String
+unpack = fmap w2c . B.unpack
+
+-----------------------------------------------------------------------------
diff --git a/docs/Text-Regex-PCRE-QQ.html b/docs/Text-Regex-PCRE-QQ.html
new file mode 100644
index 0000000..40ffb44
--- /dev/null
+++ b/docs/Text-Regex-PCRE-QQ.html
@@ -0,0 +1,235 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--Rendered using the Haskell Html Library v0.2-->
+<HTML
+><HEAD
+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
+><TITLE
+>Text.Regex.PCRE.QQ</TITLE
+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
+><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
+></SCRIPT
+></HEAD
+><BODY
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="topbar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
+></TD
+><TD CLASS="title"
+>regexqq-0.1: A quasiquoter for Text.Regex.PCRE regexes.</TD
+><TD CLASS="topbut"
+><A HREF="index.html"
+>Contents</A
+></TD
+><TD CLASS="topbut"
+><A HREF="doc-index.html"
+>Index</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="modulebar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><FONT SIZE="6"
+>Text.Regex.PCRE.QQ</FONT
+></TD
+><TD ALIGN="right"
+><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="infohead"
+>Portability</TD
+><TD CLASS="infoval"
+>non-portable (GHC QuasiQuotes)</TD
+></TR
+><TR
+><TD CLASS="infohead"
+>Stability</TD
+><TD CLASS="infoval"
+>unstable</TD
+></TR
+><TR
+><TD CLASS="infohead"
+>Maintainer</TD
+><TD CLASS="infoval"
+>mjm2002@gmail.com</TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Description</TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>A quasiquoter for Text.Regex.PCRE regexes.
+ This makes use of a new GHC extension known as QuasiQuotes.
+ See the README for the temporary location of the docs for
+ Language.Haskell.TH.Quote. See the EXAMPLES file for examples.
+</P
+><PRE
+> ghci&gt; [$rx|([aeiou]).*(er|ing|tion)([\.,\?]*)$|] &quot;helloing.!?!?!&quot;
+ Just [&quot;elloing.!?!?!&quot;,&quot;e&quot;,&quot;ing&quot;,&quot;.!?!?!&quot;]
+</PRE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Synopsis</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Arx"
+>rx</A
+> :: QuasiQuoter</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AregexToExpQ"
+>regexToExpQ</A
+> :: String -&gt; ExpQ</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AregexToPatQ"
+>regexToPatQ</A
+> :: String -&gt; PatQ</TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Documentation</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A NAME="v%3Arx"
+></A
+><B
+>rx</B
+> :: QuasiQuoter</TD
+></TR
+><TR
+><TD CLASS="doc"
+><PRE
+> ghci&gt; maybe [] tail $ [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+ [&quot;-&quot;,&quot;3&quot;,&quot;141592653589793&quot;]
+</PRE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A NAME="v%3AregexToExpQ"
+></A
+><B
+>regexToExpQ</B
+> :: String -&gt; ExpQ</TD
+></TR
+><TR
+><TD CLASS="doc"
+>Transform a string rep
+ of a regex to an ExpQ. The
+ resulting ExpQ, when spliced,
+ results in a function of type
+ <TT
+>String -&gt; Maybe [String]</TT
+>,
+ where the input is the String
+ to match on. The result is
+ Nothing on error, and Just
+ a list of results on success.
+ Note: I'm packing/unpacking/...
+ the ByteString unnecessarily
+ for convenience in testing
+ out the first go at this.
+ This will be dealt with in
+ the future.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A NAME="v%3AregexToPatQ"
+></A
+><B
+>regexToPatQ</B
+> :: String -&gt; PatQ</TD
+></TR
+><TR
+><TD CLASS="doc"
+>Transform a string (presumably)
+ containing a regex to a PatQ.
+ NOTE: Given a regex, a pattern
+ is constructed which matches
+ a literal string containing
+ the verbatim regex. It does
+ this because I couldn't think
+ of anything better for it to
+ do off the cuff. This needs
+ thought.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="botbar"
+>Produced by <A HREF="http://www.haskell.org/haddock/"
+>Haddock</A
+> version 2.1.0</TD
+></TR
+></TABLE
+></BODY
+></HTML
+>
diff --git a/docs/doc-index.html b/docs/doc-index.html
new file mode 100644
index 0000000..5d91767
--- /dev/null
+++ b/docs/doc-index.html
@@ -0,0 +1,2122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--Rendered using the Haskell Html Library v0.2-->
+<HTML
+><HEAD
+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
+><TITLE
+>regexqq-0.1: A quasiquoter for Text.Regex.PCRE regexes. (Index)</TITLE
+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
+><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
+></SCRIPT
+></HEAD
+><BODY
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="topbar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
+></TD
+><TD CLASS="title"
+>regexqq-0.1: A quasiquoter for Text.Regex.PCRE regexes.</TD
+><TD CLASS="topbut"
+><A HREF="index.html"
+>Contents</A
+></TD
+><TD CLASS="topbut"
+><A HREF="doc-index.html"
+>Index</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD COLSPAN="2" STYLE="padding-top:5px;"
+><FORM onsubmit="full_search(); return false;" ACTION=""
+>Search: <INPUT ID="searchbox" onkeyup="quick_search()"
+> <INPUT VALUE="Search" TYPE="submit"
+> <SPAN ID="searchmsg"
+> </SPAN
+></FORM
+></TD
+></TR
+><TR
+><TD
+><TABLE ID="indexlist" CELLPADDING="0" CELLSPACING="5"
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Alone</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>alpha</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>AppE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>appE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Applied</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>appPrec</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>appsE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>AppT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>appT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ArithSeqE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>arithSeqE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ArrowT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>arrowT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>AsP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>asP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>bindQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>BindS</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>bindS</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Body</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>BodyQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Callconv</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>CaseE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>caseE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>CCall</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>cCall</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>CharL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>charL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>CharPos</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ClassD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>classD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ClassI</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ClassOpI</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry" COLSPAN="2"
+>Clause</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>1 (Type/Class)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>2 (Data Constructor)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>clause</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ClauseQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>combine</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>CompE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>compE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Con</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>CondE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>condE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ConE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>conE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ConP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>conP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ConQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ConT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>conT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Cxt</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>cxt</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>CxtQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>DataConI</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>DataD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>dataD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>DataName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>dataToExpQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>dataToPatQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>dataToQa</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Dec</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>DecQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>defaultFixity</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>DoE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>doE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>DoublePrimL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>doublePrimL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>dyn</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Exp</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ExportF</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ExpQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>FieldExp</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>fieldExp</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>FieldExpQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>FieldPat</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>fieldPat</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>FieldPatQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry" COLSPAN="2"
+>Fixity</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>1 (Type/Class)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>2 (Data Constructor)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>FixityDirection</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>FloatPrimL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>floatPrimL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ForallC</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>forallC</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ForallT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>forallT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Foreign</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ForeignD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>forImpD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>fromE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>FromR</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>fromR</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>fromThenE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>FromThenR</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>fromThenR</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>fromThenToE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>FromThenToR</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>fromThenToR</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>fromToE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>FromToR</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>fromToR</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>FunD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>funD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry" COLSPAN="2"
+>FunDep</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>1 (Type/Class)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>2 (Data Constructor)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>funDep</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>genpat</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>global</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Guard</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>GuardedB</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>guardedB</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>GuardQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ImportF</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Infix</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>infixApp</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>InfixC</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>infixC</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>InfixE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>infixE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>InfixL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>InfixN</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>InfixP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>infixP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>InfixR</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Info</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>InfoQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>InstanceD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>instanceD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>IntegerL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>integerL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>IntPrimL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>intPrimL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>IsStrict</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>isStrict</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>lam1E</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>LamE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>lamE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>LetE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>letE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>LetS</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>letS</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Lift</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>lift</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ListE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>listE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ListP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>listP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ListT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>listT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Lit</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>LitE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>litE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>LitP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>litP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry" COLSPAN="2"
+>Loc</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>1 (Type/Class)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>2 (Data Constructor)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>location</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>loc_end</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>loc_filename</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>loc_module</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>loc_package</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>loc_start</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry" COLSPAN="2"
+>Match</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>1 (Type/Class)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>2 (Data Constructor)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>MatchQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>maxPrecedence</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>mkModName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>mkName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>mkNameG_d</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>mkNameG_tc</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>mkNameG_v</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>mkNameL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>mkNameU</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>mkOccName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>mkPkgName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ModName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>modString</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry" COLSPAN="2"
+>Name</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>1 (Type/Class)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>2 (Data Constructor)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>nameBase</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NameFlavour</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NameG</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NameIs</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NameL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>nameModule</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NameQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NameS</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NameSpace</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NameU</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>nestDepth</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>newName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NewtypeD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>newtypeD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NoBindS</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>noBindS</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>noPrec</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NormalB</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>normalB</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NormalC</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>normalC</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NormalG</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>normalG</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>normalGE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>NotStrict</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>notStrict</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>OccName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>occString</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>opPrec</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>parensIf</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ParS</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>parS</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Pat</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>PatG</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>patG</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>patGE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>PatQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>PkgName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pkgString</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Ppr</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ppr</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprBody</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprCxt</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprExp</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprFields</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprFixity</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprInfixExp</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprint</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprLit</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprMaybeExp</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprParendType</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprPat</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprStrictType</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprTyApp</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>pprVarStrictType</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ppr_list</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ppr_sig</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Precedence</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>PrimTyConI</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Q</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>qLocation</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>qNewName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>qRecover</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>qReify</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>qReport</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>qRunIO</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Quasi</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry" COLSPAN="2"
+>QuasiQuoter</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>1 (Type/Class)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexannot"
+>2 (Data Constructor)</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>quoteExp</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>quotePat</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Range</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>RangeQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>RationalL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>rationalL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>RecC</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>recC</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>RecConE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>recConE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>recover</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>RecP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>recP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>RecUpdE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>recUpdE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>regexToExpQ</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-Regex-PCRE-QQ.html#v%3AregexToExpQ"
+>Text.Regex.PCRE.QQ</A
+></TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>regexToPatQ</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-Regex-PCRE-QQ.html#v%3AregexToPatQ"
+>Text.Regex.PCRE.QQ</A
+></TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>reify</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>rename</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>report</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>returnQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>runIO</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>runQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>rx</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-Regex-PCRE-QQ.html#v%3Arx"
+>Text.Regex.PCRE.QQ</A
+></TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Safe</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>safe</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Safety</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>sectionL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>sectionR</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>sequenceQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>showName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>showName'</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>showtextl</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>SigD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>sigD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>SigE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>sigE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>SigP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>sigP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>simpleMatch</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>split</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>StdCall</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>stdCall</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Stmt</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>StmtQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Strict</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>StrictType</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>strictType</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>StrictTypeQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>stringE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>StringL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>stringL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>TcClsName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Threadsafe</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>threadsafe</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>TildeP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>tildeP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>TupE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>tupE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>tupleDataName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>TupleT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>tupleT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>tupleTypeName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>TupP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>tupP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>TyConI</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Type</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>TypeQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>TySynD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>tySynD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>TyVarI</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Uniq</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>Unsafe</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>unsafe</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>ValD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>valD</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>VarE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>varE</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>VarI</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>VarName</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>VarP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>varP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>VarStrictType</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>varStrictType</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>VarStrictTypeQ</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>VarT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>varT</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>where_clause</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>WildP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>wildP</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>WordPrimL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+><TR CLASS="indexrow"
+><TD CLASS="indexentry"
+>wordPrimL</TD
+><TD CLASS="indexlinks"
+>Text.Regex.PCRE.QQ</TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></BODY
+></HTML
+>
diff --git a/docs/haddock-util.js b/docs/haddock-util.js
new file mode 100644
index 0000000..e5d6977
--- /dev/null
+++ b/docs/haddock-util.js
@@ -0,0 +1,133 @@
+// Haddock JavaScript utilities
+function toggle(button,id)
+{
+ var n = document.getElementById(id).style;
+ if (n.display == "none")
+ {
+ button.src = "minus.gif";
+ n.display = "block";
+ }
+ else
+ {
+ button.src = "plus.gif";
+ n.display = "none";
+ }
+}
+
+
+var max_results = 75; // 50 is not enough to search for map in the base libraries
+var shown_range = null;
+var last_search = null;
+
+function quick_search()
+{
+ perform_search(false);
+}
+
+function full_search()
+{
+ perform_search(true);
+}
+
+
+function perform_search(full)
+{
+ var text = document.getElementById("searchbox").value.toLowerCase();
+ if (text == last_search && !full) return;
+ last_search = text;
+
+ var table = document.getElementById("indexlist");
+ var status = document.getElementById("searchmsg");
+ var children = table.firstChild.childNodes;
+
+ // first figure out the first node with the prefix
+ var first = bisect(-1);
+ var last = (first == -1 ? -1 : bisect(1));
+
+ if (first == -1)
+ {
+ table.className = "";
+ status.innerHTML = "No results found, displaying all";
+ }
+ else if (first == 0 && last == children.length - 1)
+ {
+ table.className = "";
+ status.innerHTML = "";
+ }
+ else if (last - first >= max_results && !full)
+ {
+ table.className = "";
+ status.innerHTML = "More than " + max_results + ", press Search to display";
+ }
+ else
+ {
+ // decide what you need to clear/show
+ if (shown_range)
+ setclass(shown_range[0], shown_range[1], "indexrow");
+ setclass(first, last, "indexshow");
+ shown_range = [first, last];
+ table.className = "indexsearch";
+ status.innerHTML = "";
+ }
+
+
+ function setclass(first, last, status)
+ {
+ for (var i = first; i <= last; i++)
+ {
+ children[i].className = status;
+ }
+ }
+
+
+ // do a binary search, treating 0 as ...
+ // return either -1 (no 0's found) or location of most far match
+ function bisect(dir)
+ {
+ var first = 0, finish = children.length - 1;
+ var mid, success = false;
+
+ while (finish - first > 3)
+ {
+ mid = Math.floor((finish + first) / 2);
+
+ var i = checkitem(mid);
+ if (i == 0) i = dir;
+ if (i == -1)
+ finish = mid;
+ else
+ first = mid;
+ }
+ var a = (dir == 1 ? first : finish);
+ var b = (dir == 1 ? finish : first);
+ for (var i = b; i != a - dir; i -= dir)
+ {
+ if (checkitem(i) == 0) return i;
+ }
+ return -1;
+ }
+
+
+ // from an index, decide what the result is
+ // 0 = match, -1 is lower, 1 is higher
+ function checkitem(i)
+ {
+ var s = getitem(i).toLowerCase().substr(0, text.length);
+ if (s == text) return 0;
+ else return (s > text ? -1 : 1);
+ }
+
+
+ // from an index, get its string
+ // this abstracts over alternates
+ function getitem(i)
+ {
+ for ( ; i >= 0; i--)
+ {
+ var s = children[i].firstChild.firstChild.data;
+ if (s.indexOf(' ') == -1)
+ return s;
+ }
+ return ""; // should never be reached
+ }
+}
diff --git a/docs/haddock.css b/docs/haddock.css
new file mode 100644
index 0000000..2669527
--- /dev/null
+++ b/docs/haddock.css
@@ -0,0 +1,267 @@
+/* -------- Global things --------- */
+
+BODY {
+ background-color: #ffffff;
+ color: #000000;
+ font-family: sans-serif;
+ }
+
+A:link { color: #0000e0; text-decoration: none }
+A:visited { color: #0000a0; text-decoration: none }
+A:hover { background-color: #e0e0ff; text-decoration: none }
+
+TABLE.vanilla {
+ width: 100%;
+ border-width: 0px;
+ /* I can't seem to specify cellspacing or cellpadding properly using CSS... */
+}
+
+TABLE.vanilla2 {
+ border-width: 0px;
+}
+
+/* <TT> font is a little too small in MSIE */
+TT { font-size: 100%; }
+PRE { font-size: 100%; }
+
+LI P { margin: 0pt }
+
+TD {
+ border-width: 0px;
+}
+
+TABLE.narrow {
+ border-width: 0px;
+}
+
+TD.s8 { height: 8px; }
+TD.s15 { height: 15px; }
+
+SPAN.keyword { text-decoration: underline; }
+
+/* Resize the buttom image to match the text size */
+IMG.coll { width : 0.75em; height: 0.75em; margin-bottom: 0; margin-right: 0.5em }
+
+/* --------- Contents page ---------- */
+
+DIV.node {
+ padding-left: 3em;
+}
+
+DIV.cnode {
+ padding-left: 1.75em;
+}
+
+SPAN.pkg {
+ position: absolute;
+ left: 50em;
+}
+
+/* --------- Documentation elements ---------- */
+
+TD.children {
+ padding-left: 25px;
+ }
+
+TD.synopsis {
+ padding: 2px;
+ background-color: #f0f0f0;
+ font-family: monospace
+ }
+
+TD.decl {
+ padding: 2px;
+ background-color: #f0f0f0;
+ font-family: monospace;
+ vertical-align: top;
+ }
+
+TD.topdecl {
+ padding: 2px;
+ background-color: #f0f0f0;
+ font-family: monospace;
+ vertical-align: top;
+}
+
+TABLE.declbar {
+ border-spacing: 0px;
+ }
+
+TD.declname {
+ width: 100%;
+ }
+
+TD.declbut {
+ padding-left: 5px;
+ padding-right: 5px;
+ border-left-width: 1px;
+ border-left-color: #000099;
+ border-left-style: solid;
+ white-space: nowrap;
+ font-size: small;
+ }
+
+/*
+ arg is just like decl, except that wrapping is not allowed. It is
+ used for function and constructor arguments which have a text box
+ to the right, where if wrapping is allowed the text box squashes up
+ the declaration by wrapping it.
+*/
+TD.arg {
+ padding: 2px;
+ background-color: #f0f0f0;
+ font-family: monospace;
+ vertical-align: top;
+ white-space: nowrap;
+ }
+
+TD.recfield { padding-left: 20px }
+
+TD.doc {
+ padding-top: 2px;
+ padding-left: 10px;
+ }
+
+TD.ndoc {
+ padding: 2px;
+ }
+
+TD.rdoc {
+ padding: 2px;
+ padding-left: 10px;
+ width: 100%;
+ }
+
+TD.body {
+ padding-left: 10px
+ }
+
+TD.pkg {
+ width: 100%;
+ padding-left: 10px
+}
+
+TABLE.indexsearch TR.indexrow {
+ display: none;
+}
+TABLE.indexsearch TR.indexshow {
+ display: table-row;
+}
+
+TD.indexentry {
+ vertical-align: top;
+ padding-right: 10px
+ }
+
+TD.indexannot {
+ vertical-align: top;
+ padding-left: 20px;
+ white-space: nowrap
+ }
+
+TD.indexlinks {
+ width: 100%
+ }
+
+/* ------- Section Headings ------- */
+
+TD.section1 {
+ padding-top: 15px;
+ font-weight: bold;
+ font-size: 150%
+ }
+
+TD.section2 {
+ padding-top: 10px;
+ font-weight: bold;
+ font-size: 130%
+ }
+
+TD.section3 {
+ padding-top: 5px;
+ font-weight: bold;
+ font-size: 110%
+ }
+
+TD.section4 {
+ font-weight: bold;
+ font-size: 100%
+ }
+
+/* -------------- The title bar at the top of the page */
+
+TD.infohead {
+ color: #ffffff;
+ font-weight: bold;
+ padding-right: 10px;
+ text-align: left;
+}
+
+TD.infoval {
+ color: #ffffff;
+ padding-right: 10px;
+ text-align: left;
+}
+
+TD.topbar {
+ background-color: #000099;
+ padding: 5px;
+}
+
+TD.title {
+ color: #ffffff;
+ padding-left: 10px;
+ width: 100%
+ }
+
+TD.topbut {
+ padding-left: 5px;
+ padding-right: 5px;
+ border-left-width: 1px;
+ border-left-color: #ffffff;
+ border-left-style: solid;
+ white-space: nowrap;
+ }
+
+TD.topbut A:link {
+ color: #ffffff
+ }
+
+TD.topbut A:visited {
+ color: #ffff00
+ }
+
+TD.topbut A:hover {
+ background-color: #6060ff;
+ }
+
+TD.topbut:hover {
+ background-color: #6060ff
+ }
+
+TD.modulebar {
+ background-color: #0077dd;
+ padding: 5px;
+ border-top-width: 1px;
+ border-top-color: #ffffff;
+ border-top-style: solid;
+ }
+
+/* --------- The page footer --------- */
+
+TD.botbar {
+ background-color: #000099;
+ color: #ffffff;
+ padding: 5px
+ }
+TD.botbar A:link {
+ color: #ffffff;
+ text-decoration: underline
+ }
+TD.botbar A:visited {
+ color: #ffff00
+ }
+TD.botbar A:hover {
+ background-color: #6060ff
+ }
+
diff --git a/docs/haskell_icon.gif b/docs/haskell_icon.gif
new file mode 100644
index 0000000..10589f9
--- /dev/null
+++ b/docs/haskell_icon.gif
Binary files differ
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..d6559f2
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--Rendered using the Haskell Html Library v0.2-->
+<HTML
+><HEAD
+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
+><TITLE
+>regexqq-0.1: A quasiquoter for Text.Regex.PCRE regexes.</TITLE
+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
+><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
+></SCRIPT
+></HEAD
+><BODY
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="topbar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
+></TD
+><TD CLASS="title"
+>regexqq-0.1: A quasiquoter for Text.Regex.PCRE regexes.</TD
+><TD CLASS="topbut"
+><A HREF="index.html"
+>Contents</A
+></TD
+><TD CLASS="topbut"
+><A HREF="doc-index.html"
+>Index</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>regexqq-0.1: A quasiquoter for Text.Regex.PCRE regexes.</TD
+></TR
+><TR
+><TD CLASS="doc"
+><PRE
+> ghci&gt; [$rx|([aeiou]).*(er|ing|tion)([\.,\?]*)$|] &quot;helloing.!?!?!&quot;
+ Just [&quot;elloing.!?!?!&quot;,&quot;e&quot;,&quot;ing&quot;,&quot;.!?!?!&quot;]
+
+ ghci&gt; tail `fmap` [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+ Just [&quot;-&quot;,&quot;3&quot;,&quot;141592653589793&quot;]
+
+ ghci&gt; maybe [] tail $ [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+ [&quot;-&quot;,&quot;3&quot;,&quot;141592653589793&quot;]
+</PRE
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Modules</TD
+></TR
+><TR
+><TD
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD STYLE="width: 50em"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:0')" ALT="show/hide"
+>Text</TD
+><TD
+></TD
+><TD
+></TD
+></TR
+><TR
+><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:0" STYLE="display:block;"
+><TR
+><TD STYLE="width: 48em"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:1')" ALT="show/hide"
+>Regex</TD
+><TD
+></TD
+><TD
+></TD
+></TR
+><TR
+><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:1" STYLE="display:block;"
+><TR
+><TD STYLE="width: 46em"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:2')" ALT="show/hide"
+>PCRE</TD
+><TD
+></TD
+><TD
+></TD
+></TR
+><TR
+><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:2" STYLE="display:block;"
+><TR
+><TD STYLE="padding-left: 1.25em;width: 44em"
+><A HREF="Text-Regex-PCRE-QQ.html"
+>Text.Regex.PCRE.QQ</A
+></TD
+><TD
+></TD
+><TD
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="botbar"
+>Produced by <A HREF="http://www.haskell.org/haddock/"
+>Haddock</A
+> version 2.1.0</TD
+></TR
+></TABLE
+></BODY
+></HTML
+>
diff --git a/docs/minus.gif b/docs/minus.gif
new file mode 100644
index 0000000..1deac2f
--- /dev/null
+++ b/docs/minus.gif
Binary files differ
diff --git a/docs/plus.gif b/docs/plus.gif
new file mode 100644
index 0000000..2d15c14
--- /dev/null
+++ b/docs/plus.gif
Binary files differ
diff --git a/docs/regexqq.haddock b/docs/regexqq.haddock
new file mode 100644
index 0000000..48b308b
--- /dev/null
+++ b/docs/regexqq.haddock
Binary files differ
diff --git a/regexqq.cabal b/regexqq.cabal
new file mode 100644
index 0000000..31e1e8e
--- /dev/null
+++ b/regexqq.cabal
@@ -0,0 +1,28 @@
+name: regexqq
+version: 0.1
+cabal-version: >= 1.2
+build-type: Simple
+license: BSD3
+license-file: LICENSE
+category: Text
+author: Matt Morrow
+copyright: Matt Morrow
+maintainer: Matt Morrow <morrow@jypsis.com>
+stability: unstable
+synopsis: A quasiquoter for PCRE regexes.
+description: > [$rx|([aeiou]).*(er|ing|tion)([\.,!\?]*)$|] "helloing.!?!?!"
+ > Just ["elloing.!?!?!","e","ing",".!?!?!"]
+ >
+ > ghci> tail `fmap` [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+ > Just ["-","3","141592653589793"]
+ >
+ > ghci> maybe [] tail $ [$rx|^([+-])?([0-9]+)\.([0-9]+)|] (show $ negate pi)
+ > ["-","3","141592653589793"]
+
+library
+ build-depends: base, bytestring, template-haskell >= 2.2, pcre-light
+ extensions: TemplateHaskell
+ ghc-options: -O2 -fglasgow-exts
+ hs-source-dirs: .
+ exposed-modules: Text.Regex.PCRE.QQ
+