hclang
Version:
Homoiconic C: Programming without a Language
36 lines • 2.38 kB
JavaScript
import * as frame from '../frames.js';
import { FrameSpace } from './frame-space.js';
import { Lex } from './lex.js';
import { terminals } from './terminals.js';
export const _syntax = Object.assign({}, terminals);
export const atomClasses = [
FrameSpace,
frame.FrameAlias,
frame.FrameArg,
frame.FrameBlob,
frame.FrameBytes,
frame.FrameComment,
frame.FrameDoc,
frame.FrameName,
frame.FrameNote,
frame.FrameNumber,
frame.FrameOperator,
frame.FrameString,
frame.FrameSymbol
];
let has_syntax = false;
export function getSyntax() {
if (has_syntax === true) {
return _syntax;
}
has_syntax = true;
atomClasses.forEach((Klass) => {
const sample = new Klass('');
const key = sample.string_start();
const lexee = new Lex(Klass);
_syntax[key] = lexee;
return true;
});
return _syntax;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGF4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2V4ZWN1dGUvc3ludGF4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUxQyxNQUFNLENBQUMsTUFBTSxPQUFPLHFCQUF1QixTQUFTLENBQUUsQ0FBQTtBQUV0RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQWlCO0lBQ3ZDLFVBQVU7SUFDVixLQUFLLENBQUMsVUFBVTtJQUNoQixLQUFLLENBQUMsUUFBUTtJQUNkLEtBQUssQ0FBQyxTQUFTO0lBQ2YsS0FBSyxDQUFDLFVBQVU7SUFDaEIsS0FBSyxDQUFDLFlBQVk7SUFDbEIsS0FBSyxDQUFDLFFBQVE7SUFDZCxLQUFLLENBQUMsU0FBUztJQUNmLEtBQUssQ0FBQyxTQUFTO0lBQ2YsS0FBSyxDQUFDLFdBQVc7SUFDakIsS0FBSyxDQUFDLGFBQWE7SUFDbkIsS0FBSyxDQUFDLFdBQVc7SUFDakIsS0FBSyxDQUFDLFdBQVc7Q0FDbEIsQ0FBQTtBQUVELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQTtBQUN0QixNQUFNLFVBQVUsU0FBUztJQUN2QixJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUU7UUFDdkIsT0FBTyxPQUFPLENBQUE7S0FDZjtJQUNELFVBQVUsR0FBRyxJQUFJLENBQUE7SUFDakIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1FBQ2pDLE1BQU0sTUFBTSxHQUFvQixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM3QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtRQUNwQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUMsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQyJ9