Skip to content

Instantly share code, notes, and snippets.

View conartist6's full-sized avatar

Conrad Buck conartist6

View GitHub Profile
@conartist6
conartist6 / index.js
Last active July 23, 2024 03:02
BABLR for globbing mockup (public domain)
import { test as nonbacktrackingTest } from '@bablr/regex-vm';
import * as bablrLanguage from '@bablr/language-regex-vm-pattern';
import { buildTag } from 'bablr';
import { printCSTML } from '@bablr/agast-helpers/tree';
const re = buildTag(bablrLanguage, 'Pattern');
const weakMemo = (fn) => {
const cache = new WeakMap();
return (arg) => {
@conartist6
conartist6 / index.cstml
Last active July 25, 2024 21:12
Lithuanian CSTML for [1, 2, 3] courtesy of auris
<!0:cstml bablr-language='https://github.com/bablr-lang/language-json'>
<>
<Masyvas>
atidarymoŽymė:
<~*SkiriamasisŽenklas '[' atitinkantis=']' />
<#*Tarpas:Tarpas>
'\n '
</>
elementai[]:
<Skaičius apimtis='Skaičius'>
@conartist6
conartist6 / 01.index.js
Last active May 20, 2024 02:51
Concurrent buffering
// Utils
const buildDeferred = () => {
const d = {};
d.promise = new Promise((resolve, reject) => {
d.resolve = resolve;
d.reject = reject;
});
return d;
}
@conartist6
conartist6 / index.js
Created May 11, 2024 15:23
StreamIterable
export const getStreamIterator = (obj) => {
return obj[Symbol.for('@@streamIterator')]?.() || obj[Symbol.iterator]?.();
};
export class SyncGenerator {
constructor(embeddedGenerator) {
if (!embeddedGenerator.next) throw new Error();
this.generator = embeddedGenerator;
@conartist6
conartist6 / index.js
Last active May 3, 2024 14:48
Recursive generator VM example
const arrayLast = arr => arr[arr.length - 1];
const { toString } = Object.prototype;
const isGenerator = val => toString.call(val) === '[object Generator]';
const cache = new Map();
function *fibonacci(n) {
let value;
if (cache.has(n)) return cache.get(n);
@conartist6
conartist6 / 01.formatted.log
Created April 14, 2024 13:22
CSTML input stream processing
conartist6@hq bablr-cli % echo '"eat()"' | node bin/index.js -l @bablr/language-bablr-vm-instruction -p Call -f
<!cstml 'https://github.com/bablr-lang/language-bablr-vm-instruction'>
<>
<Call>
callee:
<*Identifier>
'eat'
</>
arguments:
<Tuple>
@conartist6
conartist6 / 01.script.js
Last active April 9, 2024 15:53
Successful BABLR template tag embedding
import * as language from '@bablr/language-cstml';
import { buildTag } from 'bablr/enhanceable';
const cstml = buildTag(language, 'Expression');
const tree = cstml`<> ${cstml`<*Word>${cstml`'ok'`}</>`} </>`;
@conartist6
conartist6 / 01.input.cstml
Last active April 1, 2024 17:28
Successful BABLR VM run with language embedding
<> </>
Input: `<> </>`
@conartist6
conartist6 / 0.input.cstml
Last active March 14, 2024 03:56
BABLR two-VM parse log
<></>