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.

95 lines
1.5 KiB

  1. module Presyntax.Tokens where
  2. import qualified Data.Text as T
  3. import Data.Text (Text)
  4. data TokenClass
  5. = TokVar Text
  6. | TokEof
  7. | TokLambda
  8. | TokArrow
  9. | TokOParen
  10. | TokOBrace
  11. | TokOSquare
  12. | TokCParen
  13. | TokCBrace
  14. | TokCSquare
  15. -- {-# #-}
  16. | TokOPragma
  17. | TokCPragma
  18. | TokPrim
  19. | TokReplLet
  20. | TokReplT Text
  21. | TokStar
  22. | TokColon
  23. | TokEqual
  24. | TokComma
  25. | TokPi1
  26. | TokPi2
  27. | TokLet
  28. | TokIn
  29. | TokLStart
  30. | TokLEnd
  31. | TokAnd
  32. | TokOr
  33. | TokAs
  34. | TokWhere
  35. | TokCase
  36. | TokPostulate
  37. | TokData
  38. | TokSemi
  39. deriving (Eq, Show, Ord)
  40. tokSize :: TokenClass -> Int
  41. tokSize (TokVar x) = T.length x
  42. tokSize TokEof = 0
  43. tokSize TokLambda = 1
  44. tokSize TokOParen = 1
  45. tokSize TokOBrace = 1
  46. tokSize TokOSquare = 1
  47. tokSize TokCBrace = 1
  48. tokSize TokCParen = 1
  49. tokSize TokCSquare = 1
  50. tokSize TokCPragma = 3
  51. tokSize TokOPragma = 3
  52. tokSize TokPrim = length "PRIMITIVE"
  53. tokSize TokStar = 1
  54. tokSize TokColon = 1
  55. tokSize TokEqual = 1
  56. tokSize TokComma = 1
  57. tokSize TokSemi = 1
  58. tokSize TokArrow = 2
  59. tokSize TokPi1 = 2
  60. tokSize TokPi2 = 2
  61. tokSize TokReplLet = 4
  62. tokSize TokAnd = 2
  63. tokSize TokOr = 2
  64. tokSize TokAs = 2
  65. tokSize (TokReplT s) = T.length s
  66. tokSize TokLet = 3
  67. tokSize TokIn = 2
  68. tokSize TokLStart = 0
  69. tokSize TokLEnd = 0
  70. tokSize TokWhere = length "where"
  71. tokSize TokData = length "data"
  72. tokSize TokCase = length "case"
  73. tokSize TokPostulate = length "postulate"
  74. data Token
  75. = Token { tokenClass :: TokenClass
  76. , tokStartLine :: !Int
  77. , tokStartCol :: !Int
  78. }
  79. deriving (Eq, Show, Ord)