forked from github/quartz
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { Span } from "./ast"
|
|
|
|
export type Operator =
|
|
| "=="
|
|
| "!="
|
|
| ">="
|
|
| "<="
|
|
| ">"
|
|
| "<"
|
|
| "&&"
|
|
| "||"
|
|
| "+"
|
|
| "-"
|
|
| "*"
|
|
| "/"
|
|
| "%"
|
|
| "!"
|
|
|
|
export type Punctuation = "." | "," | "(" | ")" | "[" | "]"
|
|
|
|
export type NumberToken = { type: "number"; value: number; span: Span }
|
|
export type StringToken = { type: "string"; value: string; span: Span }
|
|
export type BooleanToken = { type: "boolean"; value: boolean; span: Span }
|
|
export type NullToken = { type: "null"; span: Span }
|
|
export type IdentifierToken = { type: "identifier"; value: string; span: Span }
|
|
export type ThisToken = { type: "this"; span: Span }
|
|
export type OperatorToken = { type: "operator"; value: Operator; span: Span }
|
|
export type PunctuationToken = { type: "punctuation"; value: Punctuation; span: Span }
|
|
export type RegexToken = { type: "regex"; pattern: string; flags: string; span: Span }
|
|
export type EofToken = { type: "eof"; span: Span }
|
|
|
|
export type Token =
|
|
| NumberToken
|
|
| StringToken
|
|
| BooleanToken
|
|
| NullToken
|
|
| IdentifierToken
|
|
| ThisToken
|
|
| OperatorToken
|
|
| PunctuationToken
|
|
| RegexToken
|
|
| EofToken
|