ds4/src/expression-evaluation/grammar.ts

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"];