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 :: (TokenPosn -> [CommentAnnotation] -> Token)
-> TokenPosn -> Int -> String -> m Token
symbolToken mkToken :: TokenPosn -> [CommentAnnotation] -> Token
mkToken location :: TokenPosn
location _ _ = Token -> m Token
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 :: (TokenPosn -> String -> Token)
-> TokenPosn -> Int -> String -> m Token
mkString toToken :: TokenPosn -> String -> Token
toToken loc :: TokenPosn
loc len :: Int
len str :: String
str = Token -> m Token
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' :: (TokenPosn -> String -> [CommentAnnotation] -> Token)
-> TokenPosn -> Int -> String -> m Token
mkString' toToken :: TokenPosn -> String -> [CommentAnnotation] -> Token
toToken loc :: TokenPosn
loc len :: Int
len str :: String
str = Token -> m Token
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 loc :: TokenPosn
loc str :: String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
DecimalToken TokenPosn
loc String
str []
hexIntegerToken :: TokenPosn -> String -> Token
hexIntegerToken :: TokenPosn -> String -> Token
hexIntegerToken loc :: TokenPosn
loc str :: String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
HexIntegerToken TokenPosn
loc String
str []
octalToken :: TokenPosn -> String -> Token
octalToken :: TokenPosn -> String -> Token
octalToken loc :: TokenPosn
loc str :: String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
OctalToken TokenPosn
loc String
str []
regExToken :: TokenPosn -> String -> Token
regExToken :: TokenPosn -> String -> Token
regExToken loc :: TokenPosn
loc str :: String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
RegExToken TokenPosn
loc String
str []
stringToken :: TokenPosn -> String -> Token
stringToken :: TokenPosn -> String -> Token
stringToken loc :: TokenPosn
loc str :: String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
StringToken TokenPosn
loc String
str []
commentToken :: TokenPosn -> String -> Token
loc :: TokenPosn
loc str :: String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
CommentToken TokenPosn
loc String
str []
wsToken :: TokenPosn -> String -> Token
wsToken :: TokenPosn -> String -> Token
wsToken loc :: TokenPosn
loc str :: String
str = TokenPosn -> String -> [CommentAnnotation] -> Token
WsToken TokenPosn
loc String
str []