Brunobkr/llama.cpp_AlgMor24_github
ΩFFFΣLLIa • llama.cpp • AlgMor24 ██████╗ ███████╗███████╗███████╗██╗ ██╗ ██╗ █████╗ ██╔═══██╗██╔════╝██╔════╝██╔════╝██║ ██║ ██║██╔══██╗ ██║ ██║█████╗ █████╗ █████╗ ██║ ██║ ██║███████║ ██║ ██║██╔══╝ ██╔══╝ ██╔══╝ ██║ ██║ ██║██╔══██║ ╚██████╔╝██║ ██║ ███████╗███████╗███████╗██║██║ ██║ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝ High-Performance LLM / VLM Inference & Autonomous Agentic Ecosystem… See the full description on the dataset page: https://huggingface.co/datasets/Brunobkr/llama.cpp_AlgMor24_github.
03.1k
1// This is a generated file. Do not edit.2var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/;3var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;4var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/;5 6var unicode = {7 Space_Separator: Space_Separator,8 ID_Start: ID_Start,9 ID_Continue: ID_Continue10};11 12var util = {13 isSpaceSeparator (c) {14 return typeof c === 'string' && unicode.Space_Separator.test(c)15 },16 17 isIdStartChar (c) {18 return typeof c === 'string' && (19 (c >= 'a' && c <= 'z') ||20 (c >= 'A' && c <= 'Z') ||21 (c === '$') || (c === '_') ||22 unicode.ID_Start.test(c)23 )24 },25 26 isIdContinueChar (c) {27 return typeof c === 'string' && (28 (c >= 'a' && c <= 'z') ||29 (c >= 'A' && c <= 'Z') ||30 (c >= '0' && c <= '9') ||31 (c === '$') || (c === '_') ||32 (c === '\u200C') || (c === '\u200D') ||33 unicode.ID_Continue.test(c)34 )35 },36 37 isDigit (c) {38 return typeof c === 'string' && /[0-9]/.test(c)39 },40 41 isHexDigit (c) {42 return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)43 },44};45 46let source;47let parseState;48let stack;49let pos;50let line;51let column;52let token;53let key;54let root;55 56var parse = function parse (text, reviver) {57 source = String(text);58 parseState = 'start';59 stack = [];60 pos = 0;61 line = 1;62 column = 0;63 token = undefined;64 key = undefined;65 root = undefined;66 67 do {68 token = lex();69 70 // This code is unreachable.71 // if (!parseStates[parseState]) {72 // throw invalidParseState()73 // }74 75 parseStates[parseState]();76 } while (token.type !== 'eof')77 78 if (typeof reviver === 'function') {79 return internalize({'': root}, '', reviver)80 }81 82 return root83};84 85function internalize (holder, name, reviver) {86 const value = holder[name];87 if (value != null && typeof value === 'object') {88 if (Array.isArray(value)) {89 for (let i = 0; i < value.length; i++) {90 const key = String(i);91 const replacement = internalize(value, key, reviver);92 if (replacement === undefined) {93 delete value[key];94 } else {95 Object.defineProperty(value, key, {96 value: replacement,97 writable: true,98 enumerable: true,99 configurable: true,100 });101 }102 }103 } else {104 for (const key in value) {105 const replacement = internalize(value, key, reviver);106 if (replacement === undefined) {107 delete value[key];108 } else {109 Object.defineProperty(value, key, {110 value: replacement,111 writable: true,112 enumerable: true,113 configurable: true,114 });115 }116 }117 }118 }119 120 return reviver.call(holder, name, value)121}122 123let lexState;124let buffer;125let doubleQuote;126let sign;127let c;128 129function lex () {130 lexState = 'default';131 buffer = '';132 doubleQuote = false;133 sign = 1;134 135 for (;;) {136 c = peek();137 138 // This code is unreachable.139 // if (!lexStates[lexState]) {140 // throw invalidLexState(lexState)141 // }142 143 const token = lexStates[lexState]();144 if (token) {145 return token146 }147 }148}149 150function peek () {151 if (source[pos]) {152 return String.fromCodePoint(source.codePointAt(pos))153 }154}155 156function read () {157 const c = peek();158 159 if (c === '\n') {160 line++;161 column = 0;162 } else if (c) {163 column += c.length;164 } else {165 column++;166 }167 168 if (c) {169 pos += c.length;170 }171 172 return c173}174 175const lexStates = {176 default () {177 switch (c) {178 case '\t':179 case '\v':180 case '\f':181 case ' ':182 case '\u00A0':183 case '\uFEFF':184 case '\n':185 case '\r':186 case '\u2028':187 case '\u2029':188 read();189 return190 191 case '/':192 read();193 lexState = 'comment';194 return195 196 case undefined:197 read();198 return newToken('eof')199 }200 201 if (util.isSpaceSeparator(c)) {202 read();203 return204 }205 206 // This code is unreachable.207 // if (!lexStates[parseState]) {208 // throw invalidLexState(parseState)209 // }210 211 return lexStates[parseState]()212 },213 214 comment () {215 switch (c) {216 case '*':217 read();218 lexState = 'multiLineComment';219 return220 221 case '/':222 read();223 lexState = 'singleLineComment';224 return225 }226 227 throw invalidChar(read())228 },229 230 multiLineComment () {231 switch (c) {232 case '*':233 read();234 lexState = 'multiLineCommentAsterisk';235 return236 237 case undefined:238 throw invalidChar(read())239 }240 241 read();242 },243 244 multiLineCommentAsterisk () {245 switch (c) {246 case '*':247 read();248 return249 250 case '/':251 read();252 lexState = 'default';253 return254 255 case undefined:256 throw invalidChar(read())257 }258 259 read();260 lexState = 'multiLineComment';261 },262 263 singleLineComment () {264 switch (c) {265 case '\n':266 case '\r':267 case '\u2028':268 case '\u2029':269 read();270 lexState = 'default';271 return272 273 case undefined:274 read();275 return newToken('eof')276 }277 278 read();279 },280 281 value () {282 switch (c) {283 case '{':284 case '[':285 return newToken('punctuator', read())286 287 case 'n':288 read();289 literal('ull');290 return newToken('null', null)291 292 case 't':293 read();294 literal('rue');295 return newToken('boolean', true)296 297 case 'f':298 read();299 literal('alse');300 return newToken('boolean', false)301 302 case '-':303 case '+':304 if (read() === '-') {305 sign = -1;306 }307 308 lexState = 'sign';309 return310 311 case '.':312 buffer = read();313 lexState = 'decimalPointLeading';314 return315 316 case '0':317 buffer = read();318 lexState = 'zero';319 return320 321 case '1':322 case '2':323 case '3':324 case '4':325 case '5':326 case '6':327 case '7':328 case '8':329 case '9':330 buffer = read();331 lexState = 'decimalInteger';332 return333 334 case 'I':335 read();336 literal('nfinity');337 return newToken('numeric', Infinity)338 339 case 'N':340 read();341 literal('aN');342 return newToken('numeric', NaN)343 344 case '"':345 case "'":346 doubleQuote = (read() === '"');347 buffer = '';348 lexState = 'string';349 return350 }351 352 throw invalidChar(read())353 },354 355 identifierNameStartEscape () {356 if (c !== 'u') {357 throw invalidChar(read())358 }359 360 read();361 const u = unicodeEscape();362 switch (u) {363 case '$':364 case '_':365 break366 367 default:368 if (!util.isIdStartChar(u)) {369 throw invalidIdentifier()370 }371 372 break373 }374 375 buffer += u;376 lexState = 'identifierName';377 },378 379 identifierName () {380 switch (c) {381 case '$':382 case '_':383 case '\u200C':384 case '\u200D':385 buffer += read();386 return387 388 case '\\':389 read();390 lexState = 'identifierNameEscape';391 return392 }393 394 if (util.isIdContinueChar(c)) {395 buffer += read();396 return397 }398 399 return newToken('identifier', buffer)400 },401 402 identifierNameEscape () {403 if (c !== 'u') {404 throw invalidChar(read())405 }406 407 read();408 const u = unicodeEscape();409 switch (u) {410 case '$':411 case '_':412 case '\u200C':413 case '\u200D':414 break415 416 default:417 if (!util.isIdContinueChar(u)) {418 throw invalidIdentifier()419 }420 421 break422 }423 424 buffer += u;425 lexState = 'identifierName';426 },427 428 sign () {429 switch (c) {430 case '.':431 buffer = read();432 lexState = 'decimalPointLeading';433 return434 435 case '0':436 buffer = read();437 lexState = 'zero';438 return439 440 case '1':441 case '2':442 case '3':443 case '4':444 case '5':445 case '6':446 case '7':447 case '8':448 case '9':449 buffer = read();450 lexState = 'decimalInteger';451 return452 453 case 'I':454 read();455 literal('nfinity');456 return newToken('numeric', sign * Infinity)457 458 case 'N':459 read();460 literal('aN');461 return newToken('numeric', NaN)462 }463 464 throw invalidChar(read())465 },466 467 zero () {468 switch (c) {469 case '.':470 buffer += read();471 lexState = 'decimalPoint';472 return473 474 case 'e':475 case 'E':476 buffer += read();477 lexState = 'decimalExponent';478 return479 480 case 'x':481 case 'X':482 buffer += read();483 lexState = 'hexadecimal';484 return485 }486 487 return newToken('numeric', sign * 0)488 },489 490 decimalInteger () {491 switch (c) {492 case '.':493 buffer += read();494 lexState = 'decimalPoint';495 return496 497 case 'e':498 case 'E':499 buffer += read();500 lexState = 'decimalExponent';501 return502 }503 504 if (util.isDigit(c)) {505 buffer += read();506 return507 }508 509 return newToken('numeric', sign * Number(buffer))510 },511 512 decimalPointLeading () {513 if (util.isDigit(c)) {514 buffer += read();515 lexState = 'decimalFraction';516 return517 }518 519 throw invalidChar(read())520 },521 522 decimalPoint () {523 switch (c) {524 case 'e':525 case 'E':526 buffer += read();527 lexState = 'decimalExponent';528 return529 }530 531 if (util.isDigit(c)) {532 buffer += read();533 lexState = 'decimalFraction';534 return535 }536 537 return newToken('numeric', sign * Number(buffer))538 },539 540 decimalFraction () {541 switch (c) {542 case 'e':543 case 'E':544 buffer += read();545 lexState = 'decimalExponent';546 return547 }548 549 if (util.isDigit(c)) {550 buffer += read();551 return552 }553 554 return newToken('numeric', sign * Number(buffer))555 },556 557 decimalExponent () {558 switch (c) {559 case '+':560 case '-':561 buffer += read();562 lexState = 'decimalExponentSign';563 return564 }565 566 if (util.isDigit(c)) {567 buffer += read();568 lexState = 'decimalExponentInteger';569 return570 }571 572 throw invalidChar(read())573 },574 575 decimalExponentSign () {576 if (util.isDigit(c)) {577 buffer += read();578 lexState = 'decimalExponentInteger';579 return580 }581 582 throw invalidChar(read())583 },584 585 decimalExponentInteger () {586 if (util.isDigit(c)) {587 buffer += read();588 return589 }590 591 return newToken('numeric', sign * Number(buffer))592 },593 594 hexadecimal () {595 if (util.isHexDigit(c)) {596 buffer += read();597 lexState = 'hexadecimalInteger';598 return599 }600 601 throw invalidChar(read())602 },603 604 hexadecimalInteger () {605 if (util.isHexDigit(c)) {606 buffer += read();607 return608 }609 610 return newToken('numeric', sign * Number(buffer))611 },612 613 string () {614 switch (c) {615 case '\\':616 read();617 buffer += escape();618 return619 620 case '"':621 if (doubleQuote) {622 read();623 return newToken('string', buffer)624 }625 626 buffer += read();627 return628 629 case "'":630 if (!doubleQuote) {631 read();632 return newToken('string', buffer)633 }634 635 buffer += read();636 return637 638 case '\n':639 case '\r':640 throw invalidChar(read())641 642 case '\u2028':643 case '\u2029':644 separatorChar(c);645 break646 647 case undefined:648 throw invalidChar(read())649 }650 651 buffer += read();652 },653 654 start () {655 switch (c) {656 case '{':657 case '[':658 return newToken('punctuator', read())659 660 // This code is unreachable since the default lexState handles eof.661 // case undefined:662 // return newToken('eof')663 }664 665 lexState = 'value';666 },667 668 beforePropertyName () {669 switch (c) {670 case '$':671 case '_':672 buffer = read();673 lexState = 'identifierName';674 return675 676 case '\\':677 read();678 lexState = 'identifierNameStartEscape';679 return680 681 case '}':682 return newToken('punctuator', read())683 684 case '"':685 case "'":686 doubleQuote = (read() === '"');687 lexState = 'string';688 return689 }690 691 if (util.isIdStartChar(c)) {692 buffer += read();693 lexState = 'identifierName';694 return695 }696 697 throw invalidChar(read())698 },699 700 afterPropertyName () {701 if (c === ':') {702 return newToken('punctuator', read())703 }704 705 throw invalidChar(read())706 },707 708 beforePropertyValue () {709 lexState = 'value';710 },711 712 afterPropertyValue () {713 switch (c) {714 case ',':715 case '}':716 return newToken('punctuator', read())717 }718 719 throw invalidChar(read())720 },721 722 beforeArrayValue () {723 if (c === ']') {724 return newToken('punctuator', read())725 }726 727 lexState = 'value';728 },729 730 afterArrayValue () {731 switch (c) {732 case ',':733 case ']':734 return newToken('punctuator', read())735 }736 737 throw invalidChar(read())738 },739 740 end () {741 // This code is unreachable since it's handled by the default lexState.742 // if (c === undefined) {743 // read()744 // return newToken('eof')745 // }746 747 throw invalidChar(read())748 },749};750 751function newToken (type, value) {752 return {753 type,754 value,755 line,756 column,757 }758}759 760function literal (s) {761 for (const c of s) {762 const p = peek();763 764 if (p !== c) {765 throw invalidChar(read())766 }767 768 read();769 }770}771 772function escape () {773 const c = peek();774 switch (c) {775 case 'b':776 read();777 return '\b'778 779 case 'f':780 read();781 return '\f'782 783 case 'n':784 read();785 return '\n'786 787 case 'r':788 read();789 return '\r'790 791 case 't':792 read();793 return '\t'794 795 case 'v':796 read();797 return '\v'798 799 case '0':800 read();801 if (util.isDigit(peek())) {802 throw invalidChar(read())803 }804 805 return '\0'806 807 case 'x':808 read();809 return hexEscape()810 811 case 'u':812 read();813 return unicodeEscape()814 815 case '\n':816 case '\u2028':817 case '\u2029':818 read();819 return ''820 821 case '\r':822 read();823 if (peek() === '\n') {824 read();825 }826 827 return ''828 829 case '1':830 case '2':831 case '3':832 case '4':833 case '5':834 case '6':835 case '7':836 case '8':837 case '9':838 throw invalidChar(read())839 840 case undefined:841 throw invalidChar(read())842 }843 844 return read()845}846 847function hexEscape () {848 let buffer = '';849 let c = peek();850 851 if (!util.isHexDigit(c)) {852 throw invalidChar(read())853 }854 855 buffer += read();856 857 c = peek();858 if (!util.isHexDigit(c)) {859 throw invalidChar(read())860 }861 862 buffer += read();863 864 return String.fromCodePoint(parseInt(buffer, 16))865}866 867function unicodeEscape () {868 let buffer = '';869 let count = 4;870 871 while (count-- > 0) {872 const c = peek();873 if (!util.isHexDigit(c)) {874 throw invalidChar(read())875 }876 877 buffer += read();878 }879 880 return String.fromCodePoint(parseInt(buffer, 16))881}882 883const parseStates = {884 start () {885 if (token.type === 'eof') {886 throw invalidEOF()887 }888 889 push();890 },891 892 beforePropertyName () {893 switch (token.type) {894 case 'identifier':895 case 'string':896 key = token.value;897 parseState = 'afterPropertyName';898 return899 900 case 'punctuator':901 // This code is unreachable since it's handled by the lexState.902 // if (token.value !== '}') {903 // throw invalidToken()904 // }905 906 pop();907 return908 909 case 'eof':910 throw invalidEOF()911 }912 913 // This code is unreachable since it's handled by the lexState.914 // throw invalidToken()915 },916 917 afterPropertyName () {918 // This code is unreachable since it's handled by the lexState.919 // if (token.type !== 'punctuator' || token.value !== ':') {920 // throw invalidToken()921 // }922 923 if (token.type === 'eof') {924 throw invalidEOF()925 }926 927 parseState = 'beforePropertyValue';928 },929 930 beforePropertyValue () {931 if (token.type === 'eof') {932 throw invalidEOF()933 }934 935 push();936 },937 938 beforeArrayValue () {939 if (token.type === 'eof') {940 throw invalidEOF()941 }942 943 if (token.type === 'punctuator' && token.value === ']') {944 pop();945 return946 }947 948 push();949 },950 951 afterPropertyValue () {952 // This code is unreachable since it's handled by the lexState.953 // if (token.type !== 'punctuator') {954 // throw invalidToken()955 // }956 957 if (token.type === 'eof') {958 throw invalidEOF()959 }960 961 switch (token.value) {962 case ',':963 parseState = 'beforePropertyName';964 return965 966 case '}':967 pop();968 }969 970 // This code is unreachable since it's handled by the lexState.971 // throw invalidToken()972 },973 974 afterArrayValue () {975 // This code is unreachable since it's handled by the lexState.976 // if (token.type !== 'punctuator') {977 // throw invalidToken()978 // }979 980 if (token.type === 'eof') {981 throw invalidEOF()982 }983 984 switch (token.value) {985 case ',':986 parseState = 'beforeArrayValue';987 return988 989 case ']':990 pop();991 }992 993 // This code is unreachable since it's handled by the lexState.994 // throw invalidToken()995 },996 997 end () {998 // This code is unreachable since it's handled by the lexState.999 // if (token.type !== 'eof') {1000 // throw invalidToken()1001 // }1002 },1003};1004 1005function push () {1006 let value;1007 1008 switch (token.type) {1009 case 'punctuator':1010 switch (token.value) {1011 case '{':1012 value = {};1013 break1014 1015 case '[':1016 value = [];1017 break1018 }1019 1020 break1021 1022 case 'null':1023 case 'boolean':1024 case 'numeric':1025 case 'string':1026 value = token.value;1027 break1028 1029 // This code is unreachable.1030 // default:1031 // throw invalidToken()1032 }1033 1034 if (root === undefined) {1035 root = value;1036 } else {1037 const parent = stack[stack.length - 1];1038 if (Array.isArray(parent)) {1039 parent.push(value);1040 } else {1041 Object.defineProperty(parent, key, {1042 value,1043 writable: true,1044 enumerable: true,1045 configurable: true,1046 });1047 }1048 }1049 1050 if (value !== null && typeof value === 'object') {1051 stack.push(value);1052 1053 if (Array.isArray(value)) {1054 parseState = 'beforeArrayValue';1055 } else {1056 parseState = 'beforePropertyName';1057 }1058 } else {1059 const current = stack[stack.length - 1];1060 if (current == null) {1061 parseState = 'end';1062 } else if (Array.isArray(current)) {1063 parseState = 'afterArrayValue';1064 } else {1065 parseState = 'afterPropertyValue';1066 }1067 }1068}1069 1070function pop () {1071 stack.pop();1072 1073 const current = stack[stack.length - 1];1074 if (current == null) {1075 parseState = 'end';1076 } else if (Array.isArray(current)) {1077 parseState = 'afterArrayValue';1078 } else {1079 parseState = 'afterPropertyValue';1080 }1081}1082 1083// This code is unreachable.1084// function invalidParseState () {1085// return new Error(`JSON5: invalid parse state '${parseState}'`)1086// }1087 1088// This code is unreachable.1089// function invalidLexState (state) {1090// return new Error(`JSON5: invalid lex state '${state}'`)1091// }1092 1093function invalidChar (c) {1094 if (c === undefined) {1095 return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)1096 }1097 1098 return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)1099}1100 1101function invalidEOF () {1102 return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)1103}1104 1105// This code is unreachable.1106// function invalidToken () {1107// if (token.type === 'eof') {1108// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)1109// }1110 1111// const c = String.fromCodePoint(token.value.codePointAt(0))1112// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)1113// }1114 1115function invalidIdentifier () {1116 column -= 5;1117 return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)1118}1119 1120function separatorChar (c) {1121 console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`);1122}1123 1124function formatChar (c) {1125 const replacements = {1126 "'": "\\'",1127 '"': '\\"',1128 '\\': '\\\\',1129 '\b': '\\b',1130 '\f': '\\f',1131 '\n': '\\n',1132 '\r': '\\r',1133 '\t': '\\t',1134 '\v': '\\v',1135 '\0': '\\0',1136 '\u2028': '\\u2028',1137 '\u2029': '\\u2029',1138 };1139 1140 if (replacements[c]) {1141 return replacements[c]1142 }1143 1144 if (c < ' ') {1145 const hexString = c.charCodeAt(0).toString(16);1146 return '\\x' + ('00' + hexString).substring(hexString.length)1147 }1148 1149 return c1150}1151 1152function syntaxError (message) {1153 const err = new SyntaxError(message);1154 err.lineNumber = line;1155 err.columnNumber = column;1156 return err1157}1158 1159var stringify = function stringify (value, replacer, space) {1160 const stack = [];1161 let indent = '';1162 let propertyList;1163 let replacerFunc;1164 let gap = '';1165 let quote;1166 1167 if (1168 replacer != null &&1169 typeof replacer === 'object' &&1170 !Array.isArray(replacer)1171 ) {1172 space = replacer.space;1173 quote = replacer.quote;1174 replacer = replacer.replacer;1175 }1176 1177 if (typeof replacer === 'function') {1178 replacerFunc = replacer;1179 } else if (Array.isArray(replacer)) {1180 propertyList = [];1181 for (const v of replacer) {1182 let item;1183 1184 if (typeof v === 'string') {1185 item = v;1186 } else if (1187 typeof v === 'number' ||1188 v instanceof String ||1189 v instanceof Number1190 ) {1191 item = String(v);1192 }1193 1194 if (item !== undefined && propertyList.indexOf(item) < 0) {1195 propertyList.push(item);1196 }1197 }1198 }1199 1200 if (space instanceof Number) {