<!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.XML.HXT.Validator.RE</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock.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" >hxt-7.1: </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.XML.HXT.Validator.RE</FONT ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" ><P >A module for regular expression matching based on derivatives of regular expressions. </P ><P >The code was taken from Joe English (<A HREF="http://www.flightlab.com/~joe/sgml/validate.html" >http://www.flightlab.com/~joe/sgml/validate.html</A >). Tested and extended by Martin Schmidt. </P ><P >Further references for the algorithm: </P ><P >Janusz A. Brzozowski. </P ><P >Derivatives of Regular Expressions. Journal of the ACM, Volume 11, Issue 4, 1964. </P ><P >Mark Hopkins. </P ><P >Regular Expression Package. Posted to comp.compilers, 1994. Available per FTP at <A HREF="ftp://iecc.com/pub/file/regex.tar.gz" >ftp://iecc.com/pub/file/regex.tar.gz</A >. </P ><P >Version : $Id: RE.hs,v 1.1 2004<EM >09</EM >02 19:12:03 hxml Exp $ </P ></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" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ARE_ZERO" >RE_ZERO</A > String</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARE_UNIT" >RE_UNIT</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARE_SYM" >RE_SYM</A > a</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARE_DOT" >RE_DOT</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARE_REP" >RE_REP</A > (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARE_PLUS" >RE_PLUS</A > (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARE_OPT" >RE_OPT</A > (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARE_SEQ" >RE_SEQ</A > (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARE_ALT" >RE_ALT</A > (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Are_unit" >re_unit</A > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Are_zero" >re_zero</A > :: String -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Are_sym" >re_sym</A > :: a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Are_rep" >re_rep</A > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Are_plus" >re_plus</A > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Are_opt" >re_opt</A > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Are_seq" >re_seq</A > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Are_alt" >re_alt</A > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Are_dot" >re_dot</A > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcheckRE" >checkRE</A > :: Show a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> String</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Amatches" >matches</A > :: (Eq a, Show a) => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> [a] -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Anullable" >nullable</A > :: Show a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> Bool</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AprintRE" >printRE</A > :: Show a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> String</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" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t%3ARE" ></A ><B >RE</B > a</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Data type for regular expressions. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v%3ARE_ZERO" ></A ><B >RE_ZERO</B > String</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v%3ARE_UNIT" ></A ><B >RE_UNIT</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v%3ARE_SYM" ></A ><B >RE_SYM</B > a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v%3ARE_DOT" ></A ><B >RE_DOT</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v%3ARE_REP" ></A ><B >RE_REP</B > (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v%3ARE_PLUS" ></A ><B >RE_PLUS</B > (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v%3ARE_OPT" ></A ><B >RE_OPT</B > (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v%3ARE_SEQ" ></A ><B >RE_SEQ</B > (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v%3ARE_ALT" ></A ><B >RE_ALT</B > (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:RE')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:RE" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" >Eq a => Eq (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ></TR ><TR ><TD CLASS="decl" >Show a => Show (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3Are_unit" ></A ><B >re_unit</B > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >Constructs a regular expression for an empty sequence. </P ><UL ><LI > returns : regular expression for an empty sequence </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3Are_zero" ></A ><B >re_zero</B > :: String -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >Constructs a regular expression for an empty set. </P ><UL ><LI > 1.parameter errMsg : error message </LI ><LI > returns : regular expression for an empty set </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3Are_sym" ></A ><B >re_sym</B > :: a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >Constructs a regular expression for accepting a symbol </P ><UL ><LI > 1.parameter sym : the symbol to be accepted </LI ><LI > returns : regular expression for accepting a symbol </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3Are_rep" ></A ><B >re_rep</B > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >Constructs an optional repetition (*) of a regular expression </P ><UL ><LI > 1.parameter re_a : regular expression to be repeted </LI ><LI > returns : new regular expression </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3Are_plus" ></A ><B >re_plus</B > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >Constructs a repetition (+) of a regular expression </P ><UL ><LI > 1.parameter re_a : regular expression to be repeted </LI ><LI > returns : new regular expression </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3Are_opt" ></A ><B >re_opt</B > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >Constructs an option (?) of a regular expression </P ><UL ><LI > 1.parameter re_a : regular expression to be optional </LI ><LI > returns : new regular expression </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3Are_seq" ></A ><B >re_seq</B > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >Constructs a sequence (,) of two regular expressions </P ><UL ><LI > 1.parameter re_a : first regular expression in sequence </LI ><LI > 2.parameter re_b : second regular expression in sequence </LI ><LI > returns : new regular expression </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3Are_alt" ></A ><B >re_alt</B > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >Constructs an alternative (|) of two regular expressions </P ><UL ><LI > 1.parameter re_a : first regular expression of alternative </LI ><LI > 2.parameter re_b : second regular expression of alternative </LI ><LI > returns : new regular expression </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3Are_dot" ></A ><B >re_dot</B > :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >Constructs a regular expression for accepting any singel symbol </P ><UL ><LI > returns : regular expression for accepting any singel symbol </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3AcheckRE" ></A ><B >checkRE</B > :: Show a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> String</TD ></TR ><TR ><TD CLASS="doc" ><P >Checks if an input matched a regular expression. The function should be called after matches. </P ><P >Was the sentence used in <TT >matches</TT > in the language of the regular expression? -> matches e s == s `in` L(e)? </P ><UL ><LI > 1.parameter re : the derived regular expression </LI ><LI > returns : empty String if input matched the regular expression, otherwise an error message is returned </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3Amatches" ></A ><B >matches</B > :: (Eq a, Show a) => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> [a] -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >Derives a regular expression with respect to a sentence. </P ><UL ><LI > 1.parameter re : regular expression </LI ><LI > 2.parameter s : sentence to which the regular expression is applied </LI ><LI > returns : the derived regular expression </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3Anullable" ></A ><B >nullable</B > :: Show a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> Bool</TD ></TR ><TR ><TD CLASS="doc" ><P >Checks if a regular expression matches the empty sequence. </P ><P >nullable e == [] `in` L(e) </P ><P >This check indicates if a regular expression fits to a sentence or not. </P ><UL ><LI > 1.parameter re : regular expression to be checked </LI ><LI > returns : true if regular expression matches the empty sequence, otherwise false </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v%3AprintRE" ></A ><B >printRE</B > :: Show a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE" >RE</A > a -> String</TD ></TR ><TR ><TD CLASS="doc" ><P >Constructs a string representation of a regular expression. </P ><UL ><LI > 1.parameter re : a regular expression </LI ><LI > returns : the string representation of the regular expression </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 0.8</TD ></TR ></TABLE ></BODY ></HTML >