--
{
-{-# OPTIONS_GHC -w #-}
+{-# OPTIONS -w #-}
-- The above warning supression flag is a temporary kludge.
-- While working on this module you are encouraged to remove it and fix
-- any warnings in the module. See
--- http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions#Warnings
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
-- for details
module HaddockLex (
$ws = $white # \n
$digit = [0-9]
$hexdigit = [0-9a-fA-F]
-$special = [\"\@\/]
+$special = [\"\@]
$alphanum = [A-Za-z0-9]
$ident = [$alphanum \'\_\.\!\#\$\%\&\*\+\/\<\=\>\?\@\\\\\^\|\-\~]
<string,def> {
$special { strtoken $ \s -> TokSpecial (head s) }
+ \<\<.*\>\> { strtoken $ \s -> TokPic (init $ init $ tail $ tail s) }
\<.*\> { strtoken $ \s -> TokURL (init (tail s)) }
\#.*\# { strtoken $ \s -> TokAName (init (tail s)) }
+ \/ [^\/]* \/ { strtoken $ \s -> TokEmphasis (init (tail s)) }
[\'\`] $ident+ [\'\`] { ident }
\\ . { strtoken (TokString . tail) }
"&#" $digit+ \; { strtoken $ \s -> TokString [chr (read (init (drop 2 s)))] }
"&#" [xX] $hexdigit+ \; { strtoken $ \s -> case readHex (init (drop 3 s)) of [(n,_)] -> TokString [chr n] }
-- allow special characters through if they don't fit one of the previous
-- patterns.
- [\'\`\<\#\&\\] { strtoken TokString }
- [^ $special \< \# \n \'\` \& \\ \]]* \n { strtoken TokString `andBegin` line }
- [^ $special \< \# \n \'\` \& \\ \]]+ { strtoken TokString }
+ [\/\'\`\<\#\&\\] { strtoken TokString }
+ [^ $special \/ \< \# \n \'\` \& \\ \]]* \n { strtoken TokString `andBegin` line }
+ [^ $special \/ \< \# \n \'\` \& \\ \]]+ { strtoken TokString }
}
<def> {
| TokIdent [RdrName]
| TokString String
| TokURL String
+ | TokPic String
+ | TokEmphasis String
| TokAName String
| TokBirdTrack String
-- deriving Show
case alexScan inp sc of
AlexEOF -> []
AlexError _ -> error "lexical error"
- AlexSkip inp' len -> go inp' sc
+ AlexSkip inp' _ -> go inp' sc
AlexToken inp' len act -> act (take len str) sc (\sc -> go inp' sc)
-- NB. we add a final \n to the string, (see comment in the beginning of line
eofHack str = str++"\n"
andBegin :: Action -> StartCode -> Action
-andBegin act new_sc = \str sc cont -> act str new_sc cont
+andBegin act new_sc = \str _ cont -> act str new_sc cont
token :: Token -> Action
-token t = \str sc cont -> t : cont sc
+token t = \_ sc cont -> t : cont sc
strtoken :: (String -> Token) -> Action
strtoken t = \str sc cont -> t str : cont sc
begin :: StartCode -> Action
-begin sc = \str _ cont -> cont sc
+begin sc = \_ _ cont -> cont sc
-- -----------------------------------------------------------------------------
-- Lex a string as a Haskell identifier
strToHsQNames str0 =
let buffer = unsafePerformIO (stringToStringBuffer str0)
pstate = mkPState buffer noSrcLoc defaultDynFlags
- lex = lexer (\t -> return t)
result = unP parseIdentifier pstate
in case result of
POk _ name -> Just [unLoc name]