53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import type { HasLocs } from "./loc";
|
|
export interface Comment extends HasLocs {
|
|
type: "Block";
|
|
value: string;
|
|
}
|
|
export type TokenType = "Punctuator" | "Bare" | "BasicString" | "MultiLineBasicString" | "LiteralString" | "MultiLineLiteralString" | "Integer" | "Float" | "Boolean" | "OffsetDateTime" | "LocalDateTime" | "LocalDate" | "LocalTime";
|
|
interface BaseTOMLToken extends HasLocs {
|
|
type: TokenType;
|
|
value: string;
|
|
}
|
|
export type Token = PunctuatorToken | BareToken | StringToken | MultiLineStringToken | NumberToken | BooleanToken | DateTimeToken;
|
|
export interface PunctuatorToken extends BaseTOMLToken {
|
|
type: "Punctuator";
|
|
value: string;
|
|
}
|
|
export interface BareToken extends BaseTOMLToken {
|
|
type: "Bare";
|
|
value: string;
|
|
}
|
|
export interface StringToken extends BaseTOMLToken {
|
|
type: "BasicString" | "LiteralString";
|
|
value: string;
|
|
string: string;
|
|
}
|
|
export interface MultiLineStringToken extends BaseTOMLToken {
|
|
type: "MultiLineBasicString" | "MultiLineLiteralString";
|
|
value: string;
|
|
string: string;
|
|
}
|
|
export interface IntegerToken extends BaseTOMLToken {
|
|
type: "Integer";
|
|
value: string;
|
|
number: number;
|
|
bigint: bigint;
|
|
}
|
|
export interface FloatToken extends BaseTOMLToken {
|
|
type: "Float";
|
|
value: string;
|
|
number: number;
|
|
}
|
|
export type NumberToken = IntegerToken | FloatToken;
|
|
export interface BooleanToken extends BaseTOMLToken {
|
|
type: "Boolean";
|
|
value: string;
|
|
boolean: boolean;
|
|
}
|
|
export interface DateTimeToken extends BaseTOMLToken {
|
|
type: "OffsetDateTime" | "LocalDateTime" | "LocalDate" | "LocalTime";
|
|
value: string;
|
|
date: Date;
|
|
}
|
|
export {};
|