export function test(regexoid) { let o = regexoid(({ seq, any, rep, chars, mark, markMulti, capture, captureMulti, map, abort, }) => ( (({field, spc}) => ( field = (field => () => any( field(), captureMulti('unknownFields', rep([1,], chars.any(['a','z'],['A','Z'])), any('',seq('(',rep([],chars(c => c != ')')),')')) ), ))(field), seq( spc(), rep([], field(), any(',',';'), spc()), field(), spc() ) ))({ field: () => (any( ...['meow', 'meower', 'sigma', 'susser'] .map(k => ( seq( seq( ...[...k] .map(e => [e.toLowerCase(),e.toUpperCase()]) .map(([l,h]) => chars(e => e==l || e==h)) ), any( mark('value', true), seq('(', capture('value', rep([], chars(c => c != ')')) ) , ')') ), map(({ get, set, add }) => { let v = get('value'); if (v == 'BAD') return false; set('value'); add(k, v); }), ) )) )), spc: (lim=[]) => rep( lim, chars(c => c==' ' || c == '\t' || c == '\n' || c == '\r')) }) ))(); return [ o(` meow(sussy); Meower, meo`),o(`wer(2), meower(3), Unknownus(hmm?), meower(BAD), sigma(meo`), o(`wer)`), o('') ] }