module Autolib.Reader.Basic
(
my_parens, my_braces, my_brackets, my_angles
, my_symbol, my_comma, my_semi, my_dot, my_star
, my_reserved, my_reservedOp
, my_operator, my_equals
, my_commaSep, my_semiSep
, my_identifier, my_symbol
, my_integer, my_natural
, my_stringLiteral
, my_whiteSpace
, parsed_info
, readerParen
, haskell
)
where
import Text.ParserCombinators.Parsec
import Text.ParserCombinators.Parsec.Token
import qualified Text.ParserCombinators.Parsec.Language as TPCL
import Data.String
import Control.Monad ( guard )
haskell :: GenTokenParser String u Identity
haskell = GenLanguageDef String u Identity
-> GenTokenParser String u Identity
forall s (m :: * -> *) u.
Stream s m Char =>
GenLanguageDef s u m -> GenTokenParser s u m
makeTokenParser
(GenLanguageDef String u Identity
-> GenTokenParser String u Identity)
-> GenLanguageDef String u Identity
-> GenTokenParser String u Identity
forall a b. (a -> b) -> a -> b
$ GenLanguageDef String u Identity
forall st. LanguageDef st
TPCL.haskellStyle { commentStart = "{- " }
my_parens :: Parser a -> Parser a
my_parens :: forall a. Parser a -> Parser a
my_parens = GenTokenParser String () Identity -> forall a. Parser a -> Parser a
forall s u (m :: * -> *).
GenTokenParser s u m
-> forall a. ParsecT s u m a -> ParsecT s u m a
parens GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_brackets :: Parser a -> Parser a
my_brackets :: forall a. Parser a -> Parser a
my_brackets = GenTokenParser String () Identity -> forall a. Parser a -> Parser a
forall s u (m :: * -> *).
GenTokenParser s u m
-> forall a. ParsecT s u m a -> ParsecT s u m a
brackets GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_braces :: Parser a -> Parser a
my_braces :: forall a. Parser a -> Parser a
my_braces = GenTokenParser String () Identity -> forall a. Parser a -> Parser a
forall s u (m :: * -> *).
GenTokenParser s u m
-> forall a. ParsecT s u m a -> ParsecT s u m a
braces GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_angles :: Parser a -> Parser a
my_angles :: forall a. Parser a -> Parser a
my_angles = GenTokenParser String () Identity -> forall a. Parser a -> Parser a
forall s u (m :: * -> *).
GenTokenParser s u m
-> forall a. ParsecT s u m a -> ParsecT s u m a
angles GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_comma :: Parser String
my_comma :: Parser String
my_comma = GenTokenParser String () Identity -> Parser String
forall s u (m :: * -> *).
GenTokenParser s u m -> ParsecT s u m String
comma GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_semi :: Parser String
my_semi :: Parser String
my_semi = GenTokenParser String () Identity -> Parser String
forall s u (m :: * -> *).
GenTokenParser s u m -> ParsecT s u m String
semi GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_dot :: Parser String
my_dot :: Parser String
my_dot = GenTokenParser String () Identity -> Parser String
forall s u (m :: * -> *).
GenTokenParser s u m -> ParsecT s u m String
dot GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_star :: Parser ()
my_star :: Parser ()
my_star = GenTokenParser String () Identity -> String -> Parser ()
forall s u (m :: * -> *).
GenTokenParser s u m -> String -> ParsecT s u m ()
reservedOp GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell String
"*"
my_equals :: Parser ()
my_equals :: Parser ()
my_equals = GenTokenParser String () Identity -> String -> Parser ()
forall s u (m :: * -> *).
GenTokenParser s u m -> String -> ParsecT s u m ()
reservedOp GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell String
"="
my_reserved :: String -> Parser ()
my_reserved :: String -> Parser ()
my_reserved = GenTokenParser String () Identity -> String -> Parser ()
forall s u (m :: * -> *).
GenTokenParser s u m -> String -> ParsecT s u m ()
reserved GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_reservedOp :: String -> Parser ()
my_reservedOp :: String -> Parser ()
my_reservedOp = GenTokenParser String () Identity -> String -> Parser ()
forall s u (m :: * -> *).
GenTokenParser s u m -> String -> ParsecT s u m ()
reservedOp GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_commaSep :: Parser a -> Parser [a]
my_commaSep :: forall a. Parser a -> Parser [a]
my_commaSep = GenTokenParser String () Identity
-> forall a. Parser a -> Parser [a]
forall s u (m :: * -> *).
GenTokenParser s u m
-> forall a. ParsecT s u m a -> ParsecT s u m [a]
commaSep GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_semiSep :: Parser a -> Parser [a]
my_semiSep :: forall a. Parser a -> Parser [a]
my_semiSep = GenTokenParser String () Identity
-> forall a. Parser a -> Parser [a]
forall s u (m :: * -> *).
GenTokenParser s u m
-> forall a. ParsecT s u m a -> ParsecT s u m [a]
semiSep GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_identifier :: Parser String
my_identifier :: Parser String
my_identifier = GenTokenParser String () Identity -> Parser String
forall s u (m :: * -> *).
GenTokenParser s u m -> ParsecT s u m String
identifier GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_operator :: Parser String
my_operator :: Parser String
my_operator = GenTokenParser String () Identity -> Parser String
forall s u (m :: * -> *).
GenTokenParser s u m -> ParsecT s u m String
operator GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_symbol :: String -> Parser String
my_symbol :: String -> Parser String
my_symbol = GenTokenParser String () Identity -> String -> Parser String
forall s u (m :: * -> *).
GenTokenParser s u m -> String -> ParsecT s u m String
symbol GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_stringLiteral :: Parser String
my_stringLiteral :: Parser String
my_stringLiteral = GenTokenParser String () Identity -> Parser String
forall s u (m :: * -> *).
GenTokenParser s u m -> ParsecT s u m String
stringLiteral GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_integer :: Parser Integer
my_integer :: Parser Integer
my_integer = GenTokenParser String () Identity -> Parser Integer
forall s u (m :: * -> *).
GenTokenParser s u m -> ParsecT s u m Integer
integer GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_natural :: Parser Integer
my_natural :: Parser Integer
my_natural = GenTokenParser String () Identity -> Parser Integer
forall s u (m :: * -> *).
GenTokenParser s u m -> ParsecT s u m Integer
natural GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
my_whiteSpace :: Parser ()
my_whiteSpace :: Parser ()
my_whiteSpace = GenTokenParser String () Identity -> Parser ()
forall s u (m :: * -> *). GenTokenParser s u m -> ParsecT s u m ()
whiteSpace GenTokenParser String () Identity
forall {u}. GenTokenParser String u Identity
haskell
readerParen :: Bool -> Parser a -> Parser a
readerParen :: forall a. Bool -> Parser a -> Parser a
readerParen Bool
man Parser a
p
= Parser a -> Parser a
forall tok st a. GenParser tok st a -> GenParser tok st a
try ( do Bool -> Parser ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (Bool -> Parser ()) -> Bool -> Parser ()
forall a b. (a -> b) -> a -> b
$ Bool -> Bool
not Bool
man ; Parser a
p )
Parser a -> Parser a -> Parser a
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|> Parser a -> Parser a
forall a. Parser a -> Parser a
my_parens ( Bool -> Parser a -> Parser a
forall a. Bool -> Parser a -> Parser a
readerParen Bool
False Parser a
p )
parsed_info :: IsString a => Parser a
parsed_info :: forall a. IsString a => Parser a
parsed_info = a -> ParsecT String () Identity a
forall a. a -> ParsecT String () Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (a -> ParsecT String () Identity a)
-> a -> ParsecT String () Identity a
forall a b. (a -> b) -> a -> b
$ String -> a
forall a. IsString a => String -> a
fromString String
"parsed_info"