Skip to main content

src/webql/compiler/lexer/token.gleam

import webql/compiler/lexer/diagnostic
import webql/compiler/source

pub type TokenKind {
  // ========== LITERALS ==========
  Name
  Int
  Float
  String
  CommentSingle

  // ========= GROUPINGS ==========
  LParen
  RParen
  LBrace
  RBrace
  LSquare
  RSquare

  // ======== PUNCTUATION =========
  Colon
  Comma
  Equal
  RArrow
  Dot

  // ======== IDENTIFIERS =========
  UpperIdentifier
  LowerIdentifier

  // ========== SPACING ===========
  Space
  EOF

  // ========= UNSTRICT ===========
  Diagnostic(kind: diagnostic.DiagnosticKind)
}

pub type Token {
  Token(kind: TokenKind, span: source.Span)
}