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.

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