UNPKG

hclang

Version:

Homoiconic C: Programming without a Language

45 lines 3.23 kB
import { Frame } from './frame.js'; import { FrameAtom } from './frame-atom.js'; import { FrameNote } from './frame-note.js'; import { FrameSymbol } from './frame-symbol.js'; import { NilContext } from './meta-frame.js'; export class FrameAlias extends FrameAtom { constructor(source, meta = NilContext) { super(meta); this.data = FrameSymbol.for(source); } in(contexts = [Frame.nil]) { const key = this.data.toString(); for (const context of contexts) { const out = this.find(context, key); if (out !== Frame.nil) { const setter = this.data.setter(out); return setter; } } return FrameNote.key(key, this); } string_prefix() { return FrameAlias.ALIAS_BEGIN; } ; canInclude(char) { return FrameSymbol.SYMBOL_CHAR.test(char); } toData() { return this.data; } find(context, key) { while (context !== Frame.missing) { const here = context.get_here(key); if (!here.is.missing) { return context; } context = context.up; } return Frame.nil; } } FrameAlias.ALIAS_BEGIN = '@'; ; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJhbWVzL2ZyYW1lLWFsaWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTVDLE1BQU0sT0FBTyxVQUFXLFNBQVEsU0FBUztJQUt2QyxZQUFhLE1BQWMsRUFBRSxJQUFJLEdBQUcsVUFBVTtRQUM1QyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVNLEVBQUUsQ0FBRSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDaEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDbkMsSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3BDLE9BQU8sTUFBTSxDQUFBO2FBQ2Q7U0FDRjtRQUNELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFBO0lBQy9CLENBQUM7SUFBQSxDQUFDO0lBRUssVUFBVSxDQUFFLElBQVk7UUFDN0IsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRVMsTUFBTTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRVMsSUFBSSxDQUFFLE9BQWMsRUFBRSxHQUFXO1FBQ3pDLE9BQU8sT0FBTyxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BCLE9BQU8sT0FBTyxDQUFBO2FBQ2Y7WUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQTtTQUNyQjtRQUNELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQTtJQUNsQixDQUFDOztBQTFDc0Isc0JBQVcsR0FBRyxHQUFHLENBQUE7QUEyQ3pDLENBQUMifQ==