{-# LANGUAGE CPP #-}
module UU.Scanner.TokenParser where
import UU.Parsing.Interface(IsParser(..), (<$), (<$>))
import UU.Parsing.Derived(pListSep, pPacked)
import UU.Scanner.Position(Pos)
import UU.Scanner.GenTokenParser(pReserved, pValToken)
import UU.Scanner.Token(Token,EnumValToken(..))
pKeyPos :: IsParser p Token => String -> p Pos
pKeyPos :: forall (p :: * -> *). IsParser p Token => String -> p Pos
pKeyPos String
keyword = String -> p Pos
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
key -> p Pos
pReserved String
keyword
pSpecPos :: IsParser p Token => Char -> p Pos
pSpecPos :: forall (p :: * -> *). IsParser p Token => Char -> p Pos
pSpecPos Char
s = String -> p Pos
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
key -> p Pos
pReserved [Char
s]
pKey :: IsParser p Token => String -> p String
pKey :: forall (p :: * -> *). IsParser p Token => String -> p String
pKey String
key = String
key String -> p Pos -> p String
forall a b. a -> p b -> p a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ String -> p Pos
forall (p :: * -> *). IsParser p Token => String -> p Pos
pKeyPos String
key
pSpec :: IsParser p Token => Char -> p String
pSpec :: forall (p :: * -> *). IsParser p Token => Char -> p String
pSpec Char
c = [Char
c] String -> p Pos -> p String
forall a b. a -> p b -> p a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Char -> p Pos
forall (p :: * -> *). IsParser p Token => Char -> p Pos
pSpecPos Char
c
pStringPos, pCharPos,
pInteger8Pos, pInteger10Pos, pInteger16Pos, pFractionPos,
pVaridPos, pConidPos,
pTextnmPos, pTextlnPos, pIntegerPos, pVarsymPos, pConsymPos :: IsParser p Token => p (String,Pos)
pStringPos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pStringPos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkString String
""
pCharPos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pCharPos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkChar String
"\NUL"
pInteger8Pos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pInteger8Pos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkInteger8 String
"0"
pInteger10Pos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pInteger10Pos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkInteger10 String
"0"
pInteger16Pos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pInteger16Pos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkInteger16 String
"0"
pFractionPos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pFractionPos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkFraction String
"0.0"
pVaridPos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pVaridPos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkVarid String
"<identifier>"
pConidPos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pConidPos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkConid String
"<Identifier>"
pConsymPos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pConsymPos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkConOp String
"<conoperator>"
pVarsymPos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pVarsymPos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkOp String
"<operator>"
pTextnmPos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pTextnmPos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkTextnm String
"<name>"
pTextlnPos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pTextlnPos = EnumValToken -> String -> p (String, Pos)
forall (p :: * -> *) key tp val.
IsParser p (GenToken key tp val) =>
tp -> val -> p (val, Pos)
pValToken EnumValToken
TkTextln String
"<line>"
pIntegerPos :: forall (p :: * -> *). IsParser p Token => p (String, Pos)
pIntegerPos = p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pInteger10Pos
pString, pChar,
pInteger8, pInteger10, pInteger16, pFraction,
pVarid, pConid,
pTextnm, pTextln, pInteger, pVarsym, pConsym :: IsParser p Token => p String
pString :: forall (p :: * -> *). IsParser p Token => p String
pString = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pStringPos
pChar :: forall (p :: * -> *). IsParser p Token => p String
pChar = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pCharPos
pInteger8 :: forall (p :: * -> *). IsParser p Token => p String
pInteger8 = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pInteger8Pos
pInteger10 :: forall (p :: * -> *). IsParser p Token => p String
pInteger10 = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pInteger10Pos
pInteger16 :: forall (p :: * -> *). IsParser p Token => p String
pInteger16 = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pInteger16Pos
pFraction :: forall (p :: * -> *). IsParser p Token => p String
pFraction = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pFractionPos
pVarid :: forall (p :: * -> *). IsParser p Token => p String
pVarid = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pVaridPos
pConid :: forall (p :: * -> *). IsParser p Token => p String
pConid = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pConidPos
pVarsym :: forall (p :: * -> *). IsParser p Token => p String
pVarsym = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pVarsymPos
pConsym :: forall (p :: * -> *). IsParser p Token => p String
pConsym = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pConsymPos
pTextnm :: forall (p :: * -> *). IsParser p Token => p String
pTextnm = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pTextnmPos
pTextln :: forall (p :: * -> *). IsParser p Token => p String
pTextln = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pTextlnPos
pInteger :: forall (p :: * -> *). IsParser p Token => p String
pInteger = (String, Pos) -> String
forall a b. (a, b) -> a
fst ((String, Pos) -> String) -> p (String, Pos) -> p String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> p (String, Pos)
forall (p :: * -> *). IsParser p Token => p (String, Pos)
pIntegerPos
pComma, pSemi, pOParen, pCParen, pOBrack, pCBrack, pOCurly, pCCurly
:: IsParser p Token => p String
pComma :: forall (p :: * -> *). IsParser p Token => p String
pComma = Char -> p String
forall (p :: * -> *). IsParser p Token => Char -> p String
pSpec Char
','
pSemi :: forall (p :: * -> *). IsParser p Token => p String
pSemi = Char -> p String
forall (p :: * -> *). IsParser p Token => Char -> p String
pSpec Char
';'
pOParen :: forall (p :: * -> *). IsParser p Token => p String
pOParen = Char -> p String
forall (p :: * -> *). IsParser p Token => Char -> p String
pSpec Char
'('
pCParen :: forall (p :: * -> *). IsParser p Token => p String
pCParen = Char -> p String
forall (p :: * -> *). IsParser p Token => Char -> p String
pSpec Char
')'
pOBrack :: forall (p :: * -> *). IsParser p Token => p String
pOBrack = Char -> p String
forall (p :: * -> *). IsParser p Token => Char -> p String
pSpec Char
'['
pCBrack :: forall (p :: * -> *). IsParser p Token => p String
pCBrack = Char -> p String
forall (p :: * -> *). IsParser p Token => Char -> p String
pSpec Char
']'
pOCurly :: forall (p :: * -> *). IsParser p Token => p String
pOCurly = Char -> p String
forall (p :: * -> *). IsParser p Token => Char -> p String
pSpec Char
'{'
pCCurly :: forall (p :: * -> *). IsParser p Token => p String
pCCurly = Char -> p String
forall (p :: * -> *). IsParser p Token => Char -> p String
pSpec Char
'}'
pCommaPos, pSemiPos, pOParenPos, pCParenPos, pOBrackPos, pCBrackPos, pOCurlyPos, pCCurlyPos
:: IsParser p Token => p Pos
pCommaPos :: forall (p :: * -> *). IsParser p Token => p Pos
pCommaPos = Char -> p Pos
forall (p :: * -> *). IsParser p Token => Char -> p Pos
pSpecPos Char
','
pSemiPos :: forall (p :: * -> *). IsParser p Token => p Pos
pSemiPos = Char -> p Pos
forall (p :: * -> *). IsParser p Token => Char -> p Pos
pSpecPos Char
';'
pOParenPos :: forall (p :: * -> *). IsParser p Token => p Pos
pOParenPos = Char -> p Pos
forall (p :: * -> *). IsParser p Token => Char -> p Pos
pSpecPos Char
'('
pCParenPos :: forall (p :: * -> *). IsParser p Token => p Pos
pCParenPos = Char -> p Pos
forall (p :: * -> *). IsParser p Token => Char -> p Pos
pSpecPos Char
')'
pOBrackPos :: forall (p :: * -> *). IsParser p Token => p Pos
pOBrackPos = Char -> p Pos
forall (p :: * -> *). IsParser p Token => Char -> p Pos
pSpecPos Char
'['
pCBrackPos :: forall (p :: * -> *). IsParser p Token => p Pos
pCBrackPos = Char -> p Pos
forall (p :: * -> *). IsParser p Token => Char -> p Pos
pSpecPos Char
']'
pOCurlyPos :: forall (p :: * -> *). IsParser p Token => p Pos
pOCurlyPos = Char -> p Pos
forall (p :: * -> *). IsParser p Token => Char -> p Pos
pSpecPos Char
'{'
pCCurlyPos :: forall (p :: * -> *). IsParser p Token => p Pos
pCCurlyPos = Char -> p Pos
forall (p :: * -> *). IsParser p Token => Char -> p Pos
pSpecPos Char
'}'
pCommas :: IsParser p Token => p a -> p [a]
pSemics :: IsParser p Token => p a -> p [a]
pParens :: IsParser p Token => p a -> p a
pBracks :: IsParser p Token => p a -> p a
pCurly :: IsParser p Token => p a -> p a
pCommas :: forall (p :: * -> *) a. IsParser p Token => p a -> p [a]
pCommas = p String -> p a -> p [a]
forall (p :: * -> *) s a a1. IsParser p s => p a -> p a1 -> p [a1]
pListSep p String
forall (p :: * -> *). IsParser p Token => p String
pComma
pSemics :: forall (p :: * -> *) a. IsParser p Token => p a -> p [a]
pSemics = p String -> p a -> p [a]
forall (p :: * -> *) s a a1. IsParser p s => p a -> p a1 -> p [a1]
pListSep p String
forall (p :: * -> *). IsParser p Token => p String
pSemi
pParens :: forall (p :: * -> *) a. IsParser p Token => p a -> p a
pParens = p String -> p String -> p a -> p a
forall (p :: * -> *) s a b1 b.
IsParser p s =>
p a -> p b1 -> p b -> p b
pPacked p String
forall (p :: * -> *). IsParser p Token => p String
pOParen p String
forall (p :: * -> *). IsParser p Token => p String
pCParen
pBracks :: forall (p :: * -> *) a. IsParser p Token => p a -> p a
pBracks = p String -> p String -> p a -> p a
forall (p :: * -> *) s a b1 b.
IsParser p s =>
p a -> p b1 -> p b -> p b
pPacked p String
forall (p :: * -> *). IsParser p Token => p String
pOBrack p String
forall (p :: * -> *). IsParser p Token => p String
pCBrack
pCurly :: forall (p :: * -> *) a. IsParser p Token => p a -> p a
pCurly = p String -> p String -> p a -> p a
forall (p :: * -> *) s a b1 b.
IsParser p s =>
p a -> p b1 -> p b -> p b
pPacked p String
forall (p :: * -> *). IsParser p Token => p String
pOCurly p String
forall (p :: * -> *). IsParser p Token => p String
pCCurly
pParens_pCommas :: IsParser p Token => p a -> p [a]
pBracks_pCommas :: IsParser p Token => p a -> p [a]
pCurly_pSemics :: IsParser p Token => p a -> p [a]
pParens_pCommas :: forall (p :: * -> *) a. IsParser p Token => p a -> p [a]
pParens_pCommas = p [a] -> p [a]
forall (p :: * -> *) a. IsParser p Token => p a -> p a
pParens(p [a] -> p [a]) -> (p a -> p [a]) -> p a -> p [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.p a -> p [a]
forall (p :: * -> *) a. IsParser p Token => p a -> p [a]
pCommas
pBracks_pCommas :: forall (p :: * -> *) a. IsParser p Token => p a -> p [a]
pBracks_pCommas = p [a] -> p [a]
forall (p :: * -> *) a. IsParser p Token => p a -> p a
pBracks(p [a] -> p [a]) -> (p a -> p [a]) -> p a -> p [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.p a -> p [a]
forall (p :: * -> *) a. IsParser p Token => p a -> p [a]
pCommas
pCurly_pSemics :: forall (p :: * -> *) a. IsParser p Token => p a -> p [a]
pCurly_pSemics = p [a] -> p [a]
forall (p :: * -> *) a. IsParser p Token => p a -> p a
pCurly (p [a] -> p [a]) -> (p a -> p [a]) -> p a -> p [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.p a -> p [a]
forall (p :: * -> *) a. IsParser p Token => p a -> p [a]
pSemics