hclang
Version:
Homoiconic C: Programming without a Language
24 lines • 1.76 kB
JavaScript
import { Frame, FrameString } from '../frames.js';
import { getSyntax } from './syntax.js';
export class Lexer extends Frame {
constructor(out) {
const syntax = getSyntax();
syntax[Lexer.kOUT] = out;
super(syntax);
}
lex_string(input) {
const source = new FrameString(input);
return this.lex(source);
}
lex(source) {
return source.reduce(this);
}
fold(argument) {
const out = this.get(Frame.kOUT);
this.set(Frame.kOUT, out.call(argument));
}
finish(_options) {
return Frame.nil;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV4ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXhlY3V0ZS9sZXhlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBSXZDLE1BQU0sT0FBTyxLQUFNLFNBQVEsS0FBSztJQUM5QixZQUFhLEdBQVU7UUFDckIsTUFBTSxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUE7UUFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUE7UUFDeEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2YsQ0FBQztJQUVNLFVBQVUsQ0FBRSxLQUFhO1FBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRU0sR0FBRyxDQUFFLE1BQW1CO1FBQzdCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM1QixDQUFDO0lBRU0sSUFBSSxDQUFFLFFBQWU7UUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBRU0sTUFBTSxDQUFFLFFBQW9CO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQTtJQUNsQixDQUFDO0NBQ0YifQ==