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.
|
module Presyntax.Tokens where
|
|
|
|
import Data.Text (Text)
|
|
import qualified Data.Text as T
|
|
|
|
data TokenClass
|
|
= TokVar Text
|
|
| TokEof
|
|
|
|
| TokLambda
|
|
| TokArrow
|
|
|
|
| TokOParen
|
|
| TokOBrace
|
|
| TokCParen
|
|
| TokCBrace
|
|
|
|
-- {-# #-}
|
|
| TokOPragma
|
|
| TokCPragma
|
|
|
|
| TokPrim
|
|
|
|
| TokReplLet
|
|
| TokReplT Text
|
|
|
|
| TokStar
|
|
| TokColon
|
|
| TokEqual
|
|
| TokComma
|
|
|
|
| TokPi1
|
|
| TokPi2
|
|
|
|
| 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 TokCBrace = 1
|
|
tokSize TokCParen = 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 (TokReplT s) = T.length s
|
|
|
|
data Token
|
|
= Token { tokenClass :: TokenClass
|
|
, tokStartLine :: !Int
|
|
, tokStartCol :: !Int
|
|
}
|
|
deriving (Eq, Show, Ord)
|