Îõ³h&bN2      !"#$%&'()*+,-./01 Safe-Inferred")*ÁÃÄÅÇÜëï ‚sashaExtended regular expressionsasha ConcatenationsashaUnionsasha Kleene starsasha Complementsasha%Empty regex. Doesn't accept anything.match empty s === Falsesasha Everything.match everything s === TruesashaEmpty string. Note: different than .match eps s === null ssasha Character. sashaCharacter range. sashaCharacter set. sashaAny character. sasha Concatenate regular expressions.r <> empty === emptyempty <> r === empty ( r <> s) <> t === r <> (s <> t)r <> eps === reps <> r === rsashaUnion of regular expressions. r \/ r === rr \/ s === s \/ r ( r \/ s) \/ t === r \/ (s \/ t)empty \/ r === rr \/ empty === reverything \/ r === everythingr \/ everything === everythingsasha$Intersection of regular expressions. r /\ r === rr /\ s === s /\ r ( r /\ s) /\ t === r /\ (s /\ t)empty /\ r === emptyr /\ empty === emptyeverything /\ r === rr /\ everything === rsasha Complement. complement (complement r) === rsasha Kleene star.star (star r) === star ( r)star eps === epsstar empty === epsstar anyChar === everythingstar (r \/ eps) === star r&star (char c \/ eps) === star (char c)star (empty \/ eps) === epssasha Kleene plus  r = r <>  r sashaLiteral string.sasha UTF8 stringsasha.UTF8 character, i.e. may match multiple bytes.sashaåWe say that a regular expression r is nullable if the language it defines contains the empty string. nullable epsTruenullable (star "x")Truenullable "foo"Falsenullable (complement eps)Falsesasha*Intuitively, the derivative of a language  \mathcal{L} \subset \Sigma^\star with respect to a symbol  a \in \SigmaÕ is the language that includes only those suffixes of strings with a leading symbol a in  \mathcal{L}.sashaWhether  is (structurally) equal to .sashaWhether  is (structurally) equal to .sashaUses smart constructors.sashaUses  utf8string.    Safe-Inferred"Üëï (sasha—Lexer grammar specification: regular expression and result builder function which takes a prefix (the matching part) and a suffix (the rest of input).)sashaScan for a single token.)sashano match valuesashascanner rules definitionssashainputsasharesult ()()   Safe-Inferred"Üëï *sasha+Optimized routing to check membership when 2 is statically known. * c ws = [||member $$c $$(liftTyped ws) ||] ** Safe-Inferred"Üëï 3sasha2We give each tag an integer, so we can order them.4sashaLast accept modifier.5sashaInner scanner function.previous matchpositioninput+sasha—Lexer grammar specification: regular expression and result builder function which takes a prefix (the matching part) and a suffix (the rest of input).,sashaScan for a single token.6sashaGenerate a scanner code.,sashano match valuesashascanner rules definitionssasha scanner code +,+,  7      !"#$%&'()*+,-./0123456789:;<= sasha-0.2-Fb1OA36ExBiBGy7z8EtgCJSasha.Internal.ERESashaSasha.Internal.Word8Set Sasha.TTHERE EREAppendEREUnionEREStarERENotempty everythingepschar charRangecharSetanyChar anyUtf8Charappendsunions intersections complementstarplusstring utf8Stringutf8Charsatisfydigitnullable derivativematchisEmpty isEverything equivalent$fArbitraryERE $fIsStringERE$fBoundedMeetSemiLatticeERE$fBoundedJoinSemiLatticeERE $fLatticeERE $fMonoidERE$fSemigroupERE$fEqERE$fOrdERE $fShowEREsasha memberCodeSaTTHsatth$fOrdS$fEqS$fShowS$fEqMeas $fOrdMeas%word8set-0.1.1-15ZC80MI32w1s80Dg9IPz2 Data.Word8SetWord8SetSMRsatth'