UNPKG

@tsukiroku/tiny

Version:
69 lines (68 loc) 1.97 kB
import * as Tiny from '../../index'; export declare type LangObject = NumberObject | StringObject | BooleanObject | ArrayObject | ObjectObject | FunctionObject | BuiltinFunction | ReturnValue | ErrorObject | Null | Undefined | null; export declare const enum ObjectKind { NUMBER = 300, STRING = 301, BOOLEAN = 302, ARRAY = 303, OBJECT = 304, FUNCTION = 305, BUILTIN = 306, RETURN_VALUE = 307, ERROR = 308, NULL = 309, UNDEFINED = 310, DECORATOR = 311 } export declare const objectStringify: (obj: LangObject, strW?: boolean) => string; export declare const objectKindStringify: (kind: ObjectKind) => string; export interface NumberObject { value: number; kind: ObjectKind.NUMBER; } export interface BooleanObject { value: boolean; kind: ObjectKind.BOOLEAN; } export interface StringObject { value: string; kind: ObjectKind.STRING; } export interface ArrayObject { value: Array<LangObject>; kind: ObjectKind.ARRAY; } export interface ObjectObject { pairs: Map<NumberObject | StringObject, LangObject>; kind: ObjectKind.OBJECT; } export interface FunctionObject { function: Tiny.Expression; parameters: Array<Tiny.Expression>; decorator?: ObjectObject; body: Tiny.Expression; enviroment: Tiny.Enviroment; option: Tiny.Options; kind: ObjectKind.FUNCTION; } export interface BuiltinFunction { func: BuiltinFunctionType; kind: ObjectKind.BUILTIN; } export declare type BuiltinFunctionType = (parameters: Array<LangObject>, enviroment: Tiny.Enviroment, evaluator: Tiny.Evaluator, position: Tiny.Position) => LangObject; export interface ReturnValue { value: LangObject; kind: ObjectKind.RETURN_VALUE; } export interface ErrorObject { message: string; kind: ObjectKind.ERROR; line: number; column: number; } export interface Null { kind: ObjectKind.NULL; } export interface Undefined { kind: ObjectKind.UNDEFINED; }