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.

50 lines
839 B

  1. module Presyntax.Tokens where
  2. import Data.Text (Text)
  3. import qualified Data.Text as T
  4. data TokenClass
  5. = TokVar Text
  6. | TokEof
  7. | TokLambda
  8. | TokArrow
  9. | TokOParen
  10. | TokOBrace
  11. | TokCParen
  12. | TokCBrace
  13. | TokStar
  14. | TokColon
  15. | TokEqual
  16. | TokComma
  17. | TokPi1
  18. | TokPi2
  19. | TokSemi
  20. deriving (Eq, Show, Ord)
  21. tokSize :: TokenClass -> Int
  22. tokSize (TokVar x) = T.length x
  23. tokSize TokEof = 0
  24. tokSize TokLambda = 1
  25. tokSize TokOParen = 1
  26. tokSize TokOBrace = 1
  27. tokSize TokCBrace = 1
  28. tokSize TokCParen = 1
  29. tokSize TokStar = 1
  30. tokSize TokColon = 1
  31. tokSize TokEqual = 1
  32. tokSize TokComma = 1
  33. tokSize TokSemi = 1
  34. tokSize TokArrow = 2
  35. tokSize TokPi1 = 2
  36. tokSize TokPi2 = 2
  37. data Token
  38. = Token { tokenClass :: TokenClass
  39. , tokStartLine :: !Int
  40. , tokStartCol :: !Int
  41. }
  42. deriving (Eq, Show, Ord)