import type { UserDefinedFunction } from '../types.js' export interface ParserState { tokens: Token[] pos: number lastPos: number functions?: Record } // Tokenizer types export type TokenType = | 'keyword' | 'identifier' | 'number' | 'string' | 'operator' | 'comma' | 'dot' | 'paren' | 'bracket' | 'semicolon' | 'eof' export interface Token { type: TokenType value: string numericValue?: number | bigint // only for type number originalValue?: string // keywords are uppercased, this keeps the original case positionStart: number positionEnd: number }