module Language.JavaScript.Parser.LexerUtils
( StartCode
, symbolToken
, mkString
, mkString'
, commentToken
, wsToken
, regExToken
, decimalToken
, hexIntegerToken
, octalToken
, stringToken
) where
import Language.JavaScript.Parser.Token as Token
import Language.JavaScript.Parser.SrcLocation
import Prelude hiding (span)
type StartCode = Int
symbolToken :: Monad m => (TokenPosn -> [CommentAnnotation] -> Token) -> TokenPosn -> Int -> String -> m Token
symbolToken :: forall (m :: * -> *).
Monad m =>
(TokenPosn -> [CommentAnnotation] -> Token)
-> TokenPosn -> Int -> String -> m Token
symbolToken TokenPosn -> [CommentAnnotation] -> Token
mkToken TokenPosn
location Int
_ String
_ = Token -> m Token
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return (TokenPosn -> [CommentAnnotation] -> Token
mkToken TokenPosn
location [])
mkString :: (Monad m) => (TokenPosn -> String -> Token) -> TokenPosn -> Int -> String -> m Token
mkString :: forall (m :: * -> *).
Monad m =>
(TokenPosn -> String -> Token)
-> TokenPosn -> Int -> String -> m Token
mkString TokenPosn -> String -> Token
toToken TokenPosn
loc Int
len String
str = Token -> m Token
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return (TokenPosn -> String -> Token
toToken TokenPosn
loc (Int -> String -> String
forall a. Int -> [a] -> [a]
take Int
len String
str))
mkString' :: (Monad m) => (TokenPosn -> String -> [CommentAnnotation] -> Token) -> TokenPosn -> Int -> String -> m Token
mkString' :: forall (m :: * -> *).
Monad m =>
(TokenPosn -> String -> [CommentAnnotation] -> Token)
-> TokenPosn -> Int -> String -> m Token
mkString' TokenPosn -> String -> [CommentAnnotation] -> Token
toToken TokenPosn
loc Int
len String
str = Token -> m Token
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return (TokenPosn -> String -> [CommentAnnotation] -> Token
toToken TokenPosn
loc (Int -> String -> String
forall a. Int -> [a] -> [a]
take Int
len String
str) [])
decimalToken :: TokenPosn -> String -> Token
decimalToken :: TokenPosn -> String -> Token
decimalToken TokenPosn
loc String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
DecimalToken TokenPosn
loc String
str []
hexIntegerToken :: TokenPosn -> String -> Token
hexIntegerToken :: TokenPosn -> String -> Token
hexIntegerToken TokenPosn
loc String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
HexIntegerToken TokenPosn
loc String
str []
octalToken :: TokenPosn -> String -> Token
octalToken :: TokenPosn -> String -> Token
octalToken TokenPosn
loc String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
OctalToken TokenPosn
loc String
str []
regExToken :: TokenPosn -> String -> Token
regExToken :: TokenPosn -> String -> Token
regExToken TokenPosn
loc String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
RegExToken TokenPosn
loc String
str []
stringToken :: TokenPosn -> String -> Token
stringToken :: TokenPosn -> String -> Token
stringToken TokenPosn
loc String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
StringToken TokenPosn
loc String
str []
commentToken :: TokenPosn -> String -> Token
TokenPosn
loc String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
CommentToken TokenPosn
loc String
str []
wsToken :: TokenPosn -> String -> Token
wsToken :: TokenPosn -> String -> Token
wsToken TokenPosn
loc String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
WsToken TokenPosn
loc String
str []