import { Pos } from "./Token.ts"; export type Output = { program: Program; sourceMap: SourceMapping[]; }; export type Program = Ins[]; export type Ins = Ops | number; export type SourceMapping = { bytecodeOffset: number; pos: Pos; }; // NOTICE: keep up to date with runtime/arch.hpp export type Ops = typeof Ops; export const Ops = { Nop: 0, PushNull: 1, PushInt: 2, PushBool: 3, PushString: 4, PushPtr: 5, Pop: 6, LoadLocal: 7, StoreLocal: 8, Call: 9, Return: 10, Jump: 11, JumpIfTrue: 12, Add: 13, Subtract: 14, Multiply: 15, Divide: 16, Remainder: 17, Equal: 18, LessThan: 19, And: 20, Or: 21, Xor: 22, Not: 23, } as const;