less prototype, less bad code implementation of CCHM type theory
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

88 lines
1.4 KiB

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
| TokLet
| TokIn
| TokLStart
| TokLEnd
| TokAnd
| TokOr
| TokAs
| TokPostulate
| 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
tokSize TokLet = 3
tokSize TokIn = 2
tokSize TokLStart = 0
tokSize TokLEnd = 0
tokSize TokPostulate = length "postulate"
data Token
= Token { tokenClass :: TokenClass
, tokStartLine :: !Int
, tokStartCol :: !Int
}
deriving (Eq, Show, Ord)