hclang
Version:
Homoiconic C: Programming without a Language
34 lines • 2.75 kB
JavaScript
import { Frame } from './frame.js';
import { FrameList } from './frame-list.js';
import { NilContext } from './meta-frame.js';
export class FrameExpr extends FrameList {
constructor(data, meta = NilContext) {
super(data, meta);
data.forEach((item) => {
item.up = this;
});
}
in(contexts = [Frame.nil]) {
contexts.push(this);
const result = this.data.reduce((sum, item) => {
const value = item.in(contexts);
const next_sum = sum.call(value);
return next_sum;
}, Frame.nil);
if (this.is.statement) {
this.data = [result];
return this;
}
return result;
}
call(argument, parameter = Frame.nil) {
return this.in([argument, parameter]);
}
;
toStringDataArray() {
const array = this.data.map((obj) => obj.toString());
return [array.join(' ') + ','];
}
}
;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtZXhwci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtZXhwci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFNUMsTUFBTSxPQUFPLFNBQVUsU0FBUSxTQUFTO0lBQ3RDLFlBQWEsSUFBa0IsRUFBRSxJQUFJLEdBQUcsVUFBVTtRQUNoRCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxFQUFFLENBQUUsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBVSxFQUFFLElBQVcsRUFBRSxFQUFFO1lBQzFELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDL0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxPQUFPLFFBQVEsQ0FBQTtRQUNqQixDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRWIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDcEIsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVNLElBQUksQ0FBRSxRQUFlLEVBQUUsU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFBQSxDQUFDO0lBRUssaUJBQWlCO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUMzRCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0NBQ0Y7QUFBQSxDQUFDIn0=