UNPKG

calcium-lang

Version:
27 lines 986 B
import { Kind } from "../runtime/block"; import { InvalidBreak } from "../error"; /** * break a loop */ export default class Break { constructor() { } execute(env) { while (true) { const block = env.blocks.pop(); if ((block === null || block === void 0 ? void 0 : block.kind) === Kind.While || (block === null || block === void 0 ? void 0 : block.kind) === Kind.ForRange || (block === null || block === void 0 ? void 0 : block.kind) === Kind.ForEach) { env.address.shift(-1); break; } else if ((block === null || block === void 0 ? void 0 : block.kind) === Kind.Ifs || (block === null || block === void 0 ? void 0 : block.kind) === Kind.IfElifElse) { env.address.shift(-1); continue; } else { throw new InvalidBreak(); } } } } //# sourceMappingURL=break.js.map