token.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package mar
  2. import "strconv"
  3. // Token represents a lexical token type.
  4. type Token int
  5. const (
  6. ILLEGAL Token = iota
  7. EOF
  8. COMMENT
  9. WS
  10. IDENT // connection
  11. NULL // NULL
  12. STRING // "foo"
  13. INTEGER // 12345
  14. FLOAT // 123.45
  15. LPAREN // (
  16. RPAREN // )
  17. DOT // .
  18. COMMA // ,
  19. COLON // :
  20. HASH // #
  21. // keywords
  22. ACTION
  23. CLIENT
  24. IF
  25. END
  26. REGEX_MATCH_INCOMING
  27. SERVER
  28. START
  29. )
  30. var tokens = [...]string{
  31. ILLEGAL: "ILLEGAL",
  32. EOF: "EOF",
  33. COMMENT: "COMMENT",
  34. WS: "WS",
  35. IDENT: "IDENT",
  36. NULL: "NULL",
  37. STRING: "STRING",
  38. INTEGER: "INTEGER",
  39. FLOAT: "FLOAT",
  40. LPAREN: "(",
  41. RPAREN: ")",
  42. DOT: ".",
  43. COMMA: ",",
  44. COLON: ":",
  45. HASH: "#",
  46. ACTION: "action",
  47. CLIENT: "client",
  48. IF: "if",
  49. END: "end",
  50. REGEX_MATCH_INCOMING: "regex_match_incoming",
  51. SERVER: "server",
  52. START: "start",
  53. }
  54. func (tok Token) String() string {
  55. s := ""
  56. if 0 <= tok && tok < Token(len(tokens)) {
  57. s = tokens[tok]
  58. }
  59. if s == "" {
  60. s = "token(" + strconv.Itoa(int(tok)) + ")"
  61. }
  62. return s
  63. }