61 lines
941 B
TypeScript
61 lines
941 B
TypeScript
// SPDX-FileCopyrightText: 2022 Johannes Loher
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
export type Token = TokenWithSymbol | TokenWithoutSymbol;
|
|
|
|
export interface TokenWithSymbol {
|
|
type: TypeWithSymbol;
|
|
symbol: string;
|
|
pos: number;
|
|
}
|
|
|
|
interface TokenWithoutSymbol {
|
|
type: TypeWithoutSymbol;
|
|
pos: number;
|
|
}
|
|
|
|
type TypeWithSymbol = "iden" | "number" | "string";
|
|
|
|
type TypeWithoutSymbol =
|
|
| "+"
|
|
| "-"
|
|
| "*"
|
|
| "**"
|
|
| "/"
|
|
| "%"
|
|
| "==="
|
|
| "!=="
|
|
| "=="
|
|
| "!="
|
|
| "<"
|
|
| "<="
|
|
| ">"
|
|
| ">="
|
|
| "&&"
|
|
| "||"
|
|
| "&"
|
|
| "|"
|
|
| "~"
|
|
| "^"
|
|
| "<<"
|
|
| ">>"
|
|
| ">>>"
|
|
| "."
|
|
| "?."
|
|
| "??"
|
|
| "!"
|
|
| "?"
|
|
| ":"
|
|
| "("
|
|
| ")"
|
|
| "["
|
|
| "]"
|
|
| ","
|
|
| "{"
|
|
| "}"
|
|
| "invalid"
|
|
| "eof";
|
|
|
|
export const literals = ["true", "false", "null", "undefined"];
|
|
export const safeOperators = ["in", "instanceof", "typeof", "void"];
|