- module Presyntax.Tokens where
-
- import qualified Data.Text as T
- import Data.Text (Text)
-
- data TokenClass
- = TokVar Text
- | TokEof
-
- | TokLambda
- | TokArrow
-
- | TokOParen
- | TokOBrace
- | TokOSquare
-
- | TokCParen
- | TokCBrace
- | TokCSquare
-
- -- {-# #-}
- | TokOPragma
- | TokCPragma
-
- | TokPrim
-
- | TokReplLet
- | TokReplT Text
-
- | TokStar
- | TokColon
- | TokEqual
- | TokComma
-
- | TokPi1
- | TokPi2
-
- | TokAnd
- | TokOr
-
- | TokAs
-
- | TokSemi
- deriving (Eq, Show, Ord)
-
- tokSize :: TokenClass -> Int
- tokSize (TokVar x) = T.length x
- tokSize TokEof = 0
- tokSize TokLambda = 1
- tokSize TokOParen = 1
- tokSize TokOBrace = 1
- tokSize TokOSquare = 1
- tokSize TokCBrace = 1
- tokSize TokCParen = 1
- tokSize TokCSquare = 1
- tokSize TokCPragma = 3
- tokSize TokOPragma = 3
- tokSize TokPrim = length "PRIMITIVE"
- tokSize TokStar = 1
- tokSize TokColon = 1
- tokSize TokEqual = 1
- tokSize TokComma = 1
- tokSize TokSemi = 1
- tokSize TokArrow = 2
- tokSize TokPi1 = 2
- tokSize TokPi2 = 2
- tokSize TokReplLet = 4
- tokSize TokAnd = 2
- tokSize TokOr = 2
- tokSize TokAs = 2
- tokSize (TokReplT s) = T.length s
-
- data Token
- = Token { tokenClass :: TokenClass
- , tokStartLine :: !Int
- , tokStartCol :: !Int
- }
- deriving (Eq, Show, Ord)
|