📄 v8-earley-boyer.js
字号:
"null": "\000", "bell": "\007", "backspace": "\010", "tab": "\011", "newline": "\012", "page": "\014", "return": "\015", "escape": "\033", "space": "\040", "delete": "\000", "soh": "\001", "stx": "\002", "etx": "\003", "eot": "\004", "enq": "\005", "ack": "\006", "bel": "\007", "bs": "\010", "ht": "\011", "nl": "\012", "vt": "\013", "np": "\014", "cr": "\015", "so": "\016", "si": "\017", "dle": "\020", "dc1": "\021", "dc2": "\022", "dc3": "\023", "dc4": "\024", "nak": "\025", "syn": "\026", "etb": "\027", "can": "\030", "em": "\031", "sub": "\032", "esc": "\033", "fs": "\034", "gs": "\035", "rs": "\036", "us": "\037", "sp": "\040", "del": "\177"}; sc_Char.prototype.toString = function() { return this.val;};// sc_toDisplayString == toStringsc_Char.prototype.sc_toWriteString = function() { var entry = sc_Char.char2readable[this.val]; if (entry) return entry; else return "#\\" + this.val;};/*** META ((export #t) (type bool) (peephole (postfix "instanceof sc_Char")))*/function sc_isChar(c) { return (c instanceof sc_Char);}/*** META ((export char=?) (type bool) (peephole (hole 2 c1 ".val === " c2 ".val")))*/var sc_isCharEqual = sc_isCharStringEqual;/*** META ((export char<?) (type bool) (peephole (hole 2 c1 ".val < " c2 ".val")))*/var sc_isCharLess = sc_isCharStringLess;/*** META ((export char>?) (type bool) (peephole (hole 2 c1 ".val > " c2 ".val")))*/var sc_isCharGreater = sc_isCharStringGreater;/*** META ((export char<=?) (type bool) (peephole (hole 2 c1 ".val <= " c2 ".val")))*/var sc_isCharLessEqual = sc_isCharStringLessEqual;/*** META ((export char>=?) (type bool) (peephole (hole 2 c1 ".val >= " c2 ".val")))*/var sc_isCharGreaterEqual = sc_isCharStringGreaterEqual;/*** META ((export char-ci=?) (type bool) (peephole (hole 2 c1 ".val.toLowerCase() === " c2 ".val.toLowerCase()")))*/var sc_isCharCIEqual = sc_isCharStringCIEqual;/*** META ((export char-ci<?) (type bool) (peephole (hole 2 c1 ".val.toLowerCase() < " c2 ".val.toLowerCase()")))*/var sc_isCharCILess = sc_isCharStringCILess;/*** META ((export char-ci>?) (type bool) (peephole (hole 2 c1 ".val.toLowerCase() > " c2 ".val.toLowerCase()")))*/var sc_isCharCIGreater = sc_isCharStringCIGreater;/*** META ((export char-ci<=?) (type bool) (peephole (hole 2 c1 ".val.toLowerCase() <= " c2 ".val.toLowerCase()")))*/var sc_isCharCILessEqual = sc_isCharStringCILessEqual;/*** META ((export char-ci>=?) (type bool) (peephole (hole 2 c1 ".val.toLowerCase() >= " c2 ".val.toLowerCase()")))*/var sc_isCharCIGreaterEqual = sc_isCharStringCIGreaterEqual;var SC_NUMBER_CLASS = "0123456789";var SC_WHITESPACE_CLASS = ' \r\n\t\f';var SC_LOWER_CLASS = 'abcdefghijklmnopqrstuvwxyz';var SC_UPPER_CLASS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';function sc_isCharOfClass(c, cl) { return (cl.indexOf(c) != -1); }/*** META ((export #t) (type bool))*/function sc_isCharAlphabetic(c) { return sc_isCharOfClass(c.val, SC_LOWER_CLASS) || sc_isCharOfClass(c.val, SC_UPPER_CLASS); }/*** META ((export #t) (type bool) (peephole (hole 1 "SC_NUMBER_CLASS.indexOf(" c ".val) != -1")))*/function sc_isCharNumeric(c) { return sc_isCharOfClass(c.val, SC_NUMBER_CLASS); }/*** META ((export #t) (type bool))*/function sc_isCharWhitespace(c) { var tmp = c.val; return tmp === " " || tmp === "\r" || tmp === "\n" || tmp === "\t" || tmp === "\f";}/*** META ((export #t) (type bool) (peephole (hole 1 "SC_UPPER_CLASS.indexOf(" c ".val) != -1")))*/function sc_isCharUpperCase(c) { return sc_isCharOfClass(c.val, SC_UPPER_CLASS); }/*** META ((export #t) (type bool) (peephole (hole 1 "SC_LOWER_CLASS.indexOf(" c ".val) != -1")))*/function sc_isCharLowerCase(c) { return sc_isCharOfClass(c.val, SC_LOWER_CLASS); }/*** META ((export #t) (peephole (postfix ".val.charCodeAt(0)")))*/function sc_char2integer(c) { return c.val.charCodeAt(0); }/*** META ((export #t) (peephole (hole 1 "new sc_Char(String.fromCharCode(" n "))")))*/function sc_integer2char(n) { return new sc_Char(String.fromCharCode(n)); }/*** META ((export #t) (peephole (hole 1 "new sc_Char(" c ".val.toUpperCase())")))*/function sc_charUpcase(c) { return new sc_Char(c.val.toUpperCase()); }/*** META ((export #t) (peephole (hole 1 "new sc_Char(" c ".val.toLowerCase())")))*/function sc_charDowncase(c) { return new sc_Char(c.val.toLowerCase()); }function sc_makeJSStringOfLength(k, c) { var fill; if (c === undefined) fill = " "; else fill = c; var res = ""; var len = 1; // every round doubles the size of fill. while (k >= len) { if (k & len) res = res.concat(fill); fill = fill.concat(fill); len *= 2; } return res;}function sc_makejsString(k, c) { var fill; if (c) fill = c.val; else fill = " "; return sc_makeJSStringOfLength(k, fill);}function sc_jsstring2list(s) { var res = null; for (var i = s.length - 1; i >= 0; i--) res = sc_cons(new sc_Char(s.charAt(i)), res); return res;}function sc_list2jsstring(l) { var a = new Array(); while(l !== null) { a.push(l.car.val); l = l.cdr; } return "".concat.apply("", a);}var sc_Vector = Array;sc_Vector.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) { if (this.length === 0) return "#()"; var res = "#(" + writeOrDisplay(this[0]); for (var i = 1; i < this.length; i++) res += " " + writeOrDisplay(this[i]); res += ")"; return res;};sc_Vector.prototype.sc_toDisplayString = function() { return this.sc_toWriteOrDisplayString(sc_toDisplayString);};sc_Vector.prototype.sc_toWriteString = function() { return this.sc_toWriteOrDisplayString(sc_toWriteString);};/*** META ((export vector? array?) (type bool) (peephole (postfix " instanceof sc_Vector")))*/function sc_isVector(v) { return (v instanceof sc_Vector);}// only applies to vectorsfunction sc_isVectorEqual(v1, v2, comp) { if (v1.length !== v2.length) return false; for (var i = 0; i < v1.length; i++) if (!comp(v1[i], v2[i])) return false; return true;}/*** META ((export make-vector make-array)) */function sc_makeVector(size, fill) { var a = new sc_Vector(size); if (fill !== undefined) sc_vectorFillBang(a, fill); return a;}/*** META ((export vector array) (peephole (vector)))*/function sc_vector() { var a = new sc_Vector(); for (var i = 0; i < arguments.length; i++) a.push(arguments[i]); return a;}/*** META ((export vector-length array-length) (peephole (postfix ".length")))*/function sc_vectorLength(v) { return v.length;}/*** META ((export vector-ref array-ref) (peephole (hole 2 v "[" pos "]")))*/function sc_vectorRef(v, pos) { return v[pos];}/*** META ((export vector-set! array-set!) (peephole (hole 3 v "[" pos "] = " val)))*/function sc_vectorSetBang(v, pos, val) { v[pos] = val;}/*** META ((export vector->list array->list)) */function sc_vector2list(a) { var res = null; for (var i = a.length-1; i >= 0; i--) res = sc_cons(a[i], res); return res;}/*** META ((export list->vector list->array)) */function sc_list2vector(l) { var a = new sc_Vector(); while(l !== null) { a.push(l.car); l = l.cdr; } return a;}/*** META ((export vector-fill! array-fill!)) */function sc_vectorFillBang(a, fill) { for (var i = 0; i < a.length; i++) a[i] = fill;}/*** META ((export #t)) */function sc_copyVector(a, len) { if (len <= a.length) return a.slice(0, len); else { var tmp = a.concat(); tmp.length = len; return tmp; }}/*** META ((export #t) (peephole (hole 3 a ".slice(" start "," end ")")))*/function sc_vectorCopy(a, start, end) { return a.slice(start, end);}/*** META ((export #t)) */function sc_vectorCopyBang(target, tstart, source, sstart, send) { if (!sstart) sstart = 0; if (!send) send = source.length; // if target == source we don't want to overwrite not yet copied elements. if (tstart <= sstart) { for (var i = tstart, j = sstart; j < send; i++, j++) { target[i] = source[j]; } } else { var diff = send - sstart; for (var i = tstart + diff - 1, j = send - 1; j >= sstart; i--, j--) { target[i] = source[j]; } } return target;}/*** META ((export #t) (type bool) (peephole (hole 1 "typeof " o " === 'function'")))*/function sc_isProcedure(o) { return (typeof o === "function");}/*** META ((export #t)) */function sc_apply(proc) { var args = new Array(); // first part of arguments are not in list-form. for (var i = 1; i < arguments.length - 1; i++) args.push(arguments[i]); var l = arguments[arguments.length - 1]; while (l !== null) { args.push(l.car); l = l.cdr; } return proc.apply(null, args);}/*** META ((export #t)) */function sc_map(proc, l1) { if (l1 === undefined) return null; // else var nbApplyArgs = arguments.length - 1; var applyArgs = new Array(nbApplyArgs); var revres = null; while (l1 !== null) { for (var i = 0; i < nbApplyArgs; i++) { applyArgs[i] = arguments[i + 1].car; arguments[i + 1] = arguments[i + 1].cdr; } revres = sc_cons(proc.apply(null, applyArgs), revres); } return sc_reverseAppendBang(revres, null);}/*** META ((export #t)) */function sc_mapBang(proc, l1) { if (l1 === undefined) return null; // else var l1_orig = l1; var nbApplyArgs = arguments.length - 1; var applyArgs = new Array(nbApplyArgs); while (l1 !== null) { var tmp = l1; for (var i = 0; i < nbApplyArgs; i++) { applyArgs[i] = arguments[i + 1].car; arguments[i + 1] = arguments[i + 1].cdr; } tmp.car = proc.apply(null, applyArgs); } return l1_orig;} /*** META ((export #t)) */function sc_forEach(proc, l1) { if (l1 === undefined) return undefined; // else var nbApplyArgs = arguments.length - 1; var applyArgs = new Array(nbApplyArgs); while (l1 !== null) { for (var i = 0; i < nbApplyArgs; i++) { applyArgs[i] = arguments[i + 1].car; arguments[i + 1] = arguments[i + 1].cdr; } proc.apply(null, applyArgs); } // add return so FF does not complain. return undefined;}/*** META ((export #t)) */function sc_filter(proc, l1) { var dummy = { cdr : null }; var tail = dummy; while (l1 !== null) { if (proc(l1.car) !== false) { tail.cdr = sc_cons(l1.car, null); tail = tail.cdr; } l1 = l1.cdr; } return dummy.cdr;}/*** META ((export #t)) */function sc_filterBang(proc, l1) { var head = sc_cons("dummy", l1); var it = head; var next = l1; while (next !== null) { if (proc(next.car) !== false) { it.cdr = next it = next; } next = next.cdr; } it.cdr = null; return head.cdr;}function sc_filterMap1(proc, l1) { var revres = null; while (l1 !== null) { var tmp = proc(l1.car) if (tmp !== false) revres = sc_cons(tmp, revres); l1 = l1.cdr; } return sc_reverseAppendBang(revres, null);}function sc_filterMap2(proc, l1, l2) { var revres = null; while (l1 !== null) { var tmp = proc(l1.car, l2.car); if(tmp !== false) revres = sc_cons(tmp, revres); l1 = l1.cdr; l2 = l2.cdr } return sc_reverseAppendBang(revres, null);}/*** META ((export #t)) */function sc_filterMap(proc, l1, l2, l3) { if (l2 === undefined) return sc_filterMap1(proc, l1); else if (l3 === undefined) return sc_filterMap2(proc, l1, l2); // else var nbApplyArgs = arguments.length - 1; var applyArgs = new Array(nbApplyArgs); var revres = null; while (l1 !== null) { for (var i = 0; i < nbApplyArgs; i++) { applyArgs[i] = arguments[i + 1].car; arguments[i + 1] = arguments[i + 1].cdr; } var tmp = proc.apply(null, applyArgs); if(tmp !== false) revres = sc_cons(tmp, revres); } return sc_reverseAppendBang(revres, null);}/*** META ((export #t)) */function sc_any(proc, l) { var revres = null; while (l !== null) { var tmp = proc(l.car); if(tmp !== false) return tmp; l = l.cdr; } return false;}/*** META ((export any?) (peephole (hole 2 "sc_any(" proc "," l ") !== false")))*/function sc_anyPred(proc, l) { return sc_any(proc, l)!== false;}/*** META ((export #t)) */function sc_every(proc, l) { var revres = null; var tmp = true; while (l !== null) { tmp = proc(l.car); if (tmp === false) return false; l = l.cdr; } return tmp;}/*** META ((export every?) (peephole (hole 2 "sc_every(" proc "," l ") !== false")))*/function sc_everyPred(proc, l) { var tmp = sc_every(proc, l); if (tmp !== false) return true; return false;}/*** META ((export #t) (peephole (postfix "()")))*/function sc_force(o) { return o();}/*** META ((export #t)) */function sc_makePromise(proc) { var isResultReady = false; var result = undefined; return function() { if (!isResultReady) { var tmp = proc(); if (!isResultReady) { isResultReady = true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -