UNPKG

hclang

Version:

Homoiconic C: Programming without a Language

104 lines 7.16 kB
import { Frame } from './frame.js'; import { FrameArray } from './frame-array.js'; import { FrameQuote } from './frame-atom.js'; import { FrameString } from './frame-string.js'; import { FrameSymbol } from './frame-symbol.js'; import { NilContext } from './meta-frame.js'; export class FrameNote extends FrameQuote { static test(data, source, sum) { const note = new FrameNote(data, source); const result = new FrameString(sum); note.set('n', result); return note; } ; static key(source, where) { return new FrameNote('!', source, where); } ; static type(source) { return new FrameNote('<>', source); } ; static index(source) { return new FrameNote('>', source); } ; static pass(source, sum) { return FrameNote.test('+', source, sum); } ; static fail(source, sum) { return FrameNote.test('-', source, sum); } ; constructor(data, source, where = Frame.nil) { super(NilContext); this.data = data; this.where = where; this.up = where; this.is.note = true; this.setLabel(data, source); this.id += this.data; } in(_contexts = [Frame.nil]) { return this; } call(argument, parameter = Frame.nil) { if (argument !== FrameSymbol.end()) { const result = this.addExtra(argument, parameter); return result; } const output = this.get(Frame.kOUT); output.call(this); output.call(FrameSymbol.end()); return this.up; } string_prefix() { return FrameNote.NOTE_BEGIN; } ; string_suffix() { return FrameNote.NOTE_END; } ; toString() { return this.string_prefix() + this.data + this.meta_string(); } setLabel(data, source) { const label = FrameNote.LABELS.en[data]; let value = new FrameString(data); let key = '!'; if (label) { key = label; value = new FrameString(source); } if (key === '!') { this.is.missing = true; } this.set(key, value); } addExtra(argument, parameter) { let extras = this.get(FrameNote.NOTE_EXTRAS); if (extras.is.missing) { extras = new FrameArray([]); this.set(FrameNote.NOTE_EXTRAS, extras); } extras.apply(argument, parameter); return this; } } FrameNote.NOTE_BEGIN = '$'; FrameNote.NOTE_END = ';'; FrameNote.NOTE_EXTRAS = '++'; FrameNote.LABELS = { en: { '!': 'name-missing', '+': 'test-pass', '-': 'test-fail', '<>': 'type-mismatch', '>': 'bounds-exceeded' } }; ; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtbm90ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtbm90ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFLNUMsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUFVO0lBZWhDLE1BQU0sQ0FBQyxJQUFJLENBQUUsSUFBWSxFQUFFLE1BQWMsRUFBRSxHQUFXO1FBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNyQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFBQSxDQUFDO0lBRUssTUFBTSxDQUFDLEdBQUcsQ0FBRSxNQUFjLEVBQUUsS0FBWTtRQUM3QyxPQUFPLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUFBLENBQUM7SUFFSyxNQUFNLENBQUMsSUFBSSxDQUFFLE1BQWM7UUFDaEMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDcEMsQ0FBQztJQUFBLENBQUM7SUFFSyxNQUFNLENB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