nadesiko3 3.7.2 → 3.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/batch/command.txt +472 -469
- package/batch/pickup_command.nako3 +1 -1
- package/core/.eslintrc.cjs +10 -3
- package/core/package-lock.json +1184 -645
- package/core/package.json +4 -5
- package/core/src/nako3.mjs +8 -6
- package/core/src/nako3.mts +19 -16
- package/core/src/nako_ast.mts +2 -3
- package/core/src/nako_core_version.mjs +2 -2
- package/core/src/nako_core_version.mts +2 -2
- package/core/src/nako_csv.mjs +1 -0
- package/core/src/nako_csv.mts +3 -2
- package/core/src/nako_from_dncl.mjs +1 -1
- package/core/src/nako_from_dncl.mts +1 -1
- package/core/src/nako_from_dncl2.mjs +1 -1
- package/core/src/nako_from_dncl2.mts +2 -2
- package/core/src/nako_gen.mjs +37 -35
- package/core/src/nako_gen.mts +70 -67
- package/core/src/nako_global.mjs +3 -2
- package/core/src/nako_global.mts +3 -2
- package/core/src/nako_lexer.mjs +3 -3
- package/core/src/nako_lexer.mts +3 -3
- package/core/src/nako_logger.mjs +1 -1
- package/core/src/nako_logger.mts +2 -2
- package/core/src/nako_parser3.mjs +67 -59
- package/core/src/nako_parser3.mts +96 -90
- package/core/src/nako_parser_base.mts +3 -3
- package/core/src/nako_prepare.mjs +1 -1
- package/core/src/nako_prepare.mts +1 -1
- package/core/src/nako_source_mapping.mts +0 -1
- package/core/src/nako_token.mts +8 -8
- package/core/src/nako_types.mts +1 -1
- package/core/src/plugin_api.mts +1 -1
- package/core/src/plugin_csv.mjs +1 -0
- package/core/src/plugin_csv.mts +2 -1
- package/core/src/plugin_math.mjs +2 -2
- package/core/src/plugin_math.mts +3 -3
- package/core/src/plugin_promise.mjs +1 -1
- package/core/src/plugin_promise.mts +1 -1
- package/core/src/plugin_system.mjs +117 -40
- package/core/src/plugin_system.mts +132 -58
- package/core/src/plugin_test.mjs +3 -1
- package/core/src/plugin_test.mts +3 -1
- package/core/test/basic_test.mjs +16 -0
- package/core/test/calc_test.mjs +7 -0
- package/core/test/plugin_system_test.mjs +33 -0
- package/doc/files.md +4 -4
- package/doc/plugins.md +1 -1
- package/package.json +9 -9
- package/release/_hash.txt +36 -121
- package/release/_script-tags.txt +16 -33
- package/release/command.json +1 -1
- package/release/command.json.js +1 -1
- package/release/command_cnako3.json +1 -1
- package/release/command_list.json +1 -1
- package/release/edit_main.js +3 -3
- package/release/edit_main.js.map +2 -2
- package/release/editor.js +3 -3
- package/release/plugin_markup.js +53 -53
- package/release/plugin_markup.js.map +3 -3
- package/release/plugin_weykturtle3d.js +1 -1
- package/release/plugin_weykturtle3d.js.map +4 -4
- package/release/version.js +3 -3
- package/release/version_main.js +3 -3
- package/release/version_main.js.map +2 -2
- package/release/wnako3.js +66 -66
- package/release/wnako3.js.map +3 -3
- package/release/wnako3webworker.js +58 -58
- package/release/wnako3webworker.js.map +3 -3
- package/src/browsers.txt +30 -20
- package/src/cnako3mod.mjs +19 -18
- package/src/cnako3mod.mts +17 -16
- package/src/deno_wrapper.mjs +6 -6
- package/src/deno_wrapper.mts +11 -11
- package/src/nako_version.mjs +2 -2
- package/src/nako_version.mts +2 -2
- package/src/plugin_browser.mjs +2 -2
- package/src/plugin_browser.mts +5 -5
- package/src/plugin_browser_ajax.mjs +2 -2
- package/src/plugin_browser_ajax.mts +2 -2
- package/src/plugin_browser_api.mts +0 -1
- package/src/plugin_browser_crypto.mjs +8 -8
- package/src/plugin_browser_crypto.mts +13 -13
- package/src/plugin_browser_dom_basic.mjs +3 -3
- package/src/plugin_browser_dom_basic.mts +5 -7
- package/src/plugin_browser_dom_event.mjs +1 -1
- package/src/plugin_browser_dom_event.mts +2 -1
- package/src/plugin_browser_dom_parts.mjs +33 -18
- package/src/plugin_browser_dom_parts.mts +60 -59
- package/src/plugin_browser_speech.mjs +1 -1
- package/src/plugin_browser_speech.mts +1 -1
- package/src/plugin_node.mjs +5 -3
- package/src/plugin_node.mts +6 -4
- package/src/plugin_weykturtle3d.mjs +38 -15
- package/src/plugin_weykturtle3d.mts +279 -240
- package/src/plugin_weykturtle3d_three.mjs +3 -0
- package/src/plugin_weykturtle3d_three.mts +214 -0
- package/src/plugin_weykturtle3d_threeutil.mjs +28 -0
- package/src/plugin_weykturtle3d_threeutil.mts +31 -0
- package/src/wnako3.mjs +1 -0
- package/src/wnako3.mts +1 -0
- package/src/wnako3mod.mjs +5 -2
- package/src/wnako3mod.mts +6 -3
- package/batch/command_nakopad.txt +0 -1177
- package/core/__report.txt +0 -617
- package/core/command/plugin_snako.mjs +0 -112
- package/core/command/snako.mjs +0 -108
- package/release/core_src_nako_josi_list_mjs.js +0 -3
- package/release/core_src_nako_josi_list_mjs.js.LICENSE.txt +0 -3
- package/release/core_src_nako_josi_list_mjs.js.map +0 -1
- package/release/core_src_nako_reserved_words_mjs.js +0 -3
- package/release/core_src_nako_reserved_words_mjs.js.LICENSE.txt +0 -3
- package/release/core_src_nako_reserved_words_mjs.js.map +0 -1
- package/release/editor/edit_main.js +0 -48
- package/release/editor/edit_main.js.map +0 -7
- package/release/editor/version_main.js +0 -44
- package/release/editor/version_main.js.map +0 -7
- package/release/editor.js.LICENSE.txt +0 -91
- package/release/editor.js.map +0 -1
- package/release/nako_gen_async.js +0 -2
- package/release/nako_gen_async.js.LICENSE.txt +0 -21
- package/release/nako_gen_async.js.map +0 -1
- package/release/plugin_caniuse.js.LICENSE.txt +0 -15
- package/release/plugin_datetime.js.LICENSE.txt +0 -21
- package/release/plugin_kansuji.js.LICENSE.txt +0 -3
- package/release/plugin_markup.js.LICENSE.txt +0 -15
- package/release/plugin_toml.js +0 -295
- package/release/plugin_toml.js.map +0 -7
- package/release/plugin_turtle.js.LICENSE.txt +0 -9
- package/release/plugin_webworker.js.LICENSE.txt +0 -3
- package/release/plugin_weykturtle3d.js.LICENSE.txt +0 -3
- package/release/src/plugin_caniuse.js +0 -2
- package/release/src/plugin_caniuse.js.map +0 -7
- package/release/src/plugin_datetime.js +0 -2
- package/release/src/plugin_datetime.js.map +0 -7
- package/release/src/plugin_kansuji.js +0 -2
- package/release/src/plugin_kansuji.js.map +0 -7
- package/release/src/plugin_keigo.js +0 -2
- package/release/src/plugin_keigo.js.map +0 -7
- package/release/src/plugin_markup.js +0 -64
- package/release/src/plugin_markup.js.map +0 -7
- package/release/src/plugin_three.js +0 -2
- package/release/src/plugin_three.js.map +0 -7
- package/release/src/plugin_turtle.js +0 -2
- package/release/src/plugin_turtle.js.map +0 -7
- package/release/src/plugin_webworker.js +0 -4
- package/release/src/plugin_webworker.js.map +0 -7
- package/release/src/plugin_weykturtle3d.js +0 -2
- package/release/src/plugin_weykturtle3d.js.map +0 -7
- package/release/src/wnako3.js +0 -482
- package/release/src/wnako3.js.map +0 -7
- package/release/src/wnako3webworker.js +0 -428
- package/release/src/wnako3webworker.js.map +0 -7
- package/release/stats.json +0 -1
- package/release/version.js.LICENSE.txt +0 -65
- package/release/version.js.map +0 -1
- package/release/wnako3.js.LICENSE.txt +0 -341
- package/release/wnako3webworker.js.LICENSE.txt +0 -209
- package/src/plugin_three.mts +0 -240
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../core/src/nako_parser_const.mjs", "../../core/src/nako_types.mjs", "../../core/src/nako_parser_base.mjs", "../../core/src/nako_errors.mjs", "../../core/src/nako_reserved_words.mjs", "../../core/src/nako_indent_chars.mjs", "../../core/src/nako_josi_list.mjs", "../../core/src/nako_lex_rules.mjs", "../../core/src/nako_lexer.mjs", "../../core/src/nako_parser3.mjs", "../../core/src/nako_prepare.mjs", "../../core/src/nako_gen.mjs", "../../core/src/nako_tools.mjs", "../../core/src/nako_indent_inline.mjs", "../../core/src/nako_from_dncl.mjs", "../../core/src/nako_from_dncl2.mjs", "../../core/src/nako_source_mapping.mjs", "../../core/src/nako_colors.mjs", "../../core/src/nako_logger.mjs", "../../core/src/nako_global.mjs", "../../core/src/nako_core_version.mjs", "../../core/src/plugin_system.mjs", "../../core/src/plugin_math.mjs", "../../core/src/nako_csv.mjs", "../../core/src/plugin_csv.mjs", "../../core/src/plugin_promise.mjs", "../../core/src/plugin_test.mjs", "../../core/src/nako3.mjs", "../../core/src/nako_indent.mjs", "../../src/wnako3_editor.mjs", "../../src/nako_version.mjs", "../../src/plugin_browser_color.mjs", "../../src/plugin_browser_system.mjs", "../../src/plugin_browser_dialog.mjs", "../../src/plugin_browser_location.mjs", "../../src/plugin_browser_ajax.mjs", "../../src/plugin_browser_dom_basic.mjs", "../../src/plugin_browser_dom_event.mjs", "../../src/plugin_browser_dom_parts.mjs", "../../src/plugin_browser_html.mjs", "../../src/plugin_browser_storage.mjs", "../../src/plugin_browser_canvas.mjs", "../../src/plugin_browser_geolocation.mjs", "../../src/plugin_browser_speech.mjs", "../../src/plugin_browser_websocket.mjs", "../../src/plugin_browser_audio.mjs", "../../node_modules/hotkeys-js/dist/hotkeys.esm.js", "../../src/plugin_browser_hotkey.mjs", "../../src/plugin_browser_chart.mjs", "../../src/plugin_browser_crypto.mjs", "../../src/plugin_browser.mjs", "../../src/wnako3mod.mjs", "../../src/wnako3.mts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable quote-props */\nexport const opPriority = {\n // and or\n 'and': 1,\n 'or': 1,\n // compare\n 'eq': 2,\n 'noteq': 2,\n '===': 2,\n '!==': 2,\n 'gt': 2,\n 'gteq': 2,\n 'lt': 2,\n 'lteq': 2,\n '&': 3,\n // + - << >> >>>\n '+': 4,\n '-': 4,\n 'shift_l': 4,\n 'shift_r': 4,\n 'shift_r0': 4,\n // * /\n '*': 5,\n '/': 5, // \u4E00\u822C\u7684\u306A\u5272\u308A\u7B97\n '\u00F7': 5, // \u4E00\u822C\u7684\u306A\u5272\u308A\u7B97\n '\u00F7\u00F7': 5, // \u6574\u6570\u306E\u5272\u308A\u7B97\n '%': 5,\n // ^\n '^': 6,\n '**': 6\n};\nexport const RenbunJosi = [\n '\u3044\u3066', '\u3048\u3066', '\u304D\u3066', '\u3051\u3066', '\u3057\u3066', '\u3063\u3066', '\u306B\u3066', '\u307F\u3066', '\u3081\u3066', '\u306D\u3066', '\u306B\u306F', '\u3093\u3067'\n];\nexport const operatorList = [];\nfor (const key in opPriority) {\n operatorList.push(key);\n}\n", "/**\n * \u306A\u3067\u3057\u30533 \u306E TypeScript \u306E\u305F\u3081\u306E\u578B\u5B9A\u7FA9\n */\nexport function NewEmptyToken(type = '?', value = '', indent = -1, line = 0, file = 'main.nako3') {\n return {\n type,\n value,\n indent,\n line,\n column: 0,\n file,\n josi: ''\n };\n}\n", "import { NewEmptyToken } from './nako_types.mjs';\n/**\n * \u306A\u3067\u3057\u3053\u306E\u69CB\u6587\u89E3\u6790\u306E\u305F\u3081\u306E\u30E6\u30FC\u30C6\u30A3\u30EA\u30C6\u30A3\u30AF\u30E9\u30B9\n */\nexport class NakoParserBase {\n constructor(logger) {\n this.logger = logger;\n this.stackList = []; // \u95A2\u6570\u5B9A\u7FA9\u306E\u969B\u306B\u30B9\u30BF\u30C3\u30AF\u304C\u6DF7\u4E71\u3057\u306A\u3044\u3088\u3046\u306B\u6574\u7406\u3059\u308B\n this.tokens = [];\n this.usedFuncs = new Set();\n /** @type {import('./nako3.mjs').Ast[]} */\n this.stack = [];\n this.index = 0;\n /** \u30C8\u30FC\u30AF\u30F3\u51FA\u73FE\u30C1\u30A7\u30C3\u30AF(accept\u95A2\u6570)\u306B\u5229\u7528\u3059\u308B\n * @type {import('./nako3.mjs').Ast[]}\n */\n this.y = [];\n /** \u30E2\u30B8\u30E5\u30EB\u540D @type {string} */\n this.modName = 'inline';\n this.namespaceStack = [];\n /**\n * \u5229\u7528\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u540D\u524D\u4E00\u89A7\n * @type {Array<string>}\n */\n this.modList = [];\n /** \u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u30FB\u95A2\u6570\u306E\u78BA\u8A8D\u7528 */\n this.funclist = new Map();\n this.funcLevel = 0;\n this.usedAsyncFn = false; // asyncFn\u306E\u547C\u3073\u51FA\u3057\u304C\u3042\u308B\u304B\u3069\u3046\u304B\n /**\n * \u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306E\u78BA\u8A8D\u7528\n * @type {Object.<string,Object>}\n */\n this.localvars = new Map([['\u305D\u308C', { type: 'var', value: '' }]]);\n /** \u30B3\u30FC\u30C9\u751F\u6210\u5668\u306E\u540D\u524D @type {string} */\n this.genMode = 'sync'; // #637\n /** \u914D\u5217\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5148\u982D\u8981\u7D20(#1140) @type {int} */\n this.arrayIndexFrom = 0;\n /** \u914D\u5217\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u9806\u5E8F\u3092\u53CD\u5BFE\u306B\u3059\u308B\u304B(#1140) @type {boolean} */\n this.flagReverseArrayIndex = false;\n /** \u914D\u5217\u3092\u81EA\u52D5\u7684\u306B\u521D\u671F\u5316\u3059\u308B\u304B(#1140) @type {boolean} */\n this.flagCheckArrayInit = false;\n /** \u6700\u8FD1\u547C\u3073\u51FA\u3057\u305F\u95A2\u6570(\u4F59\u5270\u30A8\u30E9\u30FC\u306E\u5831\u544A\u306B\u4F7F\u3046) */\n this.recentlyCalledFunc = [];\n // \u69CB\u6587\u89E3\u6790\u306B\u5229\u7528\u3059\u308B - \u73FE\u5728\u8A08\u7B97\u5F0F\u3092\u8AAD\u3093\u3067\u3044\u308B\u304B\u3069\u3046\u304B\n this.isReadingCalc = false;\n // \u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u8A2D\u5B9A\u304C\u672A\u8A2D\u5B9A\u306E\u95A2\u6570\u30FB\u5909\u6570\u306B\u5BFE\u3059\u308B\u65E2\u5B9A\u5024\n this.isExportDefault = true;\n this.isExportStack = [];\n this.moduleExport = new Map();\n this.init();\n }\n init() {\n this.funclist = new Map(); // \u95A2\u6570\u306E\u4E00\u89A7\n this.moduleExport = new Map();\n this.reset();\n }\n reset() {\n this.tokens = []; // \u5B57\u53E5\u89E3\u6790\u6E08\u307F\u306E\u30C8\u30FC\u30AF\u30F3\u306E\u4E00\u89A7\u3092\u4FDD\u5B58\n this.index = 0; // tokens[] \u306E\u3069\u3053\u307E\u3067\u8AAD\u3093\u3060\u304B\u3092\u7BA1\u7406\u3059\u308B\n this.stack = []; // \u8A08\u7B97\u7528\u306E\u30B9\u30BF\u30C3\u30AF ... \u76F4\u63A5\u306F\u64CD\u4F5C\u305B\u305A\u3001pushStack() popStack() \u3092\u4ECB\u3057\u3066\u4F7F\u3046\n this.y = []; // accept()\u3067\u89E3\u6790\u6E08\u307F\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u914D\u5217\u3067\u5F97\u308B\u3068\u304D\u306B\u4F7F\u3046\n this.genMode = 'sync'; // #637, #1056\n }\n setFuncList(funclist) {\n this.funclist = funclist;\n }\n setModuleExport(moduleexport) {\n this.moduleExport = moduleexport;\n }\n /**\n * \u7279\u5B9A\u306E\u52A9\u8A5E\u3092\u6301\u3064\u8981\u7D20\u3092\u30B9\u30BF\u30C3\u30AF\u304B\u3089\u4E00\u3064\u4E0B\u308D\u3059\u3001\u6307\u5B9A\u304C\u306A\u3051\u308C\u3070\u672B\u5C3E\u3092\u4E0B\u308D\u3059\n * @param {string[]} josiList \u4E0B\u308D\u3057\u305F\u3044\u52A9\u8A5E\u306E\u914D\u5217\n */\n popStack(josiList = undefined) {\n if (!josiList) {\n const t = this.stack.pop();\n if (t) {\n return t;\n }\n return null;\n }\n // josiList \u306B\u30DE\u30C3\u30C1\u3059\u308B\u52A9\u8A5E\u3092\u63A2\u3059\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const t = this.stack[i];\n if (josiList.length === 0 || josiList.indexOf(t.josi) >= 0) {\n this.stack.splice(i, 1); // remove stack\n this.logger.trace('POP :' + JSON.stringify(t));\n return t;\n }\n }\n // \u8A72\u5F53\u3059\u308B\u52A9\u8A5E\u304C\u898B\u3064\u304B\u3089\u306A\u304B\u3063\u305F\u5834\u5408\n return null;\n }\n /**\n * saveStack \u3068 loadStack \u306F\u5BFE\u3067\u4F7F\u3046\u3002\n * \u95A2\u6570\u5B9A\u7FA9\u306A\u3069\u3067\u30B9\u30BF\u30C3\u30AF\u304C\u6DF7\u4E71\u3057\u306A\u3044\u3088\u3046\u306B\u914D\u616E\u3059\u308B\u305F\u3081\u306E\u3082\u306E\n */\n saveStack() {\n this.stackList.push(this.stack);\n this.stack = [];\n }\n loadStack() {\n this.stack = this.stackList.pop();\n }\n /** \u5909\u6570\u540D\u3092\u63A2\u3059\n * @param {string} name\n * @returns {any}\u5909\u6570\u540D\u306E\u60C5\u5831\n */\n findVar(name) {\n // \u30ED\u30FC\u30AB\u30EB\u5909\u6570\uFF1F\n if (this.localvars.get(name)) {\n return {\n name,\n scope: 'local',\n info: this.localvars.get(name)\n };\n }\n // \u30E2\u30B8\u30E5\u30FC\u30EB\u540D\u3092\u542B\u3093\u3067\u3044\u308B?\n if (name.indexOf('__') >= 0) {\n if (this.funclist.get(name)) {\n return {\n name,\n scope: 'global',\n info: this.funclist.get(name)\n };\n }\n else {\n return undefined;\n }\n }\n // \u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\uFF08\u81EA\u8EAB\uFF09\uFF1F\n const gnameSelf = `${this.modName}__${name}`;\n if (this.funclist.get(gnameSelf)) {\n return {\n name: gnameSelf,\n scope: 'global',\n info: this.funclist.get(gnameSelf)\n };\n }\n // \u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\uFF08\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u691C\u7D22\uFF09\uFF1F\n for (const mod of this.modList) {\n const gname = `${mod}__${name}`;\n const exportDefault = this.moduleExport.get(mod);\n const funcObj = this.funclist.get(gname);\n if (funcObj && (funcObj.isExport === true || (funcObj.isExport !== false && exportDefault !== false))) {\n return {\n name: gname,\n scope: 'global',\n info: this.funclist.get(gname)\n };\n }\n }\n // \u30B7\u30B9\u30C6\u30E0\u5909\u6570 (funclist\u3092\u666E\u901A\u306B\u691C\u7D22)\n if (this.funclist.get(name)) {\n return {\n name,\n scope: 'system',\n info: this.funclist.get(name)\n };\n }\n return undefined;\n }\n /**\n * \u8A08\u7B97\u7528\u306B\u8981\u7D20\u3092\u30B9\u30BF\u30C3\u30AF\u306B\u7A4D\u3080\n */\n pushStack(item) {\n this.logger.trace('PUSH:' + JSON.stringify(item));\n this.stack.push(item);\n }\n /**\n * \u30C8\u30FC\u30AF\u30F3\u306E\u672B\u5C3E\u306B\u9054\u3057\u305F\u304B\n */\n isEOF() {\n return (this.index >= this.tokens.length);\n }\n getIndex() {\n return this.index;\n }\n /**\n * \u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E\u306B\u3042\u308B\u5358\u8A9E\u306E\u578B\u3092\u78BA\u304B\u3081\u308B\n */\n check(ttype) {\n return (this.tokens[this.index].type === ttype);\n }\n /**\n * \u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E\u4EE5\u964D\u306B\u3042\u308B\u5358\u8A9E\u306E\u578B\u3092\u78BA\u304B\u3081\u308B 2\u5358\u8A9E\u4EE5\u4E0A\u306B\u5BFE\u5FDC\n * @param a [\u5358\u8A9E1\u306E\u578B, \u5358\u8A9E2\u306E\u578B, ... ]\n */\n check2(a) {\n for (let i = 0; i < a.length; i++) {\n const idx = i + this.index;\n if (this.tokens.length <= idx) {\n return false;\n }\n if (a[i] === '*') {\n continue;\n } // \u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9(\u3069\u3093\u306A\u30BF\u30A4\u30D7\u3082\u8A31\u5BB9)\n const t = this.tokens[idx];\n if (a[i] instanceof Array) {\n if (a[i].indexOf(t.type) < 0) {\n return false;\n }\n continue;\n }\n if (t.type !== a[i]) {\n return false;\n }\n }\n return true;\n }\n /**\n * \u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E\u306E\u578B\u3092\u78BA\u8A8D\u3059\u308B\u304C\u3001\u8907\u6570\u306E\u7A2E\u985E\u3092\u78BA\u304B\u3081\u3089\u308C\u308B\n */\n checkTypes(a) {\n const type = this.tokens[this.index].type;\n return (a.indexOf(type) >= 0);\n }\n /**\n * check2\u306E\u9AD8\u5EA6\u306A\u3084\u3064\u3001\u578B\u540D\u306E\u4ED6\u306B\u30B3\u30FC\u30EB\u30D0\u30C3\u30AF\u95A2\u6570\u3092\u6307\u5B9A\u3067\u304D\u308B\n * \u578B\u306B\u30DE\u30C3\u30C1\u3057\u306A\u3051\u308C\u3070 false \u3092\u8FD4\u3057\u3001\u30AB\u30FC\u30BD\u30EB\u3092\u5DFB\u304D\u623B\u3059\n */\n accept(types) {\n const y = [];\n const tmpIndex = this.index;\n const rollback = () => {\n this.index = tmpIndex;\n return false;\n };\n for (let i = 0; i < types.length; i++) {\n if (this.isEOF()) {\n return rollback();\n }\n const type = types[i];\n if (type == null) {\n return rollback();\n }\n if (typeof type === 'string') {\n const token = this.get();\n if (token && token.type !== type) {\n return rollback();\n }\n y[i] = token;\n continue;\n }\n if (typeof type === 'function') {\n const f = type.bind(this);\n const r = f(y);\n if (r === null) {\n return rollback();\n }\n y[i] = r;\n continue;\n }\n if (type instanceof Array) {\n if (!this.checkTypes(type)) {\n return rollback();\n }\n y[i] = this.get();\n continue;\n }\n throw new Error('System Error : accept broken : ' + typeof type);\n }\n this.y = y;\n return true;\n }\n /**\n * \u30AB\u30FC\u30BD\u30EB\u8A9E\u53E5\u3092\u53D6\u5F97\u3057\u3066\u3001\u30AB\u30FC\u30BD\u30EB\u3092\u5F8C\u308D\u306B\u79FB\u52D5\u3059\u308B\n */\n get() {\n if (this.isEOF()) {\n return null;\n }\n return this.tokens[this.index++];\n }\n /** \u30AB\u30FC\u30BD\u30EB\u8A9E\u53E5\u3092\u53D6\u5F97\u3057\u3066\u30AB\u30FC\u30BD\u30EB\u3092\u9032\u3081\u308B\u3001\u53D6\u5F97\u3067\u304D\u306A\u3051\u308C\u3070\u30A8\u30E9\u30FC\u3092\u51FA\u3059 */\n getCur() {\n if (this.isEOF()) {\n throw new Error('\u30C8\u30FC\u30AF\u30F3\u304C\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3002');\n }\n const t = this.tokens[this.index++];\n if (!t) {\n throw new Error('\u30C8\u30FC\u30AF\u30F3\u304C\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3002');\n }\n return t;\n }\n unget() {\n if (this.index > 0) {\n this.index--;\n }\n }\n /** \u89E3\u6790\u4E2D\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u8FD4\u3059 */\n peek(i = 0) {\n if (this.isEOF()) {\n return null;\n }\n return this.tokens[this.index + i];\n }\n /** \u89E3\u6790\u4E2D\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u8FD4\u3059\u3001\u7121\u7406\u306A\u3089 def \u3092\u8FD4\u3059 */\n peekDef(def = null) {\n if (this.isEOF()) {\n if (!def) {\n def = NewEmptyToken();\n }\n return def;\n }\n return this.tokens[this.index];\n }\n /**\n * \u73FE\u5728\u306E\u30AB\u30FC\u30BD\u30EB\u8A9E\u53E5\u306E\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u4E0A\u306E\u4F4D\u7F6E\u3092\u53D6\u5F97\u3059\u308B\u3002\n */\n peekSourceMap() {\n const token = this.peek();\n if (token === null) {\n return { startOffset: undefined, endOffset: undefined, file: undefined, line: 0, column: 0 };\n }\n return { startOffset: token.startOffset, endOffset: token.endOffset, file: token.file, line: token.line, column: token.column };\n }\n /**\n * depth: \u8868\u793A\u3059\u308B\u6DF1\u3055\n * typeName: \u5148\u982D\u306Etype\u306E\u8868\u793A\u3092\u4E0A\u66F8\u304D\u3059\u308B\u5834\u5408\u306B\u8A2D\u5B9A\u3059\u308B\n * @param {{ depth: number, typeName?: string }} opts\n * @param {boolean} debugMode\n */\n nodeToStr(node, opts, debugMode) {\n const depth = opts.depth - 1;\n const typeName = (name) => (opts.typeName !== undefined) ? opts.typeName : name;\n const debug = debugMode ? (' debug: ' + JSON.stringify(node, null, 2)) : '';\n if (!node) {\n return '(NULL)';\n }\n switch (node.type) {\n case 'not':\n if (depth >= 0) {\n const subNode = node.value;\n return `${typeName('')}\u300E${this.nodeToStr(subNode, { depth }, debugMode)}\u306B\u6F14\u7B97\u5B50\u300Enot\u300F\u3092\u9069\u7528\u3057\u305F\u5F0F${debug}\u300F`;\n }\n else {\n return `${typeName('\u6F14\u7B97\u5B50')}\u300Enot\u300F`;\n }\n case 'op': {\n const node2 = node;\n let operator = node2.operator || '';\n const table = { eq: '\uFF1D', not: '!', gt: '>', lt: '<', and: '\u304B\u3064', or: '\u307E\u305F\u306F' };\n if (operator in table) {\n operator = table[operator];\n }\n if (depth >= 0) {\n const left = this.nodeToStr(node2.left, { depth }, debugMode);\n const right = this.nodeToStr(node2.right, { depth }, debugMode);\n if (node2.operator === 'eq') {\n return `${typeName('')}\u300E${left}\u3068${right}\u304C\u7B49\u3057\u3044\u304B\u3069\u3046\u304B\u306E\u6BD4\u8F03${debug}\u300F`;\n }\n return `${typeName('')}\u300E${left}\u3068${right}\u306B\u6F14\u7B97\u5B50\u300E${operator}\u300F\u3092\u9069\u7528\u3057\u305F\u5F0F${debug}\u300F`;\n }\n else {\n return `${typeName('\u6F14\u7B97\u5B50')}\u300E${operator}${debug}\u300F`;\n }\n }\n case 'number':\n return `${typeName('\u6570\u5024')}${node.value}`;\n case 'bigint':\n return `${typeName('\u5DE8\u5927\u6574\u6570')}${node.value}`;\n case 'string':\n return `${typeName('\u6587\u5B57\u5217')}\u300E${node.value}${debug}\u300F`;\n case 'word':\n return `${typeName('\u5358\u8A9E')}\u300E${node.value}${debug}\u300F`;\n case 'func':\n return `${typeName('\u95A2\u6570')}\u300E${node.name || node.value}${debug}\u300F`;\n case 'eol':\n return '\u884C\u306E\u672B\u5C3E';\n case 'eof':\n return '\u30D5\u30A1\u30A4\u30EB\u306E\u672B\u5C3E';\n default: {\n let name = node.name;\n if (name) {\n name = node.value;\n }\n if (typeof name !== 'string') {\n name = node.type;\n }\n return `${typeName('')}\u300E${name}${debug}\u300F`;\n }\n }\n }\n}\n", "/**\n * \u306A\u3067\u3057\u3053\u8A00\u8A9E\u304C\u6295\u3052\u308B\u5168\u3066\u306E\u30A8\u30E9\u30FC\u304C\u7D99\u627F\u3059\u308B\u30AF\u30E9\u30B9\n */\nexport class NakoError extends Error {\n constructor(tag, msg, file = undefined, line = undefined) {\n // \u30A8\u30E9\u30FC\u4F4D\u7F6E\u3092\u5206\u304B\u308A\u3084\u3059\u304F\u65E5\u672C\u8A9E\u306B\u5909\u63DB\n const positionJa = `${file || ''}${line === undefined ? '' : `(${line + 1}\u884C\u76EE): `}`;\n // #1223 \u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u300Cmain__\u95A2\u6570\u540D\u300D\u3068\u8868\u793A\u3055\u308C\u308B\u306E\u3067\u3001main__\u306F\u7701\u7565\u3057\u3066\u8868\u793A\n msg = msg.replace(/\u300Emain__(.+?)\u300F/g, '\u300E$1\u300F');\n // \u89AA\u306EError\u3092\u547C\u3076\n super(`[${tag}]${positionJa}${msg}`);\n // \u30A8\u30E9\u30FC\u306E\u7A2E\u985E\u3092\u8A2D\u5B9A\n this.name = 'NakoError';\n this.type = 'NakoError';\n this.tag = '[' + tag + ']';\n this.positionJa = positionJa;\n this.msg = msg;\n }\n}\nexport class NakoIndentError extends NakoError {\n /**\n * @param {string} msg\n * @param {number} line\n * @param {string} file\n */\n constructor(msg, line, file) {\n super('\u30A4\u30F3\u30C7\u30F3\u30C8\u30A8\u30E9\u30FC', msg, file, line);\n this.type = 'NakoIndentError';\n this.line = line;\n this.file = file;\n }\n}\n// \u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u5185\u90E8\u3067\u306E\u307F\u4F7F\u3046\u30A8\u30E9\u30FC\u3002\u6295\u3052\u3089\u308C\u305F\u3089try\u3067\u30AD\u30E3\u30C3\u30C1\u3057\u3066LexerError\u3078\u5909\u66F4\u3059\u308B\u3002\nexport class InternalLexerError extends NakoError {\n /**\n * @param {string} msg\n * @param {number} preprocessedCodeStartOffset\n * @param {number} preprocessedCodeEndOffset\n * @param {number | undefined} [line]\n * @param {string | undefined} [file]\n */\n constructor(msg, preprocessedCodeStartOffset, preprocessedCodeEndOffset, line, file) {\n super('\u5B57\u53E5\u89E3\u6790\u30A8\u30E9\u30FC\uFF08\u5185\u90E8\u30A8\u30E9\u30FC\uFF09', msg, file, line);\n this.type = 'InternalLexerError';\n this.preprocessedCodeStartOffset = preprocessedCodeStartOffset;\n this.preprocessedCodeEndOffset = preprocessedCodeEndOffset;\n this.line = line;\n this.file = file;\n }\n}\nexport class NakoLexerError extends NakoError {\n /**\n * @param {string} msg\n * @param {number | null} startOffset\n * @param {number | null} endOffset,\n * @param {number | undefined} line\n * @param {string | undefined} file\n */\n constructor(msg, startOffset, endOffset, line, file) {\n super('\u5B57\u53E5\u89E3\u6790\u30A8\u30E9\u30FC', msg, file, line);\n this.type = 'NakoLexerError';\n this.startOffset = startOffset;\n this.endOffset = endOffset;\n this.line = line;\n this.file = file;\n }\n}\nexport class NakoSyntaxError extends NakoError {\n /**\n * @param {string} msg\n * @param {Ast} first\n * @param {Ast} [last]\n */\n static fromNode(msg, first, last = undefined) {\n if (!first) {\n return new NakoSyntaxError(msg, undefined, undefined, undefined, undefined);\n }\n const startOffset = typeof first.startOffset === 'number' ? first.startOffset : undefined;\n const endOffset = (last && typeof last.endOffset === 'number')\n ? last.endOffset\n : (typeof first.endOffset === 'number' ? first.endOffset : undefined);\n return new NakoSyntaxError(msg, first.line, startOffset, endOffset, first.file);\n }\n /**\n * @param {string} msg\n * @param {number | undefined} line\n * @param {number | undefined} startOffset\n * @param {number | undefined} endOffset\n * @param {string | undefined} file\n */\n constructor(msg, line, startOffset, endOffset, file) {\n super('\u6587\u6CD5\u30A8\u30E9\u30FC', msg, file, line);\n this.type = 'NakoSyntaxError';\n this.file = file;\n this.line = line;\n this.startOffset = startOffset;\n this.endOffset = endOffset;\n }\n}\nexport class NakoRuntimeError extends NakoError {\n /**\n * @param error \u30A8\u30E9\u30FC\n * @param lineNo \u767A\u751F\u884C\n */\n constructor(error, lineNo) {\n let msg = 'unknown';\n if (typeof error === 'string') {\n msg = error;\n }\n else {\n if (error instanceof NakoRuntimeError) {\n msg = error.msg;\n }\n else if (error instanceof NakoError) {\n msg = error.msg;\n }\n else if (error instanceof Error) {\n if (error.name === 'Error') {\n msg = error.message;\n }\n else {\n msg = `${error.name}: ${error.message}`;\n }\n }\n }\n // \u884C\u756A\u53F7\u3092\u8868\u3059\u6587\u5B57\u5217\u3092\u30D1\u30FC\u30B9\u3059\u308B\u3002\n let line;\n let file;\n let matches;\n if (lineNo === undefined) {\n line = undefined;\n file = undefined;\n // eslint-disable-next-line no-cond-assign\n }\n else if (matches = /^l(-?\\d+):(.*)$/.exec(lineNo)) {\n line = parseInt(matches[1]);\n file = matches[2];\n // eslint-disable-next-line no-cond-assign\n }\n else if (matches = /^l(-?\\d+)$/.exec(lineNo)) {\n line = parseInt(matches[1]);\n file = 'main.nako3';\n }\n else {\n line = 0;\n file = lineNo;\n }\n super('\u5B9F\u884C\u6642\u30A8\u30E9\u30FC', msg, file, line);\n this.type = 'NakoRuntimeError';\n this.lineNo = lineNo;\n this.line = line;\n this.file = file;\n }\n}\nexport class NakoImportError extends NakoError {\n /**\n * @param {string} msg\n * @param {string} file\n * @param {number} line\n */\n constructor(msg, file, line) {\n super('\u53D6\u308A\u8FBC\u307F\u30A8\u30E9\u30FC', msg, file, line);\n this.file = file;\n this.line = line;\n }\n}\n", "/** \u4E88\u7D04\u8A9E */\nconst reserved = new Map([\n ['\u56DE', '\u56DE'],\n ['\u56DE\u7E70\u8FD4', '\u56DE'], // (#924)\n ['\u9593', '\u9593'],\n ['\u9593\u7E70\u8FD4', '\u9593'], // (#927)\n ['\u7E70\u8FD4', '\u7E70\u8FD4'],\n ['\u5897\u7E70\u8FD4', '\u5897\u7E70\u8FD4'], // (#1140)\n ['\u6E1B\u7E70\u8FD4', '\u6E1B\u7E70\u8FD4'],\n ['\u5F8C\u5224\u5B9A', '\u5F8C\u5224\u5B9A'], // (#1147)\n ['\u53CD\u5FA9', '\u53CD\u5FA9'],\n ['\u629C', '\u629C\u3051\u308B'],\n ['\u7D9A', '\u7D9A\u3051\u308B'],\n ['\u623B', '\u623B\u308B'],\n ['\u5148', '\u5148\u306B'],\n ['\u6B21', '\u6B21\u306B'],\n ['\u4EE3\u5165', '\u4EE3\u5165'],\n ['\u5B9F\u884C\u901F\u5EA6\u512A\u5148', '\u5B9F\u884C\u901F\u5EA6\u512A\u5148'],\n ['\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u30E2\u30CB\u30BF\u9069\u7528', '\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u30E2\u30CB\u30BF\u9069\u7528'], // (#986)\n ['\u5B9A', '\u5B9A\u3081\u308B'],\n ['\u9010\u6B21\u5B9F\u884C', '\u9010\u6B21\u5B9F\u884C'], // \u5EC3\u6B62 #1611 \u305F\u3060\u3057\u5FF5\u306E\u305F\u3081\u6B8B\u3057\u3066\u304A\u304F\n ['\u6761\u4EF6\u5206\u5C90', '\u6761\u4EF6\u5206\u5C90'],\n ['\u5897', '\u5897'],\n ['\u6E1B', '\u6E1B'],\n ['\u5909\u6570', '\u5909\u6570'],\n ['\u5B9A\u6570', '\u5B9A\u6570'],\n ['\u30A8\u30E9\u30FC\u76E3\u8996', '\u30A8\u30E9\u30FC\u76E3\u8996'], // \u4F8B\u5916\u51E6\u7406:\u30A8\u30E9\u30FC\u306A\u3089\u3070\u3068\u5BFE\n ['\u30A8\u30E9\u30FC', '\u30A8\u30E9\u30FC'],\n ['\u305D\u308C', 'word'],\n ['\u305D\u3046', 'word'], // \u300C\u305D\u308C\u300D\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\n ['\u95A2\u6570', 'def_func'], // \u7121\u540D\u95A2\u6570\u306E\u5B9A\u7FA9\u7528\n ['\u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587', '\u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587'], // https://nadesi.com/v3/doc/go.php?949\n ['\u975E\u540C\u671F\u30E2\u30FC\u30C9', '\u975E\u540C\u671F\u30E2\u30FC\u30C9'], // (#637)\n ['DNCL\u30E2\u30FC\u30C9', 'DNCL\u30E2\u30FC\u30C9'], // (#1140)\n ['\u30E2\u30FC\u30C9\u8A2D\u5B9A', '\u30E2\u30FC\u30C9\u8A2D\u5B9A'], // (#1020)\n ['\u53D6\u8FBC', '\u53D6\u8FBC'],\n ['\u30E2\u30B8\u30E5\u30FC\u30EB\u516C\u958B\u65E2\u5B9A\u5024', '\u30E2\u30B8\u30E5\u30FC\u30EB\u516C\u958B\u65E2\u5B9A\u5024'],\n ['\u53B3\u30C1\u30A7\u30C3\u30AF', '\u53B3\u30C1\u30A7\u30C3\u30AF'] // \u53B3\u3057\u304F\u30C1\u30A7\u30C3\u30AF (#1698)\n]);\nexport default reserved;\n", "/**\n * \u306A\u3067\u3057\u30533\u3067\u884C\u982D\u30A4\u30F3\u30C7\u30F3\u30C8\u306B\u4F7F\u3048\u308B\u6587\u5B57\u3068\u30A4\u30F3\u30C7\u30F3\u30C8\u30AB\u30A6\u30F3\u30C8\u6570\n */\nexport function isIndentChars(ch) {\n const code = ch.charCodeAt(0);\n // \u7279\u5225\u306A\u30B3\u30FC\u30C9\n if (ch === '\\t') {\n return 4;\n }\n if (ch === ' ' || ch === '|') {\n return 1;\n }\n if (ch === '\u30FB' || ch === '\u3000') {\n return 2;\n }\n if (ch === '\u23CB' || ch === '\u23CC') {\n return 2;\n } // 0x23CB, 0x23CC\n // \u7F6B\u7DDA\u304B\u3089 --- https://github.com/kujirahand/unicode-sheets/blob/main/box-drawing.md\n if (code >= 0x2500 && code <= 0x257F) {\n return 2;\n }\n // \u8A18\u53F7\u304B\u3089 --- https://github.com/kujirahand/unicode-sheets/blob/main/misc-technical.md\n if ((code >= 0x23A0 && code <= 0x23AF) ||\n (code >= 0x23B8 && code <= 0x23BF)) {\n return 2;\n }\n return 0;\n}\n", "/**\n * \u52A9\u8A5E\u306E\u4E00\u89A7\n */\nexport const josiList = [\n '\u306B\u3064\u3044\u3066', '\u304F\u3089\u3044', '\u306A\u306E\u304B', '\u307E\u3067\u3092', '\u307E\u3067\u306E', '\u306B\u3088\u308B',\n '\u3068\u306F', '\u304B\u3089', '\u307E\u3067', '\u3060\u3051', '\u3088\u308A', '\u307B\u3069', '\u306A\u3069',\n '\u3044\u3066', '\u3048\u3066', '\u304D\u3066', '\u3051\u3066', '\u3057\u3066', '\u3063\u3066', '\u306B\u3066', '\u307F\u3066',\n '\u3081\u3066', '\u306D\u3066', '\u3067\u306F', '\u306B\u306F', '\u306F~', '\u3093\u3067', '\u305A\u3064',\n '\u306F', '\u3092', '\u306B', '\u3078', '\u3067', '\u3068', '\u304C', '\u306E'\n];\n// \u300C\u3082\u3057\u300D\u6587\u3067\u4F7F\u3046\u52A9\u8A5E\nexport const tararebaJosiList = [\n '\u3067\u306A\u3051\u308C\u3070', '\u306A\u3051\u308C\u3070', '\u306A\u3089\u3070', '\u306A\u3089', '\u305F\u3089', '\u308C\u3070'\n];\n// \u610F\u5473\u306E\u306A\u3044\u52A9\u8A5E(\u524A\u9664\u3059\u308B) #936 #939 #974\nexport const removeJosiList = [\n '\u3053\u3068', '\u3067\u3042\u308B', '\u3067\u3059', '\u3057\u307E\u3059', '\u3067\u3057\u305F'\n];\n/**\n * \u300C\u3082\u3057\u300D\u6587\u3067\u4F7F\u3046\u300C\u305F\u3089\u300D\u300C\u308C\u3070\u300D\u306A\u3069\u306E\u4E00\u89A7\u3092\u30D7\u30ED\u30B0\u30E9\u30E0\u3067\u6271\u3044\u3084\u3059\u3044\u3088\u3046\u30DE\u30C3\u30D7\u306B\u5909\u63DB\u3057\u305F\u3082\u306E\n */\nexport const tararebaMap = {};\ntararebaJosiList.forEach(josi => {\n josiList.push(josi);\n tararebaMap[josi] = true;\n});\n/**\n * \u610F\u5473\u306E\u306A\u3044\u52A9\u8A5E(\u524A\u9664\u3059\u308B)\u3092\u30DE\u30C3\u30D7\u306B\u5909\u63DB\u3057\u305F\u3082\u306E\n */\nexport const removeJosiMap = {};\nremoveJosiList.forEach(josi => {\n josiList.push(josi);\n removeJosiMap[josi] = true;\n});\n// \u300C\u3082\u306E\u300D\u69CB\u6587 (#1614)\nconst josiListMono = [];\nfor (const jo of josiList) {\n josiListMono.push('\u3082\u306E' + jo);\n josiListMono.push(jo);\n}\n// \u6587\u5B57\u6570\u306E\u9577\u3044\u9806\u306B\u4E26\u3073\u66FF\u3048\njosiListMono.sort((a, b) => b.length - a.length);\n// \u6B63\u898F\u8868\u73FE\u3067\u52A9\u8A5E\u3092\u30DE\u30C3\u30C1\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\nconst pat = '^[\\\\t ]*(' + josiListMono.join('|') + ')';\nexport const josiRE = new RegExp(pat);\nexport const josiListExport = josiList;\n", "/**\n * \u306A\u3067\u3057\u30533\u5B57\u53E5\u89E3\u6790\u306E\u305F\u3081\u306E\u30EB\u30FC\u30EB\n */\nimport { josiRE, removeJosiMap } from './nako_josi_list.mjs';\nconst kanakanji = /^[\\u3005\\u4E00-\\u9FCF_a-zA-Z0-9\u30A1-\u30F6\u30FC\\u2460-\\u24FF\\u2776-\\u277F\\u3251-\\u32BF]+/;\nconst hira = /^[\u3041-\u3093]/;\nconst allHiragana = /^[\u3041-\u3093]+$/;\nconst wordHasIjoIka = /^.+(\u4EE5\u4E0A|\u4EE5\u4E0B|\u8D85|\u672A\u6E80)$/;\nconst wordSpecial = /^(\u304B\u3064|\u307E\u305F\u306F)/;\nconst errorRead = (ch) => {\n return function () { throw new Error('\u7A81\u7136\u306E\u300E' + ch + '\u300F\u304C\u3042\u308A\u307E\u3059\u3002'); };\n};\nexport const unitRE = /^(\u5186|\u30C9\u30EB|\u5143|\u6B69|\u33A1|\u576A|\u5EA6|\u2103|\u00B0|\u500B|\u3064|\u672C|\u518A|\u624D|\u6B73|\u5339|\u679A|\u76BF|\u30BB\u30C3\u30C8|\u7FBD|\u4EBA|\u4EF6|\u884C|\u5217|\u6A5F|\u54C1|m|mm|cm|km|g|kg|t|px|dot|pt|em|b|mb|kb|gb)/;\n/** \u30C8\u30FC\u30AF\u30F3\u306B\u533A\u5207\u308B\u30EB\u30FC\u30EB\u306E\u4E00\u89A7 */\nexport const rules = [\n // \u4E0A\u304B\u3089\u9806\u306B\u30DE\u30C3\u30C1\u3055\u305B\u3066\u3044\u304F\n { name: '\u3053\u3053\u307E\u3067', pattern: /^;;;/ }, // #925\n { name: 'eol', pattern: /^\\n/ },\n { name: 'eol', pattern: /^;/ },\n // eslint-disable-next-line no-control-regex\n { name: 'space', pattern: /^(\\x20|\\x09|\u30FB|\u23BF |\u2514|\uFF5C)+/ }, // #877,#1015\n { name: 'comma', pattern: /^,/ },\n { name: 'line_comment', pattern: /^#[^\\n]*/ },\n { name: 'line_comment', pattern: /^\\/\\/[^\\n]*/ },\n { name: 'range_comment', pattern: /^\\/\\*/, cbParser: cbRangeComment },\n { name: 'def_test', pattern: /^\u25CF\u30C6\u30B9\u30C8:/ },\n { name: 'def_func', pattern: /^\u25CF/ },\n { name: '\u2026', pattern: /^\u2026/ }, // \u7BC4\u56F2\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8(#1704)\n { name: '\u2026', pattern: /^\\.{2,3}/ }, // \u7BC4\u56F2\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8(#1704)\n // \u591A\u500D\u9577\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u306E\u5224\u5B9A\u3002\u6574\u6570\u306E\u672B\u5C3E\u306B\u300Cn\u300D\u304C\u3064\u3044\u3066\u3044\u308B\u3060\u3051\u306A\u70BA\u3001\u6570\u5024\u5224\u5B9A\u3088\u308A\u4E0A\u306B\u66F8\u304B\u306A\u3044\u3068\u305F\u3060\u306E\u6574\u6570\u306B\u3055\u308C\u308B\n { name: 'bigint', pattern: /^0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)*n/, readJosi: true },\n { name: 'bigint', pattern: /^0[oO][0-7]+(_[0-7]+)*n/, readJosi: true },\n { name: 'bigint', pattern: /^0[bB][0-1]+(_[0-1]+)*n/, readJosi: true },\n { name: 'bigint', pattern: /^\\d+(_\\d+)*?n/, readJosi: true },\n // 16\u9032/8\u9032/2\u9032\u6CD5\u306E\u6570\u5024\u5224\u5B9A --- \u3053\u306E\u5F8Cnako_lexer\u306B\u3066\u5358\u4F4D\u3092\u8AAD\u3080\u51E6\u7406\u304C\u5165\u308B(#994)\n { name: 'number', pattern: /^0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)*/, readJosi: true, cb: parseNumber },\n { name: 'number', pattern: /^0[oO][0-7]+(_[0-7]+)*/, readJosi: true, cb: parseNumber },\n { name: 'number', pattern: /^0[bB][0-1]+(_[0-1]+)*/, readJosi: true, cb: parseNumber },\n // \u4E0B\u306E\u4E09\u3064\u306F\u5C0F\u6570\u70B9\u304C\u631F\u307E\u3063\u3066\u3044\u308B\u5834\u5408\u3001\u5C0F\u6570\u70B9\u304B\u3089\u59CB\u307E\u3063\u3066\u3044\u308B\u5834\u5408\u3001\u5C0F\u6570\u70B9\u304C\u306A\u3044\u5834\u5408\u306E\u5341\u9032\u6CD5\u306E\u6570\u5024\u306B\u30DE\u30C3\u30C1\u3059\u308B\n { name: 'number', pattern: /^\\d+(_\\d+)*\\.(\\d+(_\\d+)*)?([eE][+|-]?\\d+(_\\d+)*)?/, readJosi: true, cb: parseNumber },\n { name: 'number', pattern: /^\\.\\d+(_\\d+)*([eE][+|-]?\\d+(_\\d+)*)?/, readJosi: true, cb: parseNumber },\n { name: 'number', pattern: /^\\d+(_\\d+)*([eE][+|-]?\\d+(_\\d+)*)?/, readJosi: true, cb: parseNumber },\n { name: '\u3053\u3053\u304B\u3089', pattern: /^(\u3053\u3053\u304B\u3089),?/ },\n { name: '\u3053\u3053\u307E\u3067', pattern: /^(\u3053\u3053\u307E\u3067|\uD83D\uDCA7)/ },\n { name: '\u3082\u3057', pattern: /^\u3082\u3057\u3082?/ },\n // \u300C\u306A\u3089\u3070\u300D\u306F\u52A9\u8A5E\u3068\u3057\u3066\u5B9A\u7FA9\u3057\u3066\u3044\u308B\n { name: '\u9055\u3048\u3070', pattern: /^\u9055(\u3048\u3070)?/ },\n // \u300C\u56DE\u300D\u300C\u9593\u300D\u300C\u7E70\u8FD4\u300D\u300C\u53CD\u5FA9\u300D\u300C\u629C\u300D\u300C\u7D9A\u300D\u300C\u623B\u300D\u300C\u4EE3\u5165\u300D\u300C\u6761\u4EF6\u5206\u5C90\u300D\u306A\u3069\u306F NakoLexer._replaceWord \u3067 word \u304B\u3089\u5909\u63DB\n // @see nako_reserved_words.js\n { name: 'shift_r0', pattern: /^>>>/ },\n { name: 'shift_r', pattern: /^>>/ },\n { name: 'shift_l', pattern: /^<</ },\n { name: '===', pattern: /^===/ }, // #999\n { name: '!==', pattern: /^!==/ }, // #999\n { name: 'gteq', pattern: /^(\u2267|>=|=>)/ },\n { name: 'lteq', pattern: /^(\u2266|<=|=<)/ },\n { name: 'noteq', pattern: /^(\u2260|<>|!=)/ },\n { name: '\u2190', pattern: /^(\u2190|<--)/ }, // \u77E2\u5370 --- \u305F\u3060\u3057(core#140)\u3067\u5EC3\u6B62\u3055\u308C\u305F\u6F14\u7B97\u5B50(#891,#899)\n { name: 'eq', pattern: /^(==|\uD83D\uDFF0\uD83D\uDFF0)/ },\n { name: 'eq', pattern: /^(=|\uD83D\uDFF0)/ },\n { name: 'line_comment', pattern: /^(!|\uD83D\uDCA1)(\u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587|\u3053\u3053\u307E\u3067\u3060\u308B\u3044|DNCL\u30E2\u30FC\u30C9|DNCL2\u30E2\u30FC\u30C9|DNCL2)[^\\n]*/ }, // #1184\n { name: 'not', pattern: /^(!|\uD83D\uDCA1)/ }, // #1184 #1457\n { name: 'gt', pattern: /^>/ },\n { name: 'lt', pattern: /^</ },\n { name: 'and', pattern: /^(\u304B\u3064|&&|and\\s)/ },\n { name: 'or', pattern: /^(\u307E\u305F\u306F|\u6216\u3044\u306F|\u3042\u308B\u3044\u306F|or\\s|\\|\\|)/ },\n { name: '@', pattern: /^@/ },\n { name: '+', pattern: /^\\+/ },\n { name: '-', pattern: /^-/ },\n { name: '**', pattern: /^(\u00D7\u00D7|\\*\\*)/ }, // Python\u98A8\u3079\u304D\u4E57\u6F14\u7B97\u5B50\n { name: '*', pattern: /^(\u00D7|\\*)/ },\n { name: '\u00F7\u00F7', pattern: /^\u00F7\u00F7/ }, // \u6574\u6570\u306E\u5272\u308A\u7B97\n { name: '\u00F7', pattern: /^(\u00F7|\\/)/ }, // \u666E\u901A\u306E\u5272\u308A\u7B97\n { name: '%', pattern: /^%/ },\n { name: '^', pattern: /^\\^/ },\n { name: '&', pattern: /^&/ },\n { name: '[', pattern: /^\\[/ },\n { name: ']', pattern: /^]/, readJosi: true },\n { name: '(', pattern: /^\\(/ },\n { name: ')', pattern: /^\\)/, readJosi: true },\n { name: '|', pattern: /^\\|/ },\n { name: 'string', pattern: /^\uD83C\uDF3F/, cbParser: src => cbString('\uD83C\uDF3F', '\uD83C\uDF3F', src) },\n { name: 'string_ex', pattern: /^\uD83C\uDF34/, cbParser: src => cbString('\uD83C\uDF34', '\uD83C\uDF34', src) },\n { name: 'string_ex', pattern: /^\u300C/, cbParser: src => cbString('\u300C', '\u300D', src) },\n { name: 'string', pattern: /^\u300E/, cbParser: src => cbString('\u300E', '\u300F', src) },\n { name: 'string_ex', pattern: /^\u201C/, cbParser: src => cbString('\u201C', '\u201D', src) },\n { name: 'string_ex', pattern: /^\"/, cbParser: src => cbString('\"', '\"', src) },\n { name: 'string', pattern: /^'/, cbParser: src => cbString('\\'', '\\'', src) },\n { name: '\u300D', pattern: /^\u300D/, cbParser: errorRead('\u300D') }, // error\n { name: '\u300F', pattern: /^\u300F/, cbParser: errorRead('\u300F') }, // error\n { name: 'func', pattern: /^\\{\u95A2\u6570\\},?/ },\n { name: '{', pattern: /^\\{/ },\n { name: '}', pattern: /^\\}/, readJosi: true },\n { name: ':', pattern: /^:/ },\n { name: '_eol', pattern: /^_\\s*\\n/ },\n { name: 'dec_lineno', pattern: /^\u2030/ },\n // \u7D75\u6587\u5B57\u5909\u6570 = (\u7D75\u6587\u5B57)\u82F1\u6570\u5B57*\n { name: 'word', pattern: /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF][_a-zA-Z0-9]*/, readJosi: true },\n { name: 'word', pattern: /^[\\u1F60-\\u1F6F][_a-zA-Z0-9]*/, readJosi: true }, // \u7D75\u6587\u5B57\n { name: 'word', pattern: /^\u300A.+?\u300B/, readJosi: true }, // \u300A\u7279\u5225\u540D\u524D\u30C8\u30FC\u30AF\u30F3\u300B(#672)\n // \u5358\u8A9E\u53E5\n {\n name: 'word',\n pattern: /^[_a-zA-Z\\u3005\\u4E00-\\u9FCF\u3041-\u3093\u30A1-\u30F6\\u2460-\\u24FF\\u2776-\\u277F\\u3251-\\u32BF]/,\n cbParser: cbWordParser\n }\n];\nexport function trimOkurigana(s) {\n // \u3072\u3089\u304C\u306A\u304B\u3089\u59CB\u307E\u3089\u306A\u3044\u5834\u5408\u3001\u9001\u308A\u4EEE\u540D\u3092\u524A\u9664\u3002(\u4F8B)\u7F6E\u63DB\u3059\u308B\n if (!hira.test(s)) {\n return s.replace(/[\u3041-\u3093]+/g, '');\n }\n // \u5168\u3066\u3072\u3089\u304C\u306A\uFF1F (\u4F8B) \u3069\u3046\u305E\n if (allHiragana.test(s)) {\n return s;\n }\n // \u672B\u5C3E\u306E\u3072\u3089\u304C\u306A\u306E\u307F (\u4F8B)\u304A\u9858\u3044\u3057\u307E\u3059 \u2192\u304A\u9858\n return s.replace(/[\u3041-\u3093]+$/g, '');\n}\n// Utility for Rule\nfunction cbRangeComment(src) {\n let res = '';\n const josi = '';\n let numEOL = 0;\n src = src.substring(2); // skip /*\n const i = src.indexOf('*/');\n if (i < 0) { // not found\n res = src;\n src = '';\n }\n else {\n res = src.substring(0, i);\n src = src.substring(i + 2);\n }\n // \u6539\u884C\u3092\u6570\u3048\u308B\n for (let i = 0; i < res.length; i++) {\n if (res.charAt(i) === '\\n') {\n numEOL++;\n }\n }\n res = res.replace(/(^\\s+|\\s+$)/, ''); // trim\n return { src, res, josi, numEOL };\n}\n/**\n * @param {string} src\n */\nfunction cbWordParser(src, isTrimOkurigana = true) {\n /*\n kanji = [\\u3005\\u4E00-\\u9FCF]\n hiragana = [\u3041-\u3093]\n katakana = [\u30A1-\u30F6\u30FC]\n emoji = [\\u1F60-\\u1F6F]\n uni_extra = [\\uD800-\\uDBFF] [\\uDC00-\\uDFFF]\n alphabet = [_a-zA-Z]\n numchars = [0-9]\n */\n let res = '';\n let josi = '';\n while (src !== '') {\n // 1\u6587\u5B57\u4EE5\u4E0A\u306E\u3068\u304D\n if (res.length > 0) {\n // \u300C\u304B\u3064\u300D\u300C\u307E\u305F\u306F\u300D\u306A\u3089\u5206\u5272\u3059\u308B (#1379 core#84)\n const jsw = wordSpecial.exec(src);\n if (jsw) {\n break;\n }\n // \u52A9\u8A5E\u306E\u5224\u5B9A\n const j = josiRE.exec(src);\n if (j) {\n josi = j[0].replace(/^\\s+/, '');\n src = src.substring(j[0].length);\n // \u52A9\u8A5E\u306E\u76F4\u5F8C\u306B\u3042\u308B\u300C,\u300D\u3092\u98DB\u3070\u3059 #877\n if (src.charAt(0) === ',') {\n src = src.substring(1);\n }\n break;\n }\n }\n // \u30AB\u30BF\u30AB\u30CA\u6F22\u5B57\u82F1\u6570\u5B57\u304B\uFF1F\n const m = kanakanji.exec(src);\n if (m) {\n res += m[0];\n src = src.substring(m[0].length);\n continue;\n }\n // \u3072\u3089\u304C\u306A\uFF1F\n const h = hira.test(src);\n if (h) {\n res += src.charAt(0);\n src = src.substring(1);\n continue;\n }\n break; // other chars\n }\n // --- \u5358\u8A9E\u5206\u5272\u306B\u304A\u3051\u308B\u7279\u6B8A\u30EB\u30FC\u30EB ---\n // \u300C\u9593\u300D\u306E\u7279\u6B8A\u30EB\u30FC\u30EB (#831)\n // \u300C\u7B49\u3057\u3044\u9593\u300D\u3084\u300C\u4E00\u81F4\u3059\u308B\u9593\u300D\u306A\u3089\u300C\u9593\u300D\u3092src\u306B\u623B\u3059\u3002\u305F\u3060\u3057\u300C\u30B7\u30B9\u30C6\u30E0\u6642\u9593\u300D\u306F\u305D\u306E\u307E\u307E\u306B\u3059\u308B\u3002\n if (/[\u3041-\u3093]\u9593$/.test(res)) {\n src = res.charAt(res.length - 1) + src;\n res = res.slice(0, -1);\n }\n // \u300C\u4EE5\u4E0A\u300D\u300C\u4EE5\u4E0B\u300D\u300C\u8D85\u300D\u300C\u672A\u6E80\u300D #918\n const ii = wordHasIjoIka.exec(res);\n if (ii) {\n src = ii[1] + josi + src;\n josi = '';\n res = res.substring(0, res.length - ii[1].length);\n }\n // \u300C\u3082\u306E\u300D\u69CB\u6587 #1614\n if (josi.substring(0, 2) === '\u3082\u306E') {\n josi = josi.substring(2);\n }\n // \u52A9\u8A5E\u300C\u3053\u3068\u300D\u300C\u3067\u3042\u308B\u300D\u300C\u3067\u3059\u300D\u306A\u3069\u306F\u300C\uFF0A\uFF0A\u3059\u308B\u3053\u3068\u300D\u306E\u3088\u3046\u306B\u4F7F\u3046\u306E\u3067\u524A\u9664 #936 #939 #974\n if (removeJosiMap[josi]) {\n josi = '';\n }\n // \u9001\u308A\u4EEE\u540D\u306E\u7701\u7565\u30EB\u30FC\u30EB\n // \u6F22\u5B57\u30AB\u30BF\u30AB\u30CA\u82F1\u8A9E\u304B\u3089\u59CB\u307E\u308B\u8A9E\u53E5 --- \u9001\u308A\u4EEE\u540D\u3092\u7701\u7565\n if (isTrimOkurigana) {\n res = trimOkurigana(res);\n }\n // \u52A9\u8A5E\u3060\u3051\u306E\u8A9E\u53E5\u306E\u5834\u5408\n if (res === '' && josi !== '') {\n res = josi;\n josi = '';\n }\n return { src, res, josi, numEOL: 0 };\n}\nfunction cbString(beginTag, closeTag, src) {\n let res = '';\n let josi = '';\n let numEOL = 0;\n src = src.substring(beginTag.length); // skip beginTag\n const i = src.indexOf(closeTag);\n if (i < 0) { // not found\n res = src;\n src = '';\n }\n else {\n res = src.substring(0, i);\n src = src.substring(i + closeTag.length);\n // res \u306E\u4E2D\u306B beginTag \u304C\u3042\u308C\u3070\u30A8\u30E9\u30FC\u306B\u3059\u308B #953\n if (res.indexOf(beginTag) >= 0) {\n if (beginTag === '\u300E') {\n throw new Error('\u300C\u300E\u300D\u3067\u59CB\u3081\u305F\u6587\u5B57\u5217\u306E\u4E2D\u306B\u300C\u300E\u300D\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002');\n }\n else {\n throw new Error(`\u300E${beginTag}\u300F\u3067\u59CB\u3081\u305F\u6587\u5B57\u5217\u306E\u4E2D\u306B\u300E${beginTag}\u300F\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002`);\n }\n }\n }\n // \u6587\u5B57\u5217\u76F4\u5F8C\u306E\u52A9\u8A5E\u3092\u53D6\u5F97\n const j = josiRE.exec(src);\n if (j) {\n josi = j[0].replace(/^\\s+/, '');\n src = src.substring(j[0].length);\n // \u52A9\u8A5E\u306E\u5F8C\u306E\u30AB\u30F3\u30DE #877\n if (src.charAt(0) === ',') {\n src = src.substring(1);\n }\n }\n // \u52A9\u8A5E\u300C\u3053\u3068\u300D\u300C\u3067\u3042\u308B\u300D\u300C\u3067\u3059\u300D\u306A\u3069\u306F\u300C\uFF0A\uFF0A\u3059\u308B\u3053\u3068\u300D\u306E\u3088\u3046\u306B\u4F7F\u3046\u306E\u3067\u524A\u9664 #936 #939 #974\n if (removeJosiMap[josi]) {\n josi = '';\n }\n // \u300C\u3082\u306E\u300D\u69CB\u6587 (#1614)\n if (josi.substring(0, 2) === '\u3082\u306E') {\n josi = josi.substring(2);\n }\n // \u6539\u884C\u3092\u6570\u3048\u308B\n for (let i = 0; i < res.length; i++) {\n if (res.charAt(i) === '\\n') {\n numEOL++;\n }\n }\n return { src, res, josi, numEOL };\n}\nfunction parseNumber(n) {\n return Number(n.replace(/_/g, ''));\n}\n", "// \u306A\u3067\u3057\u3053\u306E\u5B57\u53E5\u89E3\u6790\u3092\u884C\u3046\n// \u65E2\u306B\u5168\u89D2\u534A\u89D2\u3092\u63C3\u3048\u305F\u30B3\u30FC\u30C9\u306B\u5BFE\u3057\u3066\u5B57\u53E5\u89E3\u6790\u3092\u884C\u3046\nimport { opPriority } from './nako_parser_const.mjs';\n// \u4E88\u7D04\u8A9E\u53E5\n// (memo)\u300C\u56DE\u300D\u300C\u9593\u300D\u300C\u7E70\u8FD4\u300D\u300C\u53CD\u5FA9\u300D\u300C\u629C\u300D\u300C\u7D9A\u300D\u300C\u623B\u300D\u300C\u4EE3\u5165\u300D\u306A\u3069\u306F _replaceWord \u3067 word \u304B\u3089\u5909\u63DB\n/** @types {Record<string, string>} */\nimport reservedWords from './nako_reserved_words.mjs';\nimport { isIndentChars } from './nako_indent_chars.mjs';\n// \u52A9\u8A5E\u306E\u4E00\u89A7\nimport { josiRE, removeJosiMap, tararebaMap, josiListExport } from './nako_josi_list.mjs';\n// \u5B57\u53E5\u89E3\u6790\u30EB\u30FC\u30EB\u306E\u4E00\u89A7\nimport { rules, unitRE } from './nako_lex_rules.mjs';\nimport { NakoLexerError, InternalLexerError } from './nako_errors.mjs';\nexport class NakoLexer {\n /**\n * @param logger\n */\n constructor(logger) {\n this.logger = logger; // \u5B57\u53E5\u89E3\u6790\u3057\u305F\u969B,\u78BA\u8A8D\u3055\u308C\u305F\u95A2\u6570\u306E\u4E00\u89A7\n this.funclist = new Map();\n this.modList = []; // \u5B57\u53E5\u89E3\u6790\u3057\u305F\u969B,\u53D6\u308A\u8FBC\u3080\u30E2\u30B8\u30E5\u30FC\u30EB\u4E00\u89A7 --- nako3::lex \u3067\u66F4\u65B0\u3055\u308C\u308B\n this.result = [];\n this.modName = 'main.nako3'; // \u30E2\u30B8\u30E5\u30FC\u30EB\u540D\n this.moduleExport = new Map();\n this.reservedWords = Array.from(reservedWords.keys()); // for plugin_system::\u4E88\u7D04\u8A9E\u4E00\u89A7\u53D6\u5F97\n this.josiList = josiListExport; // for plugin_system::\u52A9\u8A5E\u4E00\u89A7\u53D6\u5F97\n }\n /** \u95A2\u6570\u4E00\u89A7\u3092\u30BB\u30C3\u30C8 */\n setFuncList(listMap) {\n this.funclist = listMap;\n }\n /** \u30E2\u30B8\u30E5\u30FC\u30EB\u516C\u958B\u65E2\u5B9A\u5024\u4E00\u89A7\u3092\u30BB\u30C3\u30C8 */\n setModuleExport(exportObj) {\n this.moduleExport = exportObj;\n }\n /**\n * @param tokens\n * @param {boolean} isFirst\n * @param {string} filename\n */\n replaceTokens(tokens, isFirst, filename) {\n this.result = tokens;\n this.modName = NakoLexer.filenameToModName(filename);\n // \u95A2\u6570\u306E\u5B9A\u7FA9\u304C\u3042\u308C\u3070 funclist \u3092\u66F4\u65B0\n NakoLexer.preDefineFunc(tokens, this.logger, this.funclist, this.moduleExport);\n this._replaceWord(this.result);\n if (isFirst) {\n if (this.result.length > 0) {\n const eof = this.result[this.result.length - 1];\n this.result.push({\n type: 'eol',\n line: eof.line,\n column: 0,\n indent: -1,\n file: eof.file,\n josi: '',\n value: '---',\n startOffset: eof.startOffset,\n endOffset: eof.endOffset,\n rawJosi: ''\n }); // \u6539\u884C\n this.result.push({\n type: 'eof',\n line: eof.line,\n indent: -1,\n column: 0,\n file: eof.file,\n josi: '',\n value: '',\n startOffset: eof.startOffset,\n endOffset: eof.endOffset,\n rawJosi: ''\n }); // \u30D5\u30A1\u30A4\u30EB\u672B\u5C3E\n }\n else {\n this.result.push({\n type: 'eol',\n line: 0,\n column: 0,\n indent: -1,\n file: '',\n josi: '',\n value: '---',\n startOffset: 0,\n endOffset: 0,\n rawJosi: ''\n }); // \u6539\u884C\n this.result.push({\n type: 'eof',\n line: 0,\n column: 0,\n indent: -1,\n file: '',\n josi: '',\n value: '',\n startOffset: 0,\n endOffset: 0,\n rawJosi: ''\n }); // \u30D5\u30A1\u30A4\u30EB\u672B\u5C3E\n }\n }\n return this.result;\n }\n /**\n * \u30D5\u30A1\u30A4\u30EB\u5185\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u95A2\u6570\u540D\u3092\u5217\u6319\u3059\u308B\u3002\u7D50\u679C\u306Ffunclist\u306B\u66F8\u304D\u8FBC\u3080\u3002\u305D\u306E\u4ED6\u306E\u30C8\u30FC\u30AF\u30F3\u306E\u7F6E\u63DB\u51E6\u7406\u3082\u884C\u3046\u3002\n * \u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u306E\u51E6\u7406\u304B\u3089\u547C\u3073\u51FA\u3059\u305F\u3081\u306Bstatic\u30E1\u30BD\u30C3\u30C9\u306B\u3057\u3066\u3044\u308B\u3002\n */\n static preDefineFunc(tokens, logger, funclist, moduleexport) {\n // \u95A2\u6570\u3092\u5148\u8AAD\u307F\u3057\u3066\u5B9A\u7FA9\n let i = 0;\n let isFuncPointer = false;\n const readArgs = () => {\n const args = [];\n const keys = {};\n if (tokens[i].type !== '(') {\n return [];\n }\n i++;\n while (tokens[i]) {\n const t = tokens[i];\n i++;\n if (t.type === ')') {\n break;\n }\n if (t.type === 'func') {\n isFuncPointer = true;\n }\n else if (t.type !== '|' && t.type !== 'comma') {\n if (isFuncPointer) {\n t.funcPointer = true;\n isFuncPointer = false;\n }\n args.push(t);\n if (!keys[t.value]) {\n keys[t.value] = [];\n }\n keys[t.value].push(t.josi);\n }\n }\n const varnames = [];\n const funcPointers = [];\n const result = [];\n const already = {};\n for (const arg of args) {\n if (!already[arg.value]) {\n const josi = keys[arg.value];\n result.push(josi);\n varnames.push(arg.value);\n if (arg.funcPointer) {\n funcPointers.push(arg.value);\n }\n else {\n funcPointers.push(null);\n }\n already[arg.value] = true;\n }\n }\n return [result, varnames, funcPointers];\n };\n // \u30C8\u30FC\u30AF\u30F3\u3092\u4E00\u3064\u305A\u3064\u78BA\u8A8D\n while (i < tokens.length) {\n // \u30BF\u30A4\u30D7\u306E\u7F6E\u63DB\n const t = tokens[i];\n if (t.type === 'not' && tokens.length - i > 3) {\n let prevToken = { type: 'eol' };\n if (i >= 1) {\n prevToken = tokens[i - 1];\n }\n if (prevToken.type === 'eol') {\n let nextToken = tokens[i + 1];\n if (nextToken.type === 'word' && nextToken.value === '\u30E2\u30B8\u30E5\u30FC\u30EB\u516C\u958B\u65E2\u5B9A\u5024') {\n nextToken.type = '\u30E2\u30B8\u30E5\u30FC\u30EB\u516C\u958B\u65E2\u5B9A\u5024';\n nextToken = tokens[i + 2];\n if (nextToken.type === 'string' && nextToken.value === '\u975E\u516C\u958B') {\n const modName = NakoLexer.filenameToModName(t.file);\n moduleexport.set(modName, false);\n i += 3;\n continue;\n }\n else if (nextToken.type === 'string' && nextToken.value === '\u516C\u958B') {\n const modName = NakoLexer.filenameToModName(t.file);\n moduleexport.set(modName, true);\n i += 3;\n continue;\n }\n }\n }\n }\n // \u7121\u540D\u95A2\u6570\u306E\u5B9A\u7FA9\uFF1A\u300Cxx\u306B\u306F**\u300D\u304C\u3042\u3063\u305F\u5834\u5408 ... \u6697\u9ED9\u7684\u306A\u95A2\u6570\u5B9A\u7FA9\u3068\u3059\u308B\n if ((t.type === 'word' && t.josi === '\u306B\u306F') || (t.type === 'word' && t.josi === '\u306F~')) {\n t.josi = '\u306B\u306F';\n tokens.splice(i + 1, 0, { type: 'def_func', value: '\u95A2\u6570', indent: t.indent, line: t.line, column: t.column, file: t.file, josi: '', startOffset: t.endOffset, endOffset: t.endOffset, rawJosi: '', tag: '\u7121\u540D\u95A2\u6570' });\n i++;\n continue;\n }\n // \u6C38\u9060\u306B\u7E70\u308A\u8FD4\u3059\u2192\u6C38\u9060\u306E\u9593\u306B\u7F6E\u63DB #1686\n if (t.type === 'word' && t.value === '\u6C38\u9060' && t.josi === '\u306B') {\n const t2 = tokens[i + 1];\n if (t2.value === '\u7E70\u8FD4') {\n t2.value = '\u9593';\n t2.josi = '\u306E';\n }\n i++;\n continue;\n }\n // N\u56DE\u3092N|\u56DE\u306B\u7F6E\u63DB\n if (t.type === 'word' && t.josi === '' && t.value.length >= 2) {\n if (t.value.match(/\u56DE$/)) {\n t.value = t.value.substring(0, t.value.length - 1);\n // N\u56DE\u3092\u633F\u5165\n if (!t.endOffset) {\n t.endOffset = 1;\n }\n const kai = { type: '\u56DE', value: '\u56DE', indent: t.indent, line: t.line, column: t.column, file: t.file, josi: '', startOffset: t.endOffset - 1, endOffset: t.endOffset, rawJosi: '' };\n tokens.splice(i + 1, 0, kai);\n t.endOffset--;\n i++;\n }\n }\n // \u4E88\u7D04\u8A9E\u306E\u7F6E\u63DB\n if (t.type === 'word') {\n const rtype = reservedWords.get(t.value);\n if (rtype) {\n t.type = rtype;\n }\n if (t.value === '\u305D\u3046') {\n t.value = '\u305D\u308C';\n }\n }\n // \u95A2\u6570\u5B9A\u7FA9\u306E\u78BA\u8A8D\n if (t.type !== 'def_test' && t.type !== 'def_func') {\n i++;\n continue;\n }\n // \u7121\u540D\u95A2\u6570\u304B\u666E\u901A\u95A2\u6570\u5B9A\u7FA9\u304B\u3092\u5224\u5B9A\u3059\u308B (1\u3064\u524D\u304C\u6539\u884C\u304B\u3069\u3046\u304B\u3067\u5224\u5B9A)\n let isMumei = true;\n let prevToken = { type: 'eol' };\n if (i >= 1) {\n prevToken = tokens[i - 1];\n }\n if (prevToken.type === 'eol') {\n isMumei = false;\n }\n // \u95A2\u6570\u540D\u3084\u5F15\u6570\u3092\u5F97\u308B\n const defToken = t;\n i++; // skip \"\u25CF\" or \"\u95A2\u6570\"\n let josi = [];\n let varnames = [];\n let funcPointers = [];\n let funcName = '';\n let funcNameToken = null;\n let isExport = null;\n // \u95A2\u6570\u306E\u5C5E\u6027\u6307\u5B9A\n if (tokens[i] && tokens[i].type === '{') {\n i++;\n const attr = tokens[i] && tokens[i].type === 'word' ? tokens[i].value : '';\n if (attr === '\u516C\u958B') {\n isExport = true;\n }\n else if (attr === '\u975E\u516C\u958B') {\n isExport = false;\n }\n else if (attr === '\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8') {\n isExport = true;\n }\n else {\n logger.warn(`\u4E0D\u660E\u306A\u95A2\u6570\u5C5E\u6027\u300E${attr}\u300F\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002`);\n }\n i++;\n if (tokens[i] && tokens[i].type === '}') {\n i++;\n }\n }\n // \u95A2\u6570\u540D\u306E\u524D\u306B\u5F15\u6570\u5B9A\u7FA9\n if (tokens[i] && tokens[i].type === '(') {\n [josi, varnames, funcPointers] = readArgs();\n }\n // \u95A2\u6570\u540D\u3092\u5F97\u308B\n if (!isMumei && tokens[i] && tokens[i].type === 'word') {\n funcNameToken = tokens[i++];\n funcName = funcNameToken.value;\n }\n // \u95A2\u6570\u540D\u306E\u5F8C\u3067\u5F15\u6570\u5B9A\u7FA9\n if (josi.length === 0 && tokens[i] && tokens[i].type === '(') {\n [josi, varnames, funcPointers] = readArgs();\n }\n // \u540D\u524D\u306E\u3042\u308B\u95A2\u6570\u5B9A\u7FA9\u306A\u3089\u3070\u95A2\u6570\u30C6\u30FC\u30D6\u30EB\u306B\u95A2\u6570\u540D\u3092\u767B\u9332\n // \u7121\u540D\u95A2\u6570\u306F\u767B\u9332\u3057\u306A\u3044\u3088\u3046\u306B\u6C17\u3092\u3064\u3051\u308B\n if (funcName !== '' && funcNameToken) {\n const modName = NakoLexer.filenameToModName(t.file);\n funcName = modName + '__' + funcName;\n if (funclist.has(funcName)) { // \u95A2\u6570\u306E\u4E8C\u91CD\u5B9A\u7FA9\u3092\u8B66\u544A\n // main__\u306F\u7701\u7565 #1223\n const dispName = funcName.replace(/^main__/, '');\n logger.warn(`\u95A2\u6570\u300E${dispName}\u300F\u306F\u65E2\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002`, defToken);\n }\n funcNameToken.value = funcName;\n funclist.set(funcName, {\n type: 'func',\n josi,\n fn: null,\n asyncFn: false,\n isExport,\n varnames,\n funcPointers\n });\n }\n // \u7121\u540D\u95A2\u6570\u306E\u305F\u3081\u306B\n const metaValue = {\n 'type': 'func',\n josi,\n varnames,\n funcPointers\n };\n defToken.meta = metaValue;\n }\n }\n /** \u6587\u5B57\u5217\u3092{\u3068}\u306E\u90E8\u5206\u3067\u5206\u5272\u3059\u308B\u3002\u4E2D\u62EC\u5F27\u304C\u5BFE\u5FDC\u3057\u3066\u3044\u306A\u3044\u5834\u5408null\u3092\u8FD4\u3059\u3002 */\n splitStringEx(code) {\n /** @type {string[]} */\n const list = [];\n // \"A{B}C{D}E\" -> [\"A\", \"B}C\", \"D}E\"] -> [\"A\", \"B\", \"C\", \"D\", \"E\"]\n // \"A{B}C}D{E}F\" -> [\"A\", \"B}C}D\", \"E}F\"] -> [\"A\", \"B\", \"C}D\", \"E\", \"F\"]\n const arr = code.split(/[{\uFF5B]/);\n list.push(arr[0]);\n for (const s of arr.slice(1)) {\n const end = s.replace('\uFF5D', '}').indexOf('}');\n if (end === -1) {\n return null;\n }\n list.push(s.slice(0, end), s.slice(end + 1));\n }\n return list;\n }\n _replaceWord(tokens) {\n let comment = [];\n let i = 0;\n let isFuncPointer = false;\n const namespaceStack = [];\n const getLastType = () => {\n if (i <= 0) {\n return 'eol';\n }\n return tokens[i - 1].type;\n };\n let modSelf = (tokens.length > 0) ? NakoLexer.filenameToModName(tokens[0].file) : 'main';\n while (i < tokens.length) {\n const t = tokens[i];\n // \u30E2\u30B8\u30E5\u30FC\u30EB\u540D\u306E\u5909\u66F4\u306B\u5BFE\u5FDC\n if ((t.type === 'word' || t.type === 'func') && t.value === '\u540D\u524D\u7A7A\u9593\u8A2D\u5B9A') {\n if (isFuncPointer) {\n throw new InternalLexerError('\u540D\u524D\u7A7A\u9593\u8A2D\u5B9A\u306E\u95A2\u6570\u53C2\u7167\u3092\u53D6\u5F97\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002', t.startOffset === undefined ? 0 : t.startOffset, t.endOffset === undefined ? 0 : t.endOffset, t.line, t.file);\n }\n namespaceStack.push(modSelf);\n modSelf = tokens[i - 1].value;\n }\n if ((t.type === 'word' || t.type === 'func') && t.value === '\u540D\u524D\u7A7A\u9593\u30DD\u30C3\u30D7') {\n if (isFuncPointer) {\n throw new InternalLexerError('\u540D\u524D\u7A7A\u9593\u30DD\u30C3\u30D7\u306E\u95A2\u6570\u53C2\u7167\u3092\u53D6\u5F97\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002', t.startOffset === undefined ? 0 : t.startOffset, t.endOffset === undefined ? 0 : t.endOffset, t.line, t.file);\n }\n const space = namespaceStack.pop();\n if (space) {\n modSelf = space;\n }\n }\n // \u95A2\u6570\u3092\u5F37\u5236\u7684\u306B\u7F6E\u63DB( word => func )\n if (t.type === 'word' && t.value !== '\u305D\u308C') {\n // \u95A2\u6570\u3092\u5909\u63DB\n const funcName = t.value;\n if (funcName.indexOf('__') < 0) {\n // \u81EA\u8EAB\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u540D\u3092\u691C\u7D22\n const gname1 = `${modSelf}__${funcName}`;\n const gfo1 = this.funclist.get(gname1);\n if (gfo1 && gfo1.type === 'func') {\n t.type = isFuncPointer ? 'func_pointer' : 'func';\n t.meta = gfo1;\n t.value = gname1;\n if (isFuncPointer) {\n isFuncPointer = false;\n tokens.splice(i - 1, 1);\n }\n continue;\n }\n // \u30E2\u30B8\u30E5\u30FC\u30EB\u95A2\u6570\u3092\u7F6E\u63DB\n for (const mod of this.modList) {\n const gname = `${mod}__${funcName}`;\n const gfo = this.funclist.get(gname);\n const exportDefault = this.moduleExport.get(mod);\n if (gfo && gfo.type === 'func' && (gfo.isExport === true || (gfo.isExport !== false && exportDefault !== false))) {\n t.type = isFuncPointer ? 'func_pointer' : 'func';\n t.meta = gfo;\n t.value = gname;\n if (isFuncPointer) {\n isFuncPointer = false;\n tokens.splice(i - 1, 1);\n }\n break;\n }\n }\n if (t.type === 'func' || t.type === 'func_pointer') {\n continue;\n }\n }\n const fo = this.funclist.get(funcName);\n if (fo && fo.type === 'func') {\n t.type = isFuncPointer ? 'func_pointer' : 'func';\n t.meta = fo;\n if (isFuncPointer) {\n isFuncPointer = false;\n tokens.splice(i - 1, 1);\n continue;\n }\n }\n }\n // \u95A2\u6570\u30DD\u30A4\u30F3\u30BF\u306E\u524D\u7F6E\u8A5E\u3092\u691C\u51FA\n if (isFuncPointer) {\n // \u7121\u52B9\u306A\u95A2\u6570\u53C2\u7167\u306E\u6307\u5B9A\u304C\u3042\u308B\u3002\n }\n isFuncPointer = false;\n if (t.type === 'func' && t.value === '{\u95A2\u6570}') {\n i++;\n isFuncPointer = true;\n continue;\n }\n // \u6570\u5B57\u306B\u3064\u304F\u30DE\u30A4\u30CA\u30B9\u8A18\u53F7\u3092\u5224\u5B9A\n // (ng) 5 - 3 || word - 3\n // (ok) (\u884C\u982D)-3 || 1 * -3 || A\u306B -3\u3092 \u8DB3\u3059\n if (t.type === '-' && tokens[i + 1]) {\n const tokenType = tokens[i + 1].type;\n if (tokenType === 'number' || tokenType === 'bigint') {\n // \u4E00\u3064\u524D\u306E\u8A9E\u53E5\u304C\u3001(\u884C\u982D|\u6F14\u7B97\u5B50|\u52A9\u8A5E\u4ED8\u304D\u306E\u8A9E\u53E5)\u306A\u3089 \u8CA0\u6570\u3067\u3042\u308B\n const ltype = getLastType();\n if (ltype === 'eol' || opPriority[ltype] || tokens[i - 1].josi !== '') {\n tokens.splice(i, 1); // remove '-'\n if (tokenType === 'number') {\n tokens[i].value *= -1;\n }\n else {\n tokens[i].value = '-' + tokens[i].value;\n }\n }\n }\n }\n // \u52A9\u8A5E\u306E\u300C\u306F\u300D\u3092 = \u306B\u5C55\u958B\n if (t.josi === undefined) {\n t.josi = '';\n }\n if (t.josi === '\u306F') {\n if (!t.rawJosi) {\n t.rawJosi = t.josi;\n }\n const startOffset = (t.endOffset === undefined) ? undefined : t.endOffset - t.rawJosi.length;\n tokens.splice(i + 1, 0, {\n type: 'eq',\n indent: t.indent,\n line: t.line,\n column: t.column,\n file: t.file,\n startOffset,\n endOffset: t.endOffset,\n josi: '',\n rawJosi: '',\n value: undefined\n });\n i += 2;\n t.josi = t.rawJosi = '';\n t.endOffset = startOffset;\n continue;\n }\n // \u300C\u3068\u306F\u300D\u3092\u4E00\u3064\u306E\u5358\u8A9E\u306B\u3059\u308B\n if (t.josi === '\u3068\u306F') {\n if (!t.rawJosi) {\n t.rawJosi = t.josi;\n }\n const startOffset = t.endOffset === undefined ? undefined : t.endOffset - t.rawJosi.length;\n tokens.splice(i + 1, 0, {\n type: t.josi,\n indent: t.indent,\n line: t.line,\n column: t.column,\n file: t.file,\n startOffset,\n endOffset: t.endOffset,\n josi: '',\n rawJosi: '',\n value: undefined\n });\n t.josi = t.rawJosi = '';\n t.endOffset = startOffset;\n i += 2;\n continue;\n }\n // \u52A9\u8A5E\u306E\u306A\u3089\u3070\u3092\u30C8\u30FC\u30AF\u30F3\u3068\u3059\u308B\n if (tararebaMap[t.josi]) {\n const josi = (t.josi === '\u3067\u306A\u3051\u308C\u3070' || t.josi === '\u306A\u3051\u308C\u3070') ? '\u3067\u306A\u3051\u308C\u3070' : '\u306A\u3089\u3070';\n if (!t.rawJosi) {\n t.rawJosi = josi;\n }\n const startOffset = t.endOffset === undefined ? undefined : t.endOffset - t.rawJosi.length;\n tokens.splice(i + 1, 0, {\n type: '\u306A\u3089\u3070',\n value: josi,\n indent: t.indent,\n line: t.line,\n column: t.column,\n file: t.file,\n startOffset,\n endOffset: t.endOffset,\n josi: '',\n rawJosi: ''\n });\n t.josi = t.rawJosi = '';\n t.endOffset = startOffset;\n i += 2;\n continue;\n }\n // '_' + \u6539\u884C \u3092\u98DB\u3070\u3059 (\u6F14\u7B97\u5B50\u76F4\u5F8C\u306B\u6539\u884C\u3092\u5165\u308C\u305F\u3044\u5834\u5408\u306B\u4F7F\u3046)\n if (t.type === '_eol') {\n tokens.splice(i, 1);\n continue;\n }\n // \u30B3\u30E1\u30F3\u30C8\u3092\u98DB\u3070\u3059\n if (t.type === 'line_comment' || t.type === 'range_comment') {\n comment.push(t.value);\n tokens.splice(i, 1);\n continue;\n }\n // \u6539\u884C\u306B\u30B3\u30E1\u30F3\u30C8\u3092\u57CB\u3081\u8FBC\u3080\n if (t.type === 'eol') {\n t.value = comment.join('/');\n comment = [];\n }\n i++;\n }\n }\n /**\n * \u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u500B\u6570\u3092\u6570\u3048\u308B\n * @returns \u623B\u308A\u5024\u3068\u3057\u3066[\u30A4\u30F3\u30C7\u30F3\u30C8\u6570, \u8AAD\u307F\u98DB\u3070\u3059\u3079\u304D\u6587\u5B57\u6570]\u3092\u8FD4\u3059\n */\n countIndent(src) {\n let indent = 0;\n for (let i = 0; i < src.length; i++) {\n const c = src.charAt(i);\n const n = isIndentChars(c);\n if (n === 0) {\n return [indent, i];\n }\n indent += n;\n }\n return [indent, src.length];\n }\n /**\n * \u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u3092\u30C8\u30FC\u30AF\u30F3\u306B\u5206\u5272\u3059\u308B\n * @param src \u306A\u3067\u3057\u3053\u306E\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\n * @param line \u5148\u982D\u884C\u306E\u884C\u756A\u53F7\n * @param filename \u30D5\u30A1\u30A4\u30EB\u540D\n */\n tokenize(src, line, filename) {\n const srcLength = src.length;\n const result = [];\n let columnCurrent;\n let lineCurrent;\n let column = 1;\n let isDefTest = false;\n let indent = 0;\n // \u6700\u521D\u306B\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u6570\u3048\u308B\n const ia = this.countIndent(src);\n indent = ia[0]; // \u30A4\u30F3\u30C7\u30F3\u30C8\u6570\n src = src.substring(ia[1]); // \u8AAD\u307F\u98DB\u3070\u3059\u6587\u5B57\u6570\n column += ia[1];\n while (src !== '') {\n let ok = false;\n // \u5404\u30EB\u30FC\u30EB\u306B\u3064\u3044\u3066\n for (const rule of rules) {\n // \u6B63\u898F\u8868\u73FE\u3067\u30DE\u30C3\u30C1\n const m = rule.pattern.exec(src);\n if (!m) {\n continue;\n }\n ok = true;\n // \u7A7A\u767D\u306A\u3089\u30B9\u30AD\u30C3\u30D7\n if (rule.name === 'space') {\n column += m[0].length;\n src = src.substring(m[0].length);\n continue;\n }\n // \u30DE\u30C3\u30C1\u3057\u305F\u30EB\u30FC\u30EB\u304C\u30B3\u30FC\u30EB\u30D0\u30C3\u30AF\u3092\u6301\u3064\u306A\u3089\n if (rule.cbParser) {\n // \u30B3\u30FC\u30EB\u30D0\u30C3\u30AF\u3092\u547C\u3076\n let rp;\n if (isDefTest && rule.name === 'word') {\n rp = rule.cbParser(src, false);\n }\n else {\n try {\n rp = rule.cbParser(src);\n }\n catch (e) {\n throw new NakoLexerError(e.message, srcLength - src.length, srcLength - src.length + 1, line, filename);\n }\n }\n if (rule.name === 'string_ex') {\n // \u5C55\u958B\u3042\u308A\u6587\u5B57\u5217 \u2192 aaa{x}bbb{x}cccc\n const list = this.splitStringEx(rp.res);\n if (list === null) {\n throw new InternalLexerError('\u5C55\u958B\u3042\u308A\u6587\u5B57\u5217\u3067\u5024\u306E\u57CB\u3081\u8FBC\u307F{...}\u304C\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\u3002', srcLength - src.length, srcLength - rp.src.length, line, filename);\n }\n let offset = 0;\n for (let i = 0; i < list.length; i++) {\n const josi = (i === list.length - 1) ? rp.josi : '';\n if (i % 2 === 0) {\n result.push({\n type: 'string',\n value: list[i],\n file: filename,\n josi,\n indent,\n line,\n column,\n preprocessedCodeOffset: srcLength - src.length + offset,\n preprocessedCodeLength: list[i].length + 2 + josi.length\n });\n // \u5148\u982D\u306A\u3089'\"...{'\u3001\u305D\u308C\u4EE5\u5916\u306A\u3089'}...{'\u3001\u6700\u5F8C\u306F\u4F55\u3067\u3082\u826F\u3044\n offset += list[i].length + 2;\n }\n else {\n result.push({ type: '&', value: '&', josi: '', indent, file: filename, line, column, preprocessedCodeOffset: srcLength - src.length + offset, preprocessedCodeLength: 0 });\n result.push({ type: '(', value: '(', josi: '', indent, file: filename, line, column, preprocessedCodeOffset: srcLength - src.length + offset, preprocessedCodeLength: 0 });\n result.push({ type: 'code', value: list[i], josi: '', indent, file: filename, line, column, preprocessedCodeOffset: srcLength - src.length + offset, preprocessedCodeLength: list[i].length });\n result.push({ type: ')', value: ')', josi: '', indent, file: filename, line, column, preprocessedCodeOffset: srcLength - src.length + offset + list[i].length, preprocessedCodeLength: 0 });\n result.push({ type: '&', value: '&', josi: '', indent, file: filename, line, column, preprocessedCodeOffset: srcLength - src.length + offset + list[i].length, preprocessedCodeLength: 0 });\n offset += list[i].length;\n }\n }\n line += rp.numEOL;\n column += src.length - rp.src.length;\n src = rp.src;\n if (rp.numEOL > 0) {\n column = 1;\n }\n break;\n }\n columnCurrent = column;\n column += src.length - rp.src.length;\n result.push({ type: rule.name, value: rp.res, josi: rp.josi, indent, line, column: columnCurrent, file: filename, preprocessedCodeOffset: srcLength - src.length, preprocessedCodeLength: src.length - rp.src.length });\n src = rp.src;\n line += rp.numEOL;\n if (rp.numEOL > 0) {\n column = 1;\n }\n break;\n }\n // \u30BD\u30FC\u30B9\u3092\u9032\u3081\u308B\u524D\u306B\u4F4D\u7F6E\u3092\u8A08\u7B97\n const srcOffset = srcLength - src.length;\n // \u5024\u3092\u5909\u63DB\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u304B\uFF1F\n let value = m[0];\n if (rule.cb) {\n value = rule.cb(value);\n }\n // \u30BD\u30FC\u30B9\u3092\u9032\u3081\u308B\n columnCurrent = column;\n lineCurrent = line;\n column += m[0].length;\n src = src.substring(m[0].length);\n // \u6539\u884C\u306E\u6642\u306E\u51E6\u7406\n if ((rule.name === 'eol' && value === '\\n') || rule.name === '_eol') {\n value = line++;\n column = 1;\n }\n // \u6570\u5024\u306A\u3089\u5358\u4F4D\u3092\u6301\u3064\u304B\uFF1F --- #994\n if (rule.name === 'number') {\n // \u5358\u4F4D\u304C\u3042\u308C\u3070\u8AAD\u307F\u98DB\u3070\u3059\n const um = unitRE.exec(src);\n if (um) {\n src = src.substring(um[0].length);\n column += m[0].length;\n }\n }\n let josi = '';\n if (rule.readJosi) {\n // \u6B63\u898F\u8868\u73FE\u3067\u52A9\u8A5E\u304C\u3042\u308B\u304B\u8AAD\u307F\u53D6\u308B\n const j = josiRE.exec(src);\n if (j) {\n column += j[0].length;\n josi = j[0].replace(/^\\s+/, '');\n src = src.substring(j[0].length);\n // \u52A9\u8A5E\u306E\u76F4\u5F8C\u306B\u3042\u308B\u30AB\u30F3\u30DE\u3092\u7121\u8996 #877\n if (src.charAt(0) === ',') {\n src = src.substring(1);\n }\n // \u300C\uFF0A\uFF0A\u3067\u3042\u308B\u300D\u306A\u3089\u524A\u9664 #939 #974\n if (removeJosiMap[josi]) {\n josi = '';\n }\n // \u300C\u3082\u306E\u300D\u69CB\u6587 (#1614)\n if (josi.substring(0, 2) === '\u3082\u306E') {\n josi = josi.substring(2);\n }\n }\n }\n switch (rule.name) {\n case 'def_test': {\n isDefTest = true;\n break;\n }\n case 'eol': { // eol\u306E\u51E6\u7406\u306F\u307B\u304B\u306B\u2191\u3068\u2193\u306B\u3042\u308B\n isDefTest = false;\n break;\n }\n default: {\n break;\n }\n }\n // \u3053\u3053\u307E\u3067\u2030(#682) \u3092\u51E6\u7406\n if (rule.name === 'dec_lineno') {\n line--;\n continue;\n }\n result.push({\n type: rule.name,\n value,\n indent,\n line: lineCurrent,\n column: columnCurrent,\n file: filename,\n josi,\n preprocessedCodeOffset: srcOffset,\n preprocessedCodeLength: (srcLength - src.length) - srcOffset\n });\n // \u6539\u884C\u306E\u3068\u304D\u6B21\u306E\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u8ABF\u3079\u308B\u3002\u306A\u304A\u3001\u6539\u884C\u306E\u5F8C\u306F\u5FC5\u305Acolumn\u304C1\u306B\u306A\u308B\u3002\u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u306E\u305F\u3081\u3001\u4E00\u884C\u306B2\u3064\u4EE5\u4E0A\u306E\u6587\u3092\u542B\u3080\u3068\u304D\u3092\u8003\u616E\u3059\u308B\u3002(core #66)\n if (rule.name === 'eol' && column === 1) {\n const ia = this.countIndent(src);\n indent = ia[0];\n column += ia[1];\n src = src.substring(ia[1]); // \u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u98DB\u3070\u3059\n }\n break;\n }\n if (!ok) {\n throw new InternalLexerError('\u672A\u77E5\u306E\u8A9E\u53E5: ' + src.substring(0, 3) + '...', srcLength - src.length, srcLength - srcLength + 3, line, filename);\n }\n }\n return result;\n }\n // \u30C8\u30FC\u30AF\u30F3\u914D\u5217\u3092type\u6587\u5B57\u5217\u306B\u5909\u63DB\n static tokensToTypeStr(tokens, sep) {\n const a = tokens.map((v) => {\n return v.type;\n });\n return a.join(sep);\n }\n /**\n * \u30D5\u30A1\u30A4\u30EB\u540D\u304B\u3089\u30E2\u30B8\u30E5\u30FC\u30EB\u540D\u3078\u5909\u63DB\n * @param {string} filename\n * @returns {string}\n */\n static filenameToModName(filename) {\n if (!filename) {\n return 'main';\n }\n // \u30D1\u30B9\u304C\u3042\u308C\u3070\u30D1\u30B9\u3092\u524A\u9664\n filename = filename.replace(/[\\\\:]/g, '/'); // Windows\u306Epath\u8A18\u53F7\u3092/\u306B\u7F6E\u63DB\n if (filename.indexOf('/') >= 0) {\n const a = filename.split('/');\n filename = a[a.length - 1];\n }\n filename = filename.replace(/\\.nako3?$/, '');\n return filename;\n }\n}\n", "/**\n * nadesiko v3 parser\n */\nimport { opPriority, RenbunJosi, operatorList } from './nako_parser_const.mjs';\nimport { NakoParserBase } from './nako_parser_base.mjs';\nimport { NakoSyntaxError } from './nako_errors.mjs';\nimport { NakoLexer } from './nako_lexer.mjs';\nimport { NewEmptyToken } from './nako_types.mjs';\n/**\n * \u69CB\u6587\u89E3\u6790\u3092\u884C\u3046\u30AF\u30E9\u30B9\n */\nexport class NakoParser extends NakoParserBase {\n /**\n * \u69CB\u6587\u89E3\u6790\u3092\u5B9F\u884C\u3059\u308B\n */\n parse(tokens, filename) {\n this.reset();\n this.tokens = tokens;\n this.modName = NakoLexer.filenameToModName(filename);\n this.modList.push(this.modName);\n // \u89E3\u6790\u958B\u59CB\n return this.startParser();\n }\n /** \u30D1\u30FC\u30B5\u30FC\u306E\u4E00\u756A\u6700\u521D\u306B\u547C\u3073\u51FA\u3059\u69CB\u6587\u898F\u5247 */\n startParser() {\n const b = this.ySentenceList();\n const c = this.get();\n if (c && c.type !== 'eof') {\n this.logger.debug(`\u69CB\u6587\u89E3\u6790\u3067\u30A8\u30E9\u30FC\u3002${this.nodeToStr(c, { depth: 1 }, true)}\u306E\u4F7F\u3044\u65B9\u304C\u9593\u9055\u3063\u3066\u3044\u307E\u3059\u3002`, c);\n throw NakoSyntaxError.fromNode(`\u69CB\u6587\u89E3\u6790\u3067\u30A8\u30E9\u30FC\u3002${this.nodeToStr(c, { depth: 1 }, false)}\u306E\u4F7F\u3044\u65B9\u304C\u9593\u9055\u3063\u3066\u3044\u307E\u3059\u3002`, c);\n }\n return b;\n }\n /** \u8907\u6570\u6587\u3092\u8FD4\u3059 */\n ySentenceList() {\n const blocks = [];\n let line = -1;\n const map = this.peekSourceMap();\n while (!this.isEOF()) {\n const n = this.ySentence();\n if (!n) {\n break;\n }\n blocks.push(n);\n if (line < 0) {\n line = n.line;\n }\n }\n if (blocks.length === 0) {\n const token = this.peek() || this.tokens[0];\n this.logger.debug('\u69CB\u6587\u89E3\u6790\u306B\u5931\u6557:' + this.nodeToStr(this.peek(), { depth: 1 }, true), token);\n throw NakoSyntaxError.fromNode('\u69CB\u6587\u89E3\u6790\u306B\u5931\u6557:' + this.nodeToStr(this.peek(), { depth: 1 }, false), token);\n }\n return { type: 'block', block: blocks, ...map, end: this.peekSourceMap(), genMode: this.genMode };\n }\n /** \u4F59\u5270\u30B9\u30BF\u30C3\u30AF\u306E\u30EC\u30DD\u30FC\u30C8\u3092\u4F5C\u308B */\n makeStackBalanceReport() {\n const words = [];\n this.stack.forEach((t) => {\n let w = this.nodeToStr(t, { depth: 1 }, false);\n if (t.josi) {\n w += t.josi;\n }\n words.push(w);\n });\n const desc = words.join(',');\n // \u6700\u8FD1\u4F7F\u3063\u305F\u95A2\u6570\u306E\u4F7F\u3044\u65B9\u30EC\u30DD\u30FC\u30C8\u3092\u4F5C\u308B #1093\n let descFunc = '';\n const chA = 'A'.charCodeAt(0);\n for (const f of this.recentlyCalledFunc) {\n descFunc += ' - ';\n let no = 0;\n const josiA = f.josi;\n if (josiA) {\n for (const arg of josiA) {\n const ch = String.fromCharCode(chA + no);\n descFunc += ch;\n if (arg.length === 1) {\n descFunc += arg[0];\n }\n else {\n descFunc += `(${arg.join('|')})`;\n }\n no++;\n }\n }\n descFunc += f.name + '\\n';\n }\n this.recentlyCalledFunc = [];\n return `\u672A\u89E3\u6C7A\u306E\u5358\u8A9E\u304C\u3042\u308A\u307E\u3059: [${desc}]\\n\u6B21\u306E\u547D\u4EE4\u306E\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059:\\n${descFunc}`;\n }\n yEOL() {\n // \u884C\u672B\u306E\u30C1\u30A7\u30C3\u30AF #1009\n const eol = this.get();\n if (!eol) {\n return null;\n }\n // \u4F59\u5270\u30B9\u30BF\u30C3\u30AF\u306E\u78BA\u8A8D\n if (this.stack.length > 0) {\n const report = this.makeStackBalanceReport();\n throw NakoSyntaxError.fromNode(report, eol);\n }\n this.recentlyCalledFunc = [];\n return eol; // Token to Ast\n }\n /** @returns {Ast | null} */\n ySentence() {\n const map = this.peekSourceMap();\n // \u6700\u521D\u306E\u8A9E\u53E5\u304C\u6C7A\u307E\u3063\u3066\u3044\u308B\u69CB\u6587\n if (this.check('eol')) {\n return this.yEOL();\n }\n if (this.check('\u3082\u3057')) {\n return this.yIF();\n }\n if (this.check('\u5F8C\u5224\u5B9A')) {\n return this.yAtohantei();\n }\n if (this.check('\u30A8\u30E9\u30FC\u76E3\u8996')) {\n return this.yTryExcept();\n }\n if (this.accept(['\u629C\u3051\u308B'])) {\n return { type: 'break', josi: '', ...map, end: this.peekSourceMap() };\n }\n if (this.accept(['\u7D9A\u3051\u308B'])) {\n return { type: 'continue', josi: '', ...map, end: this.peekSourceMap() };\n }\n // \u5B9F\u884C\u30E2\u30FC\u30C9\u306E\u6307\u5B9A\n if (this.accept(['DNCL\u30E2\u30FC\u30C9'])) {\n return this.yDNCLMode(1);\n }\n if (this.accept(['DNCL2\u30E2\u30FC\u30C9'])) {\n return this.yDNCLMode(2);\n }\n if (this.accept(['not', 'string', '\u30E2\u30FC\u30C9\u8A2D\u5B9A'])) {\n return this.ySetGenMode(this.y[1].value);\n }\n if (this.accept(['not', '\u30E2\u30B8\u30E5\u30FC\u30EB\u516C\u958B\u65E2\u5B9A\u5024', 'eq', 'string'])) {\n return this.yExportDefault(this.y[3].value);\n }\n if (this.accept(['not', '\u53B3\u30C1\u30A7\u30C3\u30AF'])) {\n return this.ySetMode('\u53B3\u3057\u304F\u30C1\u30A7\u30C3\u30AF');\n } // (#1698) \n // (memo) \u73FE\u72B6\u300C\u53D6\u8FBC\u300D\u306F\u30D7\u30EA\u30D7\u30ED\u30BB\u30B9\u6BB5\u968E(NakoCompiler.listRequireStatements)\u3067\u51E6\u7406\u3055\u308C\u308B\n // if (this.accept(['require', 'string', '\u53D6\u8FBC'])) { return this.yRequire() }\n // <\u5EC3\u6B62\u3055\u308C\u305F\u69CB\u6587>\n if (this.check('\u9010\u6B21\u5B9F\u884C')) {\n return this.yTikuji();\n } // \u5EC3\u6B62 #1611\n if (this.accept(['not', '\u975E\u540C\u671F\u30E2\u30FC\u30C9'])) {\n return this.yASyncMode();\n }\n // </\u5EC3\u6B62\u3055\u308C\u305F\u69CB\u6587>\n if (this.check2(['func', 'eq'])) {\n const word = this.get() || NewEmptyToken();\n throw NakoSyntaxError.fromNode(`\u95A2\u6570\u300E${word.value}\u300F\u306B\u4EE3\u5165\u3067\u304D\u307E\u305B\u3093\u3002`, word);\n }\n // \u5148\u8AAD\u307F\u3057\u3066\u521D\u3081\u3066\u78BA\u5B9A\u3059\u308B\u69CB\u6587\n if (this.accept([this.ySpeedMode])) {\n return this.y[0];\n }\n if (this.accept([this.yPerformanceMonitor])) {\n return this.y[0];\n }\n if (this.accept([this.yLet])) {\n return this.y[0];\n }\n if (this.accept([this.yDefTest])) {\n return this.y[0];\n }\n if (this.accept([this.yDefFunc])) {\n return this.y[0];\n }\n // \u95A2\u6570\u547C\u3073\u51FA\u3057\u306E\u4ED6\u3001\u5404\u7A2E\u69CB\u6587\u306E\u5B9F\u88C5\n if (this.accept([this.yCall])) {\n const c1 = this.y[0];\n const nextToken = this.peek();\n if (nextToken && nextToken.type === '\u306A\u3089\u3070') {\n const map = this.peekSourceMap();\n const cond = c1;\n this.get(); // skip \u306A\u3089\u3070\n // \u3082\u3057\u6587\u306E\u6761\u4EF6\u3068\u3057\u3066\u95A2\u6570\u547C\u3073\u51FA\u3057\u304C\u3042\u308B\u5834\u5408\n return this.yIfThen(map, cond);\n }\n else if (RenbunJosi.indexOf(c1.josi || '') >= 0) { // \u9023\u6587\u3092block\u3068\u3057\u3066\u63A5\u7D9A\u3059\u308B(\u3082\u3057\u69CB\u6587\u306A\u3069\u306E\u305F\u3081)\n if (this.stack.length >= 1) { // \u30B9\u30BF\u30C3\u30AF\u306E\u4F59\u5270\u3092\u30C1\u30A7\u30C3\u30AF\n const report = this.makeStackBalanceReport();\n throw NakoSyntaxError.fromNode(report, c1);\n }\n const c2 = this.ySentence();\n if (c2 !== null) {\n return {\n type: 'block',\n block: [c1, c2],\n josi: c2.josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n }\n return c1;\n }\n return null;\n }\n /** [\u5EC3\u6B62] \u975E\u540C\u671F\u30E2\u30FC\u30C9 #11 @returns {Ast} */\n yASyncMode() {\n this.logger.error('\u300E\u975E\u540C\u671F\u30E2\u30FC\u30C9\u300F\u69CB\u6587\u306F\u5EC3\u6B62\u3055\u308C\u307E\u3057\u305F(https://nadesi.com/v3/doc/go.php?1028)\u3002', this.peek());\n const map = this.peekSourceMap();\n return { type: 'eol', ...map, end: this.peekSourceMap() };\n }\n /** set DNCL mode */\n yDNCLMode(ver) {\n const map = this.peekSourceMap();\n if (ver === 1) {\n // \u914D\u5217\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306F1\u304B\u3089\n this.arrayIndexFrom = 1;\n // \u914D\u5217\u30A2\u30AF\u30BB\u30B9\u3092JS\u3068\u9006\u9806\u3067\u6307\u5B9A\u3059\u308B\n this.flagReverseArrayIndex = true;\n }\n else {\n // ver2\u306FPython\u306B\u8FD1\u3044\u3068\u306E\u3053\u3068\n }\n // \u914D\u5217\u4EE3\u5165\u6642\u81EA\u52D5\u3067\u521D\u671F\u5316\u30C1\u30A7\u30C3\u30AF\u3059\u308B\n this.flagCheckArrayInit = true;\n return { type: 'eol', ...map, end: this.peekSourceMap() };\n }\n /** @returns {Ast} */\n ySetGenMode(mode) {\n const map = this.peekSourceMap();\n this.genMode = mode;\n return { type: 'eol', ...map, end: this.peekSourceMap() };\n }\n /** @returns {Ast} */\n yExportDefault(mode) {\n const map = this.peekSourceMap();\n this.isExportDefault = mode === '\u516C\u958B';\n this.moduleExport.set(this.modName, this.isExportDefault);\n return { type: 'eol', ...map, end: this.peekSourceMap() };\n }\n /** @returns {Ast} */\n ySetMode(mode) {\n const map = this.peekSourceMap();\n return { type: 'run_mode', value: mode, ...map, end: this.peekSourceMap() };\n }\n /** @returns {Ast} */\n yBlock() {\n const map = this.peekSourceMap();\n const blocks = [];\n if (this.check('\u3053\u3053\u304B\u3089')) {\n this.get();\n }\n while (!this.isEOF()) {\n if (this.checkTypes(['\u9055\u3048\u3070', '\u3053\u3053\u307E\u3067', '\u30A8\u30E9\u30FC'])) {\n break;\n }\n if (!this.accept([this.ySentence])) {\n break;\n }\n blocks.push(this.y[0]);\n }\n return { type: 'block', block: blocks, ...map, end: this.peekSourceMap() };\n }\n yDefFuncReadArgs() {\n if (!this.check('(')) {\n return null;\n }\n const a = [];\n this.get(); // skip '('\n while (!this.isEOF()) {\n if (this.check(')')) {\n this.get(); // skip ''\n break;\n }\n const t = this.get();\n if (t) {\n a.push(t);\n } // Token to Ast\n if (this.check('comma')) {\n this.get();\n }\n }\n return a;\n }\n yDefTest() {\n return this.yDef('def_test');\n }\n yDefFunc() {\n return this.yDef('def_func');\n }\n /** \u30E6\u30FC\u30B6\u30FC\u95A2\u6570\u306E\u5B9A\u7FA9 */\n yDef(type) {\n if (!this.check(type)) { // yDefFunc\u304B\u3089\u547C\u3070\u308C\u308C\u3070 def_func \u306A\u306E\u304B\u3092\u30C1\u30A7\u30C3\u30AF\u3059\u308B\n return null;\n }\n const map = this.peekSourceMap();\n const def = this.get(); // \u25CF\n if (!def) {\n return null;\n }\n let isExport = this.isExportDefault;\n if (this.check('{')) {\n this.get();\n const funcAttribute = this.get();\n if (this.check('}')) {\n this.get();\n }\n else {\n throw NakoSyntaxError.fromNode('\u95A2\u6570\u306E\u5C5E\u6027\u306E\u6307\u5B9A\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u300E{\u300F\u3068\u300E}\u300F\u3067\u56F2\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002', def);\n }\n if (funcAttribute != null) {\n if (funcAttribute.value === '\u516C\u958B') {\n isExport = true;\n }\n if (funcAttribute.value === '\u975E\u516C\u958B') {\n isExport = false;\n }\n if (funcAttribute.value === '\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8') {\n isExport = true;\n }\n }\n }\n let defArgs = [];\n if (this.check('(')) {\n defArgs = this.yDefFuncReadArgs() || [];\n } // // lexer\u3067\u3082\u89E3\u6790\u3057\u3066\u3044\u308B\u304C\u518D\u5EA6\u8A73\u3057\u304F\n const funcName = this.get();\n if (!funcName || funcName.type !== 'func') {\n this.logger.debug(this.nodeToStr(funcName, { depth: 0, typeName: '\u95A2\u6570' }, true) + '\u306E\u5BA3\u8A00\u3067\u30A8\u30E9\u30FC\u3002', funcName);\n throw NakoSyntaxError.fromNode(this.nodeToStr(funcName, { depth: 0, typeName: '\u95A2\u6570' }, false) + '\u306E\u5BA3\u8A00\u3067\u30A8\u30E9\u30FC\u3002', def);\n }\n if (this.check('(')) {\n // \u95A2\u6570\u5F15\u6570\u306E\u4E8C\u91CD\u5B9A\u7FA9\n if (defArgs.length > 0) {\n this.logger.debug(this.nodeToStr(funcName, { depth: 0, typeName: '\u95A2\u6570' }, true) + '\u306E\u5BA3\u8A00\u3067\u3001\u5F15\u6570\u5B9A\u7FA9\u306F\u540D\u524D\u306E\u524D\u304B\u5F8C\u306B\u4E00\u5EA6\u3060\u3051\u53EF\u80FD\u3067\u3059\u3002', funcName);\n throw NakoSyntaxError.fromNode(this.nodeToStr(funcName, { depth: 0, typeName: '\u95A2\u6570' }, false) + '\u306E\u5BA3\u8A00\u3067\u3001\u5F15\u6570\u5B9A\u7FA9\u306F\u540D\u524D\u306E\u524D\u304B\u5F8C\u306B\u4E00\u5EA6\u3060\u3051\u53EF\u80FD\u3067\u3059\u3002', funcName);\n }\n defArgs = this.yDefFuncReadArgs() || [];\n }\n if (this.check('\u3068\u306F')) {\n this.get();\n }\n let block = null;\n let multiline = false;\n let asyncFn = false;\n if (this.check('\u3053\u3053\u304B\u3089')) {\n multiline = true;\n }\n if (this.check('eol')) {\n multiline = true;\n }\n try {\n this.funcLevel++;\n this.usedAsyncFn = false;\n // \u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092\u751F\u6210\n const backupLocalvars = this.localvars;\n this.localvars = new Map([['\u305D\u308C', { type: 'var', value: '' }]]);\n if (multiline) {\n this.saveStack();\n // \u95A2\u6570\u306E\u5F15\u6570\u3092\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3068\u3057\u3066\u767B\u9332\u3059\u308B\n for (const arg of defArgs) {\n const fnName = (arg.value) ? arg.value + '' : '';\n this.localvars.set(fnName, { 'type': 'var', 'value': '' });\n }\n block = this.yBlock();\n if (this.check('\u3053\u3053\u307E\u3067')) {\n this.get();\n }\n else {\n throw NakoSyntaxError.fromNode('\u300E\u3053\u3053\u307E\u3067\u300F\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u95A2\u6570\u5B9A\u7FA9\u306E\u672B\u5C3E\u306B\u5FC5\u8981\u3067\u3059\u3002', def);\n }\n this.loadStack();\n }\n else {\n this.saveStack();\n block = this.ySentence();\n this.loadStack();\n }\n this.funcLevel--;\n asyncFn = this.usedAsyncFn;\n this.localvars = backupLocalvars;\n }\n catch (err) {\n this.logger.debug(this.nodeToStr(funcName, { depth: 0, typeName: '\u95A2\u6570' }, true) +\n '\u306E\u5B9A\u7FA9\u3067\u4EE5\u4E0B\u306E\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F\u3002\\n' + err.message, def);\n throw NakoSyntaxError.fromNode(this.nodeToStr(funcName, { depth: 0, typeName: '\u95A2\u6570' }, false) +\n '\u306E\u5B9A\u7FA9\u3067\u4EE5\u4E0B\u306E\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F\u3002\\n' + err.message, def);\n }\n return {\n type,\n name: funcName,\n args: defArgs,\n block: block || [],\n asyncFn,\n isExport,\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n /** @returns {Ast | null} */\n yIFCond() {\n const map = this.peekSourceMap();\n let a = this.yGetArg();\n if (!a) {\n return null;\n }\n // console.log('@@yIFCond=', a)\n // \u30C1\u30A7\u30C3\u30AF : A\u306A\u3089\u3070\n if (a.josi === '\u306A\u3089\u3070') {\n return a;\n }\n if (a.josi === '\u3067\u306A\u3051\u308C\u3070') {\n a = { type: 'not', value: a, josi: '', ...map, end: this.peekSourceMap() };\n return a;\n }\n // \u30C1\u30A7\u30C3\u30AF : A\u304CB\u306A\u3089\u3070 --- \u300C\u95A2\u6570B(A)\u300D\u306E\u3068\u304D\n if ((a.josi !== '') && (this.check('func'))) {\n // \u3082\u3057\u6587\u3067\u95A2\u6570\u547C\u3073\u51FA\u3057\u304C\u3042\u308B\u5834\u5408\n this.stack.push(a);\n a = this.yCall();\n }\n else \n // \u30C1\u30A7\u30C3\u30AF : A\u304CB\u306A\u3089\u3070 --- \u300CA = B\u300D\u306E\u3068\u304D\n if (a.josi === '\u304C') {\n const tmpI = this.index;\n const b = this.yGetArg();\n if (!b) {\n throw NakoSyntaxError.fromNode('\u3082\u3057\u6587\u306E\u6761\u4EF6\u300CA\u304CB\u306A\u3089\u3070\u300D\u3067B\u304C\u306A\u3044\u304B\u6761\u4EF6\u304C\u8907\u96D1\u904E\u304E\u307E\u3059\u3002' +\n this.nodeToStr(this.peek(), { depth: 1 }, false), map);\n }\n if (this.check('\u306A\u3089\u3070')) {\n const naraba = this.get() || { 'value': '\u306A\u3089\u3070' };\n b.josi = naraba.value;\n }\n if (b && (b.josi === '\u306A\u3089\u3070' || b.josi === '\u3067\u306A\u3051\u308C\u3070')) {\n return {\n type: 'op',\n operator: (b.josi === '\u3067\u306A\u3051\u308C\u3070') ? 'noteq' : 'eq',\n left: a,\n right: b,\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n this.index = tmpI;\n }\n // \u3082\u3057\u6587\u3067\u8FFD\u52A0\u306E\u95A2\u6570\u547C\u3073\u51FA\u3057\u304C\u3042\u308B\u5834\u5408\n if (!this.check('\u306A\u3089\u3070')) {\n this.stack.push(a);\n a = this.yCall();\n }\n // (\u306A\u3089\u3070|\u3067\u306A\u3051\u308C\u3070)\u3092\u78BA\u8A8D\n if (!this.check('\u306A\u3089\u3070')) {\n const smap = a || { type: '?', ...map };\n this.logger.debug('\u3082\u3057\u6587\u3067\u300E\u306A\u3089\u3070\u300F\u304C\u306A\u3044\u304B\u3001\u6761\u4EF6\u304C\u8907\u96D1\u904E\u304E\u307E\u3059\u3002' + this.nodeToStr(this.peek(), { depth: 1 }, false) + '\u306E\u76F4\u524D\u306B\u300E\u306A\u3089\u3070\u300F\u3092\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002', smap);\n throw NakoSyntaxError.fromNode('\u3082\u3057\u6587\u3067\u300E\u306A\u3089\u3070\u300F\u304C\u306A\u3044\u304B\u3001\u6761\u4EF6\u304C\u8907\u96D1\u904E\u304E\u307E\u3059\u3002' + this.nodeToStr(this.peek(), { depth: 1 }, false) + '\u306E\u76F4\u524D\u306B\u300E\u306A\u3089\u3070\u300F\u3092\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002', smap);\n }\n const naraba = this.get();\n // \u5426\u5B9A\u5F62\u306E\u30C1\u30A7\u30C3\u30AF\n if (naraba && naraba.value === '\u3067\u306A\u3051\u308C\u3070') {\n a = {\n type: 'not',\n value: a,\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n return a;\n }\n /** @returns {Ast | null} */\n yIF() {\n const map = this.peekSourceMap();\n if (!this.check('\u3082\u3057')) {\n return null;\n }\n const mosi = this.get(); // skip \u3082\u3057\n if (mosi == null) {\n return null;\n }\n while (this.check('comma')) {\n this.get();\n } // skip commafffff\n let cond = null;\n try {\n cond = this.yIFCond();\n }\n catch (err) {\n throw NakoSyntaxError.fromNode('\u300E\u3082\u3057\u300F\u6587\u306E\u6761\u4EF6\u3067\u6B21\u306E\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3059\u3002\\n' + err.message, mosi);\n }\n if (cond === null) {\n throw NakoSyntaxError.fromNode('\u300E\u3082\u3057\u300F\u6587\u3067\u6761\u4EF6\u306E\u6307\u5B9A\u304C\u7A7A\u3067\u3059\u3002', mosi);\n }\n return this.yIfThen(map, cond);\n }\n /** @returns {Ast | null} */\n yIfThen(map, cond) {\n let trueBlock = null;\n let falseBlock = null;\n let tanbun = false;\n // True Block\n if (this.check('eol')) {\n trueBlock = this.yBlock();\n }\n else {\n trueBlock = this.ySentence();\n tanbun = true;\n }\n // skip EOL\n while (this.check('eol')) {\n this.get();\n }\n // Flase Block\n if (this.check('\u9055\u3048\u3070')) {\n this.get(); // skip \u9055\u3048\u3070\n while (this.check('comma')) {\n this.get();\n }\n if (this.check('eol')) {\n falseBlock = this.yBlock();\n }\n else {\n falseBlock = this.ySentence();\n tanbun = true;\n }\n }\n if (tanbun === false) {\n if (this.check('\u3053\u3053\u307E\u3067')) {\n this.get();\n }\n else {\n throw NakoSyntaxError.fromNode('\u300E\u3082\u3057\u300F\u6587\u3067\u300E\u3053\u3053\u307E\u3067\u300F\u304C\u3042\u308A\u307E\u305B\u3093\u3002', map);\n }\n }\n return {\n type: 'if',\n expr: cond || [],\n block: trueBlock || [],\n false_block: falseBlock || [],\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n ySpeedMode() {\n const map = this.peekSourceMap();\n if (!this.check2(['string', '\u5B9F\u884C\u901F\u5EA6\u512A\u5148'])) {\n return null;\n }\n const optionNode = this.get();\n this.get();\n let val = '';\n if (optionNode && optionNode.value) {\n val = optionNode.value;\n }\n else {\n return null;\n }\n const options = { \u884C\u756A\u53F7\u7121\u3057: false, \u6697\u9ED9\u306E\u578B\u5909\u63DB\u7121\u3057: false, \u5F37\u5236\u30D4\u30E5\u30A2: false, \u305D\u308C\u7121\u52B9: false };\n for (const name of val.split('/')) {\n // \u5168\u3066\u6709\u52B9\u5316\n if (name === '\u5168\u3066') {\n for (const k of Object.keys(options)) {\n options[k] = true;\n }\n break;\n }\n // \u500B\u5225\u306B\u6709\u52B9\u5316\n if (Object.keys(options).includes(name)) {\n options[name] = true;\n }\n else {\n // \u4E92\u63DB\u6027\u3092\u8003\u3048\u3066\u3001\u8B66\u544A\u306B\u7559\u3081\u308B\u3002\n this.logger.warn(`\u5B9F\u884C\u901F\u5EA6\u512A\u5148\u6587\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u300E${name}\u300F\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`, optionNode);\n }\n }\n let multiline = false;\n if (this.check('\u3053\u3053\u304B\u3089')) {\n this.get();\n multiline = true;\n }\n else if (this.check('eol')) {\n multiline = true;\n }\n let block = null;\n if (multiline) {\n block = this.yBlock();\n if (this.check('\u3053\u3053\u307E\u3067')) {\n this.get();\n }\n }\n else {\n block = this.ySentence();\n }\n return {\n type: 'speed_mode',\n options,\n block: block || [],\n josi: '',\n ...map\n };\n }\n yPerformanceMonitor() {\n const map = this.peekSourceMap();\n if (!this.check2(['string', '\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u30E2\u30CB\u30BF\u9069\u7528'])) {\n return null;\n }\n const optionNode = this.get();\n if (!optionNode) {\n return null;\n }\n this.get();\n const options = { \u30E6\u30FC\u30B6\u95A2\u6570: false, \u30B7\u30B9\u30C6\u30E0\u95A2\u6570\u672C\u4F53: false, \u30B7\u30B9\u30C6\u30E0\u95A2\u6570: false };\n for (const name of optionNode.value.split('/')) {\n // \u5168\u3066\u6709\u52B9\u5316\n if (name === '\u5168\u3066') {\n for (const k of Object.keys(options)) {\n options[k] = true;\n }\n break;\n }\n // \u500B\u5225\u306B\u6709\u52B9\u5316\n if (Object.keys(options).includes(name)) {\n options[name] = true;\n }\n else {\n // \u4E92\u63DB\u6027\u3092\u8003\u3048\u3066\u3001\u8B66\u544A\u306B\u7559\u3081\u308B\u3002\n this.logger.warn(`\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u30E2\u30CB\u30BF\u9069\u7528\u6587\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u300E${name}\u300F\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`, optionNode);\n }\n }\n let multiline = false;\n if (this.check('\u3053\u3053\u304B\u3089')) {\n this.get();\n multiline = true;\n }\n else if (this.check('eol')) {\n multiline = true;\n }\n let block = null;\n if (multiline) {\n block = this.yBlock();\n if (this.check('\u3053\u3053\u307E\u3067')) {\n this.get();\n }\n }\n else {\n block = this.ySentence();\n }\n return {\n type: 'performance_monitor',\n options,\n block: block || [],\n josi: '',\n ...map\n };\n }\n /** [\u5EC3\u6B62] #1611 \u300C\u9010\u6B21\u5B9F\u884C\u300D\u69CB\u6587 @returns {Ast | null} */\n yTikuji() {\n if (!this.check('\u9010\u6B21\u5B9F\u884C')) {\n return null;\n }\n const tikuji = this.getCur(); // skip\n this.logger.error('\u300E\u9010\u6B21\u5B9F\u884C\u300F\u69CB\u6587\u306F\u5EC3\u6B62\u3055\u308C\u307E\u3057\u305F(https://nadesi.com/v3/doc/go.php?944)\u3002', tikuji);\n return { type: 'eol', ...this.peekSourceMap(), end: this.peekSourceMap() };\n }\n /**\n * 1\u3064\u76EE\u306E\u5024\u3092\u4E0E\u3048\u3001\u305D\u306E\u5F8C\u306B\u7D9A\u304F\u8A08\u7B97\u5F0F\u3092\u53D6\u5F97\u3057\u3001\u512A\u5148\u898F\u5247\u306B\u6CBF\u3063\u3066\u4E26\u3073\u66FF\u3048\u3057\u3066\u623B\u3059\n * @param {Ast} firstValue\n */\n yGetArgOperator(firstValue) {\n const args = [firstValue];\n while (!this.isEOF()) {\n // \u6F14\u7B97\u5B50\u304C\u3042\u308B\uFF1F\n let op = this.peek();\n if (op && opPriority[op.type]) {\n op = this.getCur();\n args.push(op); // Token to Ast\n // \u6F14\u7B97\u5B50\u5F8C\u306E\u5024\u3092\u53D6\u5F97\n const v = this.yValue();\n if (v === null) {\n throw NakoSyntaxError.fromNode(`\u8A08\u7B97\u5F0F\u3067\u6F14\u7B97\u5B50\u300E${op.value}\u300F\u5F8C\u306B\u5024\u304C\u3042\u308A\u307E\u305B\u3093`, firstValue);\n }\n args.push(v);\n continue;\n }\n break;\n }\n if (args.length === 0) {\n return null;\n }\n if (args.length === 1) {\n return args[0];\n }\n return this.infixToAST(args);\n }\n yRange(kara) {\n // \u7BC4\u56F2\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8?\n if (!this.check('\u2026')) {\n return null;\n }\n const map = this.peekSourceMap();\n this.get(); // skip '\u2026'\n const made = this.yValue();\n if (!kara || !made) {\n throw NakoSyntaxError.fromNode('\u7BC4\u56F2\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u6307\u5B9A\u30A8\u30E9\u30FC\u3002\u300EA\u2026B\u300F\u306E\u66F8\u5F0F\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002', map);\n }\n return {\n type: 'func',\n name: '\u7BC4\u56F2',\n args: [kara, made],\n josi: made.josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n yGetArg() {\n // \u5024\u3092\u4E00\u3064\u8AAD\u3080\n const value1 = this.yValue();\n if (value1 === null) {\n return null;\n }\n // \u7BC4\u56F2\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF1F\n if (this.check('\u2026')) {\n return this.yRange(value1);\n }\n // \u8A08\u7B97\u5F0F\u304C\u3042\u308B\u5834\u5408\u3092\u8003\u616E\n return this.yGetArgOperator(value1);\n }\n infixToPolish(list) {\n // \u4E2D\u9593\u8A18\u6CD5\u304B\u3089\u9006\u30DD\u30FC\u30E9\u30F3\u30C9\u306B\u5909\u63DB\n const priority = (t) => {\n if (opPriority[t.type]) {\n return opPriority[t.type];\n }\n return 10;\n };\n const stack = [];\n const polish = [];\n while (list.length > 0) {\n const t = list.shift();\n if (!t) {\n break;\n }\n while (stack.length > 0) { // \u512A\u5148\u9806\u4F4D\u3092\u898B\u3066\u79FB\u52D5\u3059\u308B\n const sTop = stack[stack.length - 1];\n if (priority(t) > priority(sTop)) {\n break;\n }\n const tpop = stack.pop();\n if (!tpop) {\n this.logger.error('\u8A08\u7B97\u5F0F\u306B\u9593\u9055\u3044\u304C\u3042\u308A\u307E\u3059\u3002', t);\n break;\n }\n polish.push(tpop);\n }\n stack.push(t);\n }\n // \u6B8B\u3063\u305F\u8981\u7D20\u3092\u7A4D\u307F\u66FF\u3048\u308B\n while (stack.length > 0) {\n const t = stack.pop();\n if (t) {\n polish.push(t);\n }\n }\n return polish;\n }\n /** @returns {Ast | null} */\n infixToAST(list) {\n if (list.length === 0) {\n return null;\n }\n // \u9006\u30DD\u30FC\u30E9\u30F3\u30C9\u3092\u69CB\u6587\u6728\u306B\n const josi = list[list.length - 1].josi;\n const node = list[list.length - 1];\n const polish = this.infixToPolish(list);\n /** @type {Ast[]} */\n const stack = [];\n for (const t of polish) {\n if (!opPriority[t.type]) { // \u6F14\u7B97\u5B50\u3067\u306F\u306A\u3044\n stack.push(t);\n continue;\n }\n const b = stack.pop();\n const a = stack.pop();\n if (a === undefined || b === undefined) {\n this.logger.debug('--- \u8A08\u7B97\u5F0F(\u9006\u30DD\u30FC\u30E9\u30F3\u30C9) ---\\n' + JSON.stringify(polish));\n throw NakoSyntaxError.fromNode('\u8A08\u7B97\u5F0F\u3067\u30A8\u30E9\u30FC', node);\n }\n /** @type {Ast} */\n const op = {\n type: 'op',\n operator: t.type,\n left: a,\n right: b,\n josi,\n startOffset: a.startOffset,\n endOffset: a.endOffset,\n line: a.line,\n column: a.column,\n file: a.file\n };\n stack.push(op);\n }\n const ans = stack.pop();\n if (!ans) {\n return null;\n }\n return ans;\n }\n yGetArgParen(y) {\n let isClose = false;\n const si = this.stack.length;\n while (!this.isEOF()) {\n if (this.check(')')) {\n isClose = true;\n break;\n }\n const v = this.yGetArg();\n if (v) {\n this.pushStack(v);\n if (this.check('comma')) {\n this.get();\n }\n continue;\n }\n break;\n }\n if (!isClose) {\n throw NakoSyntaxError.fromNode(`C\u98A8\u95A2\u6570\u300E${y[0].value}\u300F\u3067\u30AB\u30C3\u30B3\u304C\u9589\u3058\u3066\u3044\u307E\u305B\u3093`, y[0]);\n }\n const a = [];\n while (si < this.stack.length) {\n const v = this.popStack();\n if (v) {\n a.unshift(v);\n }\n }\n return a;\n }\n /** @returns {Ast | null} */\n yRepeatTime() {\n const map = this.peekSourceMap();\n if (!this.check('\u56DE')) {\n return null;\n }\n this.get(); // skip '\u56DE'\n if (this.check('comma')) {\n this.get();\n } // skip comma\n if (this.check('\u7E70\u8FD4')) {\n this.get();\n } // skip 'N\u56DE\u3001\u7E70\u308A\u8FD4\u3059' (#924)\n let num = this.popStack([]);\n let multiline = false;\n let block = null;\n if (num === null) {\n num = { type: 'word', value: '\u305D\u308C', josi: '', ...map, end: this.peekSourceMap() };\n }\n if (this.check('comma')) {\n this.get();\n }\n if (this.check('\u3053\u3053\u304B\u3089')) {\n this.get();\n multiline = true;\n }\n else if (this.check('eol')) {\n multiline = true;\n }\n if (multiline) { // multiline\n block = this.yBlock();\n if (this.check('\u3053\u3053\u307E\u3067')) {\n this.get();\n }\n else {\n throw NakoSyntaxError.fromNode('\u300E\u3053\u3053\u307E\u3067\u300F\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u300E\u56DE\u300F...\u300E\u3053\u3053\u307E\u3067\u300F\u3092\u5BFE\u5FDC\u3055\u305B\u3066\u304F\u3060\u3055\u3044\u3002', map);\n }\n }\n else {\n // singleline\n block = this.ySentence();\n }\n return {\n type: 'repeat_times',\n value: num,\n block: block || [],\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n /** @returns {Ast | null} */\n yWhile() {\n const map = this.peekSourceMap();\n if (!this.check('\u9593')) {\n return null;\n }\n this.get(); // skip '\u9593'\n while (this.check('comma')) {\n this.get();\n } // skip ','\n if (this.check('\u7E70\u8FD4')) {\n this.get();\n } // skip '\u7E70\u308A\u8FD4\u3059' #927\n const cond = this.popStack();\n if (cond === null) {\n throw NakoSyntaxError.fromNode('\u300E\u9593\u300F\u3067\u6761\u4EF6\u304C\u3042\u308A\u307E\u305B\u3093\u3002', map);\n }\n if (this.check('comma')) {\n this.get();\n }\n if (!this.checkTypes(['\u3053\u3053\u304B\u3089', 'eol'])) {\n throw NakoSyntaxError.fromNode('\u300E\u9593\u300F\u306E\u76F4\u5F8C\u306F\u6539\u884C\u304C\u5FC5\u8981\u3067\u3059', map);\n }\n const block = this.yBlock();\n if (this.check('\u3053\u3053\u307E\u3067')) {\n this.get();\n }\n else {\n throw NakoSyntaxError.fromNode('\u300E\u3053\u3053\u307E\u3067\u300F\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u300E\u9593\u300F...\u300E\u3053\u3053\u307E\u3067\u300F\u3092\u5BFE\u5FDC\u3055\u305B\u3066\u304F\u3060\u3055\u3044\u3002', map);\n }\n return {\n type: 'while',\n cond,\n block,\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n /** @returns {Ast | null} */\n yAtohantei() {\n const map = this.peekSourceMap();\n if (this.check('\u5F8C\u5224\u5B9A')) {\n this.get();\n } // skip \u5F8C\u5224\u5B9A\n if (this.check('\u7E70\u8FD4')) {\n this.get();\n } // skip \u7E70\u308A\u8FD4\u3059\n if (this.check('\u3053\u3053\u304B\u3089')) {\n this.get();\n }\n const block = this.yBlock();\n if (this.check('\u3053\u3053\u307E\u3067')) {\n this.get();\n }\n if (this.check('comma')) {\n this.get();\n }\n let cond = this.yGetArg(); // \u6761\u4EF6\n let bUntil = false;\n const t = this.peek();\n if (t && t.value === '\u306A\u308B' && (t.josi === '\u307E\u3067' || t.josi === '\u307E\u3067\u306E')) {\n this.get(); // skip \u306A\u308B\u307E\u3067\n bUntil = true;\n }\n if (this.check('\u9593')) {\n this.get();\n } // skip \u9593\n if (bUntil) { // \u6761\u4EF6\u3092\u53CD\u8EE2\u3059\u308B\n cond = {\n type: 'not',\n value: cond,\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n return {\n type: 'atohantei',\n cond: cond || [],\n block,\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n /** @returns {Ast | null} */\n yFor() {\n const errorForArguments = '\u300E\u7E70\u308A\u8FD4\u3059\u300F\u6587\u3067A\u304B\u3089B\u307E\u3067\u306E\u6307\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\u3002';\n let flagDown = true; // A\u304B\u3089B\u307E\u3067\u306E\u6642\u3001A>=B\u3092\u8A31\u5BB9\u3059\u308B\u304B\u3069\u3046\u304B\n let loopDirection = null; // \u30EB\u30FC\u30D7\u306E\u65B9\u5411\u3092\u4E00\u65B9\u5411\u306B\u9650\u5B9A\u3059\u308B\n const map = this.peekSourceMap();\n if (this.check('\u7E70\u8FD4') || this.check('\u5897\u7E70\u8FD4') || this.check('\u6E1B\u7E70\u8FD4')) {\n // pass\n }\n else {\n return null;\n }\n const kurikaesu = this.getCur(); // skip \u7E70\u308A\u8FD4\u3059\n // \u30B9\u30BF\u30C3\u30AF\u306B(\u5897\u3084|\u6E1B\u3089)\u3057\u3066\u304C\u3042\u308B\uFF1F\n const incdec = this.stack.pop();\n if (incdec) {\n if (incdec.type === 'word' && (incdec.value === '\u5897' || incdec.value === '\u6E1B')) {\n if (incdec.value === '\u5897') {\n flagDown = false;\n }\n kurikaesu.type = incdec.value + kurikaesu.type; // type\u3092\u5897\u7E70\u8FD4 | \u6E1B\u7E70\u8FD4 \u306B\u5909\u63DB\n }\n else {\n // \u666E\u901A\u306E\u7E70\u308A\u8FD4\u3057\u306E\u5834\u5408\n this.stack.push(incdec); // \u9055\u3063\u305F\u306E\u3067\u6539\u3081\u3066\u8FFD\u52A0\n }\n }\n let vInc = null;\n if (kurikaesu.type === '\u5897\u7E70\u8FD4' || kurikaesu.type === '\u6E1B\u7E70\u8FD4') {\n vInc = this.popStack(['\u305A\u3064']);\n if (kurikaesu.type === '\u5897\u7E70\u8FD4') {\n flagDown = false;\n }\n loopDirection = kurikaesu.type === '\u5897\u7E70\u8FD4' ? 'up' : 'down';\n }\n const vTo = this.popStack(['\u307E\u3067', '\u3092']); // \u7BC4\u56F2\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u5834\u5408\u3082\u3042\u308A\n const vFrom = this.popStack(['\u304B\u3089']);\n const word = this.popStack(['\u3092', '\u3067']);\n if (vFrom === null || vTo === null) {\n // \u300EA\u304B\u3089B\u306E\u7BC4\u56F2\u3092\u7E70\u308A\u8FD4\u3059\u300F\u69CB\u6587\u306E\u3068\u304D (#1704)\n if (vFrom == null && vTo && (vTo.type === 'func' && vTo.name === '\u7BC4\u56F2')) {\n // ok\n }\n else {\n throw NakoSyntaxError.fromNode(errorForArguments, kurikaesu);\n }\n }\n if (this.check('comma')) {\n this.get();\n } // skip comma\n let multiline = false;\n if (this.check('\u3053\u3053\u304B\u3089')) {\n multiline = true;\n this.get();\n }\n else if (this.check('eol')) {\n multiline = true;\n this.get();\n }\n let block = null;\n if (multiline) {\n block = this.yBlock();\n if (this.check('\u3053\u3053\u307E\u3067')) {\n this.get();\n }\n else {\n throw NakoSyntaxError.fromNode('\u300E\u3053\u3053\u307E\u3067\u300F\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u300E\u7E70\u308A\u8FD4\u3059\u300F...\u300E\u3053\u3053\u307E\u3067\u300F\u3092\u5BFE\u5FDC\u3055\u305B\u3066\u304F\u3060\u3055\u3044\u3002', map);\n }\n }\n else {\n block = this.ySentence();\n }\n return {\n type: 'for',\n from: vFrom,\n to: vTo,\n inc: vInc,\n flagDown,\n loopDirection,\n word,\n block: block || [],\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n /** @returns {Ast | null} */\n yReturn() {\n const map = this.peekSourceMap();\n if (!this.check('\u623B\u308B')) {\n return null;\n }\n this.get(); // skip '\u623B\u308B'\n const v = this.popStack(['\u3067', '\u3092']);\n if (this.stack.length > 0) {\n throw NakoSyntaxError.fromNode('\u300E\u623B\u300F\u6587\u306E\u76F4\u524D\u306B\u672A\u89E3\u6C7A\u306E\u5F15\u6570\u304C\u3042\u308A\u307E\u3059\u3002\u300E(\u5F0F)\u3092\u623B\u3059\u300F\u306E\u3088\u3046\u306B\u5F0F\u3092\u30AB\u30C3\u30B3\u3067\u62EC\u3063\u3066\u304F\u3060\u3055\u3044\u3002', map);\n }\n return {\n type: 'return',\n value: v,\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n /** @returns {Ast | null} */\n yForEach() {\n const map = this.peekSourceMap();\n if (!this.check('\u53CD\u5FA9')) {\n return null;\n }\n this.get(); // skip '\u53CD\u5FA9'\n while (this.check('comma')) {\n this.get();\n } // skip ','\n const target = this.popStack(['\u3092']);\n const name = this.popStack(['\u3067']);\n let block = null;\n let multiline = false;\n if (this.check('\u3053\u3053\u304B\u3089')) {\n multiline = true;\n this.get();\n }\n else if (this.check('eol')) {\n multiline = true;\n }\n if (multiline) {\n block = this.yBlock();\n if (this.check('\u3053\u3053\u307E\u3067')) {\n this.get();\n }\n else {\n throw NakoSyntaxError.fromNode('\u300E\u3053\u3053\u307E\u3067\u300F\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u300E\u53CD\u5FA9\u300F...\u300E\u3053\u3053\u307E\u3067\u300F\u3092\u5BFE\u5FDC\u3055\u305B\u3066\u304F\u3060\u3055\u3044\u3002', map);\n }\n }\n else {\n block = this.ySentence();\n }\n return {\n type: 'foreach',\n name,\n target,\n block: block || [],\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n /** \u6761\u4EF6\u5206\u5C90\u69CB\u6587 */\n ySwitch() {\n const map = this.peekSourceMap();\n if (!this.check('\u6761\u4EF6\u5206\u5C90')) {\n return null;\n }\n const joukenbunki = this.get(); // skip '\u6761\u4EF6\u5206\u5C90'\n if (!joukenbunki) {\n return null;\n }\n const eol = this.get(); // skip 'eol'\n if (!eol) {\n return null;\n }\n const value = this.popStack(['\u3067']);\n if (!value) {\n throw NakoSyntaxError.fromNode('\u300E(\u5024)\u3067\u6761\u4EF6\u5206\u5C90\u300F\u306E\u3088\u3046\u306B\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002', joukenbunki);\n }\n if (eol.type !== 'eol') {\n throw NakoSyntaxError.fromNode('\u300E\u6761\u4EF6\u5206\u5C90\u300F\u306E\u76F4\u5F8C\u306F\u6539\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002', joukenbunki);\n }\n let isDefaultClause = false; // \u300C\u9055\u3048\u3070\u300D\u5185\u304B\u3069\u3046\u304B\n let skippedKokomade = false;\n const cases = [];\n while (!this.isEOF()) {\n if (this.check('\u3053\u3053\u307E\u3067')) {\n if (skippedKokomade) {\n throw NakoSyntaxError.fromNode('\u300E\u6761\u4EF6\u5206\u5C90\u300F\u306F\u300E(\u6761\u4EF6)\u306A\u3089\u3070\u301C\u3053\u3053\u307E\u3067\u300F\u3068\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002', joukenbunki);\n }\n this.get(); // skip \u3053\u3053\u307E\u3067\n break;\n }\n if (this.check('eol')) {\n this.get();\n continue;\n }\n if (isDefaultClause) {\n throw NakoSyntaxError.fromNode('\u300E\u6761\u4EF6\u5206\u5C90\u300F\u3067\u300E\u9055\u3048\u3070\u301C\u3053\u3053\u307E\u3067\u300F\u306E\u5F8C\u306B\u51E6\u7406\u3092\u7D9A\u3051\u308B\u3053\u3068\u306F\u51FA\u6765\u307E\u305B\u3093\u3002', joukenbunki);\n }\n // \u9055\u3048\u3070\uFF1F\n let cond = null;\n const condToken = this.peek();\n if (condToken && condToken.type === '\u9055\u3048\u3070') {\n // \u9055\u3048\u3070\n skippedKokomade = false;\n isDefaultClause = true;\n cond = this.get(); // skip \u9055\u3048\u3070 // Token to Ast\n if (this.check('comma')) {\n this.get();\n } // skip ','\n }\n else {\n // \uFF0A\uFF0A\uFF0A\u306A\u3089\u3070\n if (skippedKokomade) {\n throw NakoSyntaxError.fromNode('\u300E\u6761\u4EF6\u5206\u5C90\u300F\u306F\u300E(\u6761\u4EF6)\u306A\u3089\u3070\u301C\u3053\u3053\u307E\u3067\u300F\u3068\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002', joukenbunki);\n }\n // \u300C\uFF0A\uFF0A\u306A\u3089\u3070\u300D\u3092\u5F97\u308B\n cond = this.yValue();\n if (!cond) {\n throw NakoSyntaxError.fromNode('\u300E\u6761\u4EF6\u5206\u5C90\u300F\u306F\u300E(\u6761\u4EF6)\u306A\u3089\u3070\u301C\u3053\u3053\u307E\u3067\u300F\u3068\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002', joukenbunki);\n }\n const naraba = this.get(); // skip \u306A\u3089\u3070\n if (!naraba || naraba.type !== '\u306A\u3089\u3070') {\n throw NakoSyntaxError.fromNode('\u300E\u6761\u4EF6\u5206\u5C90\u300F\u3067\u6761\u4EF6\u306F\uFF0A\uFF0A\u306A\u3089\u3070\u3068\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002', joukenbunki);\n }\n if (this.check('comma')) {\n this.get();\n } // skip ','\n }\n // \u6761\u4EF6\u306B\u3042\u3063\u305F\u3068\u304D\u306B\u5B9F\u884C\u3059\u308B\u3053\u3068\n const condBlock = this.yBlock();\n const kokomade = this.peek();\n if (kokomade && kokomade.type === '\u3053\u3053\u307E\u3067') {\n this.get(); // skip \u3053\u3053\u307E\u3067\n }\n else {\n if (isDefaultClause) {\n throw NakoSyntaxError.fromNode('\u300E\u6761\u4EF6\u5206\u5C90\u300F\u306F\u300E\u9055\u3048\u3070\u301C\u3053\u3053\u307E\u3067\u300F\u3068\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002', joukenbunki);\n }\n // \u6B21\u304C\u300C\u9055\u3048\u3070\u300D\u306E\u5834\u5408\u306B\u9650\u308A\u3001\u300C\u3082\u3057\u301C\u3053\u3053\u307E\u3067\u300D\u306E\u300C\u3053\u3053\u307E\u3067\u300D\u3092\u7701\u7565\u3067\u304D\u308B\n skippedKokomade = true;\n }\n cases.push([cond, condBlock]);\n }\n return {\n type: 'switch',\n value,\n cases: cases || [],\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n /** \u7121\u540D\u95A2\u6570 */\n yMumeiFunc() {\n const map = this.peekSourceMap();\n if (!this.check('def_func')) {\n return null;\n }\n const def = this.get();\n if (!def) {\n return null;\n }\n let args = [];\n // \u300C,\u300D\u3092\u98DB\u3070\u3059\n if (this.check('comma')) {\n this.get();\n }\n // \u95A2\u6570\u306E\u5F15\u6570\u5B9A\u7FA9\u306F\u7701\u7565\u3067\u304D\u308B\n if (this.check('(')) {\n args = this.yDefFuncReadArgs() || [];\n }\n // \u300C,\u300D\u3092\u98DB\u3070\u3059\n if (this.check('comma')) {\n this.get();\n }\n // \u30D6\u30ED\u30C3\u30AF\u3092\u8AAD\u3080\n this.funcLevel++;\n this.saveStack();\n const block = this.yBlock();\n // \u672B\u5C3E\u306E\u300C\u3053\u3053\u307E\u3067\u300D\u3092\u30C1\u30A7\u30C3\u30AF - \u3082\u3057\u306A\u3051\u308C\u3070\u30A8\u30E9\u30FC\u306B\u3059\u308B #1045\n if (!this.check('\u3053\u3053\u307E\u3067')) {\n throw NakoSyntaxError.fromNode('\u300E\u3053\u3053\u307E\u3067\u300F\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u300E\u306B\u306F\u300F\u69CB\u6587\u304B\u7121\u540D\u95A2\u6570\u306E\u672B\u5C3E\u306B\u300E\u3053\u3053\u307E\u3067\u300F\u304C\u5FC5\u8981\u3067\u3059\u3002', map);\n }\n this.get(); // skip \u3053\u3053\u307E\u3067\n this.loadStack();\n this.funcLevel--;\n return {\n type: 'func_obj',\n args,\n block,\n meta: def.meta,\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n /** \u4EE3\u5165\u69CB\u6587 */\n yDainyu() {\n const map = this.peekSourceMap();\n const dainyu = this.get(); // \u4EE3\u5165\n if (dainyu === null) {\n return null;\n }\n const value = this.popStack(['\u3092']);\n const word = this.popStack(['\u3078', '\u306B']);\n if (!word || (word.type !== 'word' && word.type !== 'func' && word.type !== '\u914D\u5217\u53C2\u7167')) {\n throw NakoSyntaxError.fromNode('\u4EE3\u5165\u6587\u3067\u4EE3\u5165\u5148\u306E\u5909\u6570\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002\u300E(\u5909\u6570\u540D)\u306B(\u5024)\u3092\u4EE3\u5165\u300F\u306E\u3088\u3046\u306B\u4F7F\u3044\u307E\u3059\u3002', dainyu);\n }\n // \u914D\u5217\u3078\u306E\u4EE3\u5165\n if (word.type === '\u914D\u5217\u53C2\u7167') {\n return {\n type: 'let_array',\n name: word.name,\n index: word.index,\n value,\n josi: '',\n checkInit: this.flagCheckArrayInit,\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u4E00\u822C\u7684\u306A\u5909\u6570\u3078\u306E\u4EE3\u5165\n const word2 = this.getVarName(word);\n return {\n type: 'let',\n name: word2,\n value,\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n /** \u5B9A\u3081\u308B\u69CB\u6587 */\n ySadameru() {\n const map = this.peekSourceMap();\n const sadameru = this.get(); // \u5B9A\u3081\u308B\n if (sadameru === null) {\n return null;\n }\n const word = this.popStack(['\u3092']);\n const value = this.popStack(['\u3078', '\u306B', '\u3068']);\n if (!word || (word.type !== 'word' && word.type !== 'func' && word.type !== '\u914D\u5217\u53C2\u7167')) {\n throw NakoSyntaxError.fromNode('\u300E\u5B9A\u3081\u308B\u300F\u6587\u3067\u5B9A\u6570\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002\u300E(\u5B9A\u6570\u540D)\u3092(\u5024)\u306B\u5B9A\u3081\u308B\u300F\u306E\u3088\u3046\u306B\u4F7F\u3044\u307E\u3059\u3002', sadameru);\n }\n let isExport = this.isExportDefault;\n if (this.check2(['{', 'word', '}'])) {\n this.get();\n const attrNode = this.get();\n if (attrNode === null) {\n throw NakoSyntaxError.fromNode('\u5B9A\u3081\u308B\u300E' + word.value + '\u300F\u306E\u5B9A\u7FA9\u30A8\u30E9\u30FC', word);\n }\n const attr = attrNode.value;\n if (attr === '\u516C\u958B') {\n isExport = true;\n }\n else if (attr === '\u975E\u516C\u958B') {\n isExport = false;\n }\n else if (attr === '\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8') {\n isExport = true;\n }\n else {\n this.logger.warn(`\u4E0D\u660E\u306A\u5909\u6570\u5C5E\u6027\u300E${attr}\u300F\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002`);\n }\n this.get();\n }\n // \u5909\u6570\u3092\u751F\u6210\u3059\u308B\n const nameToken = this.createVar(word, true, isExport);\n return {\n type: 'def_local_var',\n name: nameToken,\n vartype: '\u5B9A\u6570',\n isExport,\n value,\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n yIncDec() {\n const map = this.peekSourceMap();\n const action = this.get(); // (\u5897\u3084\u3059|\u6E1B\u3089\u3059)\n if (action === null) {\n return null;\n }\n // \u300EN\u305A\u3064\u5897\u3084\u3057\u3066\u7E70\u308A\u8FD4\u3059\u300F\u6587\u304B\uFF1F\n if (this.check('\u7E70\u8FD4')) {\n this.pushStack({ type: 'word', value: action.value, josi: action.josi, ...map, end: this.peekSourceMap() });\n return this.yFor();\n }\n // \u30B9\u30BF\u30C3\u30AF\u304B\u3089\u5F15\u6570\u3092\u30DD\u30C3\u30D7\n let value = this.popStack(['\u3060\u3051', '']);\n if (!value) {\n value = { type: 'number', value: 1, josi: '\u3060\u3051', ...map, end: this.peekSourceMap() };\n }\n const word = this.popStack(['\u3092']);\n if (!word || (word.type !== 'word' && word.type !== '\u914D\u5217\u53C2\u7167')) {\n throw NakoSyntaxError.fromNode(`\u300E${action.type}\u300F\u6587\u3067\u5B9A\u6570\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002\u300E(\u5909\u6570\u540D)\u3092(\u5024)\u3060\u3051${action.type}\u300F\u306E\u3088\u3046\u306B\u4F7F\u3044\u307E\u3059\u3002`, action);\n }\n // \u6E1B\u3089\u3059\u306A\u3089-1\u304B\u3051\u308B\n if (action.value === '\u6E1B') {\n value = { type: 'op', operator: '*', left: value, right: { type: 'number', value: -1, line: action.line }, josi: '', ...map };\n }\n return {\n type: 'inc',\n name: word,\n value,\n josi: action.josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n yCall() {\n if (this.isEOF()) {\n return null;\n }\n // \u30B9\u30BF\u30C3\u30AF\u306B\u7A4D\u3093\u3067\u3044\u304F\n while (!this.isEOF()) {\n if (this.check('\u3053\u3053\u304B\u3089')) {\n this.get();\n }\n // \u4EE3\u5165\n if (this.check('\u4EE3\u5165')) {\n return this.yDainyu();\n }\n if (this.check('\u5B9A\u3081\u308B')) {\n return this.ySadameru();\n }\n // \u5236\u5FA1\u69CB\u6587\n if (this.check('\u56DE')) {\n return this.yRepeatTime();\n }\n if (this.check('\u9593')) {\n return this.yWhile();\n }\n if (this.check('\u7E70\u8FD4') || this.check('\u5897\u7E70\u8FD4') || this.check('\u6E1B\u7E70\u8FD4')) {\n return this.yFor();\n }\n if (this.check('\u53CD\u5FA9')) {\n return this.yForEach();\n }\n if (this.check('\u6761\u4EF6\u5206\u5C90')) {\n return this.ySwitch();\n }\n if (this.check('\u623B\u308B')) {\n return this.yReturn();\n }\n if (this.check('\u5897') || this.check('\u6E1B')) {\n return this.yIncDec();\n }\n // C\u8A00\u8A9E\u98A8\u95A2\u6570\n if (this.check2([['func', 'word'], '('])) { // C\u8A00\u8A9E\u98A8\n const cur = this.peek();\n if (cur && cur.josi === '') {\n const t = this.yValue(); // yValue\u306B\u3066C\u8A00\u8A9E\u98A8\u547C\u3073\u51FA\u3057\u3092\u30D1\u30FC\u30B9\n if (t) {\n const josi = t.josi || '';\n if (t.type === 'func' && (t.josi === '' || RenbunJosi.indexOf(josi) >= 0)) {\n t.josi = '';\n return t; // \u95A2\u6570\u306A\u3089\u5024\u3068\u3059\u308B\n }\n this.pushStack(t);\n }\n if (this.check('comma')) {\n this.get();\n }\n continue;\n }\n }\n // \u306A\u3067\u3057\u3053\u5F0F\u95A2\u6570\n if (this.check('func')) {\n const r = this.yCallFunc();\n if (r === null) {\n continue;\n }\n // \u300C\u301C\u3059\u308B\u9593\u300D\u306E\u5F62\u306A\u3089\u30B9\u30BF\u30C3\u30AF\u306B\u7A4D\u3080\u3002\n if (this.check('\u9593')) {\n this.pushStack(r);\n continue;\n }\n // \u95A2\u6570\u547C\u3073\u51FA\u3057\u306E\u76F4\u5F8C\u306B\u3001\u56DB\u5247\u6F14\u7B97\u304C\u3042\u308B\u304B?\n if (!this.checkTypes(operatorList)) {\n return r; // \u95A2\u6570\u547C\u3073\u51FA\u3057\u306E\u5F8C\u306B\u6F14\u7B97\u5B50\u304C\u306A\u3044\u306E\u3067\u305D\u306E\u307E\u307E\u95A2\u6570\u547C\u3073\u51FA\u3057\u3092\u623B\u3059\n }\n // \u56DB\u5247\u6F14\u7B97\u304C\u3042\u3063\u305F\u5834\u5408\u3001\u8A08\u7B97\u3057\u3066\u30B9\u30BF\u30C3\u30AF\u306B\u8F09\u305B\u308B\n const s = this.yGetArgOperator(r);\n this.pushStack(s);\n continue;\n }\n // \u5024\u306E\u3068\u304D \u2192 \u30B9\u30BF\u30C3\u30AF\u306B\u8F09\u305B\u308B\n const t = this.yGetArg();\n if (t) {\n this.pushStack(t);\n continue;\n }\n break;\n } // end of while\n // \u52A9\u8A5E\u304C\u4F59\u3063\u3066\u3057\u307E\u3063\u305F\u5834\u5408\n if (this.stack.length > 0) {\n if (this.isReadingCalc) {\n return this.popStack();\n }\n this.logger.debug('--- stack dump ---\\n' + JSON.stringify(this.stack, null, 2) + '\\npeek: ' + JSON.stringify(this.peek(), null, 2));\n let msgDebug = `\u4E0D\u5B8C\u5168\u306A\u6587\u3067\u3059\u3002${this.stack.map((n) => this.nodeToStr(n, { depth: 0 }, true)).join('\u3001')}\u304C\u89E3\u6C7A\u3057\u3066\u3044\u307E\u305B\u3093\u3002`;\n let msg = `\u4E0D\u5B8C\u5168\u306A\u6587\u3067\u3059\u3002${this.stack.map((n) => this.nodeToStr(n, { depth: 0 }, false)).join('\u3001')}\u304C\u89E3\u6C7A\u3057\u3066\u3044\u307E\u305B\u3093\u3002`;\n // \u5404\u30CE\u30FC\u30C9\u306B\u3064\u3044\u3066\u3001\u66F4\u306B\u8A73\u7D30\u306A\u60C5\u5831\u304C\u3042\u308B\u306A\u3089\u8868\u793A\n for (const n of this.stack) {\n const d0 = this.nodeToStr(n, { depth: 0 }, false);\n const d1 = this.nodeToStr(n, { depth: 1 }, false);\n if (d0 !== d1) {\n msgDebug += `${this.nodeToStr(n, { depth: 0 }, true)}\u306F${this.nodeToStr(n, { depth: 1 }, true)}\u3068\u3057\u3066\u4F7F\u308F\u308C\u3066\u3044\u307E\u3059\u3002`;\n msg += `${d0}\u306F${d1}\u3068\u3057\u3066\u4F7F\u308F\u308C\u3066\u3044\u307E\u3059\u3002`;\n }\n }\n const first = this.stack[0];\n const last = this.stack[this.stack.length - 1];\n this.logger.debug(msgDebug, first);\n throw NakoSyntaxError.fromNode(msg, first, last);\n }\n return this.popStack([]);\n }\n /** @returns {Ast | null} */\n yCallFunc() {\n const map = this.peekSourceMap();\n const t = this.get();\n if (!t) {\n return null;\n }\n const f = t.meta;\n const funcName = t.value;\n // (\u95A2\u6570)\u306B\u306F ... \u69CB\u6587 ... https://github.com/kujirahand/nadesiko3/issues/66\n let funcObj = null;\n if (t.josi === '\u306B\u306F') {\n try {\n funcObj = this.yMumeiFunc();\n }\n catch (err) {\n throw NakoSyntaxError.fromNode(`\u300E${t.value}\u306B\u306F...\u300F\u3067\u7121\u540D\u95A2\u6570\u306E\u5B9A\u7FA9\u3067\u4EE5\u4E0B\u306E\u9593\u9055\u3044\u304C\u3042\u308A\u307E\u3059\u3002\\n${err.message}`, t);\n }\n if (funcObj === null) {\n throw NakoSyntaxError.fromNode('\u300EF\u306B\u306F\u300F\u69CB\u6587\u304C\u3042\u308A\u307E\u3057\u305F\u304C\u3001\u95A2\u6570\u5B9A\u7FA9\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002', t);\n }\n }\n if (!f || typeof f.josi === 'undefined') {\n throw NakoSyntaxError.fromNode('\u95A2\u6570\u306E\u5B9A\u7FA9\u3067\u30A8\u30E9\u30FC\u3002', t);\n }\n // \u6700\u8FD1\u4F7F\u3063\u305F\u95A2\u6570\u3092\u8A18\u9332\n this.recentlyCalledFunc.push({ name: funcName, ...f });\n // \u547C\u3073\u51FA\u3059\u95A2\u6570\u304C\u975E\u540C\u671F\u547C\u3073\u51FA\u3057\u304C\u5FC5\u8981(asyncFn)\u306A\u3089\u30DE\u30FC\u30AF\n if (f && f.asyncFn) {\n this.usedAsyncFn = true;\n }\n // \u95A2\u6570\u306E\u5F15\u6570\u3092\u53D6\u308A\u51FA\u3059\u51E6\u7406\n const args = [];\n let nullCount = 0;\n let valueCount = 0;\n for (let i = f.josi.length - 1; i >= 0; i--) {\n while (true) {\n // \u30B9\u30BF\u30C3\u30AF\u304B\u3089\u4EFB\u610F\u306E\u52A9\u8A5E\u3092\u6301\u3064\u5024\u3092\u4E00\u3064\u53D6\u308A\u51FA\u3059\u3001\u52A9\u8A5E\u304C\u306A\u3051\u308C\u3070\u672B\u5C3E\u304B\u3089\u5F97\u308B\n let popArg = this.popStack(f.josi[i]);\n if (popArg !== null) {\n valueCount++;\n }\n else if (i < f.josi.length - 1 || !f.isVariableJosi) {\n nullCount++;\n popArg = funcObj;\n }\n else {\n break;\n }\n if (popArg !== null && f.funcPointers !== undefined && f.funcPointers[i] !== null) {\n if (popArg.type === 'func') { // \u5F15\u6570\u304C\u95A2\u6570\u306E\u53C2\u7167\u6E21\u3057\u306B\u8A72\u5F53\u3059\u308B\u5834\u5408\u3001type\u3092\u300Efunc_pointer\u300F\u306B\u5909\u66F4\n popArg.type = 'func_pointer';\n }\n else {\n const varname = (f.varnames) ? f.varnames[i] : `${i + 1}\u756A\u76EE\u306E\u5F15\u6570`;\n throw NakoSyntaxError.fromNode(`\u95A2\u6570\u300E${t.value}\u300F\u306E\u5F15\u6570\u300E${varname}\u300F\u306B\u306F\u95A2\u6570\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u5FC5\u8981\u3067\u3059\u3002`, t);\n }\n }\n args.unshift(popArg);\n if (i < f.josi.length - 1 || !f.isVariableJosi) {\n break;\n }\n }\n }\n // \u5F15\u6570\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u308B\u3068\u304D(\u3064\u307E\u308A\u3001\u5F15\u6570\u306Bnull\u304C\u3042\u308B\u3068\u304D)\u3001\u81EA\u52D5\u7684\u306B\u300E\u5909\u6570\u300C\u305D\u308C\u300D\u300F\u3067\u88DC\u5B8C\u3055\u308C\u308B\u3002\n // \u305F\u3060\u3057\u3001null\u304C1\u3064\u3060\u3051\u306A\u3089\u3001\u5909\u6570\u300C\u305D\u308C\u300D\u3067\u88DC\u5B8C\u3055\u308C\u308B\u304C\u30012\u3064\u4EE5\u4E0A\u3042\u308B\u3068\u304D\u306F\u3001\u30A8\u30E9\u30FC\u306B\u3059\u308B\n if (nullCount >= 2 && (valueCount > 0 || t.josi === '' || RenbunJosi.indexOf(t.josi) >= 0)) {\n throw NakoSyntaxError.fromNode(`\u95A2\u6570\u300E${t.value}\u300F\u306E\u5F15\u6570\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002`, t);\n }\n this.usedFuncs.add(t.value);\n // \u95A2\u6570\u547C\u3073\u51FA\u3057\u306EAst\u3092\u69CB\u7BC9\n const funcNode = {\n type: 'func',\n name: t.value,\n args,\n josi: t.josi,\n ...map,\n end: this.peekSourceMap()\n };\n // \u300C\u30D7\u30E9\u30B0\u30A4\u30F3\u540D\u8A2D\u5B9A\u300D\u306A\u3089\u3070\u3001\u305D\u3053\u3067\u30B9\u30B3\u30FC\u30D7\u3092\u5909\u66F4\u3059\u308B\u3053\u3068\u3092\u610F\u5473\u3059\u308B (#1112)\n if (funcNode.name === '\u30D7\u30E9\u30B0\u30A4\u30F3\u540D\u8A2D\u5B9A') {\n if (args.length > 0 && args[0]) {\n let fname = '' + args[0].value;\n if (fname === '\u30E1\u30A4\u30F3') {\n fname = '' + args[0].file;\n }\n this.namespaceStack.push(this.modName);\n this.isExportStack.push(this.isExportDefault);\n this.modName = NakoLexer.filenameToModName(fname);\n this.modList.push(this.modName);\n }\n }\n else if (funcNode.name === '\u540D\u524D\u7A7A\u9593\u30DD\u30C3\u30D7') { // (#1409)\n const space = this.namespaceStack.pop();\n if (space) {\n this.modName = space;\n }\n const isexport = this.isExportStack.pop();\n if (isexport != null) {\n this.isExportDefault = isexport;\n }\n }\n // \u8A00\u3044\u5207\u308A\u306A\u3089\u305D\u3053\u3067\u4E00\u5EA6\u5207\u308B\n if (t.josi === '') {\n return funcNode;\n }\n // \u300C**\u3057\u3066\u3001**\u300D\u306E\u5834\u5408\u3082\u4E00\u5EA6\u5207\u308B\n if (RenbunJosi.indexOf(t.josi) >= 0) {\n funcNode.josi = '\u3057\u3066';\n return funcNode;\n }\n // \u7D9A\u304D\n funcNode.meta = f;\n this.pushStack(funcNode);\n return null;\n }\n /** @returns {Ast | null} */\n yLet() {\n const map = this.peekSourceMap();\n // \u901A\u5E38\u306E\u5909\u6570\n if (this.check2(['word', 'eq'])) {\n const word = this.peek();\n let threw = false;\n try {\n if (this.accept(['word', 'eq', this.yCalc]) || this.accept(['word', 'eq', this.ySentence])) {\n if (this.y[2].type === 'eol') {\n throw new Error('\u5024\u304C\u7A7A\u3067\u3059\u3002');\n }\n if (this.check('comma')) {\n this.get();\n } // skip comma (ex) name1=val1, name2=val2\n const nameToken = this.getVarName(this.y[0]);\n const valueToken = this.y[2];\n return {\n type: 'let',\n name: nameToken,\n value: valueToken,\n ...map,\n end: this.peekSourceMap()\n };\n }\n else {\n threw = true;\n this.logger.debug(`${this.nodeToStr(word, { depth: 1 }, true)}\u3078\u306E\u4EE3\u5165\u6587\u3067\u8A08\u7B97\u5F0F\u306B\u66F8\u304D\u9593\u9055\u3044\u304C\u3042\u308A\u307E\u3059\u3002`, word);\n throw NakoSyntaxError.fromNode(`${this.nodeToStr(word, { depth: 1 }, false)}\u3078\u306E\u4EE3\u5165\u6587\u3067\u8A08\u7B97\u5F0F\u306B\u66F8\u304D\u9593\u9055\u3044\u304C\u3042\u308A\u307E\u3059\u3002`, map);\n }\n }\n catch (err) {\n if (threw) {\n throw err;\n }\n this.logger.debug(`${this.nodeToStr(word, { depth: 1 }, true)}\u3078\u306E\u4EE3\u5165\u6587\u3067\u8A08\u7B97\u5F0F\u306B\u4EE5\u4E0B\u306E\u66F8\u304D\u9593\u9055\u3044\u304C\u3042\u308A\u307E\u3059\u3002\\n${err.message}`, word);\n throw NakoSyntaxError.fromNode(`${this.nodeToStr(word, { depth: 1 }, false)}\u3078\u306E\u4EE3\u5165\u6587\u3067\u8A08\u7B97\u5F0F\u306B\u4EE5\u4E0B\u306E\u66F8\u304D\u9593\u9055\u3044\u304C\u3042\u308A\u307E\u3059\u3002\\n${err.message}`, map);\n }\n }\n // let_array ?\n if (this.check2(['word', '@'])) {\n const la = this.yLetArrayAt(map);\n if (this.check('comma')) {\n this.get();\n } // skip comma (ex) name1=val1, name2=val2\n if (la) {\n la.checkInit = this.flagCheckArrayInit;\n return la;\n }\n }\n if (this.check2(['word', '['])) {\n const lb = this.yLetArrayBracket(map);\n if (this.check('comma')) {\n this.get();\n } // skip comma (ex) name1=val1, name2=val2\n if (lb) {\n lb.checkInit = this.flagCheckArrayInit;\n return lb;\n }\n }\n // \u30ED\u30FC\u30AB\u30EB\u5909\u6570\u5B9A\u7FA9\n if (this.accept(['word', '\u3068\u306F'])) {\n const wordToken = this.y[0];\n if (!this.checkTypes(['\u5909\u6570', '\u5B9A\u6570'])) {\n throw NakoSyntaxError.fromNode('\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u300E' + wordToken.value + '\u300F\u306E\u5B9A\u7FA9\u30A8\u30E9\u30FC', wordToken);\n }\n const vtype = this.getCur(); // \u5909\u6570 or \u5B9A\u6570\n let isExport = this.isExportDefault;\n if (this.check2(['{', 'word', '}'])) {\n this.get();\n const attrNode = this.get();\n if (attrNode === null) {\n throw NakoSyntaxError.fromNode('\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u300E' + wordToken.value + '\u300F\u306E\u5B9A\u7FA9\u30A8\u30E9\u30FC', wordToken);\n }\n const attr = attrNode.value;\n if (attr === '\u516C\u958B') {\n isExport = true;\n }\n else if (attr === '\u975E\u516C\u958B') {\n isExport = false;\n }\n else if (attr === '\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8') {\n isExport = true;\n }\n else {\n this.logger.warn(`\u4E0D\u660E\u306A\u5909\u6570\u5C5E\u6027\u300E${attr}\u300F\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002`);\n }\n this.get();\n }\n const word = this.createVar(wordToken, vtype.type === '\u5B9A\u6570', isExport);\n // \u521D\u671F\u5024\u304C\u3042\u308B\uFF1F\n let value = null;\n if (this.check('eq')) {\n this.get();\n value = this.yCalc();\n }\n if (this.check('comma')) {\n this.get();\n } // skip comma (ex) name1=val1, name2=val2\n return {\n type: 'def_local_var',\n name: word,\n vartype: vtype.type,\n isExport,\n value,\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u30ED\u30FC\u30AB\u30EB\u5909\u6570\u5B9A\u7FA9\uFF08\u305D\u306E\uFF12\uFF09\n if (this.accept(['\u5909\u6570', 'word'])) {\n const wordVar = this.y[1];\n this.index -= 2; // \u300C\u5909\u6570 word\u300D\u306E\u524D\u306B\u5DFB\u304D\u623B\u3059\n // \u5909\u6570\u306E\u5BA3\u8A00\u304A\u3088\u3073\u521D\u671F\u53161\n if (this.accept(['\u5909\u6570', 'word', 'eq', this.yCalc])) {\n const word = this.createVar(this.y[1], false, this.isExportDefault);\n return {\n type: 'def_local_var',\n name: word,\n vartype: '\u5909\u6570',\n value: this.y[3],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u5909\u6570\u306E\u5BA3\u8A00\u304A\u3088\u3073\u521D\u671F\u53162\n if (this.accept(['\u5909\u6570', 'word', '{', 'word', '}', 'eq', this.yCalc])) {\n let isExport = this.isExportDefault;\n const attr = this.y[3].value;\n if (attr === '\u516C\u958B') {\n isExport = true;\n }\n else if (attr === '\u975E\u516C\u958B') {\n isExport = false;\n }\n else if (attr === '\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8') {\n isExport = true;\n }\n else {\n this.logger.warn(`\u4E0D\u660E\u306A\u5909\u6570\u5C5E\u6027\u300E${attr}\u300F\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002`);\n }\n const word = this.createVar(this.y[1], false, isExport);\n return {\n type: 'def_local_var',\n name: word,\n vartype: '\u5909\u6570',\n isExport,\n value: this.y[6],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u5909\u6570\u5BA3\u8A00\u306E\u307F\u306E\u5834\u5408\n {\n this.index += 2; // \u5909\u6570 word \u3092\u8AAD\u3093\u3060\u3068\u3059\u308B\n const word = this.createVar(wordVar, false, this.isExportDefault);\n return {\n type: 'def_local_var',\n name: word,\n vartype: '\u5909\u6570',\n value: null,\n ...map,\n end: this.peekSourceMap()\n };\n }\n }\n if (this.accept(['\u5B9A\u6570', 'word', 'eq', this.yCalc])) {\n const word = this.createVar(this.y[1], true, this.isExportDefault);\n return {\n type: 'def_local_var',\n name: word,\n vartype: '\u5B9A\u6570',\n value: this.y[3],\n ...map,\n end: this.peekSourceMap()\n };\n }\n if (this.accept(['\u5B9A\u6570', 'word', '{', 'word', '}', 'eq', this.yCalc])) {\n let isExport = this.isExportDefault;\n const attr = this.y[3].value;\n if (attr === '\u516C\u958B') {\n isExport = true;\n }\n else if (attr === '\u975E\u516C\u958B') {\n isExport = false;\n }\n else if (attr === '\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8') {\n isExport = true;\n }\n else {\n this.logger.warn(`\u4E0D\u660E\u306A\u5B9A\u6570\u5C5E\u6027\u300E${attr}\u300F\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002`);\n }\n const word = this.createVar(this.y[1], true, isExport);\n return {\n type: 'def_local_var',\n name: word,\n vartype: '\u5B9A\u6570',\n isExport,\n value: this.y[6],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u8907\u6570\u5B9A\u6570\u3078\u306E\u4EE3\u5165 #563\n if (this.accept(['\u5B9A\u6570', this.yJSONArray, 'eq', this.yCalc])) {\n const names = this.y[1];\n // check array\n if (names && names.value instanceof Array) {\n for (const i in names.value) {\n if (names.value[i].type !== 'word') {\n throw NakoSyntaxError.fromNode(`\u8907\u6570\u5B9A\u6570\u306E\u4EE3\u5165\u6587${i + 1}\u756A\u76EE\u3067\u30A8\u30E9\u30FC\u3002\u300E\u5B9A\u6570[A,B,C]=[1,2,3]\u300F\u306E\u66F8\u5F0F\u3067\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002`, this.y[0]);\n }\n }\n }\n else {\n throw NakoSyntaxError.fromNode('\u8907\u6570\u5B9A\u6570\u306E\u4EE3\u5165\u6587\u3067\u30A8\u30E9\u30FC\u3002\u300E\u5B9A\u6570[A,B,C]=[1,2,3]\u300F\u306E\u66F8\u5F0F\u3067\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002', this.y[0]);\n }\n names.value = this.createVarList(names.value, true, this.isExportDefault);\n return {\n type: 'def_local_varlist',\n names: names.value,\n vartype: '\u5B9A\u6570',\n value: this.y[3],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u8907\u6570\u5909\u6570\u3078\u306E\u4EE3\u5165 #563\n if (this.accept(['\u5909\u6570', this.yJSONArray, 'eq', this.yCalc])) {\n const names = this.y[1];\n // check array\n if (names && names.value instanceof Array) {\n for (const i in names.value) {\n if (names.value[i].type !== 'word') {\n throw NakoSyntaxError.fromNode(`\u8907\u6570\u5909\u6570\u306E\u4EE3\u5165\u6587${i + 1}\u756A\u76EE\u3067\u30A8\u30E9\u30FC\u3002\u300E\u5909\u6570[A,B,C]=[1,2,3]\u300F\u306E\u66F8\u5F0F\u3067\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002`, this.y[0]);\n }\n }\n }\n else {\n throw NakoSyntaxError.fromNode('\u8907\u6570\u5909\u6570\u306E\u4EE3\u5165\u6587\u3067\u30A8\u30E9\u30FC\u3002\u300E\u5909\u6570[A,B,C]=[1,2,3]\u300F\u306E\u66F8\u5F0F\u3067\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002', this.y[0]);\n }\n names.value = this.createVarList(names.value, false, this.isExportDefault);\n return {\n type: 'def_local_varlist',\n names: names.value,\n vartype: '\u5909\u6570',\n value: this.y[3],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u8907\u6570\u5909\u6570\u3078\u306E\u4EE3\u5165 #563\n if (this.check2(['word', 'comma', 'word'])) {\n // 2 word\n if (this.accept(['word', 'comma', 'word', 'eq', this.yCalc])) {\n let names = [this.y[0], this.y[2]];\n names = this.createVarList(names, false, this.isExportDefault);\n return {\n type: 'def_local_varlist',\n names,\n vartype: '\u5909\u6570',\n value: this.y[4],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // 3 word\n if (this.accept(['word', 'comma', 'word', 'comma', 'word', 'eq', this.yCalc])) {\n let names = [this.y[0], this.y[2], this.y[4]];\n names = this.createVarList(names, false, this.isExportDefault);\n return {\n type: 'def_local_varlist',\n names,\n vartype: '\u5909\u6570',\n value: this.y[6],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // 4 word\n if (this.accept(['word', 'comma', 'word', 'comma', 'word', 'comma', 'word', 'eq', this.yCalc])) {\n let names = [this.y[0], this.y[2], this.y[4], this.y[6]];\n names = this.createVarList(names, false, this.isExportDefault);\n return {\n type: 'def_local_varlist',\n names,\n vartype: '\u5909\u6570',\n value: this.y[8],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // 5 word\n if (this.accept(['word', 'comma', 'word', 'comma', 'word', 'comma', 'word', 'comma', 'word', 'eq', this.yCalc])) {\n let names = [this.y[0], this.y[2], this.y[4], this.y[6], this.y[8]];\n names = this.createVarList(names, false, this.isExportDefault);\n return {\n type: 'def_local_varlist',\n names,\n vartype: '\u5909\u6570',\n value: this.y[10],\n ...map,\n end: this.peekSourceMap()\n };\n }\n }\n return null;\n }\n /**\n * \u914D\u5217\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C1\u304B\u3089\u59CB\u307E\u308B\u5834\u5408\u3092\u8003\u616E\u3059\u308B\u304B\n * @param {Ast} node\n * @returns\n */\n checkArrayIndex(node) {\n // \u914D\u5217\u304C0\u304B\u3089\u59CB\u307E\u308B\u306E\u3067\u3042\u308C\u3070\u305D\u306E\u307E\u307E\u8FD4\u3059\n if (this.arrayIndexFrom === 0) {\n return node;\n }\n // \u914D\u5217\u304C1\u304B\u3089\u59CB\u307E\u308B\u306E\u3067\u3042\u308C\u3070\u6F14\u7B97\u3092\u52A0\u3048\u3066\u8FD4\u3059\n return {\n ...node,\n 'type': 'op',\n 'operator': '-',\n 'left': node,\n 'right': {\n ...node,\n 'type': 'number',\n 'value': this.arrayIndexFrom\n }\n };\n }\n /**\n * \u914D\u5217\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u9006\u9806\u306B\u3059\u308B\u306E\u3092\u8003\u616E\u3059\u308B\u304B\n * @param {Ast[]| null} ary\n */\n checkArrayReverse(ary) {\n if (!ary) {\n return [];\n }\n if (!this.flagReverseArrayIndex) {\n return ary;\n }\n // \u4E8C\u6B21\u5143\u4EE5\u4E0A\u306E\u914D\u5217\u5909\u6570\u306E\u30A2\u30AF\u30BB\u30B9\u3092[y][x]\u3067\u306F\u306A\u304F[x][y]\u3068\u9806\u5E8F\u3092\u5909\u66F4\u3059\u308B\n if (ary.length <= 1) {\n return ary;\n }\n return ary.reverse();\n }\n /** @returns {Ast | null} */\n yLetArrayAt(map) {\n // \u4E00\u6B21\u5143\u914D\u5217\n if (this.accept(['word', '@', this.yValue, 'eq', this.yCalc])) {\n return {\n type: 'let_array',\n name: this.getVarName(this.y[0]),\n index: [this.checkArrayIndex(this.y[2])],\n value: this.y[4],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u4E8C\u6B21\u5143\u914D\u5217\n if (this.accept(['word', '@', this.yValue, '@', this.yValue, 'eq', this.yCalc])) {\n return {\n type: 'let_array',\n name: this.getVarName(this.y[0]),\n index: this.checkArrayReverse([this.checkArrayIndex(this.y[2]), this.checkArrayIndex(this.y[4])]),\n value: this.y[6],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u4E09\u6B21\u5143\u914D\u5217\n if (this.accept(['word', '@', this.yValue, '@', this.yValue, '@', this.yValue, 'eq', this.yCalc])) {\n return {\n type: 'let_array',\n name: this.getVarName(this.y[0]),\n index: this.checkArrayReverse([this.checkArrayIndex(this.y[2]), this.checkArrayIndex(this.y[4]), this.checkArrayIndex(this.y[6])]),\n value: this.y[8],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u4E8C\u6B21\u5143\u914D\u5217(\u30AB\u30F3\u30DE\u6307\u5B9A)\n if (this.accept(['word', '@', this.yValue, 'comma', this.yValue, 'eq', this.yCalc])) {\n return {\n type: 'let_array',\n name: this.getVarName(this.y[0]),\n index: this.checkArrayReverse([this.checkArrayIndex(this.y[2]), this.checkArrayIndex(this.y[4])]),\n value: this.y[6],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u4E09\u6B21\u5143\u914D\u5217(\u30AB\u30F3\u30DE\u6307\u5B9A)\n if (this.accept(['word', '@', this.yValue, 'comma', this.yValue, 'comma', this.yValue, 'eq', this.yCalc])) {\n return {\n type: 'let_array',\n name: this.getVarName(this.y[0]),\n index: this.checkArrayReverse([this.checkArrayIndex(this.y[2]), this.checkArrayIndex(this.y[4]), this.checkArrayIndex(this.y[6])]),\n value: this.y[8],\n ...map,\n end: this.peekSourceMap()\n };\n }\n return null;\n }\n /** @returns {Ast | null} */\n yLetArrayBracket(map) {\n // \u4E00\u6B21\u5143\u914D\u5217\n if (this.accept(['word', '[', this.yCalc, ']', 'eq', this.yCalc])) {\n return {\n type: 'let_array',\n name: this.getVarName(this.y[0]),\n index: [this.checkArrayIndex(this.y[2])],\n value: this.y[5],\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u4E8C\u6B21\u5143\u914D\u5217\n if (this.accept(['word', '[', this.yCalc, ']', '[', this.yCalc, ']', 'eq', this.yCalc])) {\n return {\n type: 'let_array',\n name: this.getVarName(this.y[0]),\n index: this.checkArrayReverse([this.checkArrayIndex(this.y[2]), this.checkArrayIndex(this.y[5])]),\n value: this.y[8],\n tag: '2',\n ...map,\n end: this.peekSourceMap()\n };\n }\n if (this.accept(['word', '[', this.yCalc, 'comma', this.yCalc, ']', 'eq', this.yCalc])) {\n return {\n type: 'let_array',\n name: this.getVarName(this.y[0]),\n index: this.checkArrayReverse([this.checkArrayIndex(this.y[2]), this.checkArrayIndex(this.y[4])]),\n value: this.y[7],\n tag: '2',\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u4E09\u6B21\u5143\u914D\u5217\n if (this.accept(['word', '[', this.yCalc, ']', '[', this.yCalc, ']', '[', this.yCalc, ']', 'eq', this.yCalc])) {\n return {\n type: 'let_array',\n name: this.getVarName(this.y[0]),\n index: this.checkArrayReverse([this.checkArrayIndex(this.y[2]), this.checkArrayIndex(this.y[5]), this.checkArrayIndex(this.y[8])]),\n value: this.y[11],\n ...map,\n end: this.peekSourceMap()\n };\n }\n if (this.accept(['word', '[', this.yCalc, 'comma', this.yCalc, 'comma', this.yCalc, ']', 'eq', this.yCalc])) {\n return {\n type: 'let_array',\n name: this.getVarName(this.y[0]),\n index: this.checkArrayReverse([this.checkArrayIndex(this.y[2]), this.checkArrayIndex(this.y[4]), this.checkArrayIndex(this.y[6])]),\n value: this.y[9],\n ...map,\n end: this.peekSourceMap()\n };\n }\n return null;\n }\n /** @returns {Ast | null} */\n yCalc() {\n const map = this.peekSourceMap();\n if (this.check('eol')) {\n return null;\n }\n // \u5024\u3092\u4E00\u3064\u8AAD\u3080\n const t = this.yGetArg();\n if (!t) {\n return null;\n }\n // \u52A9\u8A5E\u304C\u3042\u308B\uFF1F \u3064\u307E\u308A\u3001\u95A2\u6570\u547C\u3073\u51FA\u3057\u304C\u3042\u308B\uFF1F\n if (t.josi === '') {\n return t;\n } // \u5024\u3060\u3051\u306E\u5834\u5408\n // \u95A2\u6570\u306E\u547C\u3073\u51FA\u3057\u304C\u3042\u308B\u306A\u3089\u3001\u30B9\u30BF\u30C3\u30AF\u306B\u8F09\u305B\u3066\u95A2\u6570\u8AAD\u307F\u51FA\u3057\u3092\u547C\u3076\n const tmpReadingCalc = this.isReadingCalc;\n this.isReadingCalc = true;\n this.pushStack(t);\n const t1 = this.yCall();\n this.isReadingCalc = tmpReadingCalc;\n if (!t1) {\n // \u95A2\u6570\u304C\u306A\u3051\u308C\u3070\u3001\u5148\u307B\u3069\u7A4D\u3093\u3060\u5024\u3092\u30B9\u30BF\u30C3\u30AF\u304B\u3089\u53D6\u308A\u51FA\u3057\u3066\u8FD4\u3059\n return this.popStack();\n }\n // \u8A08\u7B97\u5F0F\u3092fCalc\u3068\u3059\u308B\n let fCalc = t1;\n // \u305D\u308C\u304C\u9023\u6587\u304B\u52A9\u8A5E\u3092\u8AAD\u3093\u3067\u78BA\u8A8D\n if (RenbunJosi.indexOf(t1.josi || '') >= 0) {\n // \u9023\u6587\u306A\u3089\u53F3\u5074\u3092\u8AAD\u3093\u3067\u5DE6\u5074\u3068\u304F\u3063\u3064\u3051\u308B\n const t2 = this.yCalc();\n if (t2) {\n fCalc = {\n type: 'renbun',\n left: t1,\n right: t2,\n josi: t2.josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n }\n // \u6F14\u7B97\u5B50\u304C\u3042\u308C\u3070\u7D9A\u3051\u308B\n const op = this.peek();\n if (!op) {\n return fCalc;\n }\n if (opPriority[op.type]) {\n return this.yGetArgOperator(fCalc);\n }\n return fCalc;\n }\n /** @returns {Ast | null} */\n yValueKakko() {\n if (!this.check('(')) {\n return null;\n }\n const t = this.get(); // skip '('\n if (!t) {\n throw new Error('[System Error] check \u3057\u305F\u306E\u306B get \u3067\u304D\u306A\u3044');\n }\n this.saveStack();\n const v = this.yCalc() || this.ySentence();\n if (v === null) {\n const v2 = this.get();\n this.logger.debug('(...)\u306E\u89E3\u6790\u30A8\u30E9\u30FC\u3002' + this.nodeToStr(v2, { depth: 1 }, true) + '\u306E\u8FD1\u304F', t);\n throw NakoSyntaxError.fromNode('(...)\u306E\u89E3\u6790\u30A8\u30E9\u30FC\u3002' + this.nodeToStr(v2, { depth: 1 }, false) + '\u306E\u8FD1\u304F', t);\n }\n if (!this.check(')')) {\n this.logger.debug('(...)\u306E\u89E3\u6790\u30A8\u30E9\u30FC\u3002' + this.nodeToStr(v, { depth: 1 }, true) + '\u306E\u8FD1\u304F', t);\n throw NakoSyntaxError.fromNode('(...)\u306E\u89E3\u6790\u30A8\u30E9\u30FC\u3002' + this.nodeToStr(v, { depth: 1 }, false) + '\u306E\u8FD1\u304F', t);\n }\n const closeParent = this.get(); // skip ')'\n this.loadStack();\n if (closeParent) {\n v.josi = closeParent.josi;\n }\n return v;\n }\n /** @returns {Ast | null} */\n yValue() {\n const map = this.peekSourceMap();\n // \u30AB\u30F3\u30DE\u306A\u3089\u98DB\u3070\u3059 #877\n if (this.check('comma')) {\n this.get();\n }\n // \u30D7\u30EA\u30DF\u30C6\u30A3\u30D6\u306A\u5024\n if (this.checkTypes(['number', 'bigint', 'string'])) {\n return this.getCur();\n } // Token To Ast\n // \u4E38\u62EC\u5F27\n if (this.check('(')) {\n return this.yValueKakko();\n }\n // \u30DE\u30A4\u30CA\u30B9\u8A18\u53F7\n if (this.check2(['-', 'number']) || this.check2(['-', 'word']) || this.check2(['-', 'func'])) {\n const m = this.get(); // skip '-'\n const v = this.yValue();\n const josi = (v && v.josi) ? v.josi : '';\n const line = (m && m.line) ? m.line : 0;\n return {\n type: 'op',\n operator: '*',\n left: { type: 'number', value: -1, line },\n right: v || [],\n josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n // NOT\n if (this.check('not')) {\n this.get(); // skip '!'\n const v = this.yValue();\n const josi = (v && v.josi) ? v.josi : '';\n return {\n type: 'not',\n value: v,\n josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n // JSON object\n const a = this.yJSONArray();\n if (a) {\n return a;\n }\n const o = this.yJSONObject();\n if (o) {\n return o;\n }\n // \u4E00\u8A9E\u95A2\u6570\n const splitType = operatorList.concat(['eol', ')', ']', '\u306A\u3089\u3070', '\u56DE', '\u9593', '\u53CD\u5FA9', '\u6761\u4EF6\u5206\u5C90']);\n if (this.check2(['func', splitType])) {\n const tt = this.get();\n if (!tt) {\n throw new Error('[System Error] \u6B63\u3057\u304F\u5024\u304C\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002');\n }\n const f = this.getVarNameRef(tt);\n this.usedFuncs.add(f.value);\n // \u5F15\u6570\u306E\u500B\u6570\u3092\u30C1\u30A7\u30C3\u30AF\n const meta = f.meta;\n const args = [];\n if (!meta) {\n throw NakoSyntaxError.fromNode(`\u4E00\u8A9E\u95A2\u6570\u300E${f.value}\u300F\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`, tt);\n }\n if (meta.josi && meta.josi.length === 1) {\n args.push({ type: 'word', value: '\u305D\u308C' });\n }\n else if (meta.josi && meta.josi.length >= 2) {\n throw NakoSyntaxError.fromNode(`\u95A2\u6570\u300E${f.value}\u300F\u3067\u5F15\u6570\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002${meta.josi.length}\u500B\u306E\u5F15\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`, tt);\n }\n return {\n type: 'func',\n name: f.value,\n args,\n josi: f.josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n // C\u98A8\u95A2\u6570\u547C\u3073\u51FA\u3057 FUNC(...)\n if (this.check2([['func', 'word'], '(']) && this.peekDef().josi === '') {\n const f = this.peek();\n if (this.accept([['func', 'word'], '(', this.yGetArgParen, ')'])) {\n const ff = this.getVarNameRef(this.y[0]);\n const args = this.y[2];\n const funcName = ff.value;\n this.usedFuncs.add(funcName);\n // \u5F15\u6570\u306E\u500B\u6570\u3092\u30C1\u30A7\u30C3\u30AF\n const meta = ff.meta;\n if (meta && meta.josi) {\n // \u5F15\u6570\u306E\u500B\u6570\u304C\u7570\u306A\u308B\u5834\u5408\n if (meta.josi.length === args.length) {\n // ok\n }\n else if (meta.isVariableJosi) {\n // ok\n }\n else { // \u5F15\u6570\u306E\u500B\u6570\u304C\u9055\u3046\n throw NakoSyntaxError.fromNode(`\u95A2\u6570\u300E${ff.value}\u300F\u3067\u5F15\u6570${args.length}\u500B\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u304C\u3001${meta.josi.length}\u500B\u306E\u5F15\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`, ff);\n }\n }\n return {\n type: 'func',\n name: funcName,\n args,\n josi: this.y[3].josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n throw NakoSyntaxError.fromNode('C\u98A8\u95A2\u6570\u547C\u3073\u51FA\u3057\u306E\u30A8\u30E9\u30FC', f || NewEmptyToken());\n }\n // \u7121\u540D\u95A2\u6570(\u95A2\u6570\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8)\n if (this.check('def_func')) {\n return this.yMumeiFunc();\n }\n // \u5909\u6570\n const word = this.yValueWord();\n if (word) {\n return word;\n }\n // \u95A2\u6570\u3078\u306E\u53C2\u7167\n const funcPtr = this.yValueFuncPointer();\n if (funcPtr) {\n return funcPtr;\n }\n // \u305D\u306E\u4ED6\n return null;\n }\n yValueWordGetIndex(ast) {\n if (!ast.index) {\n ast.index = [];\n }\n // word @ a, b, c\n if (this.check('@')) {\n if (this.accept(['@', this.yValue, 'comma', this.yValue, 'comma', this.yValue])) {\n ast.index.push(this.checkArrayIndex(this.y[1]));\n ast.index.push(this.checkArrayIndex(this.y[3]));\n ast.index.push(this.checkArrayIndex(this.y[5]));\n ast.index = this.checkArrayReverse(ast.index);\n ast.josi = this.y[5].josi;\n return true;\n }\n if (this.accept(['@', this.yValue, 'comma', this.yValue])) {\n ast.index.push(this.checkArrayIndex(this.y[1]));\n ast.index.push(this.checkArrayIndex(this.y[3]));\n ast.index = this.checkArrayReverse(ast.index);\n ast.josi = this.y[3].josi;\n return true;\n }\n if (this.accept(['@', this.yValue])) {\n ast.index.push(this.checkArrayIndex(this.y[1]));\n ast.josi = this.y[1].josi;\n return true;\n }\n throw NakoSyntaxError.fromNode('\u5909\u6570\u306E\u5F8C\u308D\u306E\u300E@\u8981\u7D20\u300F\u306E\u6307\u5B9A\u304C\u4E0D\u6B63\u3067\u3059\u3002', ast);\n }\n if (this.check('[')) {\n if (this.accept(['[', this.yCalc, ']'])) {\n ast.index.push(this.checkArrayIndex(this.y[1]));\n ast.josi = this.y[2].josi;\n return this.y[2].josi === ''; // \u52A9\u8A5E\u304C\u3042\u308C\u3070\u305D\u3053\u3067\u7D42\u4E86(false)\u3092\u8FD4\u3059 (#1627)\n }\n }\n if (this.check('[')) {\n if (this.accept(['[', this.yCalc, 'comma', this.yCalc, ']'])) {\n const index = [\n this.checkArrayIndex(this.y[1]),\n this.checkArrayIndex(this.y[3])\n ];\n ast.index = this.checkArrayReverse(index);\n ast.josi = this.y[4].josi;\n return this.y[4].josi === ''; // \u52A9\u8A5E\u304C\u3042\u308C\u3070\u305D\u3053\u3067\u7D42\u4E86(false)\u3092\u8FD4\u3059\n }\n }\n if (this.check('[')) {\n if (this.accept(['[', this.yCalc, 'comma', this.yCalc, 'comma', this.yCalc, ']'])) {\n const index = [\n this.checkArrayIndex(this.y[1]),\n this.checkArrayIndex(this.y[3]),\n this.checkArrayIndex(this.y[5])\n ];\n ast.index = this.checkArrayReverse(index);\n ast.josi = this.y[6].josi;\n return this.y[6].josi === ''; // \u52A9\u8A5E\u304C\u3042\u308C\u3070\u305D\u3053\u3067\u7D42\u4E86(false)\u3092\u8FD4\u3059\n }\n }\n return false;\n }\n /** @returns {Ast | null} */\n yValueFuncPointer() {\n const map = this.peekSourceMap();\n if (this.check('func_pointer')) {\n const t = this.getCur();\n const ast = {\n type: 'func_pointer',\n name: t.value,\n josi: t.josi,\n ...map,\n end: this.peekSourceMap()\n };\n return ast;\n }\n return null;\n }\n /** @returns {Ast | null} */\n yValueWord() {\n const map = this.peekSourceMap();\n if (this.check('word')) {\n const t = this.getCur();\n const word = this.getVarNameRef(t);\n // word[n] || word@n\n if (word.josi === '' && this.checkTypes(['[', '@'])) {\n const ast = {\n type: '\u914D\u5217\u53C2\u7167',\n name: word,\n index: [],\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n while (!this.isEOF()) {\n if (!this.yValueWordGetIndex(ast)) {\n break;\n }\n }\n if (ast.index && ast.index.length === 0) {\n throw NakoSyntaxError.fromNode(`\u914D\u5217\u300E${word.value}\u300F\u30A2\u30AF\u30BB\u30B9\u3067\u6307\u5B9A\u30DF\u30B9`, word);\n }\n return ast;\n }\n return word; // Token to Ast\n }\n return null;\n }\n /** \u5909\u6570\u3092\u751F\u6210 */\n createVar(word, isConst, isExport) {\n let gname = word.value;\n const typeName = isConst ? 'const' : 'var';\n if (this.funcLevel === 0) {\n // global ?\n if (gname.indexOf('__') < 0) {\n gname = this.modName + '__' + gname;\n }\n this.funclist.set(gname, { type: typeName, value: '', isExport });\n word.value = gname;\n return word;\n }\n else {\n // local\n this.localvars.set(gname, { type: typeName, value: '' });\n return word;\n }\n }\n /** \u5909\u6570\u540D\u3092\u691C\u7D22\u3057\u3066\u89E3\u6C7A\u3059\u308B\n * @param {Ast|Token} word\n * @return {Ast|Token}\n */\n getVarName(word) {\n // check word name\n const f = this.findVar(word.value);\n if (f) {\n if (f && f.scope === 'global') {\n word.value = f.name;\n }\n return word;\n }\n // \u5909\u6570\u304C\u898B\u3064\u304B\u3089\u306A\u3044\n this.createVar(word, false, this.isExportDefault);\n return word;\n }\n /** \u5909\u6570\u540D\u3092\u691C\u7D22\u3057\u3066\u89E3\u6C7A\u3059\u308B */\n getVarNameRef(word) {\n // check word name\n const f = this.findVar(word.value);\n if (!f) { // \u5909\u6570\u304C\u898B\u3064\u304B\u3089\u306A\u3044\n if (this.funcLevel === 0 && word.value.indexOf('__') < 0) {\n word.value = this.modName + '__' + word.value;\n }\n }\n else if (f && f.scope === 'global') {\n word.value = f.name;\n }\n return word;\n }\n /** \u8907\u6570\u306E\u5909\u6570\u540D\u3092\u691C\u7D22\u3057\u3066\u89E3\u6C7A\u3059\u308B */\n createVarList(words, isConst, isExport) {\n for (let i = 0; i < words.length; i++) {\n words[i] = this.createVar(words[i], isConst, isExport);\n }\n return words;\n }\n yJSONObjectValue() {\n const a = [];\n const firstToken = this.peek();\n if (!firstToken) {\n return null;\n }\n while (!this.isEOF()) {\n while (this.check('eol')) {\n this.get();\n }\n if (this.check('}')) {\n break;\n }\n if (this.accept(['word', ':', this.yCalc])) {\n this.y[0].type = 'string'; // \u30AD\u30FC\u540D\u306E\u6587\u5B57\u5217\u8A18\u53F7\u7701\u7565\u306E\u5834\u5408\n a.push({\n key: this.y[0],\n value: this.y[2]\n });\n }\n else if (this.accept(['string', ':', this.yCalc])) {\n a.push({\n key: this.y[0],\n value: this.y[2]\n });\n }\n else if (this.check('word')) {\n const w = this.getCur();\n w.type = 'string';\n a.push({\n key: w, // Token to Ast\n value: w\n });\n }\n else if (this.checkTypes(['string', 'number'])) {\n const w = this.getCur();\n a.push({\n key: w, // Token to Ast\n value: w\n });\n }\n else {\n throw NakoSyntaxError.fromNode('\u8F9E\u66F8\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u5BA3\u8A00\u3067\u672B\u5C3E\u306E\u300E}\u300F\u304C\u3042\u308A\u307E\u305B\u3093\u3002', firstToken);\n }\n if (this.check('comma')) {\n this.get();\n }\n }\n return a;\n }\n /** @returns {Ast | null} */\n yJSONObject() {\n const map = this.peekSourceMap();\n if (this.accept(['{', '}'])) {\n return {\n type: 'json_obj',\n value: [],\n josi: this.y[1].josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n if (this.accept(['{', this.yJSONObjectValue, '}'])) {\n return {\n type: 'json_obj',\n value: this.y[1],\n josi: this.y[2].josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u8F9E\u66F8\u521D\u671F\u5316\u306B\u7D42\u308F\u308A\u304C\u306A\u304B\u3063\u305F\u5834\u5408 (\u30A8\u30E9\u30FC\u30C1\u30A7\u30C3\u30AF\u306E\u305F\u3081) #958\n if (this.accept(['{', this.yJSONObjectValue])) {\n throw NakoSyntaxError.fromNode('\u8F9E\u66F8\u578B\u5909\u6570\u306E\u521D\u671F\u5316\u304C\u300E}\u300F\u3067\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093\u3002', this.y[1]);\n }\n return null;\n }\n yJSONArrayValue() {\n if (this.check('eol')) {\n this.get();\n }\n const v1 = this.yCalc();\n if (v1 === null) {\n return null;\n }\n if (this.check('comma')) {\n this.get();\n }\n const a = [v1];\n while (!this.isEOF()) {\n if (this.check('eol')) {\n this.get();\n }\n if (this.check(']')) {\n break;\n }\n const v2 = this.yCalc();\n if (v2 === null) {\n break;\n }\n if (this.check('comma')) {\n this.get();\n }\n a.push(v2);\n }\n return a;\n }\n /** @returns {Ast | null} */\n yJSONArray() {\n const map = this.peekSourceMap();\n if (this.accept(['[', ']'])) {\n return {\n type: 'json_array',\n value: [],\n josi: this.y[1].josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n if (this.accept(['[', this.yJSONArrayValue, ']'])) {\n return {\n type: 'json_array',\n value: this.y[1],\n josi: this.y[2].josi,\n ...map,\n end: this.peekSourceMap()\n };\n }\n // \u914D\u5217\u306B\u7D42\u308F\u308A\u304C\u306A\u304B\u3063\u305F\u5834\u5408 (\u30A8\u30E9\u30FC\u30C1\u30A7\u30C3\u30AF\u306E\u305F\u3081) #958\n if (this.accept(['[', this.yJSONArrayValue])) {\n throw NakoSyntaxError.fromNode('\u914D\u5217\u5909\u6570\u306E\u521D\u671F\u5316\u304C\u300E]\u300F\u3067\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093\u3002', this.y[1]);\n }\n return null;\n }\n /** \u30A8\u30E9\u30FC\u76E3\u8996\u69CB\u6587 */\n yTryExcept() {\n const map = this.peekSourceMap();\n if (!this.check('\u30A8\u30E9\u30FC\u76E3\u8996')) {\n return null;\n }\n const kansi = this.getCur(); // skip \u30A8\u30E9\u30FC\u76E3\u8996\n const block = this.yBlock();\n if (!this.check2(['\u30A8\u30E9\u30FC', '\u306A\u3089\u3070'])) {\n throw NakoSyntaxError.fromNode('\u30A8\u30E9\u30FC\u69CB\u6587\u3067\u300E\u30A8\u30E9\u30FC\u306A\u3089\u3070\u300F\u304C\u3042\u308A\u307E\u305B\u3093\u3002' +\n '\u300E\u30A8\u30E9\u30FC\u76E3\u8996..\u30A8\u30E9\u30FC\u306A\u3089\u3070..\u3053\u3053\u307E\u3067\u300F\u3092\u5BFE\u3067\u8A18\u8FF0\u3057\u307E\u3059\u3002', kansi);\n }\n this.get(); // skip \u30A8\u30E9\u30FC\n this.get(); // skip \u306A\u3089\u3070\n const errBlock = this.yBlock();\n if (this.check('\u3053\u3053\u307E\u3067')) {\n this.get();\n }\n else {\n throw NakoSyntaxError.fromNode('\u300E\u3053\u3053\u307E\u3067\u300F\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u300E\u30A8\u30E9\u30FC\u76E3\u8996\u300F...\u300E\u30A8\u30E9\u30FC\u306A\u3089\u3070\u300F...\u300E\u3053\u3053\u307E\u3067\u300F\u3092\u5BFE\u5FDC\u3055\u305B\u3066\u304F\u3060\u3055\u3044\u3002', map);\n }\n return {\n type: 'try_except',\n block,\n errBlock: errBlock || [],\n josi: '',\n ...map,\n end: this.peekSourceMap()\n };\n }\n}\n", "/**\n * nako_prepare.js\n * \u5B57\u53E5\u89E3\u6790\u306E\u524D\u306E\u524D\u51E6\u7406\u3002\u5168\u89D2\u6587\u5B57\u3092\u534A\u89D2\u6587\u5B57\u306B\u5909\u63DB\u3059\u308B\u306E\u304C\u4E3B\u306A\u51E6\u7406\u3002\n * \u305F\u3060\u3057\u3001\u30B3\u30E1\u30F3\u30C8\u3084\u6587\u5B57\u5217\u306E\u4E2D\u306F\u5909\u63DB\u3057\u306A\u3044\u3088\u3046\u306B\u8003\u616E\u3057\u3066\u5909\u63DB\u3059\u308B\u3002\n */\nclass ReplaceHistory {\n constructor(from, to, index) {\n this.from = from;\n this.to = to;\n this.index = index;\n }\n}\nclass ConvertResult {\n constructor(text, sourcePosition) {\n this.text = text;\n this.sourcePosition = sourcePosition;\n }\n}\n/**\n * \u7F6E\u63DB\u5F8C\u306E\u4F4D\u7F6E\u304B\u3089\u7F6E\u63DB\u524D\u306E\u4F4D\u7F6E\u3078\u30DE\u30C3\u30D4\u30F3\u30B0\u3067\u304D\u308B\u6587\u5B57\u5217\n */\nexport class Replace {\n constructor(code) {\n this.history = [];\n this.code = code;\n }\n getText() {\n return this.code;\n }\n replaceAll(from, to) {\n while (true) {\n const index = this.getText().indexOf(from);\n if (index === -1) {\n break;\n }\n if (from.length !== to.length) {\n this.history.unshift(new ReplaceHistory(from.length, to.length, index));\n }\n this.code = this.code.replace(from, to);\n }\n }\n getSourcePosition(i) {\n // \u5C11\u3057\u9045\u3044\u3002\u30D1\u30FC\u30B9\u6642\u95931.4\u79D2\u306B\u5BFE\u3057\u30660.15\u79D2\u304B\u304B\u308B\u3002i\u304C\u5358\u8ABF\u5897\u52A0\u3059\u308B\u3053\u3068\u3092\u5229\u7528\u3057\u3066\u9AD8\u901F\u5316\u3067\u304D\u308B\u306F\u305A\u3002\n for (const item of this.history) {\n if (i >= item.index + item.to) { // \u7F6E\u63DB\u7BC4\u56F2\u3088\u308A\u5F8C\u308D\n i += item.from - item.to;\n }\n else if (item.index <= i && i < item.index + item.to) { // \u7F6E\u63DB\u7BC4\u56F2\n // \u7F6E\u63DB\u6587\u5B57\u5217\u304C2\u6587\u5B57\u4EE5\u4E0A\u306E\u3068\u304D\u3001\u6700\u5F8C\u306E\u6587\u5B57\u306F\u6700\u5F8C\u306E\u6587\u5B57\u3078\u30DE\u30C3\u30D7\u3059\u308B\u3002\u305D\u308C\u4EE5\u5916\u306F\u6700\u521D\u306E\u6587\u5B57\u3078\u30DE\u30C3\u30D7\u3059\u308B\u3002\n if (item.to >= 2 && i === item.index + item.to - 1) {\n i = item.index + item.from - 1;\n }\n else {\n i = item.index;\n }\n }\n }\n return i;\n }\n}\n/**\n * \u5B57\u53E5\u89E3\u6790\u3092\u884C\u3046\u524D\u306B\u5168\u89D2\u6587\u5B57\u3092\u534A\u89D2\u306B\u63C3\u3048\u308B\n * [memo]\n * \u305F\u3060\u3057\u3001\u6587\u5B57\u5217\u90E8\u5206\u3060\u3051\u306F\u3001\u305D\u306E\u307E\u307E\u5168\u89D2\u3067\u51FA\u529B\u3059\u308B\u3088\u3046\u306B\u3059\u308B\n * for https://github.com/kujirahand/nadesiko3/issues/94\n */\nexport class NakoPrepare {\n /** \u552F\u4E00\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u8FD4\u3059 */\n static getInstance() {\n if (!NakoPrepare._instance) {\n NakoPrepare._instance = new NakoPrepare();\n }\n return NakoPrepare._instance;\n }\n constructor() {\n // \u5358\u7D14\u306A\u5909\u63DB\u30C6\u30FC\u30D6\u30EB\n this.convertTable = new Map([\n // \u30CF\u30A4\u30D5\u30F3\u3078\u306E\u5909\u63DB\n // \u53C2\u8003) https://hydrocul.github.io/wiki/blog/2014/1101-hyphen-minus-wave-tilde\n // 0x2d: true, // ASCII\u306E\u30CF\u30A4\u30D5\u30F3\n [0x2010, '-'], // \u5225\u306E\u30CF\u30A4\u30D5\u30F3\n [0x2011, '-'], // \u6539\u884C\u3057\u306A\u3044\u30CF\u30A4\u30D5\u30F3\n [0x2013, '-'], // EN\u30C0\u30C3\u30B7\u30E5\n [0x2014, '-'], // EM\u30C0\u30C3\u30B7\u30E5\n [0x2015, '-'], // \u5168\u89D2\u306E\u30C0\u30C3\u30B7\u30E5\n [0x2212, '-'], // \u5168\u89D2\u306E\u30DE\u30A4\u30CA\u30B9\n // \u30C1\u30EB\u30C0\u306E\u5909\u63DB\n // 0x7e: true,\n [0x02dc, '~'], // \u5C0F\u3055\u306A\u30C1\u30EB\u30C0\n [0x02F7, '~'], // Modifier Letter Low Tilde\n [0x2053, '~'], // Swung Dash - \u8F9E\u66F8\u306E\u307F\u3060\u3057\n [0x223c, '~'], // Tilde Operator: \u6570\u5B66\u3067 Similar to\n [0x301c, '~'], // Wave Dash(\u4E00\u822C\u7684\u306A\u6CE2\u30C0\u30C3\u30B7\u30E5)\n [0xFF5E, '~'], // \u5168\u89D2\u30C1\u30EB\u30C0\n // \u30B9\u30DA\u30FC\u30B9\u306E\u5909\u63DB\n // \u53C2\u8003) http://anti.rosx.net/etc/memo/002_space.html\n // 0x20: true,\n [0x2000, ' '], // EN QUAD\n [0x2002, ' '], // EN SPACE\n [0x2003, ' '], // EM SPACE\n [0x2004, ' '], // THREE-PER-EM SPACE\n [0x2005, ' '], // FOUR-PER-EM SPACE\n [0x2006, ' '], // SIX-PER-EM SPACE\n [0x2007, ' '], // FIGURE SPACE\n [0x2009, ' '], // THIN SPACE\n [0x200A, ' '], // HAIR SPACE\n [0x200B, ' '], // ZERO WIDTH SPACE\n [0x202F, ' '], // NARROW NO-BREAK SPACE\n [0x205F, ' '], // MEDIUM MATHEMATICAL SPACE\n [0x3000, ' '], // \u5168\u89D2\u30B9\u30DA\u30FC\u30B9\n [0x3164, ' '], // HANGUL FILLER\n // \u305D\u306E\u4ED6\u306E\u5909\u63DB\n // [0x09, ' '], // TAB --> SPC\n [0x203B, '#'], // '\u203B' --- \u30B3\u30E1\u30F3\u30C8\n [0x3002, ';'], // \u53E5\u70B9\n [0x3010, '['], // '\u3010'\n [0x3011, ']'], // '\u3011'\n // \u8AAD\u70B9\u306F\u300C,\u300D\u306B\u5909\u63DB\u3059\u308B (#877)\n [0x3001, ','], // \u8AAD\u70B9 --- JSON\u8A18\u6CD5\u3067\u300C,\u300D\u3068\u300C\u3001\u300D\u3092\u533A\u5225\u3057\u305F\u3044\u306E\u3067\u8AAD\u70B9\u306F\u5909\u63DB\u3057\u306A\u3044\u3053\u3068\u306B\u3002(#276)\n [0xFF0C, ','], // \u8AAD\u70B9 '\uFF0C' \u8AD6\u6587\u306A\u3069\u3067\u5229\u7528\u3001\u305F\u3060\u3057\u53E5\u70B9\u306F\u30C9\u30C3\u30C8\u3068\u88AB\u308B\u306E\u3067\u5909\u63DB\u3057\u306A\u3044 (#735)\n [0x2716, '*'], // \u00D7\u306E\u7D75\u6587\u5B57 (#1183)\n [0x2795, '+'], // +\u306E\u7D75\u6587\u5B57 (#1183)\n [0x2796, '-'], // -\u306E\u7D75\u6587\u5B57 (#1183)\n [0x2797, '\u00F7'] // \u00F7\u306E\u7D75\u6587\u5B57 (#1183)\n ]);\n }\n // \u4E00\u6587\u5B57\u3060\u3051\u5909\u63DB\n /**\n * @param {string} ch\n */\n convert1ch(ch) {\n if (!ch) {\n return '';\n }\n const c = ch.codePointAt(0) || 0;\n // \u30C6\u30FC\u30D6\u30EB\u306B\u3088\u308B\u5909\u63DB\n const c2 = this.convertTable.get(c) || '';\n if (c2) {\n return c2;\n }\n // ASCII\u30A8\u30EA\u30A2\n if (c < 0x7F) {\n return ch;\n }\n // \u5168\u89D2\u534A\u89D2\u5358\u7D14\u5909\u63DB\u53EF\u80FD --- '\uFF01' - '\uFF5E'\n if (c >= 0xFF01 && c <= 0xFF5E) {\n const c2 = c - 0xFEE0;\n return String.fromCodePoint(c2);\n }\n return ch;\n }\n /** convert code */\n convert(code) {\n if (!code) {\n return [];\n }\n const src = new Replace(code);\n // \u6539\u884C\u30B3\u30FC\u30C9\u3092\u7D71\u4E00\n src.replaceAll('\\r\\n', '\\n');\n src.replaceAll('\\r', '\\n');\n let flagStr = false; // \u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u5185\u304B\u3069\u3046\u304B\n let flagStr2 = false; // \u7D75\u6587\u5B57\u306B\u3088\u308B\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u5185\u304B\u3069\u3046\u304B\n let endOfStr = ''; // \u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u3092\u7D42\u4E86\u3055\u305B\u308B\u8A18\u53F7\n const res = [];\n let left = 0; // \u73FE\u5728\u51E6\u7406\u4E2D\u306E\u90E8\u5206\u6587\u5B57\u5217\u306E\u5DE6\u7AEF\u306E\u4F4D\u7F6E\n let str = ''; // \u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u306E\u5024\n // \u4E00\u6587\u5B57\u305A\u3064\u5168\u89D2\u3092\u534A\u89D2\u306B\u7F6E\u63DB\u3059\u308B\n let i = 0;\n while (i < src.getText().length) {\n const c = src.getText().charAt(i);\n const ch2 = src.getText().substr(i, 2);\n // \u6587\u5B57\u5217\u306E\u3068\u304D\n if (flagStr) {\n if (c === endOfStr) {\n flagStr = false;\n res.push(new ConvertResult(str + endOfStr, src.getSourcePosition(left)));\n i++;\n left = i;\n continue;\n }\n str += c;\n i++;\n continue;\n }\n // \u7D75\u6587\u5B57\u5236\u5FA1\u306B\u3088\u308B\u6587\u5B57\u5217\u306E\u3068\u304D\n if (flagStr2) {\n if (ch2 === endOfStr) {\n flagStr2 = false;\n if (endOfStr === '\uFF0A\uFF0F') {\n endOfStr = '*/';\n } // \u5F37\u5236\u5909\u63DB\n res.push(new ConvertResult(str + endOfStr, src.getSourcePosition(left)));\n i += 2;\n left = i;\n continue;\n }\n str += c;\n i++;\n continue;\n }\n // \u6587\u5B57\u5217\u5224\u5B9A\n if (c === '\u300C') {\n res.push(new ConvertResult(c, src.getSourcePosition(left)));\n i++;\n left = i;\n flagStr = true;\n endOfStr = '\u300D';\n str = '';\n continue;\n }\n if (c === '\u300E') {\n res.push(new ConvertResult(c, src.getSourcePosition(left)));\n i++;\n left = i;\n flagStr = true;\n endOfStr = '\u300F';\n str = '';\n continue;\n }\n if (c === '\u201C') {\n res.push(new ConvertResult(c, src.getSourcePosition(left)));\n i++;\n left = i;\n flagStr = true;\n endOfStr = '\u201D';\n str = '';\n continue;\n }\n // JavaScript\u306E\u5185\u90E8\u7684\u306B\u306F\u6587\u5B57\u5217\u306FUTF-16\u3067\u6271\u308F\u308C\u3066\u308B\u306E\u3067 charAt \u3092\u4F7F\u3046\u5834\u5408 \u7D75\u6587\u5B57\u304C2\u6587\u5B57\u6271\u3044\u306B\u306A\u308B --- #726\n if (ch2 === '\uD83C\uDF34' || ch2 === '\uD83C\uDF3F') {\n res.push(new ConvertResult(ch2, src.getSourcePosition(left)));\n i += 2;\n left = i;\n flagStr2 = true;\n endOfStr = ch2;\n str = '';\n continue;\n }\n const c1 = this.convert1ch(c);\n if (c1 === '\"' || c1 === '\\'') {\n res.push(new ConvertResult(c1, src.getSourcePosition(left)));\n i++;\n left = i;\n flagStr = true;\n endOfStr = c;\n str = '';\n continue;\n }\n // \u30E9\u30A4\u30F3\u30B3\u30E1\u30F3\u30C8\u3092\u98DB\u3070\u3059 (#725)\n if (c1 === '#') {\n res.push(new ConvertResult(c1, src.getSourcePosition(left)));\n i++;\n left = i;\n flagStr = true; // \u672C\u5F53\u306F\u30B3\u30E1\u30F3\u30C8\u3060\u3051\u3069\u4FBF\u5B9C\u4E0A\n endOfStr = '\\n';\n str = '';\n continue;\n }\n // \u30E9\u30A4\u30F3\u30B3\u30E1\u30F3\u30C8\u3092\u98DB\u3070\u3059\n if (ch2 === '//' || ch2 === '\uFF0F\uFF0F') {\n res.push(new ConvertResult('//', src.getSourcePosition(left))); // \u5F37\u5236\u7684\u306B'//'\u3068\u3059\u308B\n i += 2;\n left = i;\n flagStr = true;\n endOfStr = '\\n';\n str = '';\n continue;\n }\n // \u8907\u6570\u884C\u30B3\u30E1\u30F3\u30C8\u5185\u3092\u98DB\u3070\u3059\n if (ch2 === '\uFF0F\uFF0A') {\n res.push(new ConvertResult('/*', src.getSourcePosition(left))); // \u5F37\u5236\u5909\u63DB\n i += 2;\n left = i;\n flagStr2 = true;\n endOfStr = '\uFF0A\uFF0F';\n str = '';\n continue;\n }\n // \u8907\u6570\u884C\u30B3\u30E1\u30F3\u30C8\u5185\u3092\u98DB\u3070\u3059 (#731)\n if (ch2 === '/*') {\n res.push(new ConvertResult(ch2, src.getSourcePosition(left)));\n i += 2;\n left = i;\n flagStr2 = true;\n endOfStr = '*/';\n str = '';\n continue;\n }\n // \u5909\u63DB\u3057\u305F\u3082\u306E\u3092\u8FFD\u52A0\n res.push(new ConvertResult(c1, src.getSourcePosition(left)));\n i++;\n left = i;\n }\n if (flagStr || flagStr2) {\n res.push(new ConvertResult(str + endOfStr, src.getSourcePosition(left)));\n }\n return res;\n }\n}\n/** \u306A\u3067\u3057\u3053\u306E\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u306E\u30E2\u30FC\u30C9(!\u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u306A\u3069)\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u304B\u8ABF\u3079\u308B */\nexport function checkNakoMode(code, modeNames) {\n // \u5148\u982D\u306E256\u6587\u5B57\u306B\u3064\u3044\u3066\u8ABF\u3079\u308B\n code = code.substring(0, 256);\n // \u5168\u89D2\u534A\u89D2\u306E\u63FA\u308C\u3092\u5438\u53CE\n code = code.replace(/(\uFF01|\uD83D\uDCA1)/, '!');\n // \u7BC4\u56F2\u30B3\u30E1\u30F3\u30C8\u3092\u524A\u9664\n code = code.replace(/\\/\\*.*?\\*\\//g, '');\n // \u6BCE\u6587\u8ABF\u3079\u308B\n const lines = code.split(/[;\u3002\\n]/, 30);\n for (let line of lines) {\n line = line.replace(/^\\s+/, '').replace(/\\s+$/, ''); // trim\n if (modeNames.indexOf(line) >= 0) {\n return true;\n }\n }\n return false;\n}\n", "/**\n * \u30D1\u30FC\u30B5\u30FC\u304C\u751F\u6210\u3057\u305F\u4E2D\u9593\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u5B9F\u969B\u306EJavaScript\u306E\u30B3\u30FC\u30C9\u306B\u5909\u63DB\u3059\u308B\u3002\n * \u306A\u304A\u901F\u5EA6\u512A\u5148\u3067\u5FE0\u5B9F\u306BJavaScript\u306E\u30B3\u30FC\u30C9\u3092\u751F\u6210\u3059\u308B\u3002\n */\nimport { NakoSyntaxError } from './nako_errors.mjs';\n// \u306A\u3067\u3057\u3053\u3067\u5B9A\u7FA9\u3057\u305F\u95A2\u6570\u306E\u958B\u59CB\u30B3\u30FC\u30C9\u3068\u7D42\u4E86\u30B3\u30FC\u30C9\nconst topOfFunction = '(function(){\\n';\nconst endOfFunction = '})';\nconst topOfFunctionAsync = '(async function(){\\n';\n/** \u30B3\u30FC\u30C9\u751F\u6210\u30AA\u30D7\u30B7\u30E7\u30F3 */\nexport class NakoGenOptions {\n constructor(isTest = false, importFiles = [], codeStandalone = '', convEnv = '') {\n this.isTest = isTest;\n this.codeStandalone = codeStandalone;\n this.codeEnv = convEnv;\n this.importFiles = ['plugin_system.mjs', 'plugin_math.mjs', 'plugin_csv.mjs', 'plugin_promise.mjs', 'plugin_test.mjs'];\n for (const fname of importFiles) {\n this.importFiles.push(fname);\n }\n }\n}\n/**\n * \u69CB\u6587\u6728\u304B\u3089JS\u306E\u30B3\u30FC\u30C9\u3092\u751F\u6210\u3059\u308B\u30AF\u30E9\u30B9\n */\nexport class NakoGen {\n /** constructor\n * @param com \u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\n */\n constructor(com) {\n /**\n * \u51FA\u529B\u3059\u308BJavaScript\u30B3\u30FC\u30C9\u306E\u30D8\u30C3\u30C0\u30FC\u90E8\u5206\u3067\u5B9A\u7FA9\u3059\u308B\u5FC5\u8981\u306E\u3042\u308B\u95A2\u6570\u3002fn\u306Fjs\u306E\u30B3\u30FC\u30C9\u3002\n * \u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570\u306F\u542B\u307E\u308C\u306A\u3044\u3002\n */\n this.nakoFuncList = new Map(com.getNakoFuncList());\n /**\n * \u306A\u3067\u3057\u3053\u3067\u5B9A\u7FA9\u3057\u305F\u30C6\u30B9\u30C8\u306E\u4E00\u89A7\n */\n this.nakoTestFuncs = new Map();\n /**\n * \u30D7\u30ED\u30B0\u30E9\u30E0\u5185\u3067\u53C2\u7167\u3055\u308C\u305F\u95A2\u6570\u306E\u30EA\u30B9\u30C8\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u547D\u4EE4\u3092\u542B\u3080\u3002\n * JavaScript\u5358\u4F53\u3067\u5B9F\u884C\u3059\u308B\u3068\u304D\u3001\u3053\u306E\u30EA\u30B9\u30C8\u306B\u3042\u308B\u95A2\u6570\u306E\u5B9A\u7FA9\u3092JavaScript\u30B3\u30FC\u30C9\u306E\u5148\u982D\u306B\u4ED8\u3051\u8DB3\u3059\u3002\n */\n this.usedFuncSet = new Set();\n /**\n * \u30EB\u30FC\u30D7\u6642\u306E\u4E00\u6642\u5909\u6570\u304C\u88AB\u3089\u306A\u3044\u3088\u3046\u306BID\u3067\u7BA1\u7406\n */\n this.loopId = 1;\n /**\n * \u975E\u540C\u95A2\u6570\u3092\u4F55\u56DE\u4F7F\u3063\u305F\u304B\n */\n this.numAsyncFn = 0;\n /**\n * \u95A2\u6570\u5B9A\u7FA9\u306E\u969B\u3001\u95A2\u6570\u306E\u4E2D\u3067asyncFn=true\u306E\u95A2\u6570\u3092\u547C\u3073\u51FA\u3057\u305F\u304B\u3069\u3046\u304B\u3092\u8ABF\u3079\u308B @see convDefFuncCommon\n */\n this.usedAsyncFn = false;\n /** \u5909\u63DB\u4E2D\u306E\u51E6\u7406\u304C\u3001\u30EB\u30FC\u30D7\u306E\u4E2D\u304B\u3069\u3046\u304B\u3092\u5224\u5B9A\u3059\u308B */\n this.flagLoop = false;\n this.__self = com;\n /** \u30B3\u30FC\u30C9\u30B8\u30A7\u30CD\u30EC\u30FC\u30BF\u306E\u7A2E\u985E */\n this.genMode = 'sync';\n /** \u884C\u756A\u53F7\u3068\u30D5\u30A1\u30A4\u30EB\u540D\u304C\u5206\u304B\u308B\u3068\u304D\u306F `l123:main.nako3`\u3001\u884C\u756A\u53F7\u3060\u3051\u5206\u304B\u308B\u3068\u304D\u306F `l123`\u3001\u305D\u3046\u3067\u306A\u3051\u308C\u3070\u4EFB\u610F\u306E\u6587\u5B57\u5217\u3002 */\n this.lastLineNo = null;\n /** \u30B9\u30BF\u30C3\u30AF */\n this.varslistSet = this.setVarslistSet(com.__varslist);\n /** \u30B9\u30BF\u30C3\u30AF\u30C8\u30C3\u30D7 */\n this.varsSet = { isFunction: false, names: new Set(), readonly: new Set() };\n this.varslistSet[2] = this.varsSet;\n // \u73FE\u5728\u5B9A\u7FA9\u4E2D\u306E\u95A2\u6570\u540D\n this.defFuncName = '';\n // 1\u4EE5\u4E0A\u306E\u3068\u304D\u9AD8\u901F\u5316\u3059\u308B\u3002\n // \u5B9F\u884C\u901F\u5EA6\u512A\u5148\u30D6\u30ED\u30C3\u30AF\u5185\u30671\u5897\u3048\u308B\u3002\n this.speedMode = {\n lineNumbers: 0, // \u884C\u756A\u53F7\u3092\u51FA\u529B\u3057\u306A\u3044\n implicitTypeCasting: 0, // \u6570\u5024\u52A0\u7B97\u3067parseFloat\u3092\u51FA\u529B\u3057\u306A\u3044\n invalidSore: 0, // \u300C\u305D\u308C\u300D\u3092\u7528\u3044\u306A\u3044\n forcePure: 0 // \u5168\u3066\u306E\u30B7\u30B9\u30C6\u30E0\u547D\u4EE4\u3092pure\u3068\u3057\u3066\u6271\u3046\u3002\u547D\u4EE4\u304B\u3089\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3078\u306E\u53C2\u7167\u304C\u51FA\u6765\u306A\u304F\u306A\u308B\u3002\n };\n // 1\u4EE5\u4E0A\u306E\u3068\u304D\u6E2C\u5B9A\u3092inject\u3059\u308B\u3002\n // \u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u30E2\u30CB\u30BF\u306E\u30D6\u30ED\u30C3\u30AF\u5185\u30671\u5897\u3048\u308B\u3002\n this.performanceMonitor = {\n userFunction: 0, // \u547C\u3073\u51FA\u3055\u308C\u305F\u30E6\u30FC\u30B6\u95A2\u6570\n systemFunction: 0, // \u30B7\u30B9\u30C6\u30E0\u95A2\u6570(\u547C\u3073\u51FA\u3057\u30B3\u30FC\u30C9\u3092\u542B\u3080)\n systemFunctionBody: 0, // \u30B7\u30B9\u30C6\u30E0\u95A2\u6570(\u547C\u3073\u51FA\u3057\u30B3\u30FC\u30C9\u3092\u9664\u304F)\n mumeiId: 0\n };\n /**\n * \u672A\u5B9A\u7FA9\u306E\u5909\u6570\u306E\u8B66\u544A\u3092\u884C\u3046\n */\n this.constPools = [];\n this.constPoolsTemplate = [];\n // undefined\u306E\u8B66\u544A\u5236\u5FA1 (\u300C\u53B3\u3057\u304F\u30C1\u30A7\u30C3\u30AF\u300D\u3067\u30AA\u30F3\u306B\u306A\u308B)\n this.warnUndefinedVar = false;\n this.warnUndefinedReturnUserFunc = false;\n this.warnUndefinedCallingUserFunc = false;\n this.warnUndefinedCallingSystemFunc = false;\n this.warnUndefinedCalledUserFuncArgs = false;\n this.debugOption = com.debugOption;\n }\n static isValidIdentifier(name) {\n // TODO: \u3044\u3089\u306A\u305D\u3046\u306A\u90E8\u5206\u306F\u524A\u308B\n // https://stackoverflow.com/a/9337047\n // eslint-disable-next-line no-misleading-character-class\n return /^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[$A-Z_a-z\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\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\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\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\\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-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\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-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\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-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\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][$A-Z_a-z\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\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\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\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\\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-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\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-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\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-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\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-\\uffdc0-9\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19b0-\\u19c0\\u19c8\\u19c9\\u19d0-\\u19d9\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf2-\\u1cf4\\u1dc0-\\u1de6\\u1dfc-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua900-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f]*$/.test(name);\n }\n /**\n * com.__varslist\u3092\u5143\u306B\u3001this.varslistSet\u3092\u8A2D\u5B9A\n */\n setVarslistSet(varslist) {\n const vlist = [];\n // \u5909\u6570\u540D\u306E\u4E00\u89A7\u3092VarsSet\u306B\u683C\u7D0D (0: \u30B7\u30B9\u30C6\u30E0\u5909\u6570, 1: \u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570, 2: \u30ED\u30FC\u30AB\u30EB\u5909\u6570) 0\u30681\u306E\u307F\u79FB\u3059\n for (let i = 0; i <= 1; i++) {\n const scope = varslist[i];\n const names = new Set(scope.keys());\n names.delete('meta'); // remove 'meta' from names\n vlist[i] = { isFunction: false, names, readonly: new Set() };\n }\n return vlist;\n }\n /**\n * \u6539\u884C\u3092\u57CB\u3081\u8FBC\u3080\n */\n convLineno(node, forceUpdate = false, incLine = 0) {\n // \u30B9\u30D4\u30FC\u30C9\u30E2\u30FC\u30C9\u3067\u306F\u884C\u756A\u53F7\u3092\u57CB\u3081\u8FBC\u307E\u306A\u3044\n if (this.speedMode.lineNumbers > 0) {\n return '';\n }\n const lineNo = node.line + incLine;\n let lineNoStr;\n if (typeof node.line !== 'number') {\n lineNoStr = 'unknown';\n }\n else if (typeof node.file !== 'string') {\n lineNoStr = `l${lineNo}`;\n }\n else {\n lineNoStr = `l${lineNo}:${node.file}`;\n }\n // \u5F37\u5236\u7684\u306B\u884C\u756A\u53F7\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3059\u308B\u304B\n if (!forceUpdate) {\n if (lineNoStr === this.lastLineNo) {\n return '';\n }\n this.lastLineNo = lineNoStr;\n }\n // \u5B9F\u884C\u884C\u306E\u30C7\u30FC\u30BF\n const lineDataJSON = JSON.stringify(lineNoStr);\n // \u30C7\u30D0\u30C3\u30B0\u5B9F\u884C\u304B\n let debugCode = '';\n if (this.debugOption.useDebug) {\n // messageAction\n if (this.debugOption.messageAction) {\n debugCode += `window.postMessage({action:'${this.debugOption.messageAction}',` +\n `line: ${lineDataJSON}});`;\n }\n // waitTime\n if (lineNo >= 1) {\n if (this.debugOption.waitTime > 0) {\n debugCode += `await __v0.get('\u79D2\u5F85')(${this.debugOption.waitTime},__self);`;\n }\n // breakpoints\n this.numAsyncFn += 1;\n this.usedAsyncFn = true;\n debugCode += `await __v0.get('__DEBUG_BP_WAIT')(${lineNo}, __self);`;\n }\n // end\n debugCode += 'if (__v0.get(\\'__forceClose\\')) { return -1 };';\n }\n // \u4F8B: __v0.set('__line', 'l1:main.nako3')\n // return `__v0.set('__line', ${lineDataJSON});` + debugCode\n return `__line(${lineDataJSON});` + debugCode;\n }\n /**\n * \u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306E\u53D6\u5F97\u7528JavaScript\u30B3\u30FC\u30C9\u3092\u751F\u6210\u3059\u308B\u3002\n * @param {string} name\n */\n varname_get(name) {\n if (this.varslistSet.length === 3) {\n // \u30B0\u30ED\u30FC\u30D0\u30EB\n return `__self.__varslist[${2}].get(${JSON.stringify(name)})`;\n }\n else {\n // \u30ED\u30FC\u30AB\u30EB\n return `__self.__vars.get(${JSON.stringify(name)})`;\n }\n }\n /**\n * \u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306E\u8A2D\u5B9A\u7528JavaScript\u30B3\u30FC\u30C9\u3092\u751F\u6210\u3059\u308B\u3002\n * @param {string} name\n * @param {string} jsvalue\n */\n varname_set(name, jsvalue) {\n if (this.varslistSet.length === 3) {\n return `__self.__varslist[2].set(${JSON.stringify(name)}, (${jsvalue}))`;\n }\n else {\n return `__self.__vars.set(${JSON.stringify(name)}, (${jsvalue}))`;\n }\n }\n /**\n * \u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306E\u8A2D\u5B9A\u7528JavaScript\u30B3\u30FC\u30C9\u3092\u751F\u6210\u3059\u308B\u3002\n * @param {string} name\n * @param {string} jsvalue\n */\n varname_set_sys(name, jsvalue) {\n return `__self.__setSysVar(${JSON.stringify(name)}, (${jsvalue}))`;\n }\n /**\n * @param {string} name\n * @returns {string}\n */\n static getFuncName(name) {\n if (name.indexOf('__') >= 0) { // \u30B9\u30B3\u30FC\u30D7\u304C\u3042\u308B\u5834\u5408\n const a = name.split('__');\n const scope = a[0];\n const name3 = NakoGen.getFuncName(a[1]);\n return `${scope}__${name3}`;\n }\n let name2 = name.replace(/[\u3041-\u3093]+$/, '');\n if (name2 === '') {\n name2 = name;\n }\n return name2;\n }\n /** @param {Ast} node */\n static convPrint(node) {\n return `__print(${node});`;\n }\n /** @param {Ast} node */\n convRequire(node) {\n const moduleName = node.value;\n return this.convLineno(node, false) +\n `__module['${moduleName}'] = require('${moduleName}');\\n`;\n }\n /**\n * \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u5B9F\u884C\u306B\u5FC5\u8981\u306A\u95A2\u6570\u5B9A\u7FA9\u3092\u66F8\u304D\u51FA\u3059(\u30B0\u30ED\u30FC\u30D0\u30EB\u9818\u57DF)\n * convGen\u306E\u7D50\u679C\u3092\u5229\u7528\u3059\u308B\u305F\u3081\u3001convGen\u306E\u5F8C\u306B\u547C\u3073\u51FA\u3059\u3053\u3068\u3002\n * @param com\n * @param opt\n */\n getDefFuncCode(com, opt) {\n let code = '';\n // \u3088\u304F\u4F7F\u3046\u5909\u6570\u306E\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\n // jsInit \u306E\u90E8\u5206\u306B\u8A2D\u5B9A\u3059\u308B\u30B3\u30FC\u30C9\n code += `const nakoVersion = { version: ${JSON.stringify(com.version)} }\\n`;\n code += 'const __self = self;\\n';\n code += '__self.__self = __self;\\n';\n code += 'const __varslist = __self.__varslist;\\n';\n code += 'const __module = __self.__module;\\n';\n code += 'const __v0 = __self.__v0 = __self.__varslist[0];\\n';\n code += 'const __v1 = __self.__v1 = __self.__varslist[1];\\n';\n code += 'const __vars = __self.__vars = __self.__varslist[2];\\n';\n code += `const __modList = __self.__modList = ${JSON.stringify(com.getModList())}\\n`;\n code += 'const __line = (lineno) => { __self.__v0.set(\\'__line\\', lineno); }\\n';\n code += '__v0.set(\\'__line\\', \\'l0:__getDefFuncCode\\');\\n';\n code += '__v0.set(\\'__forceClose\\', false);\\n';\n code += `__v0.set('__useDebug', ${this.debugOption.useDebug});\\n`;\n // \u5B9A\u6570\u3092\u57CB\u3081\u8FBC\u3080\n code += '__self.constPools = ' + JSON.stringify(this.constPools) + ';\\n';\n code += '__self.constPoolsTemplate = ' + JSON.stringify(this.constPoolsTemplate) + ';\\n';\n // \u306A\u3067\u3057\u3053\u306E\u95A2\u6570\u5B9A\u7FA9\u3092\u884C\u3046\n let nakoFuncCode = '';\n this.nakoFuncList.forEach((value, key) => {\n const f = trim(cleanGeneratedCode(String(value.fn), 1));\n const isAsync = value.asyncFn ? 'true' : 'false';\n nakoFuncCode += '' +\n `//[DEF_FUNC name='${key}' asyncFn=${isAsync}]\\n` +\n `__self.__varslist[1].set(\"${key}\", ${f});\\n` +\n `//[/DEF_FUNC name='${key}']\\n`;\n });\n if (nakoFuncCode !== '') {\n code += '__v0.set(\\'__line\\', \\'\u95A2\u6570\u306E\u5B9A\u7FA9\\');\\n' + nakoFuncCode;\n }\n // \u30C6\u30B9\u30C8\u306E\u5B9A\u7FA9\u3092\u884C\u3046\n if (opt.isTest) {\n let testCode = 'const __tests = [];\\n';\n this.nakoTestFuncs.forEach((value) => {\n const f = value.fn;\n testCode += `${f};\\n`;\n });\n if (testCode !== '') {\n code += '__v0.set(\\'__line\\', \\'\u30C6\u30B9\u30C8\u306E\u5B9A\u7FA9\\');\\n';\n code += testCode + '\\n';\n }\n }\n return code;\n }\n /**\n * \u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FFD\u52A0\n * @param po \u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n */\n addPlugin(po) {\n return this.__self.addPlugin(po);\n }\n /**\n * \u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FFD\u52A0(\u30D6\u30E9\u30A6\u30B6\u5411\u3051)\n * @param name \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\n * @param po \u95A2\u6570\u30EA\u30B9\u30C8\n */\n addPluginObject(name, po) {\n this.__self.addPluginObject(name, po);\n }\n /**\n * \u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8FFD\u52A0(Node.js\u5411\u3051)\n * @param objName \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\n * @param path \u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\n * @param po \u767B\u9332\u3059\u308B\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n */\n addPluginFile(objName, path, po) {\n this.__self.addPluginFile(objName, path, po);\n }\n /**\n * \u95A2\u6570\u3092\u8FFD\u52A0\u3059\u308B\n * @param key \u95A2\u6570\u540D\n * @param josi \u52A9\u8A5E\n * @param fn \u95A2\u6570\n */\n addFunc(key, josi, fn) {\n this.__self.addFunc(key, josi, fn);\n }\n /**\n * \u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570\u3092\u53C2\u7167\u3059\u308B\n * @param key \u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570\u306E\u95A2\u6570\u540D\n * @returns \u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n */\n getFunc(key) {\n return this.__self.getFunc(key);\n }\n /**\n * \u95A2\u6570\u3092\u5148\u306B\u767B\u9332\u3057\u3066\u3057\u307E\u3046\n */\n registerFunction(ast) {\n if (ast.type !== 'block') {\n throw NakoSyntaxError.fromNode('\u69CB\u6587\u89E3\u6790\u306B\u5931\u6557\u3057\u3066\u3044\u307E\u3059\u3002\u69CB\u6587\u306F\u5FC5\u305Ablock\u304C\u5148\u982D\u306B\u306A\u308A\u307E\u3059', ast);\n }\n /** \u95A2\u6570\u4E00\u89A7 */\n const funcList = [];\n // \u306A\u3067\u3057\u3053\u95A2\u6570\u3092\u5B9A\u7FA9\u3057\u3066 this.nako_func[name] \u306B\u5B9A\u7FA9\u3059\u308B\n const registFunc = (node) => {\n if (!node.block) {\n return;\n }\n const blockList = (node.block instanceof Array) ? node.block : [node.block];\n for (let i = 0; i < blockList.length; i++) {\n const t = blockList[i];\n if (t.type === 'def_func') {\n if (!t.name) {\n throw new Error('[System Error] \u95A2\u6570\u306E\u5B9A\u7FA9\u3067\u95A2\u6570\u540D\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044');\n }\n const name = t.name.value;\n this.usedFuncSet.add(name);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.__self.__varslist[1].set(name, () => { }); // \u4E8B\u524D\u306B\u9069\u5F53\u306A\u5024\u3092\u8A2D\u5B9A\n this.varslistSet[1].names.add(name); // global\n const meta = (t.name).meta; // todo: \u5F37\u5236\u5909\u63DB\u3057\u305F\u304C\u6B63\u3057\u3044\u304B\u30C1\u30A7\u30C3\u30AF\n this.nakoFuncList.set(name, {\n josi: meta.josi,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n fn: () => { },\n type: 'func',\n asyncFn: t.asyncFn,\n isExport: t.isExport\n });\n funcList.push({ name, node: t });\n // eslint-disable-next-line brace-style\n }\n // \u5B9F\u884C\u901F\u5EA6\u512A\u5148 \u306A\u3069\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u4ED8\u3044\u3066\u3044\u308B\u5834\u5408\u306E\u51E6\u7406\n else if (t.type === 'speed_mode') {\n if (!t.block) {\n continue;\n }\n if (t.block.type === 'block') {\n registFunc(t.block);\n }\n else {\n registFunc(t);\n }\n }\n else if (t.type === 'performance_monitor') {\n if (!t.block) {\n continue;\n }\n if (t.block.type === 'block') {\n registFunc(t.block);\n }\n else {\n registFunc(t);\n }\n }\n }\n };\n // \u95A2\u6570\u306E\u767B\u9332\n registFunc(ast);\n // __self.__varslist\u306E\u5909\u66F4\u3092\u53CD\u6620\n const initialNames = new Set();\n if (this.speedMode.invalidSore === 0) {\n initialNames.add('\u305D\u308C');\n }\n this.varsSet = { isFunction: false, names: initialNames, readonly: new Set() };\n this.varslistSet = this.setVarslistSet(this.__self.__varslist);\n this.varslistSet[2] = this.varsSet;\n }\n /**\n * @param node\n * @param opt\n */\n convGen(node, opt) {\n const result = this.convLineno(node, false) + this._convGen(node, true);\n if (opt.isTest) {\n return '';\n }\n else {\n return result;\n }\n }\n /**\n * @param {Ast} node\n * @param {boolean} isExpression\n */\n _convGen(node, isExpression) {\n if (!node) {\n return '';\n }\n let code = '';\n if (node instanceof Array) {\n for (let i = 0; i < node.length; i++) {\n const n = node[i];\n code += this._convGen(n, isExpression);\n }\n return code;\n }\n if (node === null) {\n return 'null';\n }\n if (node === undefined) {\n return 'undefined';\n }\n if (typeof (node) !== 'object') {\n return '' + node;\n }\n // switch\n switch (node.type) {\n case 'nop':\n break;\n case 'block':\n code += this.convBlock(node);\n break;\n case 'comment':\n case 'eol':\n code += this.convComment(node);\n break;\n case 'run_mode':\n code += this.convRunMode(node);\n break;\n case 'break':\n code += this.convCheckLoop(node, 'break');\n break;\n case 'continue':\n code += this.convCheckLoop(node, 'continue');\n break;\n case 'end':\n code += '__v0.get(\\'\u7D42\\')(__self);';\n break;\n case 'number':\n code += node.value;\n break;\n case 'bigint':\n code += node.value;\n break;\n case 'string':\n code += this.convString(node);\n break;\n case 'def_local_var':\n code += this.convDefLocalVar(node);\n break;\n case 'def_local_varlist':\n code += this.convDefLocalVarlist(node);\n break;\n case 'let':\n code += this.convLet(node);\n break;\n case 'inc':\n code += this.convInc(node);\n break;\n case 'word':\n case 'variable':\n code += this.convGetVar(node);\n break;\n case 'op':\n case 'calc':\n code += this.convOp(node);\n break;\n case 'renbun':\n code += this.convRenbun(node);\n break;\n case 'not':\n code += '((' + this._convGen(node.value, true) + ')?false:true)';\n break;\n case 'func':\n case 'func_pointer':\n case 'calc_func':\n code += this.convCallFunc(node, isExpression);\n break;\n case 'if':\n code += this.convIf(node);\n break;\n case 'for':\n code += this.convFor(node);\n break;\n case 'foreach':\n code += this.convForeach(node);\n break;\n case 'repeat_times':\n code += this.convRepeatTimes(node);\n break;\n case 'speed_mode':\n code += this.convSpeedMode(node, isExpression);\n break;\n case 'performance_monitor':\n code += this.convPerformanceMonitor(node, isExpression);\n break;\n case 'while':\n code += this.convWhile(node);\n break;\n case 'atohantei':\n code += this.convAtohantei(node);\n break;\n case 'switch':\n code += this.convSwitch(node);\n break;\n case 'let_array':\n code += this.convLetArray(node);\n break;\n case '\u914D\u5217\u53C2\u7167':\n code += this.convRefArray(node);\n break;\n case 'json_array':\n code += this.convJsonArray(node);\n break;\n case 'json_obj':\n code += this.convJsonObj(node);\n break;\n case 'func_obj':\n code += this.convFuncObj(node);\n break;\n case 'bool':\n code += (node.value) ? 'true' : 'false';\n break;\n case 'null':\n code += 'null';\n break;\n case 'def_test':\n code += this.convDefTest(node);\n break;\n case 'def_func':\n code += this.convDefFunc(node);\n break;\n case 'return':\n code += this.convReturn(node);\n break;\n case 'try_except':\n code += this.convTryExcept(node);\n break;\n case 'require':\n code += this.convRequire(node);\n break;\n default:\n throw new Error('System Error: unknown_type=' + node.type);\n }\n return code;\n }\n /** \u5909\u6570\u3092\u691C\u7D22 */\n findVar(name, jsvalue = null) {\n // __vars ? (\u30ED\u30FC\u30AB\u30EB\u5909\u6570)\n if (this.varslistSet.length > 3 && this.varsSet.names.has(name)) {\n return {\n i: this.varslistSet.length - 1,\n name,\n isTop: true,\n js: this.varname_get(name),\n js_set: this.varname_set(name, String(jsvalue))\n };\n }\n // __varslist ?\n for (let i = 2; i >= 0; i--) {\n if (this.varslistSet[i].names.has(name)) {\n // \u30E6\u30FC\u30B6\u30FC\u306E\u5B9A\u7FA9\u3057\u305F\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570 (__varslist[2]) \u306F\u3001\u5909\u6570\u5C55\u958B\u3055\u308C\u3066\u3044\u308B\uFF08\u305D\u306E\u307E\u307E\u306E\u540D\u524D\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\uFF09\u53EF\u80FD\u6027\u304C\u3042\u308B\u3002\n // \u305D\u308C\u4EE5\u5916\u306E\u5909\u6570\u306F\u3001\u5FC5\u305A__varslist\u306B\u5165\u3063\u3066\u3044\u308B\u3002\n return {\n i,\n name,\n isTop: false,\n js: `__self.__varslist[${i}].get(${JSON.stringify(name)})`,\n js_set: `__self.__varslist[${i}].set(${JSON.stringify(name)}, ${jsvalue})`\n };\n }\n }\n return null;\n }\n /**\n * \u5B9A\u7FA9\u6E08\u307F\u306E\u5909\u6570\u306E\u53C2\u7167\n * @param {string} name\n * @param {Ast} position\n */\n genVar(name, position) {\n const res = this.findVar(name);\n const lno = position.line;\n if (res === null) {\n // \u5B9A\u7FA9\u3055\u308C\u3066\u3044\u306A\u3044\u540D\u524D\u306E\u53C2\u7167\u306F\u5909\u6570\u306E\u5B9A\u7FA9\u3068\u307F\u306A\u3059\u3002\n // \u591A\u304F\u306E\u5834\u5408\u306Fundefined\u5024\u3092\u6301\u3064\u5909\u6570\u3067\u3042\u308A\u5206\u304B\u308A\u3065\u3089\u3044\u30D0\u30B0\u3092\u5F15\u304D\u8D77\u3053\u3059\u304C\u3001\n // \u300C\u30CA\u30C7\u30B7\u30B3\u3059\u308B\u300D\u306A\u3069\u306E\u547D\u4EE4\u306E\u4E2D\u3067\u5B9A\u7FA9\u3055\u308C\u305F\u5909\u6570\u306E\u53C2\u7167\u306E\u5834\u5408\u304C\u3042\u308B\u305F\u3081\u8B66\u544A\u306B\u7559\u3081\u308B\u3002\n // \u305F\u3060\u3057\u3001\u81EA\u52D5\u7684\u306B\u5B9A\u7FA9\u3055\u308C\u308B\u5909\u6570\u300E\u5F15\u6570\u300F\u300E\u305D\u308C\u300F\u306A\u3069\u306F\u4F8B\u5916 #952\n if (name === '\u5F15\u6570' || name === '\u305D\u308C' || name === '\u5BFE\u8C61' || name === '\u5BFE\u8C61\u30AD\u30FC') {\n // \u30C7\u30D5\u30A9\u30EB\u30C8\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u5909\u6570\u540D\n }\n else {\n if (this.warnUndefinedVar) {\n // main__\u306F\u7701\u7565\u3057\u3066\u8868\u793A\u3059\u308B\u3088\u3046\u306B\u3002 #1223\n const dispName = name.replace(/^main__(.+)$/, '$1');\n this.__self.getLogger().warn(`\u5909\u6570\u300E${dispName}\u300F\u306F\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002`, position);\n }\n }\n this.varsSet.names.add(name);\n return this.varname_get(name);\n }\n const i = res.i;\n // \u30B7\u30B9\u30C6\u30E0\u95A2\u6570\u30FB\u5909\u6570\u306E\u5834\u5408\n if (i === 0) {\n const pv = this.__self.getNakoFunc(name);\n if (!pv) {\n return `${res.js}/*[link_error]l${lno}:${position.file}*/`;\n }\n if (pv.type === 'const' || pv.type === 'var') {\n return res.js;\n }\n if (pv.type === 'func') {\n if (!pv.josi || pv.josi.length === 0) {\n return `(${res.js}())`;\n }\n throw NakoSyntaxError.fromNode(`\u300E${name}\u300F\u304C\u8907\u6587\u3067\u4F7F\u308F\u308C\u307E\u3057\u305F\u3002\u5358\u6587\u3067\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002(v1\u975E\u4E92\u63DB)`, position);\n }\n throw NakoSyntaxError.fromNode(`\u300E${name}\u300F\u306F\u95A2\u6570\u3067\u3042\u308A\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`, position);\n }\n return res.js;\n }\n convGetVar(node) {\n const name = node.value;\n return this.genVar(name, node);\n }\n convBlock(node) {\n if (!node.block) {\n return \"\";\n }\n let code = '';\n const blocks = (node.block instanceof Array) ? node.block : [node.block];\n for (let i = 0; i < blocks.length; i++) {\n const b = blocks[i];\n code += this._convGen(b, false);\n }\n return code;\n }\n convComment(node) {\n let commentSrc = String(node.value);\n commentSrc = commentSrc.replace(/\\n/g, '\u00B6');\n const lineNo = this.convLineno(node, false);\n if (commentSrc === '' && lineNo === '') {\n return ';';\n }\n if (commentSrc === '') {\n return ';' + lineNo + '\\n';\n }\n return ';' + lineNo + '//' + commentSrc + '\\n';\n }\n convRunMode(node) {\n const mode = node.value;\n let isStrict = false;\n if (mode === '\u53B3\u3057\u304F\u30C1\u30A7\u30C3\u30AF') {\n // \u53B3\u3057\u304F\u30C1\u30A7\u30C3\u30AF\u30E2\u30FC\u30C9\u306E\u5834\u5408\u3001\u5909\u6570\u306E\u672A\u5B9A\u7FA9\u30C1\u30A7\u30C3\u30AF\u3092\u884C\u3046\n isStrict = true;\n }\n this.warnUndefinedVar = isStrict;\n this.warnUndefinedReturnUserFunc = isStrict;\n this.warnUndefinedCallingUserFunc = isStrict;\n this.warnUndefinedCallingSystemFunc = isStrict;\n this.warnUndefinedCalledUserFuncArgs = isStrict;\n return `/* \u5B9F\u884C\u30E2\u30FC\u30C9: ${mode} */`;\n }\n convReturn(node) {\n // \u95A2\u6570\u306E\u4E2D\u3067\u3042\u308C\u3070\u5229\u7528\u53EF\u80FD\n if (this.varsSet.names.has('!\u95A2\u6570')) {\n throw NakoSyntaxError.fromNode('\u300E\u623B\u308B\u300F\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u95A2\u6570\u5B9A\u7FA9\u5185\u306E\u307F\u3067\u4F7F\u7528\u53EF\u80FD\u3067\u3059\u3002', node);\n }\n const lno = this.convLineno(node, false);\n let value;\n if (node.value) {\n value = this._convGen(node.value, true);\n }\n else if (this.speedMode.invalidSore === 0) {\n value = this.varname_get('\u305D\u308C');\n }\n else {\n return lno + 'return;';\n }\n if (!this.warnUndefinedReturnUserFunc) {\n return lno + `return ${value};`;\n }\n else {\n const funcName = (this.defFuncName) ? this.defFuncName : '\u7121\u540D\u95A2\u6570';\n const poolIndex = this.addConstPool(`\u30E6\u30FC\u30B6\u95A2\u6570\u300E${funcName}\u300F\u304B\u3089undefined\u304C\u8FD4\u3055\u308C\u3066\u3044\u307E\u3059`, [], node.file, node.line);\n return lno + `return (__self.chk(${value}, ${poolIndex}));`;\n }\n }\n getConstPoolsTemplateId(msg) {\n let id = this.constPoolsTemplate.indexOf(msg);\n if (id < 0) {\n id = this.constPoolsTemplate.length;\n this.constPoolsTemplate[id] = msg;\n }\n return id;\n }\n addConstPool(msg, args, file, line) {\n // file\n file = '' + file;\n const fileNo = this.getConstPoolsTemplateId(file);\n // msg\n const msgNo = this.getConstPoolsTemplateId(msg);\n // args\n const args2 = [];\n for (const i in args) {\n const arg = '' + args[i];\n const argNo = this.getConstPoolsTemplateId(arg);\n args2.push(argNo);\n }\n const poolIndex = this.constPools.length;\n this.constPools.push([msgNo, args2, fileNo, line]);\n return poolIndex;\n }\n convCheckLoop(node, cmd) {\n // \u30EB\u30FC\u30D7\u306E\u4E2D\u3067\u3042\u308C\u3070\u5229\u7528\u53EF\u80FD\n if (!this.flagLoop) {\n const cmdj = (cmd === 'continue') ? '\u7D9A\u3051\u308B' : '\u629C\u3051\u308B';\n throw NakoSyntaxError.fromNode(`\u300E${cmdj}\u300F\u6587\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u305D\u308C\u306F\u7E70\u308A\u8FD4\u3057\u306E\u4E2D\u3067\u5229\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002`, node);\n }\n return this.convLineno(node) + cmd + ';';\n }\n convDefFuncCommon(node, name) {\n // \u5B9A\u7FA9\u4E2D\u306E\u95A2\u6570\u540D\u3092\u8A18\u9332\n this.defFuncName = name;\n // \u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u30E2\u30CB\u30BF:\u30E6\u30FC\u30B6\u95A2\u6570\u306Einject\u306E\u5B9A\u7FA9\n let performanceMonitorInjectAtStart = '';\n let performanceMonitorInjectAtEnd = '';\n if (this.performanceMonitor.userFunction !== 0) {\n let key = name;\n if (!key) {\n if (typeof this.performanceMonitor.mumeiId === 'undefined') {\n this.performanceMonitor.mumeiId = 0;\n }\n this.performanceMonitor.mumeiId++;\n key = `anous_${this.performanceMonitor.mumeiId}`;\n }\n performanceMonitorInjectAtStart = 'const performanceMonitorEnd = (function (key, type) {\\n' +\n 'const uf_start = performance.now() * 1000;\\n' +\n 'return function () {\\n' +\n 'const el_time = performance.now() * 1000 - uf_start;\\n' +\n 'if (!__self.__performance_monitor) {\\n' +\n '__self.__performance_monitor={};\\n' +\n '__self.__performance_monitor[key] = { called:1, totel_usec: el_time, min_usec: el_time, max_usec: el_time, type: type };\\n' +\n '} else if (!__self.__performance_monitor[key]) {\\n' +\n '__self.__performance_monitor[key] = { called:1, totel_usec: el_time, min_usec: el_time, max_usec: el_time, type: type };\\n' +\n '} else {\\n' +\n '__self.__performance_monitor[key].called++;\\n' +\n '__self.__performance_monitor[key].totel_usec+=el_time;\\n' +\n 'if(__self.__performance_monitor[key].min_usec>el_time){__self.__performance_monitor[key].min_usec=el_time;}\\n' +\n 'if(__self.__performance_monitor[key].max_usec<el_time){__self.__performance_monitor[key].max_usec=el_time;}\\n' +\n `}};})('${key}', 'user');` +\n 'try {\\n';\n performanceMonitorInjectAtEnd = '} finally { performanceMonitorEnd(); }\\n';\n }\n let variableDeclarations = '';\n const indent = ' ';\n let pushStack = '';\n let popStack = '';\n const initialNames = new Set();\n if (this.speedMode.invalidSore === 0) {\n initialNames.add('\u305D\u308C');\n }\n this.varsSet = { isFunction: true, names: initialNames, readonly: new Set() };\n // \u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092PUSH\u3059\u308B\n this.varslistSet.push(this.varsSet);\n // JS\u306E\u5F15\u6570\u3068\u5F15\u6570\u3092\u30D0\u30A4\u30F3\u30C9\n variableDeclarations += indent + 'const \u5F15\u6570 = arguments;\\n';\n // \u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092\u751F\u6210 (\u518D\u5E30\u95A2\u6570\u547C\u3073\u51FA\u3057\u3067\u5F15\u6570\u306E\u5024\u304C\u58CA\u308C\u308B\u554F\u984C\u304C\u3042\u308B #1663)\n // \u66AB\u5B9A\u5909\u6570__localVars\u306B\u73FE\u5728\u306E\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306E\u5024\u3092PUSH\u3057\u3001\u5909\u6570\u3092\u629C\u3051\u308B\u6642\u306BPOP\u3059\u308B)\n // \u95A2\u6570\u3068\u3057\u3066\u5BA3\u8A00\u3057\u3066\u3044\u308B\u304C\u3001JS\u95A2\u6570\u3068\u306A\u3067\u3057\u3053\u95A2\u6570\u3067\u306F\u5909\u6570\u7BA1\u7406\u306E\u65B9\u6CD5\u304C\u7570\u306A\u308B\u305F\u3081\u3001\u5B8C\u5168\u306A\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3068\u3057\u3066\u306F\u4F7F\u3048\u306A\u3044\n // \u5FC5\u305A\u3001pushStack/popStack \u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\n pushStack += '\\n// PUSH STACK\\n';\n pushStack += 'const __localvars = __self.__vars;\\n';\n pushStack += '__self.__vars = new Map();\\n';\n pushStack += 'try {\\n';\n popStack += '} finally {\\n';\n popStack += indent + '// POP STACK\\n';\n popStack += indent + 'self.__vars = __localvars;\\n';\n popStack += '}\\n';\n // \u5BA3\u8A00\u6E08\u307F\u306E\u540D\u524D\u3092\u4FDD\u5B58\n const varsDeclared = Array.from(this.varsSet.names.values());\n let code = '';\n // \u5F15\u6570\u3092\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306B\u8A2D\u5B9A\n const meta = (!name) ? node.meta : node.name.meta;\n for (let i = 0; i < meta.varnames.length; i++) {\n const word = meta.varnames[i];\n if (!this.warnUndefinedCalledUserFuncArgs) {\n code += indent + this.varname_set(word, `arguments[${i}]`) + ';\\n';\n }\n else {\n // check undefined\n let errMsg = `\u533F\u540D\u95A2\u6570\u306E\u5F15\u6570\u300E${word}\u300F\u306Bundefined\u304C\u6E21\u3055\u308C\u307E\u3057\u305F`;\n if (name) {\n errMsg = `\u30E6\u30FC\u30B6\u95A2\u6570\u300E${name}\u300F\u306E\u5F15\u6570\u300E${word}\u300F\u306Bundefined\u304C\u6E21\u3055\u308C\u307E\u3057\u305F`;\n }\n const warnJS = `__self.logger.warn('${errMsg}', {line: ${node.line}, file: ${JSON.stringify(node.file)}});`;\n const checkFunc = `((a) => { if (a === undefined) { ${warnJS} }; return a; })`;\n const callCheckFunc = `${checkFunc}(arguments[${i}])`;\n code += indent + this.varname_set(word, callCheckFunc) + ';\\n';\n }\n this.varsSet.names.add(word);\n }\n // \u95A2\u6570\u5B9A\u7FA9\u306F\u3001\u30B0\u30ED\u30FC\u30D0\u30EB\u9818\u57DF\u3067\u3002\n if (name) {\n this.usedFuncSet.add(name);\n this.varslistSet[1].names.add(name);\n if (this.nakoFuncList.get(name) === undefined) {\n // \u65E2\u306B generate \u3067\u4F5C\u6210\u6E08\u307F\u306E\u306F\u305A(\u5FF5\u306E\u305F\u3081)\n this.nakoFuncList.set(name, {\n josi: node.name.meta.josi,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n fn: () => { },\n type: 'func',\n asyncFn: false,\n isExport: null\n });\n this.__self.getLogger().warn(`generate\u3067\u672A\u5B9A\u7FA9\u306E\u72B6\u614B\u306E\u95A2\u6570\u300E${name}\u300F\u304C\u52D5\u7684\u306B\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u3059\u3002`);\n }\n }\n // \u30D6\u30ED\u30C3\u30AF\u3092\u89E3\u6790\n const oldUsedAsyncFn = this.usedAsyncFn;\n this.usedAsyncFn = false || this.debugOption.useDebug;\n const block = this._convGen(node.block, false);\n code += block.split('\\n').map((line) => ' ' + line).join('\\n') + '\\n';\n // \u95A2\u6570\u306E\u6700\u5F8C\u306B\u3001\u5909\u6570\u300C\u305D\u308C\u300D\u3092return\u3059\u308B\u3088\u3046\u306B\u3059\u308B\n if (this.speedMode.invalidSore === 0) {\n code += ` return (${this.varname_get('\u305D\u308C')});\\n`;\n }\n // \u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u30E2\u30CB\u30BF:\u30E6\u30FC\u30B6\u95A2\u6570\u306Einject\n code += performanceMonitorInjectAtEnd;\n // \u30D6\u30ED\u30C3\u30AF\u3067asyncFn\u3092\u4F7F\u3063\u305F\u304B\n if (name && this.usedAsyncFn) {\n const f = this.nakoFuncList.get(name);\n if (f) {\n f.asyncFn = true;\n }\n }\n // \u95A2\u6570\u306E\u672B\u5C3E\u306B\u3001\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092POP\n // \u95A2\u6570\u5185\u3067\u5B9A\u7FA9\u3055\u308C\u305F\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306E\u5BA3\u8A00\n for (const name of Array.from(this.varsSet.names.values())) {\n if (!varsDeclared.includes(name)) {\n if (NakoGen.isValidIdentifier(name)) {\n variableDeclarations += ` var ${name};\\n`;\n }\n }\n }\n if (this.speedMode.invalidSore === 0) {\n if (NakoGen.isValidIdentifier('\u305D\u308C')) {\n variableDeclarations += ' var \u305D\u308C = \\'\\';\\n';\n }\n else {\n variableDeclarations += ` ${this.varname_get('\u305D\u308C')} = '';`;\n }\n }\n // usedAsyncFn\u306E\u5024\u306B\u5FDC\u3058\u3066\u95A2\u6570\u5B9A\u7FA9\u306E\u65B9\u6CD5\u3092\u5909\u66F4\n const tof = (this.usedAsyncFn) ? topOfFunctionAsync : topOfFunction;\n // \u95A2\u6570\u30B3\u30FC\u30C9\u5168\u4F53\u3092\u69CB\u7BC9\n const lineInfo = ' ' + this.convLineno(node, true, 1) + '\\n';\n code = tof + performanceMonitorInjectAtStart + pushStack + variableDeclarations + lineInfo + code + popStack;\n code += endOfFunction;\n // \u540D\u524D\u304C\u3042\u308C\u3070\u3001\u95A2\u6570\u3092\u767B\u9332\u3059\u308B\n if (name) {\n const nameFuncValue = this.nakoFuncList.get(name);\n if (nameFuncValue) {\n nameFuncValue.fn = code;\n nameFuncValue.asyncFn = this.usedAsyncFn;\n meta.asyncFn = this.usedAsyncFn;\n }\n }\n this.usedAsyncFn = oldUsedAsyncFn; // \u4EE5\u524D\u306E\u5024\u3092\u623B\u3059\n this.varslistSet.pop();\n this.varsSet = this.varslistSet[this.varslistSet.length - 1];\n if (name) {\n this.__self.__varslist[1].set(name, code);\n }\n this.defFuncName = ''; // \u95A2\u6570\u540D\u3092\u30AF\u30EA\u30A2\n return code;\n }\n convDefTest(node) {\n const name = node.name.value;\n let code = `__tests.push({ name: '${name}', f: () => {\\n`;\n // \u30D6\u30ED\u30C3\u30AF\u3092\u89E3\u6790\n const block = this._convGen(node.block, false);\n code += ` ${block}\\n` +\n '}});';\n this.nakoTestFuncs.set(name, {\n josi: node.name.meta.josi,\n fn: code,\n type: 'test_func'\n });\n // \u2605\u3053\u306E\u6642\u70B9\u3067\u306F\u30C6\u30B9\u30C8\u30B3\u30FC\u30C9\u3092\u751F\u6210\u3057\u306A\u3044\u2605\n // \u30D7\u30ED\u30B0\u30E9\u30E0\u5192\u982D\u3067\u30B3\u30FC\u30C9\u751F\u6210\u6642\u306B\u30C6\u30B9\u30C8\u306E\u5B9A\u7FA9\u3092\u884C\u3046\n return '';\n }\n convDefFunc(node) {\n // \u203B [\u95A2\u6570\u5B9A\u7FA9\u306E\u30E1\u30E2]\n // \u203B \u95A2\u6570\u306E\u5B9A\u7FA9\u306F\u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u5192\u982D\u306B\u79FB\u3055\u308C\u308B\u3002\n // \u203B \u305D\u306E\u305F\u3081\u3001\u751F\u6210\u3055\u308C\u305F\u30B3\u30FC\u30C9\u306F\u3053\u3053\u3067\u306F\u8FD4\u3055\u306A\u3044\n // \u203B registerFunction \u3092\u53C2\u7167\n if (!node.name) {\n return '';\n }\n const name = NakoGen.getFuncName(node.name.value);\n this.convDefFuncCommon(node, name);\n return '';\n }\n convFuncObj(node) {\n return '/*convFuncObj*/' + this.convDefFuncCommon(node, '');\n }\n convJsonObj(node) {\n const list = node.value;\n const codelist = list.map((e) => {\n const key = this._convGen(e.key, true);\n const val = this._convGen(e.value, true);\n return `${key}:${val}`;\n });\n return '{' + codelist.join(',') + '}';\n }\n convJsonArray(node) {\n const list = node.value;\n const codelist = list.map((e) => {\n return this._convGen(e, true);\n });\n return '[' + codelist.join(',') + ']';\n }\n convRefArray(node) {\n const name = this._convGen(node.name, true);\n const list = node.index;\n let code = name;\n if (!list) {\n return code;\n }\n for (let i = 0; i < list.length; i++) {\n const idx = this._convGen(list[i], true);\n code += '[' + idx + ']';\n }\n return code;\n }\n convLetArray(node) {\n const id = this.loopId++;\n const name = this._convGen(node.name, true);\n const list = node.index || [];\n let codeInit = '';\n let code = name;\n let codeArray = '';\n // codeInit?\n if (node.checkInit) {\n const arrayDefCode = '[0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0]';\n //\n // [name]\u306E\u5185\u5BB9\u306F[__self.__varslist[2].get(\"a__A\")]\u306E\u3088\u3046\u306A\u3082\u306E\u306B\u306A\u3063\u3066\u3044\u308B\u306F\u305A\n //\n const nodeName = node.name;\n if (nodeName && nodeName.type === 'word') {\n const word = nodeName.value;\n const tmpVar = `$nako_tmp_a${id}`;\n const initArrayCode = this.varname_set(word, arrayDefCode);\n codeInit += `\\n/*\u914D\u5217\u521D\u671F\u5316*/if (!(${name} instanceof Array)) { ${initArrayCode} };\\n`;\n codeInit += `${tmpVar} = ${name};\\n`;\n for (let i = 0; i < list.length - 1; i++) {\n const idx = this._convGen(list[i], true);\n codeArray += `[${idx}]`;\n codeInit += `\\n/*\u914D\u5217\u521D\u671F\u5316${i}*/if (!(${tmpVar}${codeArray} instanceof Array)) { ${tmpVar}${codeArray} = ${arrayDefCode}; };`;\n }\n codeInit += '\\n';\n }\n }\n // array\n for (let i = 0; i < list.length; i++) {\n const idx = this._convGen(list[i], true);\n code += '[' + idx + ']';\n }\n // value\n let value = null;\n if (this.speedMode.invalidSore === 0) {\n value = this.varname_get('\u305D\u308C');\n }\n if (node.value) {\n value = this._convGen(node.value, true);\n }\n if (value == null) {\n throw NakoSyntaxError.fromNode('\u4EE3\u5165\u3059\u308B\u5148\u306E\u5909\u6570\u540D\u304C\u3042\u308A\u307E\u305B\u3093\u3002', node);\n }\n code += ' = ' + value + ';\\n';\n // generate code\n const src = this.convLineno(node, false) + codeInit + code;\n return src;\n }\n convGenLoop(node) {\n const tmpflag = this.flagLoop;\n this.flagLoop = true;\n try {\n return this._convGen(node, false);\n }\n finally {\n this.flagLoop = tmpflag;\n }\n }\n convFor(node) {\n // for\u306EID\u3092\u53D6\u5F97\n const idLoop = this.loopId++;\n const varI = `$nako_i${idLoop}`;\n // \u30EB\u30FC\u30D7\u5909\u6570\u306B\u3064\u3044\u3066\n let loopVarSetter = '';\n if (node.word !== null) { // \u30EB\u30FC\u30D7\u5909\u6570\u3092\u4F7F\u3046\u6642\n const varName = node.word.value;\n this.varsSet.names.add(varName);\n loopVarSetter = this.varname_set(varName, varI);\n }\n // \u30EB\u30FC\u30D7\u6761\u4EF6\u3092\u5909\u6570\u306B\u5165\u308C\u308B\u7528\n const varFrom = `$nako_from${idLoop}`;\n const varTo = `$nako_to${idLoop}`;\n const varTemp = `$nako_temp${idLoop}`;\n let sorePrefex = '';\n if (this.speedMode.invalidSore === 0) {\n sorePrefex = this.varname_set('\u305D\u308C', varI);\n }\n // \u30EB\u30FC\u30D7\u6761\u4EF6\u3092\u78BA\u8A8D\n let kara = '0';\n let made = '0';\n let temp = '0';\n if (node.to && node.to.type === 'func' && node.to.name === '\u7BC4\u56F2') {\n temp = this._convGen(node.to, true);\n kara = `${varTemp}['\u5148\u982D'] || 0`;\n made = `${varTemp}['\u672B\u5C3E'] || 0`;\n }\n else {\n kara = this._convGen(node.from, true);\n made = this._convGen(node.to, true);\n }\n const flagDown = node.flagDown;\n let inc = '1';\n if (node.inc && node.inc !== 'null') {\n inc = this._convGen(node.inc, true);\n }\n // \u30EB\u30FC\u30D7\u5185\u306E\u30D6\u30ED\u30C3\u30AF\u5185\u5BB9\u3092\u5F97\u308B\n const block = this.convGenLoop(node.block);\n const code = this.convLineno(node, false) + '\\n' +\n `/*[convFor id=${idLoop}]*/\\n` +\n `const ${varTemp} = ${temp};\\n` +\n `const ${varFrom} = ${kara};\\n` +\n `const ${varTo} = ${made};\\n` +\n `if (${varFrom} <= ${varTo}) { // up\\n` +\n ` for (let ${varI} = ${varFrom}; ${varI} <= ${varTo}; ${varI}+= ${inc}) {\\n` +\n ` ${sorePrefex};${loopVarSetter}\\n` +\n ' // for block begin\\n' +\n ` ${block}\\n` +\n ' // for block end\\n' +\n ' };\\n' +\n '} else { // down\\n' +\n ` if (${flagDown}) {` +\n ` for (let ${varI} = ${varFrom}; ${varI} >= ${varTo}; ${varI}-= ${inc}) {\\n` +\n ` ${sorePrefex};${loopVarSetter}\\n` +\n ' // for block begin\\n' +\n ` ${block}\\n` +\n ' // for block end\\n' +\n ' }\\n' +\n ' };\\n' +\n '};\\n' +\n `//[/convFor id=${idLoop}]\\n`;\n return code;\n }\n convForeach(node) {\n // foreach\u306EID\u3092\u53D6\u5F97\n const id = this.loopId++;\n const loopKeyVar = `$nako_i${id}`;\n const loopValueVar = `$nako_foreach_value${id}`;\n const loopDataVar = `$nako_foreach_data${id}`;\n // \u300C\u5BFE\u8C61\u300D\u300C\u5BFE\u8C61\u30AD\u30FC\u300D\u3092\u53D6\u5F97 --- block\u3088\u308A\u65E9\u304F\u5909\u6570\u3092\u5B9A\u7FA9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\n let taisyoPrefex = this.varname_set_sys('\u5BFE\u8C61', loopValueVar);\n if (node.name) { // \u5BFE\u8C61\u5909\u6570\u304C\u3042\u308B\u5834\u5408\u3001\u5BFE\u8C61\u306F\u8A2D\u5B9A\u3055\u308C\u306A\u3044\n const valueVar = '' + node.name.value;\n this.varsSet.names.add(valueVar);\n taisyoPrefex = this.varname_set(valueVar, loopValueVar);\n }\n const keyVar = '\u5BFE\u8C61\u30AD\u30FC';\n const keySetter = this.varname_set_sys(keyVar, loopKeyVar);\n // \u300C\u305D\u308C\u300D(\u5BFE\u8C61\u306E\u30A8\u30A4\u30EA\u30A2\u30B9)\u306E\u8A2D\u5B9A\n let sorePrefex = '';\n if (this.speedMode.invalidSore === 0) {\n sorePrefex = this.varname_set('\u305D\u308C', loopValueVar);\n }\n // \u53CD\u5FA9\u3059\u308B\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\n let targetData = '';\n if (node.target === null) {\n if (this.speedMode.invalidSore === 0) {\n targetData = this.varname_get('\u305D\u308C');\n }\n else {\n throw NakoSyntaxError.fromNode('\u300E\u53CD\u5FA9\u300F\u306E\u5BFE\u8C61\u304C\u3042\u308A\u307E\u305B\u3093\u3002', node);\n }\n }\n else {\n targetData = this._convGen(node.target, true);\n }\n // \u53CD\u5FA9\u3059\u308B\u30D6\u30ED\u30C3\u30AF\u3092\u53D6\u5F97\n const block = trim(cleanGeneratedCode(this.convGenLoop(node.block), 1));\n // \u30B3\u30FC\u30C9\u3092\u751F\u6210\n const code = this.convLineno(node, false) + '\\n' +\n `// [convForeach id=${id}]\\n` +\n `let ${loopDataVar} = ${targetData};\\n` +\n '// foreach Map?\\n' +\n `if (${loopDataVar} instanceof Map) { // Object\u306B\u5F37\u5236\u5909\u63DB\\n` +\n ` let tmp = {}; for (let tmpKey of ${loopDataVar}.keys()) { tmp[tmpKey] = ${loopDataVar}.get(tmpKey); }; \\n` +\n ` ${loopDataVar} = tmp;\\n` +\n '}\\n' +\n `for (let ${loopKeyVar} in ${loopDataVar}) {\\n` +\n ` if (!${loopDataVar}.hasOwnProperty(${loopKeyVar})) { continue }\\n` +\n ' // \u5BFE\u8C61\u30AD\u30FC\u306E\u8A2D\u5B9A\\n' +\n ` ${keySetter}\\n` +\n ' // \u5BFE\u8C61\u306E\u8A2D\u5B9A\\n' +\n ` let ${loopValueVar} = $nako_foreach_data${id}[${loopKeyVar}]\\n` +\n ` ${sorePrefex};\\n` +\n ` ${taisyoPrefex};\\n` +\n ' // [convForeach::block]\\n' +\n ` ${block}\\n` +\n ' // [/convForeach::block]\\n' +\n '}\\n' +\n `// [/convForeach id=${id}]\\n`;\n return code;\n }\n convRepeatTimes(node) {\n // \u30EB\u30FC\u30D7\u306EID\u3092\u53D6\u5F97\n const id = this.loopId++;\n const varI = `$nako_i${id}`;\n const varCount = `$nako_times_data${id}`;\n const codeCount = this._convGen(node.value, true);\n // \u56DE\u6570\n this.varsSet.names.add('\u56DE\u6570');\n const codeCounterSetter = this.varname_set('\u56DE\u6570', varI);\n // \u30D6\u30ED\u30C3\u30AF\u3092\u5F97\u308B\n const block = trim(cleanGeneratedCode(this.convGenLoop(node.block), 1));\n // \u305D\u308C\n let sorePrefex = '';\n if (this.speedMode.invalidSore === 0) {\n sorePrefex = this.varname_set('\u305D\u308C', varI);\n }\n const code = this.convLineno(node, false) + '\\n' +\n `// [convRepeatTimes id=${id}] // \u300En\u56DE\u300F\u69CB\u6587\\n` +\n `let ${varCount} = ${codeCount};\\n` +\n `for (let ${varI} = 1; ${varI} <= ${varCount}; ${varI}++) {\\n` +\n ` ${sorePrefex};${codeCounterSetter}\\n` +\n ` ${block}\\n` +\n '}\\n' +\n `// [/convRepeatTimes id=${id}]\\n`;\n return code;\n }\n /**\n * @param {Ast} node\n * @param {boolean} isExpression\n */\n convSpeedMode(node, isExpression) {\n if (!node.options) {\n return '';\n }\n const prev = { ...this.speedMode };\n if (node.options['\u884C\u756A\u53F7\u7121\u3057']) {\n this.speedMode.lineNumbers++;\n }\n if (node.options['\u6697\u9ED9\u306E\u578B\u5909\u63DB\u7121\u3057']) {\n this.speedMode.implicitTypeCasting++;\n }\n if (node.options['\u5F37\u5236\u30D4\u30E5\u30A2']) {\n this.speedMode.forcePure++;\n }\n if (node.options['\u305D\u308C\u7121\u52B9']) {\n this.speedMode.invalidSore++;\n }\n try {\n return this._convGen(node.block, isExpression);\n }\n finally {\n this.speedMode = prev;\n }\n }\n /**\n * @param {Ast} node\n * @param {boolean} isExpression\n */\n convPerformanceMonitor(node, isExpression) {\n const prev = { ...this.performanceMonitor };\n if (!node.options) {\n return '';\n }\n if (node.options['\u30E6\u30FC\u30B6\u95A2\u6570']) {\n this.performanceMonitor.userFunction++;\n }\n if (node.options['\u30B7\u30B9\u30C6\u30E0\u95A2\u6570\u672C\u4F53']) {\n this.performanceMonitor.systemFunctionBody++;\n }\n if (node.options['\u30B7\u30B9\u30C6\u30E0\u95A2\u6570']) {\n this.performanceMonitor.systemFunction++;\n }\n try {\n return this._convGen(node.block, isExpression);\n }\n finally {\n this.performanceMonitor = prev;\n }\n }\n convWhile(node) {\n const cond = this._convGen(node.cond, true);\n const block = trim(cleanGeneratedCode(this.convGenLoop(node.block), 1));\n const code = '// [convWhile]\\n' +\n this.convLineno(node, false) + '\\n' +\n `while (${cond})` + '{\\n' +\n ` ${block}` + '\\n' +\n '}\\n' +\n '// [convWhile]\\n';\n return code;\n }\n convAtohantei(node) {\n const id = this.loopId++;\n const varId = `$nako_i${id}`;\n const cond = this._convGen(node.cond, true);\n const block = this.convGenLoop(node.block);\n const code = 'while (true) {\\n' +\n ` ${block}\\n` +\n ` let ${varId} = ${cond};\\n` +\n ` if (${varId}) { continue } else { break }\\n` +\n '}\\n\\n';\n return this.convLineno(node, false) + code;\n }\n convSwitch(node) {\n const value = this._convGen(node.value, true);\n const cases = node.cases || [];\n let body = '';\n for (let i = 0; i < cases.length; i++) {\n const cvalue = cases[i][0];\n const cblock = this.convGenLoop(cases[i][1]);\n if (cvalue.type === '\u9055\u3048\u3070') {\n body += ' default:\\n';\n }\n else {\n const cvalueCode = this._convGen(cvalue, true);\n body += ` case ${cvalueCode}:\\n`;\n }\n body += ` ${cblock}\\n` +\n ' break\\n';\n }\n const code = `switch (${value})` + '{\\n' +\n `${body}` + '\\n' +\n '}\\n';\n return this.convLineno(node, false) + code;\n }\n convIf(node) {\n // \u6761\u4EF6\n const expr = this._convGen(node.expr, true);\n // TRUE\u30D6\u30ED\u30C3\u30AF\n const block = trim(cleanGeneratedCode(this._convGen(node.block, false), 1));\n // FALSE\u30D6\u30ED\u30C3\u30AF\n let falseBlock = '';\n if (node.false_block) {\n falseBlock = trim(cleanGeneratedCode(this.convGenLoop(node.false_block), 1));\n }\n let code = '// [convIf]\\n' +\n this.convLineno(node, false) + '\\n' +\n `if (${expr}) {\\n` +\n ` ${block}\\n` +\n '}';\n if (falseBlock !== '') {\n code +=\n ' else {\\n' +\n ` ${falseBlock}\\n` +\n '}\\n';\n }\n code += '\\n// [/convIf]\\n';\n return code;\n }\n convFuncGetArgsCalcType(_funcName, _func, node) {\n const args = [];\n const opts = {};\n const nodeArgs = (node.args) ? node.args : [];\n for (let i = 0; i < nodeArgs.length; i++) {\n const arg = nodeArgs[i];\n if (i === 0 && arg === null && this.speedMode.invalidSore === 0) {\n args.push(this.varname_get('\u305D\u308C'));\n opts.sore = true;\n }\n else {\n let argCode = this._convGen(arg, true);\n if (argCode === \"\") {\n argCode = 'undefined';\n }\n if (typeof argCode !== 'string') {\n argCode = \"undefined\";\n }\n args.push(`/*arg${i}*/${argCode}`);\n }\n }\n return [args, opts];\n }\n getPluginList() {\n const r = [];\n for (const name in this.__self.__module) {\n r.push(name);\n }\n return r;\n }\n /**\n * \u95A2\u6570\u306E\u547C\u3073\u51FA\u3057\n * @param {Ast} node\n * @param {boolean} isExpression\n * @returns string \u30B3\u30FC\u30C9\n */\n convCallFunc(node, isExpression) {\n const funcName = NakoGen.getFuncName(node.name);\n const res = this.findVar(funcName);\n if (res === null) {\n throw NakoSyntaxError.fromNode(`\u95A2\u6570\u300E${funcName}\u300F\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002\u6709\u52B9\u30D7\u30E9\u30B0\u30A4\u30F3=[` + this.getPluginList().join(', ') + ']', node);\n }\n // \u3069\u306E\u95A2\u6570\u3092\u547C\u3073\u51FA\u3059\u306E\u304B\u95A2\u6570\u3092\u7279\u5B9A\u3059\u308B\n let func;\n if (res.i === 0) { // plugin function\n func = this.__self.getFunc(funcName);\n if (!func) {\n throw new Error(`[System Error] \u95A2\u6570\u300C${funcName}\u300DNakoCompiler.nakoFuncList \u306E\u4E0D\u6574\u5408\u304C\u3042\u308A\u307E\u3059\u3002`);\n }\n if (func.type !== 'func') {\n throw NakoSyntaxError.fromNode(`\u300E${funcName}\u300F\u306F\u95A2\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002`, node);\n }\n }\n else {\n func = this.nakoFuncList.get(funcName);\n // \u7121\u540D\u95A2\u6570\u306E\u53EF\u80FD\u6027\n if (func === undefined) {\n func = { return_none: false };\n }\n }\n // \u95A2\u6570\u306E\u53C2\u7167\u6E21\u3057\u304B\uFF1F\n if (node.type === 'func_pointer') {\n return res.js;\n }\n // \u95A2\u6570\u306E\u53C2\u7167\u6E21\u3057\u3067\u306A\u3044\u5834\u5408\n // \u95A2\u6570\u5B9A\u7FA9\u3088\u308A\u52A9\u8A5E\u3092\u4E00\u3064\u305A\u3064\u8ABF\u3079\u308B\n const argsInfo = this.convFuncGetArgsCalcType(funcName, func, node);\n const args = argsInfo[0];\n const argsOpts = argsInfo[1];\n // function\n this.usedFuncSet.add(funcName);\n if (funcName === '\u540D\u524D\u7A7A\u9593\u8A2D\u5B9A') {\n return `\\n// --- \u540D\u524D\u7A7A\u9593(${args[0]}) ---\\n__self.__varslist[0].get('\u540D\u524D\u7A7A\u9593\u8A2D\u5B9A')(${args[0]}, __self);__self.__modName=${args[0]};\\n`;\n }\n else if (funcName === '\u30D7\u30E9\u30B0\u30A4\u30F3\u540D\u8A2D\u5B9A') {\n return `\\n__self.__varslist[0].get('\u30D7\u30E9\u30B0\u30A4\u30F3\u540D\u8A2D\u5B9A')(${args[0]}, __self);\\n`;\n }\n // \u95A2\u6570\u547C\u3073\u51FA\u3057\u3067\u3001\u5F15\u6570\u306E\u672B\u5C3E\u306Bthis\u3092\u8FFD\u52A0\u3059\u308B-\u30B7\u30B9\u30C6\u30E0\u60C5\u5831\u3092\u53C2\u7167\u3059\u308B\u305F\u3081\n args.push('__self');\n let funcDef = 'function';\n let funcBegin = '';\n let funcEnd = '';\n // setter?\n if (node.setter) {\n funcBegin += ';__self.isSetter = true;\\n';\n funcEnd += ';__self.isSetter = false;\\n';\n }\n // \u95A2\u6570\u5185 (__varslist.length > 3) \u304B\u3089\u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570 (res.i === 0) \u3092\u547C\u3073\u51FA\u3059\u3068\u304D\u3001 \u305D\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570\u304Cpure\u3067\u306A\u3051\u308C\u3070\n // \u547C\u3073\u51FA\u3057\u306E\u76F4\u524D\u306B\u5168\u3066\u306E\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092this.__locals\u306B\u5165\u308C\u308B\u3002\n if (res.i === 0 && this.varslistSet.length > 3 && func.pure !== true && this.speedMode.forcePure === 0) { // undefined\u306Ffalse\u3068\u307F\u306A\u3059\n // \u5C55\u958B\u3055\u308C\u305F\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306E\u5217\u6319\n const localVars = [];\n for (const name of Array.from(this.varsSet.names.values())) {\n if (NakoGen.isValidIdentifier(name)) {\n localVars.push({ str: JSON.stringify(name), js: this.varname_get(name) });\n }\n }\n // --- \u5B9F\u884C\u524D ---\n // \u5168\u3066\u306E\u5C55\u958B\u3055\u308C\u3066\u3044\u306A\u3044\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092 __self.__locals \u306B\u30B3\u30D4\u30FC\u3059\u308B\n funcBegin += '__self.__locals = __vars;\\n';\n // \u5168\u3066\u306E\u5C55\u958B\u3055\u308C\u305F\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092 __self.__locals \u306B\u4FDD\u5B58\u3059\u308B\n if (localVars.length > 0) {\n funcBegin += '/* \u5168\u3066\u306E\u5C55\u958B\u3055\u308C\u305F\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092 __self.__locals \u306B\u4FDD\u5B58 */\\n';\n for (const v of localVars) {\n funcBegin += `__self.__locals.set(${v.str}, ${v.js});\\n`;\n }\n }\n // --- \u5B9F\u884C\u5F8C ---\n // \u5168\u3066\u306E\u5C55\u958B\u3055\u308C\u305F\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092 __self.__locals \u304B\u3089\u53D7\u3051\u53D6\u308B\n // \u300C\u305D\u308C\u300D\u306F\u95A2\u6570\u306E\u5B9F\u884C\u7D50\u679C\u3092\u53D7\u3051\u53D6\u308B\u305F\u3081\u306B\u4F7F\u3046\u305F\u3081\u30B9\u30AD\u30C3\u30D7\u3002\n if (localVars.length > 0) {\n funcEnd += '/* \u5168\u3066\u306E\u5C55\u958B\u3055\u308C\u305F\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092 __self.__locals \u304B\u3089\u53D7\u3051\u53D6\u308B */\\n';\n for (const v of localVars) {\n if (v.js !== '\u305D\u308C') {\n funcEnd += `__self.__varslist[2].set(${v.str}, __self.__locals[${v.str}]);\\n`;\n }\n }\n }\n }\n // \u5909\u6570\u300C\u305D\u308C\u300D\u304C\u88DC\u5B8C\u3055\u308C\u3066\u3044\u308B\u3053\u3068\u3092\u30D2\u30F3\u30C8\u3068\u3057\u3066\u51FA\u529B\n if (argsOpts.sore) {\n funcBegin += '/*[sore]*/';\n }\n const indent = (text, n) => {\n let result = '';\n for (const line of text.split('\\n')) {\n if (line !== '') {\n result += ' '.repeat(n) + line + '\\n';\n }\n }\n return result;\n };\n // \u5F15\u6570\u30C1\u30A7\u30C3\u30AF\u306E\u4F8B\u5916 #1260\n const noCheckFuncs = { 'TYPEOF': true, '\u5909\u6570\u578B\u78BA\u8A8D': true };\n // \u95A2\u6570\u547C\u3073\u51FA\u3057\u30B3\u30FC\u30C9\u306E\u69CB\u7BC9\n let argsCode;\n if ((!this.warnUndefinedCallingUserFunc && res.i !== 0) || (!this.warnUndefinedCallingSystemFunc && res.i === 0)) {\n argsCode = args.join(',');\n }\n else {\n const argsA = [];\n args.forEach((arg) => {\n if (arg === '__self' || noCheckFuncs[funcName] === true) { // #1260\n argsA.push(`${arg}`);\n }\n else {\n // \u5F15\u6570\u306Eundefined\u30C1\u30A7\u30C3\u30AF\u306E\u30B3\u30FC\u30C9\u3092\u5165\u308C\u308B\n const msg = (res.i === 0) ? '\u547D\u4EE4\u300E$0\u300F\u306E\u5F15\u6570\u306Bundefined\u3092\u6E21\u3057\u3066\u3044\u307E\u3059\u3002' : '\u30E6\u30FC\u30B6\u547D\u4EE4\u300E$0\u300F\u306E\u5F15\u6570\u306Bundefined\u3092\u6E21\u3057\u3066\u3044\u307E\u3059\u3002';\n const poolIndex = this.addConstPool(msg, [funcName], node.file, node.line);\n // arg\u304C\u7A7A\u306B\u306A\u308B\u5BFE\u7B56 #1315\n const argStr = (arg === '') ? '\"\"' : arg;\n argsA.push(`(__self.chk(${argStr}, ${poolIndex}))`);\n }\n });\n argsCode = argsA.join(', ');\n }\n let funcCall = `${res.js}(${argsCode})`;\n if (func.asyncFn) {\n funcDef = `async ${funcDef}`;\n funcCall = `await ${funcCall}`;\n this.numAsyncFn++;\n this.usedAsyncFn = true;\n }\n if (res.i === 0 && this.performanceMonitor.systemFunctionBody !== 0) {\n let key = funcName;\n if (!key) {\n if (typeof this.performanceMonitor.mumeiId === 'undefined') {\n this.performanceMonitor.mumeiId = 0;\n }\n this.performanceMonitor.mumeiId++;\n key = `anous_${this.performanceMonitor.mumeiId}`;\n }\n funcCall = `(${funcDef} (key, type) {\\n` +\n 'const sbf_start = performance.now() * 1000;\\n' +\n 'try {\\n' +\n 'return ' + funcCall + ';\\n' +\n '} finally {\\n' +\n 'const sbl_time = performance.now() * 1000 - sbf_start;\\n' +\n 'if (!__self.__performance_monitor) {\\n' +\n '__self.__performance_monitor={};\\n' +\n '__self.__performance_monitor[key] = { called:1, totel_usec: sbl_time, min_usec: sbl_time, max_usec: sbl_time, type: type };\\n' +\n '} else if (!__self.__performance_monitor[key]) {\\n' +\n '__self.__performance_monitor[key] = { called:1, totel_usec: sbl_time, min_usec: sbl_time, max_usec: sbl_time, type: type };\\n' +\n '} else {\\n' +\n '__self.__performance_monitor[key].called++;\\n' +\n '__self.__performance_monitor[key].totel_usec+=sbl_time;\\n' +\n 'if(__self.__performance_monitor[key].min_usec>sbl_time){__self.__performance_monitor[key].min_usec=sbl_time;}\\n' +\n 'if(__self.__performance_monitor[key].max_usec<sbl_time){__self.__performance_monitor[key].max_usec=sbl_time;}\\n' +\n `}}})('${funcName}_body', 'sysbody')\\n`;\n }\n let code = '';\n if (func.return_none) {\n // ------------------------------------\n // \u623B\u308A\u5024\u306E\u306A\u3044\u95A2\u6570\u306E\u5834\u5408\n // ------------------------------------\n if (funcEnd === '') {\n code = `/*\u623B\u5024\u306E\u306A\u3044\u95A2\u6570\u547C\u51FA1*/${funcBegin}${funcCall};\\n`;\n }\n else {\n code = `/*\u623B\u5024\u306E\u306A\u3044\u95A2\u6570\u547C\u51FA2*/${funcBegin}try {\\n${indent(funcCall, 1)};\\n} finally {\\n${indent(funcEnd, 1)}}\\n`;\n }\n }\n else {\n // ------------------------------------\n // \u623B\u308A\u5024\u306E\u3042\u308B\u95A2\u6570\u306E\u5834\u5408\n // ------------------------------------\n let sorePrefex = '';\n let sorePostfix = '';\n if (this.speedMode.invalidSore === 0) {\n // \u95A2\u6570\u306E\u623B\u308A\u5024\u3092\u8A18\u9332\n sorePrefex = '__self.__setSore(';\n sorePostfix = ')';\n }\n if (funcBegin === '' && funcEnd === '') {\n code = `${sorePrefex}${funcCall}${sorePostfix}`;\n }\n else {\n if (funcEnd === '') {\n const funcBody = `${sorePrefex}${funcCall}${sorePostfix}`;\n const funcObj = `${funcDef}(){ return ${funcBody} }`;\n const funcCallThis = `(${funcObj}).call(this)`;\n code = `/* funcCallThis1 */${funcCallThis}`;\n }\n else { // \u3064\u307E\u308A\u3001pure=false\u306E\u5834\u5408\n code = `/* funcCallThis2 */(${funcDef}(){\\n${indent(`${funcBegin}try {\\n${indent(`return ${sorePrefex}${funcCall}${sorePostfix};`, 1)}\\n} finally {\\n${indent(funcEnd, 1)}}`, 1)}}).call(this)`;\n }\n }\n // ...\u3057\u3066\n if (node.josi === '\u3057\u3066' || (node.josi === '' && !isExpression)) {\n code += ';\\n';\n }\n }\n if (res.i === 0 && this.performanceMonitor.systemFunction !== 0) {\n code = '(function (key, type) {\\n' +\n 'const sf_start = performance.now() * 1000;\\n' +\n 'try {\\n' +\n 'return ' + code + ';\\n' +\n '} finally {\\n' +\n 'const sl_time = performance.now() * 1000 - sf_start;\\n' +\n 'if (!__self.__performance_monitor) {\\n' +\n '__self.__performance_monitor={};\\n' +\n '__self.__performance_monitor[key] = { called:1, totel_usec: sl_time, min_usec: sl_time, max_usec: sl_time, type: type };\\n' +\n '} else if (!__self.__performance_monitor[key]) {\\n' +\n '__self.__performance_monitor[key] = { called:1, totel_usec: sl_time, min_usec: sl_time, max_usec: sl_time, type: type };\\n' +\n '} else {\\n' +\n '__self.__performance_monitor[key].called++;\\n' +\n '__self.__performance_monitor[key].totel_usec+=sl_time;\\n' +\n 'if(__self.__performance_monitor[key].min_usec>sl_time){__self.__performance_monitor[key].min_usec=sl_time;}\\n' +\n 'if(__self.__performance_monitor[key].max_usec<sl_time){__self.__performance_monitor[key].max_usec=sl_time;}\\n' +\n `}}})('${funcName}_sys', 'system')\\n`;\n }\n return code;\n }\n convRenbun(node) {\n const right = this._convGen(node.right, true);\n const left = this._convGen(node.left, false);\n this.numAsyncFn++;\n this.usedAsyncFn = true;\n return `/*\u9023\u6587*/await (async function(){ ${left}; return ${right} }).call(this)`;\n }\n convOp(node) {\n // \u30C8\u30FC\u30AF\u30F3\u540D\u304B\u3089JS\u6F14\u7B97\u5B50\u3078\u306E\u5909\u63DB - \u5358\u7D14\u306A\u5909\u63DB\u304C\u53EF\u80FD\u306A\u3082\u306E\u3092\u3053\u3053\u3067\u5B9A\u7FA9\n const OP_TBL = {\n '&': '+\"\"+',\n eq: '==',\n noteq: '!=',\n '===': '===',\n '!==': '!==',\n gt: '>',\n lt: '<',\n gteq: '>=',\n lteq: '<=',\n and: '&&',\n or: '||',\n shift_l: '<<',\n shift_r: '>>',\n shift_r0: '>>>',\n '\u00F7': '/'\n };\n let op = node.operator || ''; // \u6F14\u7B97\u5B50\n let right = this._convGen(node.right, true);\n let left = this._convGen(node.left, true);\n if (op === '+' && this.speedMode.implicitTypeCasting === 0) {\n if (node.left && node.left.type !== 'number' && node.left.type !== 'bigint') {\n left = `self.__parseFloatOrBigint(${left})`;\n }\n if (node.right && node.right.type !== 'number' && node.right.type !== 'bigint') {\n right = `self.__parseFloatOrBigint(${right})`;\n }\n }\n // \u968E\u4E57\n if (op === '^' || op === '**') {\n return `((${left}) ** (${right}))`;\n }\n // \u6574\u6570\u306E\u5272\u308A\u7B97 #1152\n if (op === '\u00F7\u00F7') {\n return `(Math.floor(${left} / ${right}))`;\n }\n // \u4E00\u822C\u7684\u306A\u30AA\u30DA\u30EC\u30FC\u30BF\u306B\u5909\u63DB\n if (OP_TBL[op]) {\n op = OP_TBL[op];\n }\n //\n return `(${left} ${op} ${right})`;\n }\n convInc(node) {\n // id\u3092\u5F97\u308B\n const id = this.loopId++;\n const valueVar = `$nako_v${id}`;\n // \u3082\u3057\u5024\u304C\u7701\u7565\u3055\u308C\u3066\u3044\u305F\u3089\u3001\u5909\u6570\u300C\u305D\u308C\u300D\u306B\u4EE3\u5165\u3059\u308B\n let incValue = null;\n if (this.speedMode.invalidSore === 0) {\n incValue = this.varname_get('\u305D\u308C');\n }\n if (node.value) {\n incValue = this._convGen(node.value, true);\n }\n if (incValue == null) {\n throw NakoSyntaxError.fromNode('\u52A0\u7B97\u3059\u308B\u5148\u306E\u5909\u6570\u540D\u304C\u3042\u308A\u307E\u305B\u3093\u3002', node);\n }\n // \u914D\u5217\u3078\u306E\u4EE3\u5165\u304B(core#86)\n let code = '';\n let varGetter = '';\n let varSetter = '';\n let varInitter = '';\n const nodeName = node.name;\n if (nodeName.type === '\u914D\u5217\u53C2\u7167') {\n varGetter = this.convRefArray(nodeName);\n varSetter = `${varGetter} = ${valueVar}`;\n varInitter = `${varGetter} = 0`;\n }\n else {\n // \u5909\u6570\u540D\n const name = nodeName.value;\n let res = this.findVar(name, valueVar);\n if (res === null) {\n this.varsSet.names.add(name);\n res = this.findVar(name, valueVar);\n if (!res) {\n throw new Error('\u300E\u5897\u300F\u307E\u305F\u306F\u300E\u6E1B\u300F\u3067\u5909\u6570\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002');\n }\n }\n varGetter = res.js;\n varSetter = res.js_set;\n res = this.findVar(name, '0');\n if (res !== null) {\n varInitter = res.js_set;\n }\n }\n // \u81EA\u52D5\u521D\u671F\u5316\u3059\u308B\u304B\n code += '\\n/*[convInc]*/\\n';\n code += this.convLineno(node, false) + '\\n';\n code += `let ${valueVar} = ${varGetter}\\n`;\n code += `if (typeof ${valueVar} === 'undefined') { ${varInitter}; }\\n`;\n code += `${valueVar} = ${varGetter} + ${incValue};\\n`;\n code += `${varSetter}\\n`;\n code += '/*[/convInc]*/\\n';\n return code;\n }\n convLet(node) {\n // \u3082\u3057\u5024\u304C\u7701\u7565\u3055\u308C\u3066\u3044\u305F\u3089\u3001\u5909\u6570\u300C\u305D\u308C\u300D\u306B\u4EE3\u5165\u3059\u308B\n let value = null;\n if (this.speedMode.invalidSore === 0) {\n value = this.varname_get('\u305D\u308C');\n }\n // \u5024\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u751F\u6210\n if (node.value) {\n const ast = node.value;\n if (ast.type === 'func' && ast.name !== undefined) {\n const func = this.__self.getFunc(ast.name);\n if (func && func.return_none) {\n throw NakoSyntaxError.fromNode(`\u95A2\u6570\u300E${ast.name}\u300F\u306F\u623B\u308A\u5024\u304C\u306A\u3044\u306E\u3067\u7D50\u679C\u3092\u4EE3\u5165\u3067\u304D\u307E\u305B\u3093\u3002`, node);\n }\n }\n value = this._convGen(node.value, true);\n }\n // \u623B\u308A\u5024\u306E\u691C\u8A3C\n if (value == null) {\n throw NakoSyntaxError.fromNode('\u4EE3\u5165\u3059\u308B\u5148\u306E\u5909\u6570\u540D\u304C\u3042\u308A\u307E\u305B\u3093\u3002', node);\n }\n // \u5909\u6570\u540D\n const name = node.name.value;\n const res = this.findVar(name, value);\n let code = '';\n if (res === null) {\n this.varsSet.names.add(name);\n code = `${this.varname_set(name, value)};`;\n }\n else {\n // \u5B9A\u6570\u306A\u3089\u30A8\u30E9\u30FC\u3092\u51FA\u3059\n if (this.varslistSet[res.i].readonly.has(name)) {\n throw NakoSyntaxError.fromNode(`\u5B9A\u6570\u300E${name}\u300F\u306F\u65E2\u306B\u5B9A\u7FA9\u6E08\u307F\u306A\u306E\u3067\u3001\u5024\u3092\u4EE3\u5165\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002`, node);\n }\n code = `${res.js_set};`;\n }\n return ';' + this.convLineno(node, false) + code + '\\n';\n }\n convDefLocalVar(node) {\n const value = (node.value === null) ? 'null' : this._convGen(node.value, true);\n const name = node.name.value;\n const vtype = node.vartype; // \u5909\u6570 or \u5B9A\u6570\n // \u4E8C\u91CD\u5B9A\u7FA9\uFF1F\n if (this.varsSet.names.has(name)) {\n throw NakoSyntaxError.fromNode(`${vtype}\u300E${name}\u300F\u306E\u4E8C\u91CD\u5B9A\u7FA9\u306F\u3067\u304D\u307E\u305B\u3093\u3002`, node);\n }\n //\n this.varsSet.names.add(name);\n if (vtype === '\u5B9A\u6570') {\n this.varsSet.readonly.add(name);\n }\n const code = `${this.varname_set(name, value)};\\n`;\n return this.convLineno(node, false) + code;\n }\n // #563 \u8907\u6570\u5909\u6570\u3078\u306E\u4EE3\u5165\n convDefLocalVarlist(node) {\n let code = '';\n const vtype = node.vartype; // \u5909\u6570 or \u5B9A\u6570\n const value = (node.value === null) ? 'null' : this._convGen(node.value, true);\n const id = this.loopId++;\n const varI = `$nako_i${id}`;\n code += `let ${varI} = ${value}\\n`;\n code += `if (!(${varI} instanceof Array)) { ${varI}=[${varI}] }\\n`;\n const names = (node.names) ? node.names : [];\n for (let i = 0; i < names.length; i++) {\n const nameObj = names[i];\n const name = nameObj.value;\n // \u4E8C\u91CD\u5B9A\u7FA9\uFF1F\n if (this.varsSet.names.has(name)) {\n // \u8907\u6570\u5909\u6570\u6587\u3067\u306F\u3001\u4E8C\u91CD\u5B9A\u7FA9\u3082\u8A31\u5BB9\u3059\u308B #1027\n // throw NakoSyntaxError.fromNode(`${vtype}\u300E${name}\u300F\u306E\u4E8C\u91CD\u5B9A\u7FA9\u306F\u3067\u304D\u307E\u305B\u3093\u3002`, node)\n }\n this.varsSet.names.add(name);\n if (vtype === '\u5B9A\u6570') {\n this.varsSet.readonly.add(name);\n }\n code += this.varname_set(name, `${varI}[${i}]`) + ';\\n';\n }\n return this.convLineno(node, false) +\n '/*[convDefLocalVarlist]*/\\n' +\n code +\n '/*[/convDefLocalVarlist]*/\\n';\n }\n convString(node) {\n let value = '' + node.value;\n const mode = node.mode;\n value = value.replace(/\\\\/g, '\\\\\\\\');\n value = value.replace(/\"/g, '\\\\\"');\n value = value.replace(/\\r/g, '\\\\r');\n value = value.replace(/\\n/g, '\\\\n');\n if (mode === 'ex') {\n const rf = (a, name) => {\n return '\"+' + this.genVar(name, node) + '+\"';\n };\n value = value.replace(/\\{(.+?)\\}/g, rf);\n value = value.replace(/\uFF5B(.+?)\uFF5D/g, rf);\n }\n return '\"' + value + '\"';\n }\n convTryExcept(node) {\n const block = this._convGen(node.block, false);\n const errBlock = this._convGen(node.errBlock, false);\n return this.convLineno(node, false) +\n `try {\\n${block}\\n} catch (e) {\\n` +\n ' __self.__setSysVar(\"\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\", e.message);\\n' +\n ';\\n' +\n `${errBlock}}\\n`;\n }\n getUsedFuncSet() {\n return this.usedFuncSet;\n }\n getPluginInitCode() {\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u521D\u671F\u5316\u95A2\u6570\u3092\u5B9F\u884C\u3059\u308B\n let code = '';\n let pluginCode = '';\n for (const name in this.__self.__module) {\n const initkey = `!${name}:\u521D\u671F\u5316`;\n if (this.varslistSet[0].names.has(initkey)) {\n this.usedFuncSet.add(`!${name}:\u521D\u671F\u5316`);\n pluginCode += `__v0.get('!${name}:\u521D\u671F\u5316')(__self);\\n`;\n }\n }\n if (pluginCode !== '') {\n code += '__v0.set(\\'__line\\', \\'l0:\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u521D\u671F\u5316\\');\\n' + pluginCode;\n }\n return code;\n }\n}\n/** template of standalone js code */\nconst STANDALONE_CODE = `\n// === generated by nadesiko3 v__version__(core:__coreVersion__) ===\n// -----------------------------------------------------------------\n// <nadesiko3standalone>\n// -----------------------------------------------------------------\n// --- import\nimport path from 'path'\nimport { NakoRuntimeError } from './nako3runtime/nako_errors.mjs'\n__codeImportFiles__\n// --- init global self\nconst self = {\n newVariables: () => {\n const map = new Map()\n return map\n }\n}\nself.coreVersion = '__coreVersion__'\nself.version = '__version__'\nself.logger = {\n error: (message) => { console.error(message) },\n warn: (message) => { console.warn(message) },\n send: (level, message) => { console.log(message) },\n runtimeError: (message, lineInfo) => { console.error(message, lineInfo) }\n};\nself.__varslist = [self.newVariables(), self.newVariables(), self.newVariables()]\nself.__v0 = self.__varslist[0]\nself.initFuncList = []\nself.clearFuncList = []\n// --- jsInit ---\n__jsInit__\n// --- Copy module functions ---\nfor (const mod of __importNames__) {\n for (const funcName in mod) {\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u521D\u671F\u5316\u3068\u30AF\u30EA\u30A2\u95A2\u6570\u3092\u767B\u9332\n if (funcName === '\u521D\u671F\u5316') {\n __self.initFuncList.push(mod[funcName].fn)\n continue\n }\n if (funcName === '!\u30AF\u30EA\u30A2') {\n __self.clearFuncList.push(mod[funcName].fn)\n continue\n }\n // \u95A2\u6570\u3084\u5B9A\u6570\u3092\u767B\u9332\n const f = mod[funcName]\n if (f.type === 'func') { // \u95A2\u6570\n __self.__varslist[0].set(funcName, f.fn)\n } else { // \u5B9A\u6570\n __self.__varslist[0].set(funcName, f.value)\n }\n }\n}\n__self.__vars = __self.__varslist[2];\n__self.__module = {};\n__self.__locals = __self.newVariables();\n__self.__genMode = 'sync';\n// \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u521D\u671F\u5316\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\n__self.initFuncList.map(f => f(self))\n// standalone\n__self.__v0.set('__standalone', true)\n// -----------------------------------------------------------------\ntry {\n try {\n// -----------------------------------------------------------------\n// <prepareMainCode>\n__codeStandalone__\n// </prepareMainCode>\n// -----------------------------------------------------------------\n// <mainCode>\n// -----------------------------------------------------------------\n__codeJS__\n// -----------------------------------------------------------------\n// </mainCode>\n// -----------------------------------------------------------------\n } catch (err) {\n __self.logger.error(err);\n throw err;\n }\n} finally {\n // standaloneCode\u3067\u306F\u3001\u5373\u6642\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30AF\u30EA\u30A2\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\n __self.clearFuncList.map(f => f(__self))\n}\n// -----------------------------------------------------------------\n// </nadesiko3standalone>\n// -----------------------------------------------------------------\n`;\n/**\n * @param com\n * @param ast\n * @param opt\n */\nexport function generateJS(com, ast, opt) {\n // NakoGen\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u4F5C\u6210\n const gen = new NakoGen(com);\n // \u203B [\u95A2\u6570\u5B9A\u7FA9\u306B\u95A2\u3059\u308B\u30B3\u30FC\u30C9\u751F\u6210\u306E\u30D2\u30F3\u30C8]\n // \u203B \u95A2\u6570\u306E\u540D\u524D\u3060\u3051\u3092(1)\u3067\u767B\u9332\u3057\u3066\u3001(2)\u3067\u5B9F\u969B\u306B\u95A2\u6570\u306E\u30B3\u30FC\u30C9\u3092\u751F\u6210\u3059\u308B\u3002\n // \u203B \u305F\u3060\u3057(2)\u3067\u306F\u751F\u6210\u3059\u308B\u3060\u3051\u306A\u306E\u3067\u3001(3)\u3067\u30D7\u30ED\u30B0\u30E9\u30E0\u5192\u982D\u306B\u95A2\u6570\u5B9A\u7FA9\u306E\u30B3\u30FC\u30C9\u3092\u8A18\u8FF0\u3059\u308B\u3002\n // \u3053\u306E\u9806\u756A\u3092\u5909\u3048\u308B\u3053\u3068\u306F\u3067\u304D\u306A\u3044 (\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u304C\u8A8D\u8B58\u3067\u304D\u306A\u304F\u306A\u3063\u305F\u308A\u3001\u95A2\u6570\u5B9A\u7FA9\u306E\u30BF\u30A4\u30DF\u30F3\u30B0\u304C\u305A\u308C\u308B)\n // (1) \u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u95A2\u6570\u3092\u30B7\u30B9\u30C6\u30E0\u306B\u767B\u9332\u3059\u308B\n gen.registerFunction(ast);\n // (2) JS\u30B3\u30FC\u30C9\u3092\u751F\u6210\u3059\u308B\n let js = trim(cleanGeneratedCode(gen.convGen(ast, opt), 1));\n // (3) JS\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3059\u308B\u305F\u3081\u306E\u4E8B\u524D\u30D8\u30C3\u30C0\u90E8\u5206\u306E\u751F\u6210\n const jsInit = gen.getDefFuncCode(com, opt);\n // \u30E9\u30F3\u30C0\u30E0\u306A\u95A2\u6570\u540D\u3092\u751F\u6210\n const funcID = '' + (new Date()).getTime() + '_' + Math.floor(0xFFFFFFFF * Math.random());\n // \u30C6\u30B9\u30C8\u306E\u5B9F\u884C\n if (js && opt.isTest) {\n js += '\\n__self._runTests(__tests);\\n';\n }\n // async method\n if (gen.numAsyncFn > 0 || gen.debugOption.useDebug) {\n const asyncMain = '__eval_nako3async_' + funcID + '__';\n js = `\n// ------------------------------------------------------------------\n// <nadesiko3::gen::async id=\"${funcID}\" times=\"${gen.numAsyncFn}\">\n// ------------------------------------------------------------------\nasync function ${asyncMain}(__self) {\n // --- code_begin ---\n ${js}\n // --- code_end ---\n // __\u51E6\u7406\u672B\u5C3E__ // \u2190 \u30C6\u30B9\u30C8\u306A\u3069\u3067\u5FC5\u8981\u306A\u306E\u3067\u6D88\u3055\u306A\u3044\n} // end of ${asyncMain}\n// ------------------------------------------------------------------\n// call ${asyncMain}\n(async () => {\n if (__self.__v0.get('__standalone')) {\n await ${asyncMain}(self);\n } else {\n ${asyncMain}.call(self, self)\n .then(() => { /* __async_ok__ */ })\n .catch(err => {\n if (err.message === '__\u7D42\u308F\u308B__') { return }\n __self.numFailures++\n // send errors to logger\n let rterr = __self.logger.runtimeError(err, __self.__v0.get('__line'))\n __self.logger.error(rterr)\n })\n }\n})();\n// ------------------------------------------------------------------\n// </nadesiko3::gen::async id=\"${funcID}\">\n// ------------------------------------------------------------------\n`;\n }\n else {\n const syncMain = '__eval_nako3sync_' + funcID + '__';\n js = `\n// ------------------------------------------------------------------\n// <nadesiko3::gen::syncMode>\n// ------------------------------------------------------------------\nfunction ${syncMain}(__self) {\ntry {\n ${js}\n // __\u51E6\u7406\u672B\u5C3E__ // \u2190 \u30C6\u30B9\u30C8\u306A\u3069\u3067\u5FC5\u8981\u306A\u306E\u3067\u6D88\u3055\u306A\u3044\n} catch (err) {\n if (err.message === '__\u7D42\u308F\u308B__') { return }\n __self.numFailures++\n throw __self.logger.runtimeError(err, __self.__v0.get('__line'))\n}\n} // end of ${syncMain}\n${syncMain}(__self)\n// ------------------------------------------------------------------\n// </nadesiko3::gen::syncMode>\n// ------------------------------------------------------------------\n`;\n }\n // --- \u751F\u6210\u3057\u305F\u30B3\u30FC\u30C9\u306E\u7C21\u5358\u306A\u6574\u5F62 ---\n js = cleanGeneratedCode(js);\n // \u30C7\u30D0\u30C3\u30B0\u30E1\u30C3\u30BB\u30FC\u30B8\n com.getLogger().trace('--- generate ---\\n' + js);\n let codeImportFiles = '';\n const importNames = [];\n for (const f of opt.importFiles) {\n if (f === 'nako_errors.mjs') {\n continue;\n }\n const ff = 'nako3runtime_' + f.replace(/\\.(js|mjs)$/, '').replace(/[^a-zA-Z0-9_]/g, '_');\n importNames.push(ff);\n codeImportFiles += `import ${ff} from './nako3runtime/${f}'\\n`;\n }\n // ---\n const initCode = gen.getPluginInitCode();\n const runtimeEnvCode = `\n// <runtimeEnvCode>\nconst self = this\n${opt.codeEnv}\n${jsInit}\n${initCode}\n${js}\n// </runtimeEnvCode>\n`;\n return {\n // \u306A\u3067\u3057\u3053\u306E\u5B9F\u884C\u74B0\u5883\u3042\u308A\u306E\u5834\u5408(this\u304C\u6709\u52B9)\n runtimeEnv: runtimeEnvCode,\n // JavaScript\u5358\u4F53\u3067\u52D5\u304B\u3059\u5834\u5408\n standalone: replaceTemplateCode(STANDALONE_CODE, {\n codeImportFiles,\n 'coreVersion': com.coreVersion,\n 'version': com.version,\n 'importNames': ('[' + importNames.join(', ') + ']'),\n 'codeStandalone': opt.codeStandalone,\n 'codeJS': js,\n jsInit\n }),\n // \u30B3\u30FC\u30C9\u751F\u6210\u306B\u4F7F\u3063\u305FNakoGen\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\n gen\n };\n}\n// template\nfunction replaceTemplateCode(template, values) {\n for (const key in values) {\n const pat = `__${key}__`;\n const val = values[key];\n template = template.split(pat).join(val);\n }\n return template;\n}\n// clean generated code\nfunction cleanGeneratedCode(code, indent = 0) {\n // \u7121\u610F\u5473\u306A\u6539\u884C\u3084\u30BB\u30DF\u30B3\u30ED\u30F3\u3092\u524A\u9664\n code = code.replace(/;{2,}/g, ';');\n code = code.replace(/\\n{2,}/g, '\\n');\n let spc = '';\n for (let i = 0; i < indent; i++) {\n spc += ' ';\n }\n // \u884C\u982D\u306E\";\"\u3092\u524A\u9664\n const result = [];\n const lines = code.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n line = line.replace(/^(\\s*);/, '$1');\n if (trim(line) === '') {\n continue;\n }\n result.push(spc + line);\n }\n code = result.join('\\n');\n return code;\n}\n/**\n * \u524D\u5F8C\u306E\u7A7A\u767D\u3092\u524A\u9664\u3059\u308B\n * @param str \u5BFE\u8C61\u6587\u5B57\u5217\n * @returns \u30C8\u30EA\u30E0\u3057\u305F\u6587\u5B57\u5217\n */\nfunction trim(str) {\n str = String(str);\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n", "/**\n * \u3088\u304F\u4F7F\u3046\u51E6\u7406\u3092\u307E\u3068\u3081\u305F\u3082\u306E\n */\nimport { NewEmptyToken } from './nako_types.mjs';\n/**\n * \u30C8\u30FC\u30AF\u30F3\u306E\u5185\u5BB9\u3092\u30C7\u30D0\u30C3\u30B0\u51FA\u529B\u3059\u308B\u95A2\u6570\n * @param tokens \u30C8\u30FC\u30AF\u30F3\u306E\u4E00\u89A7\n * @returns \u6587\u5B57\u5217\n */\nexport function debugTokens(tokens) {\n const result = [];\n for (let i = 0; i < tokens.length; i++) {\n const t = tokens[i];\n const ftype = t.type;\n const fvalue = t.value;\n let s = `[${ftype}:${fvalue}]`;\n if (ftype === fvalue) {\n s = ftype;\n }\n if (ftype === 'comma') {\n s = ',';\n }\n if (ftype === 'string') {\n s = `\"${fvalue}\"`;\n }\n if (ftype === 'number') {\n s = `(${fvalue})`;\n }\n if (ftype === 'word') {\n s = `[word:${fvalue}]`;\n }\n if (!result[t.line]) {\n result[t.line] = makeIndent(t.indent);\n }\n result[t.line] += s + t.josi + '|';\n }\n return result.join('\\n');\n}\nexport function makeIndent(n) {\n let s = '';\n for (let i = 0; i < n; i++) {\n s += ' ';\n }\n return s;\n}\nlet lastTokenInfo = NewEmptyToken();\nexport function newToken(type, value, templateToken = undefined) {\n if (templateToken) {\n lastTokenInfo = templateToken;\n }\n const t = NewEmptyToken(type, value, lastTokenInfo.indent, lastTokenInfo.line, lastTokenInfo.file);\n return t;\n}\n", "/** \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u3092\u51E6\u7406\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB */\nimport { NewEmptyToken } from './nako_types.mjs';\nimport { NakoIndentError } from '../src/nako_errors.mjs';\nimport { debugTokens, newToken } from './nako_tools.mjs';\nconst IS_DEBUG = false;\nfunction isSkipWord(t) {\n if (t.type === '\u9055\u3048\u3070') {\n return true;\n }\n if (t.type === 'word' && t.value === '\u30A8\u30E9\u30FC' && t.josi === '\u306A\u3089\u3070') {\n return true;\n }\n return false;\n}\n/** \u30A4\u30F3\u30E9\u30A4\u30F3\u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587 --- \u672B\u5C3E\u306E\":\"\u3092\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u8003\u616E\u3057\u3066\"\u3053\u3053\u307E\u3067\"\u3092\u633F\u5165 (#1215) */\nexport function convertInlineIndent(tokens) {\n //\n // 0:\u3082\u3057\u3001A=0\u306A\u3089\u3070:\n // 2: \u3082\u3057\u3001B=0\u306A\u3089\u3070:\n // 4: \u300CA=0,B=0\u300D\u3092\u8868\u793A\u3002\n // 2: \u9055\u3048\u3070:\n // 4: \u300CA=0,B!=0\u300D\u3092\u8868\u793A\u3002\n // 5:\u9055\u3048\u3070:\n // 6: \u300CA!=0\u300D\u3092\u8868\u793A\u3002\n //\n const lines = splitTokens(tokens, 'eol');\n const blockIndents = [];\n let checkICount = -1;\n let jsonObjLevel = 0;\n let jsonArrayLevel = 0;\n const checkJsonSyntax = (line) => {\n // JSON\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u3042\u308B\u304B\uFF1F\n line.forEach((t) => {\n if (t.type === '{') {\n jsonObjLevel++;\n }\n if (t.type === '}') {\n jsonObjLevel--;\n }\n if (t.type === '[') {\n jsonArrayLevel++;\n }\n if (t.type === ']') {\n jsonArrayLevel--;\n }\n });\n };\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n // \u7A7A\u884C\u306F\u98DB\u3070\u3059 || \u30B3\u30E1\u30F3\u30C8\u884C\u3060\u3051\u306E\u884C\u3082\u98DB\u3070\u3059\n if (IsEmptyLine(line)) {\n continue;\n }\n const leftToken = GetLeftTokens(line);\n // JSON\u306E\u9014\u4E2D\u3067\u3042\u308C\u3070\u30D6\u30ED\u30C3\u30AF\u306E\u5909\u66F4\u306F\u884C\u308F\u306A\u3044\n if (jsonObjLevel > 0 || jsonArrayLevel > 0) {\n checkJsonSyntax(line);\n continue;\n }\n // \u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u7D42\u4E86\u3092\u78BA\u8A8D\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u304B\uFF1F\n if (checkICount >= 0) {\n const lineICount = leftToken.indent;\n while (checkICount >= lineICount) {\n const tFirst = leftToken;\n // console.log('@@', lineICount, '>>', checkICount, tFirst.type)\n if (isSkipWord(tFirst) && (checkICount === lineICount)) { // \u300C\u9055\u3048\u3070\u300D\u3084\u300C\u30A8\u30E9\u30FC\u306A\u3089\u3070\u300D\n // \u300C\u3053\u3053\u307E\u3067\u300D\u306E\u633F\u5165\u4E0D\u8981 / \u305F\u3060\u3057\u30CD\u30B9\u30C8\u3057\u305F\u969B\u306E\u300C\u9055\u3048\u3070\u300D(\u4E0A\u8A18\u306E5\u306E\u72B6\u614B\u306A\u3089\u5FC5\u8981)\n }\n else {\n // \u3053\u3053\u307E\u3067\u3092\u633F\u5165\u3059\u308B\n lines[i - 1].push(newToken('\u3053\u3053\u307E\u3067', '\u3053\u3053\u307E\u3067', tFirst));\n lines[i - 1].push(newToken('eol', '\\n', tFirst));\n }\n blockIndents.pop();\n if (blockIndents.length > 0) {\n checkICount = blockIndents[blockIndents.length - 1];\n }\n else {\n checkICount = -1;\n break;\n }\n }\n }\n // JSON\u306E\u9014\u4E2D\u3067\u3042\u308C\u3070\u30D6\u30ED\u30C3\u30AF\u306E\u5909\u66F4\u306F\u884C\u308F\u306A\u3044\n checkJsonSyntax(line);\n if (jsonObjLevel > 0 || jsonArrayLevel > 0) {\n continue;\n }\n // \u672B\u5C3E\u306E\u300C:\u300D\u3092\u30C1\u30A7\u30C3\u30AF\n const tLast = getLastTokenWithoutEOL(line);\n if (tLast.type === ':') {\n // \u672B\u5C3E\u306E\u300C:\u300D\u3092\u524A\u9664\n lines[i] = lines[i].filter(t => t !== tLast);\n checkICount = tLast.indent;\n blockIndents.push(checkICount);\n }\n }\n if (lines.length > 0 && blockIndents.length > 0) {\n // \u30C8\u30FC\u30AF\u30F3\u60C5\u5831\u3092\u5F97\u308B\u305F\u3081\u3001\u76F4\u8FD1\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u5F97\u308B\n let t = tokens[0];\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i];\n if (line.length > 0) {\n t = line[line.length - 1];\n break;\n }\n }\n // \u3053\u3053\u307E\u3067\u3092\u5DEE\u3057\u8FBC\u3080\n for (let i = 0; i < blockIndents.length; i++) {\n lines[lines.length - 1].push(newToken('\u3053\u3053\u307E\u3067', '\u3053\u3053\u307E\u3067', t));\n lines[lines.length - 1].push(newToken('eol', '\\n', t));\n }\n }\n const result = joinTokenLines(lines);\n if (IS_DEBUG) {\n console.log('###', debugTokens(result));\n }\n return result;\n}\n/** \u884C\u3054\u3068\u306B\u5206\u5272\u3057\u3066\u3044\u305F\u30C8\u30FC\u30AF\u30F3\u3092\u304F\u3063\u3064\u3051\u308B */\nexport function joinTokenLines(lines) {\n const r = [];\n for (const line of lines) {\n for (const t of line) {\n r.push(t);\n }\n }\n return r;\n}\nfunction getLastTokenWithoutEOL(line) {\n const len = line.length;\n if (len === 0) {\n return NewEmptyToken('?');\n }\n let res = line[len - 1];\n if (res.type === 'eol') {\n if (len >= 2) {\n res = line[len - 2];\n }\n }\n return res;\n}\nexport function splitTokens(tokens, delimiter) {\n const result = [];\n let line = [];\n let kakko = 0;\n for (const t of tokens) {\n line.push(t);\n if (t.type === '{') {\n kakko++;\n }\n else if (t.type === '}') {\n kakko--;\n }\n else if (kakko === 0 && t.type === delimiter) {\n result.push(line);\n line = [];\n }\n }\n if (line.length > 0) {\n result.push(line);\n }\n return result;\n}\n/** \u30C8\u30FC\u30AF\u30F3\u884C\u304C\u7A7A\u304B\u3069\u3046\u304B\u8ABF\u3079\u308B */\nfunction IsEmptyLine(line) {\n if (line.length === 0) {\n return true;\n }\n for (let j = 0; j < line.length; j++) {\n const ty = line[j].type;\n if (ty === 'eol' || ty === 'line_comment' || ty === 'range_comment') {\n continue;\n }\n return false;\n }\n return true;\n}\n/** \u30B3\u30E1\u30F3\u30C8\u3092\u9664\u53BB\u3057\u305F\u6700\u521D\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u8FD4\u3059 */\nfunction GetLeftTokens(line) {\n for (let i = 0; i < line.length; i++) {\n const t = line[i].type;\n if (t === 'eol' || t === 'line_comment' || t === 'range_comment') {\n continue;\n }\n return line[i];\n }\n return line[0];\n}\n// \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\nconst INDENT_MODE_KEYWORDS = ['!\u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587', '!\u3053\u3053\u307E\u3067\u3060\u308B\u3044', '\uD83D\uDCA1\u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587', '\uD83D\uDCA1\u3053\u3053\u307E\u3067\u3060\u308B\u3044'];\n/** \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587 --- \u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u898B\u3066\"\u3053\u3053\u307E\u3067\"\u3092\u81EA\u52D5\u633F\u5165 (#596) */\nexport function convertIndentSyntax(tokens) {\n // \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u306E\u5909\u63DB\u304C\u5FC5\u8981\u304B?\n if (!useIndentSynax(tokens)) {\n return tokens;\n }\n // \u300E\u3053\u3053\u307E\u3067\u300F\u304C\u3042\u3063\u305F\u3089\u30A8\u30E9\u30FC\u3092\u51FA\u3059\n for (const t of tokens) {\n if (t.type === '\u3053\u3053\u307E\u3067') {\n // \u30A8\u30E9\u30FC\u3092\u51FA\u3059\n throw new NakoIndentError('\u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u304C\u6709\u52B9\u5316\u3055\u308C\u3066\u3044\u308B\u3068\u304D\u306B\u300E\u3053\u3053\u307E\u3067\u300F\u3092\u4F7F\u3046\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002', t.line, t.file);\n }\n }\n // JSON\u69CB\u6587\u306E\u30C1\u30A7\u30C3\u30AF\n let jsonObjLevel = 0;\n let jsonArrayLevel = 0;\n const checkJsonSyntax = (line) => {\n // JSON\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u3042\u308B\u304B\uFF1F\n line.forEach((t) => {\n if (t.type === '{') {\n jsonObjLevel++;\n }\n if (t.type === '}') {\n jsonObjLevel--;\n }\n if (t.type === '[') {\n jsonArrayLevel++;\n }\n if (t.type === ']') {\n jsonArrayLevel--;\n }\n });\n };\n // \u884C\u3054\u3068\u306B\u30C8\u30FC\u30AF\u30F3\u3092\u5206\u5272\n const blockIndents = [];\n const lines = splitTokens(tokens, 'eol');\n let lastI = 0;\n // \u5404\u884C\u3092\u78BA\u8A8D\u3059\u308B\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n // \u7A7A\u884C\u306F\u98DB\u3070\u3059 || \u30B3\u30E1\u30F3\u30C8\u884C\u3060\u3051\u306E\u884C\u3082\u98DB\u3070\u3059\n if (IsEmptyLine(line)) {\n continue;\n }\n // JSON\u69CB\u6587\u306E\u30C1\u30A7\u30C3\u30AF\n if (jsonArrayLevel > 0 || jsonObjLevel > 0) {\n checkJsonSyntax(line);\n continue;\n }\n const leftToken = GetLeftTokens(line);\n const curI = leftToken.indent;\n if (curI === lastI) {\n continue;\n }\n // \u30D6\u30ED\u30C3\u30AF\u306E\u7D42\u4E86?\n // 0: 3\u56DE\n // 2: \u3082\u3057\u30011 > 1\u306A\u3089\u3070\n // 4: 1\u3092\u8868\u793A\n // 2: \u9055\u3048\u3070\n // 4: 2\u3092\u8868\u793A\n // 0:\n // \u30D6\u30ED\u30C3\u30AF\u306E\u7D42\u4E86?\n if (lastI >= 0) {\n while (lastI > curI) {\n const blockIndentTopLast = blockIndents[blockIndents.length - 1][1];\n // console.log('@@[', i, ']', lastI, '>', curI, '@', blockIndentTopLast, leftToken.type)\n if (isSkipWord(leftToken) && blockIndentTopLast === curI) {\n // \u300C\u9055\u3048\u3070\u300D\u306A\u3069\u306A\u3089\u4E0D\u8981 (\u305F\u3060\u3057\u3001\u9055\u3048\u3070\u304C\u30CD\u30B9\u30C8\u3057\u3066\u3044\u308B\u5834\u5408\u306F\u5FC5\u8981)\n }\n else {\n const t = lines[i - 1][0];\n lines[i - 1].push(newToken('\u3053\u3053\u307E\u3067', '\u3053\u3053\u307E\u3067', t));\n lines[i - 1].push(newToken('eol', '\\n', t));\n }\n blockIndents.pop();\n if (blockIndents.length > 0) {\n lastI = blockIndents[blockIndents.length - 1][0];\n }\n else {\n lastI = 0;\n break;\n }\n }\n }\n if (jsonArrayLevel > 0 || jsonObjLevel > 0) {\n continue;\n }\n // JSON\u69CB\u6587\u306E\u30C1\u30A7\u30C3\u30AF\n checkJsonSyntax(line);\n // \u30D6\u30ED\u30C3\u30AF\u306E\u958B\u59CB\uFF1F\n if (curI > lastI) {\n blockIndents.push([curI, lastI]);\n // console.log('@@@push', curI)\n lastI = curI;\n continue;\n }\n }\n // \u672B\u5C3E\u306B\u300C\u3053\u3053\u307E\u3067\u300D\u3092\u8FFD\u52A0\u3059\u308B\n for (let i = 0; i < blockIndents.length; i++) {\n // \u30C8\u30FC\u30AF\u30F3\u60C5\u5831\u3092\u5F97\u308B\u305F\u3081\u3001\u76F4\u8FD1\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u5F97\u308B\n let t = tokens[0];\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i];\n if (line.length > 0) {\n t = line[line.length - 1];\n break;\n }\n }\n lines[lines.length - 1].push(newToken('\u3053\u3053\u307E\u3067', '\u3053\u3053\u307E\u3067', t));\n lines[lines.length - 1].push(newToken('eol', '\\n', t));\n }\n const result = joinTokenLines(lines);\n // console.log('###', debugTokens(result))\n return result;\n}\nfunction useIndentSynax(tokens) {\n // \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u304C\u5FC5\u8981\u304B\u30C1\u30A7\u30C3\u30AF (\u6700\u521D\u306E100\u500B\u3092\u30C1\u30A7\u30C3\u30AF)\n for (let i = 0; i < tokens.length; i++) {\n if (i > 100) {\n break;\n }\n const t = tokens[i];\n if (t.type === 'line_comment' && (INDENT_MODE_KEYWORDS.indexOf(t.value) >= 0)) {\n return true;\n }\n }\n return false;\n}\n", "/**\n * DNCL\u306B\u5BFE\u5FDC\u3059\u308B\u69CB\u6587\n */\n// import { NakoIndentError } from './nako_errors.mjs'\nimport { NewEmptyToken } from './nako_types.mjs';\nimport { joinTokenLines, splitTokens } from './nako_indent_inline.mjs';\n// DNCL\u30E2\u30FC\u30C9\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\nconst DNCL_KEYWORDS = ['!DNCL\u30E2\u30FC\u30C9', '\uD83D\uDCA1DNCL\u30E2\u30FC\u30C9'];\n// \u5358\u7D14\u306A\u7F6E\u63DB\u30C1\u30A7\u30C3\u30AF\nconst DNCL_SIMPLES = {\n '\u2190:\u2190': ['eq', '='],\n '\u00F7:\u00F7': ['\u00F7\u00F7', '\u00F7\u00F7'],\n '{:{': ['[', '['],\n '}:}': [']', ']'],\n 'word:\u3092\u5B9F\u884C': ['\u3053\u3053\u307E\u3067', '\u3053\u3053\u307E\u3067'],\n 'word:\u4E71\u6570': ['word', '\u4E71\u6570\u7BC4\u56F2'],\n 'word:\u8868\u793A': ['word', '\u9023\u7D9A\u8868\u793A']\n};\n/**\n * DNCL\u306E\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u3092\u306A\u3067\u3057\u3053\u306B\u5909\u63DB\u3059\u308B\n */\nexport function convertDNCL(tokens) {\n if (!useDNCLmode(tokens)) {\n return tokens;\n }\n // \u4E00\u884C\u305A\u3064\u306B\u5206\u3051\u308B\n const lines = splitTokens(tokens, 'eol');\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (line.length <= 1) {\n continue;\n } // \u7A7A\u884C\u306F\u98DB\u3070\u3059\n // \u884C\u982D\u306E | \u306F\u305F\u3060\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\n for (let j = 0; j < line.length; j++) {\n if (line[j].type === '|') {\n line[j].type = 'range_comment';\n continue;\n }\n break;\n }\n // \u5F8C\u5224\u5B9A\u306E\u7E70\u308A\u8FD4\u3057\u306E\u5B9F\u88C5\u306E\u305F\u3081\n const t = line[0];\n if (t.type === 'word' && t.value === '\u7E70\u8FD4') {\n line.splice(0, line.length, NewEmptyToken('word', '\u5F8C\u5224\u5B9A', t.indent, t.line, t.file), NewEmptyToken('word', '\u7E70\u8FD4', t.indent, t.line, t.file));\n }\n // ^\\s*\u3092,?(.+)\u306B\u306A\u308B\u307E\u3067(\u7E70\u308A\u8FD4\u3059|\u5B9F\u884C\u3059\u308B)/\n const fi = findTokens(line, ['word:\u306A\u308B', 'word:\u7E70\u8FD4']);\n if (fi > 0) {\n replaceAtohantei(line, fi);\n }\n const fi2 = findTokens(line, ['word:\u306A\u308B', 'word:\u5B9F\u884C']);\n if (fi2 > 0) {\n replaceAtohantei(line, fi2);\n }\n // \u3082\u3057(\u6761\u4EF6)\u3067\u306A\u3044\u306A\u3089\u3070 \u2192 \u3082\u3057(\u6761\u4EF6)\u3067\u306A\u3051\u308C\u3070\n const nai = findTokens(line, ['word:\u306A\u3044']);\n if (nai >= 1) {\n const tt = line[nai];\n if (tt.josi === '\u306A\u3089\u3070') {\n line[nai - 1].josi = '\u3067\u306A\u3051\u308C\u3070';\n line.splice(nai, 1);\n }\n }\n // \u4E8C\u9032\u3067\u8868\u793A (255) \u2192 \u4E8C\u9032\u8868\u793A(255)\n for (;;) {\n const ni = findTokens(line, ['word:\u4E8C\u9032', 'word:\u8868\u793A']);\n if (ni < 0) {\n break;\n }\n line[ni].value = '\u4E8C\u9032\u8868\u793A';\n line[ni].josi = '';\n line.splice(ni + 1, 1);\n }\n // '\u6539\u884C\u306A\u3057\u3067\u8868\u793A' \u2192 '\u9023\u7D9A\u7121\u6539\u884C\u8868\u793A'\n for (;;) {\n const ni = findTokens(line, ['word:\u6539\u884C', 'word:\u8868\u793A']);\n if (ni < 0) {\n break;\n }\n // \u3053\u3053\u300C\u6539\u884C\u306A\u3057\u3067\u8868\u793A\u300D\u3067\u3082\u300C\u6539\u884C\u3042\u308A\u3067\u8868\u793A\u300D\u3067\u3082\u540C\u3058\u306B\u306A\u3063\u3066\u3057\u307E\u3046\n // \u306A\u3067\u3057\u3053\u306E\u5236\u9650\u306E\u305F\u3081\u4ED5\u65B9\u306A\u3057\n // \u300C\u6539\u884C\u3042\u308A\u3067\u8868\u793A\u300D\u306F\u4ECA\u306E\u3068\u3053\u308DDNCL\u306B\u5B58\u5728\u3057\u306A\u3044\u306E\u3067\u7121\u8996\u3059\u308B\n // \u3082\u3057\u5C06\u6765\u7684\u306B\u533A\u5225\u304C\u5FC5\u8981\u306A\u3089\u3001\u30D7\u30EA\u30D7\u30ED\u30BB\u30B9\u51E6\u7406\u3067\u30DE\u30AF\u30ED\u7684\u306B\u7F6E\u63DB\u51E6\u7406\u3092\u884C\u3046\u3053\u3068\u3067\u5BFE\u5FDC\u3067\u304D\u308B\u3068\u601D\u3046\n const t = line[ni];\n t.value = '\u9023\u7D9A\u7121\u6539\u884C\u8868\u793A';\n t.josi = '';\n line.splice(ni + 1, 1);\n }\n // '\u3092\u5B9F\u884C\u3057,\u305D\u3046\u3067\u306A\u3051\u308C\u3070': '\u9055\u3048\u3070',\n for (;;) {\n const ni = findTokens(line, ['word:\u3092\u5B9F\u884C', 'comma:,', 'word:\u305D\u3046']);\n if (ni < 0) {\n break;\n }\n const sou = line[ni + 2];\n if (sou.josi === '\u3067\u306A\u3051\u308C\u3070') {\n sou.type = '\u9055\u3048\u3070';\n sou.value = '\u9055\u3048\u3070';\n sou.josi = '';\n line.splice(ni, 3, sou);\n continue;\n }\n else if (sou.josi === '\u3067') {\n const nakumosi = line[ni + 3];\n if (nakumosi.value.substring(0, 4) === '\u306A\u304F\u3082\u3057') {\n sou.type = '\u9055\u3048\u3070';\n sou.value = '\u9055\u3048\u3070';\n sou.josi = '';\n line.splice(ni, 3, sou);\n if (nakumosi.value.length > 4) {\n const nakumosiTudukiStr = nakumosi.value.substring(4);\n const nakumosiToken = NewEmptyToken('word', nakumosiTudukiStr, nakumosi.indent, nakumosi.line, nakumosi.file);\n if (nakumosiTudukiStr.match(/^\\d/)) {\n nakumosiToken.type = 'number';\n }\n line.splice(ni + 2, 0, nakumosiToken);\n nakumosi.value = nakumosi.value.substring(0, 4);\n }\n nakumosi.type = '\u3082\u3057';\n nakumosi.value = '\u3082\u3057';\n nakumosi.josi = '';\n continue;\n }\n }\n break;\n }\n // I\u30921\u304B\u3089100\u307E\u30671(\u305A\u3064)|\u5897\u3084\u3057\u306A(\u304C)|\u3089\n for (;;) {\n const ni = findTokens(line, ['word:\u5897', 'word:\u3089']);\n if (ni < 0) {\n break;\n }\n const fu = line[ni];\n fu.type = 'word';\n fu.value = '\u5897\u7E70\u8FD4';\n fu.josi = '';\n line.splice(ni, 2, fu);\n }\n // I\u30921\u304B\u3089100\u307E\u30671(\u305A\u3064)|\u5897\u3084\u3057\u306A(\u304C)|\u3089\n for (;;) {\n const ni = findTokens(line, ['word:\u6E1B', 'word:\u3089']);\n if (ni < 0) {\n break;\n }\n const fu = line[ni];\n fu.type = 'word';\n fu.value = '\u6E1B\u7E70\u8FD4';\n fu.josi = '';\n line.splice(ni, 2, fu);\n }\n // \u3092\u7E70\u308A\u8FD4\u3059 \u2192 \u3053\u3053\u307E\u3067\n for (;;) {\n const ni = findTokens(line, ['word:\u3092\u7E70\u308A\u8FD4']);\n if (ni < 0) {\n break;\n }\n const fu = line[ni];\n fu.type = '\u3053\u3053\u307E\u3067';\n fu.value = '\u3053\u3053\u307E\u3067';\n fu.josi = '';\n }\n // '\u306E\u3059\u3079\u3066\u306E\u8981\u7D20\u30920\u306B\u3059\u308B'\n // '\u306E\u3059\u3079\u3066\u306E\u8981\u7D20\u306B0\u3092\u4EE3\u5165\u3059\u308B'\n for (;;) {\n const ni = findTokens(line, ['word:\u3059\u3079\u3066', 'word:\u8981\u7D20']);\n if (ni >= 1) {\n replaceAllElementV(line, ni);\n }\n else {\n break;\n }\n }\n // '\u306E\u3059\u3079\u3066\u306E\u5024\u30920\u306B\u3059\u308B'\n for (;;) {\n const ni = findTokens(line, ['word:\u3059\u3079\u3066', 'word:\u5024']);\n if (ni >= 1) {\n replaceAllElementV(line, ni);\n }\n else {\n break;\n }\n }\n // \u4E00\u3064\u305A\u3064\u30C1\u30A7\u30C3\u30AF\n let j = 0;\n while (j < line.length) {\n const t = line[j];\n // \u6E1B\u3068\u5897\u306E\u5206\u5272\n if (t.type === 'word' && t.value.length >= 2) {\n const c = t.value.charAt(t.value.length - 1);\n if (c === '\u6E1B' || c === '\u5897') {\n t.value = t.value.substring(0, t.value.length - 1);\n t.josi = '\u3060\u3051';\n line.splice(j + 1, 0, NewEmptyToken('word', c, t.indent, t.line, t.file));\n }\n j++;\n continue;\n }\n j++;\n }\n }\n // \u6700\u5F8C\u306B\u5358\u7D14\u306A\u7F6E\u63DB\u3092\u884C\u3046\n for (let i = 0; i < tokens.length; i++) {\n const t = tokens[i];\n const a = DNCL_SIMPLES[t.type + ':' + t.value];\n if (a !== undefined) {\n t.type = a[0];\n t.value = a[1];\n }\n }\n tokens = joinTokenLines(lines);\n return tokens;\n}\nfunction replaceAllElementV(line, ni) {\n //\n // const ni = findTokens(line, ['word:\u3059\u3079\u3066', 'word:\u8981\u7D20'])\n //\n const t = line[ni];\n line[ni - 1].josi = '';\n const eq = NewEmptyToken('eq', '=', t.indent, t.line, t.file);\n const begin = NewEmptyToken('[', '[', t.indent, t.line, t.file);\n const end = NewEmptyToken(']', ']', t.indent, t.line, t.file);\n end.josi = '\u306B';\n const val = line[ni + 2];\n val.josi = '';\n const times = NewEmptyToken('number', 100, t.indent, t.line, t.file);\n times.josi = '\u3092';\n const mul = NewEmptyToken('word', '\u639B', t.indent, t.line, t.file);\n line.splice(ni, 4, eq, begin, val, end, times, mul);\n}\nfunction replaceAtohantei(tokens, fi) {\n // `\u3053\u3053\u307E\u3067\u3001(${r[1]})\u306B\u306A\u308B\u307E\u3067\u306E\u9593`\n const wo = findTokens(tokens, ['word:\u3092']);\n if (wo >= 0) {\n tokens[wo].type = '\u3053\u3053\u307E\u3067';\n tokens[wo].value = '\u3053\u3053\u307E\u3067';\n }\n const ga = findTokens(tokens, ['word:\u304C']);\n if (ga >= 0) {\n tokens[ga].type = '\u3053\u3053\u307E\u3067';\n tokens[ga].value = '\u3053\u3053\u307E\u3067';\n }\n // \u306A\u308B:\u307E\u3067(fi) \u5B9F\u884C(fi+1)\n tokens[fi + 1].value = '\u9593';\n}\nfunction findTokens(tokens, findTypeValue) {\n const findA = findTypeValue.map(s => s.split(':'));\n for (let i = 0; i < tokens.length; i++) {\n let flag = true;\n for (let j = 0; j < findA.length; j++) {\n const f = findA[j];\n const idx = i + j;\n if (idx >= tokens.length) {\n return -1;\n }\n if (tokens[idx].type === f[0] && tokens[idx].value === f[1]) {\n continue;\n }\n else {\n flag = false;\n break;\n }\n }\n if (flag) {\n return i;\n }\n }\n return -1;\n}\nfunction useDNCLmode(tokens) {\n // \u5148\u982D\u306E100\u8A9E\u8ABF\u3079\u308B\n for (let i = 0; i < tokens.length; i++) {\n if (i > 100) {\n break;\n }\n const t = tokens[i];\n if (t.type === 'line_comment' && DNCL_KEYWORDS.indexOf(t.value) >= 0) {\n t.type = 'DNCL\u30E2\u30FC\u30C9';\n return true;\n }\n }\n return false;\n}\nexport const NakoDncl = {\n convert: convertDNCL\n};\n", "/**\n * DNCL ver2 \u306B\u5BFE\u5FDC\u3059\u308B\u69CB\u6587\n */\n// import { NakoIndentError } from './nako_errors.mjs'\nimport { NewEmptyToken } from './nako_types.mjs';\nimport { joinTokenLines, splitTokens } from './nako_indent_inline.mjs';\nimport { newToken, debugTokens } from './nako_tools.mjs';\nconst IS_DEBUG = false;\nconst DNCL_ARRAY_INIT_COUNT = 30;\n// DNCL2\u30E2\u30FC\u30C9\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\nconst DNCL2_KEYWORDS = ['!DNCL2\u30E2\u30FC\u30C9', '\uD83D\uDCA1DNCL2\u30E2\u30FC\u30C9', '!DNCL2', '\uD83D\uDCA1DNCL2'];\n// \u5358\u7D14\u306A\u7F6E\u63DB\u30C1\u30A7\u30C3\u30AF\nconst DNCL_SIMPLES = {\n '\u2190:\u2190': ['eq', '='],\n '\u00F7:\u00F7': ['\u00F7\u00F7', '\u00F7\u00F7'],\n '{:{': ['[', '['],\n '}:}': [']', ']'],\n // 'word:and': ['and', '\u304B\u3064'],\n // 'word:or': ['or', '\u307E\u305F\u306F'],\n 'word:not': ['not', '!'],\n 'word:\u4E71\u6570': ['word', '\u4E71\u6570\u7BC4\u56F2'],\n 'word:\u8868\u793A': ['word', '\u9023\u7D9A\u8868\u793A'],\n 'word:\u3068\u5B9A\u7FA9': ['\u3053\u3053\u307E\u3067', '\u3053\u3053\u307E\u3067'] // \u300C\u3068\u5B9A\u7FA9\u300D\u2192\u300C\u3053\u3053\u307E\u3067\u300D\n};\n/**\n * DNCL\u306E\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u3092\u306A\u3067\u3057\u3053\u306B\u5909\u63DB\u3059\u308B\n */\nexport function convertDNCL2(tokens) {\n if (!useDNCL2mode(tokens)) {\n return tokens;\n }\n // \u4E00\u884C\u305A\u3064\u306B\u5206\u3051\u308B\n const lines = splitTokens(tokens, 'eol');\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (line.length <= 1) {\n continue;\n } // \u7A7A\u884C\u306F\u98DB\u3070\u3059\n // --- \u5236\u5FA1\u69CB\u6587\u306E\u5909\u63DB ---\n // \u3082\u3057(\u6761\u4EF6)\u3067\u306A\u3044\u306A\u3089\u3070 \u2192 \u3082\u3057(\u6761\u4EF6)\u3067\u306A\u3051\u308C\u3070\n const nai = findTokens(line, ['word:\u306A\u3044']);\n if (nai >= 1) {\n const tt = line[nai];\n if (tt.josi === '\u306A\u3089\u3070') {\n line[nai - 1].josi = '\u3067\u306A\u3051\u308C\u3070';\n line.splice(nai, 1);\n }\n }\n // \u305D\u3046\u3067\u306A\u3051\u308C\u3070(\u305D\u3046|\u3067\u306A\u3051\u308C\u3070) or \u305D\u3046\u3067\u306A\u304F \u2192 \u9055\u3048\u3070\n for (let ni = 0; ni < line.length; ni++) {\n const t = line[ni];\n if ((t.value === '\u305D\u3046' || t.value === '\u305D\u308C') && (t.josi === '\u3067\u306A\u3051\u308C\u3070' || t.josi === '\u3067\u306A\u304F')) {\n t.type = '\u9055\u3048\u3070';\n t.value = '\u9055\u3048\u3070';\n t.josi = '';\n }\n }\n // '\u3092\u5B9F\u884C\u3057,\u305D\u3046\u3067\u306A\u3051\u308C\u3070': '\u9055\u3048\u3070',\n for (;;) {\n const ni = findTokens(line, ['word:\u3092\u5B9F\u884C', 'comma:,', 'word:\u305D\u3046']);\n if (ni < 0) {\n break;\n }\n const sou = line[ni + 2];\n if (sou.josi === '\u3067\u306A\u3051\u308C\u3070') {\n sou.type = '\u9055\u3048\u3070';\n sou.value = '\u9055\u3048\u3070';\n sou.josi = '';\n line.splice(ni, 3, sou);\n continue;\n }\n else if (sou.josi === '\u3067') {\n const nakumosi = line[ni + 3];\n if (nakumosi.value.substring(0, 4) === '\u306A\u304F\u3082\u3057') {\n sou.type = '\u9055\u3048\u3070';\n sou.value = '\u9055\u3048\u3070';\n sou.josi = '';\n line.splice(ni, 3, sou);\n if (nakumosi.value.length > 4) {\n const nakumosiTudukiStr = nakumosi.value.substring(4);\n const nakumosiToken = NewEmptyToken('word', nakumosiTudukiStr, nakumosi.indent, nakumosi.line, nakumosi.file);\n if (nakumosiTudukiStr.match(/^\\d/)) {\n nakumosiToken.type = 'number';\n }\n line.splice(ni + 2, 0, nakumosiToken);\n nakumosi.value = nakumosi.value.substring(0, 4);\n }\n nakumosi.type = '\u3082\u3057';\n nakumosi.value = '\u3082\u3057';\n nakumosi.josi = '';\n continue;\n }\n }\n break;\n }\n // '\u305D\u3046\u3067\u306A\u304F': '\u9055\u3048\u3070',\n for (;;) {\n const ni = findTokens(line, ['word:\u305D\u3046', 'word:\u306A\u304F']);\n if (ni < 0) {\n break;\n }\n const sou = line[ni];\n if (sou.josi === '\u3067') {\n sou.type = '\u9055\u3048\u3070';\n sou.value = '\u9055\u3048\u3070';\n sou.josi = '';\n line.splice(ni + 1, 1);\n // console.log('@@@', line.map(v => v.value).join('|'))\n continue;\n }\n break;\n }\n // '\u305D\u3046\u3067\u306A\u304F\u3082\u3057': '\u9055\u3048\u3070,\u3082\u3057'\n for (;;) {\n const ni = findTokens(line, ['word:\u305D\u3046', 'word:\u306A\u304F\u3082\u3057']);\n if (ni < 0) {\n break;\n }\n const sou = line[ni];\n const nakumosi = line[ni + 1];\n sou.type = '\u9055\u3048\u3070';\n sou.value = '\u9055\u3048\u3070';\n sou.josi = '';\n nakumosi.type = '\u3082\u3057';\n nakumosi.value = '\u3082\u3057';\n nakumosi.josi = '';\n }\n // I\u30921\u304B\u3089100\u307E\u30671(\u305A\u3064)|\u5897\u3084\u3057\u306A(\u304C)|\u3089\n for (;;) {\n const ni = findTokens(line, ['word:\u5897', 'word:\u3089']);\n if (ni < 0) {\n break;\n }\n const fu = line[ni];\n fu.type = 'word';\n fu.value = '\u5897\u7E70\u8FD4';\n fu.josi = '';\n line.splice(ni, 2, fu);\n }\n // I\u30921\u304B\u3089100\u307E\u30671(\u305A\u3064)|\u5897\u3084\u3057\u306A(\u304C)|\u3089\n for (;;) {\n const ni = findTokens(line, ['word:\u6E1B', 'word:\u3089']);\n if (ni < 0) {\n break;\n }\n const fu = line[ni];\n fu.type = 'word';\n fu.value = '\u6E1B\u7E70\u8FD4';\n fu.josi = '';\n line.splice(ni, 2, fu);\n }\n // I\u30921\u304B\u3089100\u307E\u30671(\u305A\u3064)|\u5897\u3084\u3057\u306A(\u304C)|\u3089\u7E70\u308A\u8FD4(\u3059)\n for (;;) {\n const ni = findTokens(line, ['word:\u5897', 'word:\u3089\u7E70\u308A\u8FD4']);\n if (ni < 0) {\n break;\n }\n const fu = line[ni];\n fu.type = 'word';\n fu.value = '\u5897\u7E70\u8FD4';\n fu.josi = '';\n line.splice(ni, 2, fu);\n }\n // I\u30921\u304B\u3089100\u307E\u30671(\u305A\u3064)|\u5897\u3084\u3057\u306A(\u304C)|\u3089\u7E70\u308A\u8FD4\u3059\n for (;;) {\n const ni = findTokens(line, ['word:\u6E1B', 'word:\u3089\u7E70\u308A\u8FD4']);\n if (ni < 0) {\n break;\n }\n const fu = line[ni];\n fu.type = 'word';\n fu.value = '\u6E1B\u7E70\u8FD4';\n fu.josi = '';\n line.splice(ni, 2, fu);\n }\n // --- \u914D\u5217\u5909\u6570\u5468\u308A\u306E\u5909\u63DB ---\n for (let i = 0; i < line.length; i++) {\n // \u914D\u5217|Hindo\u306E|\u3059\u3079\u3066\u306E|(\u8981\u7D20\u306B|\u5024\u306B)|10\u3092|\u4EE3\u5165\u3059\u308B\n if (tokenEq([['word:\u914D\u5217', 'word:\u914D\u5217\u5909\u6570'], 'word', 'word:\u3059\u3079\u3066', ['word:\u8981\u7D20', 'word:\u5024'], '*', 'word:\u4EE3\u5165'], line, i)) {\n const varToken = line[i + 1];\n varToken.josi = '';\n const valToken = line[i + 4];\n valToken.josi = '';\n line.splice(i, 6, varToken, newToken('eq', '=', varToken), newToken('word', '\u639B'), newToken('(', '('), newToken('[', '['), valToken, newToken(']', ']'), newToken('comma', ','), newToken('number', DNCL_ARRAY_INIT_COUNT), newToken(')', ')'));\n i += 6; // skip\n }\n // Hensu\u306E|\u3059\u3079\u3066\u306E|(\u8981\u7D20\u3092|\u5024\u3092)|0\u306B|\u3059\u308B\n if (tokenEq(['word', 'word:\u3059\u3079\u3066', ['word:\u8981\u7D20', 'word:\u5024'], ['number', 'string', 'word'], 'word:\u3059\u308B'], line, i)) {\n const varToken = line[i];\n varToken.josi = '';\n const valToken = line[i + 3];\n valToken.josi = '';\n line.splice(i, 5, varToken, newToken('eq', '=', varToken), newToken('word', '\u639B'), newToken('(', '('), newToken('[', '['), valToken, newToken(']', ']'), newToken('comma', ','), newToken('number', DNCL_ARRAY_INIT_COUNT), newToken(')', ')'));\n }\n // \u914D\u5217\u5909\u6570 | xx\u3092 | \u521D\u671F\u5316\u3059\u308B\n if (tokenEq([['word:\u914D\u5217\u5909\u6570', 'word:\u914D\u5217'], 'word', 'word:\u521D\u671F\u5316'], line, i)) {\n const varToken = line[i + 1];\n varToken.josi = '';\n line.splice(i, 3, varToken, newToken('eq', '=', varToken), newToken('word', '\u639B'), newToken('(', '('), newToken('[', '['), newToken('number', 0), newToken(']', ']'), newToken('comma', ','), newToken('number', DNCL_ARRAY_INIT_COUNT), newToken(')', ')'));\n }\n }\n // --- \u305D\u306E\u4ED6\u306E\u5909\u63DB ---\n // \u4E8C\u9032\u3067\u8868\u793A (255) \u2192 \u4E8C\u9032\u8868\u793A(255)\n for (;;) {\n const ni = findTokens(line, ['word:\u4E8C\u9032', 'word:\u8868\u793A']);\n if (ni < 0) {\n break;\n }\n line[ni].value = '\u4E8C\u9032\u8868\u793A';\n line[ni].josi = '';\n line.splice(ni + 1, 1);\n }\n // '\u6539\u884C\u306A\u3057\u3067\u8868\u793A' \u2192 '\u9023\u7D9A\u7121\u6539\u884C\u8868\u793A'\n for (;;) {\n const ni = findTokens(line, ['word:\u6539\u884C', 'word:\u8868\u793A']);\n if (ni < 0) {\n break;\n }\n // \u3053\u3053\u300C\u6539\u884C\u306A\u3057\u3067\u8868\u793A\u300D\u3067\u3082\u300C\u6539\u884C\u3042\u308A\u3067\u8868\u793A\u300D\u3067\u3082\u540C\u3058\u306B\u306A\u3063\u3066\u3057\u307E\u3046\n // \u306A\u3067\u3057\u3053\u306E\u5236\u9650\u306E\u305F\u3081\u4ED5\u65B9\u306A\u3057\n // \u300C\u6539\u884C\u3042\u308A\u3067\u8868\u793A\u300D\u306F\u4ECA\u306E\u3068\u3053\u308DDNCL\u306B\u5B58\u5728\u3057\u306A\u3044\u306E\u3067\u7121\u8996\u3059\u308B\n // \u3082\u3057\u5C06\u6765\u7684\u306B\u533A\u5225\u304C\u5FC5\u8981\u306A\u3089\u3001\u30D7\u30EA\u30D7\u30ED\u30BB\u30B9\u51E6\u7406\u3067\u30DE\u30AF\u30ED\u7684\u306B\u7F6E\u63DB\u51E6\u7406\u3092\u884C\u3046\u3053\u3068\u3067\u5BFE\u5FDC\u3067\u304D\u308B\u3068\u601D\u3046\n const t = line[ni];\n t.value = '\u9023\u7D9A\u7121\u6539\u884C\u8868\u793A';\n t.josi = '';\n line.splice(ni + 1, 1);\n }\n // \u4E00\u3064\u305A\u3064\u30C1\u30A7\u30C3\u30AF\n let j = 0;\n while (j < line.length) {\n const t = line[j];\n // \u6E1B\u3068\u5897\u306E\u5206\u5272\n if (t.type === 'word' && t.value.length >= 2) {\n const c = t.value.charAt(t.value.length - 1);\n if (c === '\u6E1B' || c === '\u5897') {\n t.value = t.value.substring(0, t.value.length - 1);\n t.josi = '\u3060\u3051';\n line.splice(j + 1, 0, NewEmptyToken('word', c, t.indent, t.line, t.file));\n }\n j++;\n continue;\n }\n j++;\n }\n }\n // \u6700\u5F8C\u306B\u5358\u7D14\u306A\u7F6E\u63DB\u3092\u884C\u3046\n for (let i = 0; i < tokens.length; i++) {\n const t = tokens[i];\n const a = DNCL_SIMPLES[t.type + ':' + t.value];\n if (a !== undefined) {\n t.type = a[0];\n t.value = a[1];\n }\n }\n tokens = joinTokenLines(lines);\n if (IS_DEBUG) {\n console.log('// DEBUG---DNCL:tokens---BEGIN');\n console.log(debugTokens(tokens));\n console.log('// DEBUG---DNCL:tokens---END');\n }\n return tokens;\n}\n/**\n * \u30C8\u30FC\u30AF\u30F3\u304C\u5408\u81F4\u3059\u308B\u304B\u3092\u78BA\u8A8D\u3059\u308B\n * @param typeValues ['word:\u305D\u308C']\u306E\u3088\u3046\u306A\u30BF\u30A4\u30D7\u540D\u3068\u5024\u306E\u914D\u5217/'*'\u3067\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u304C\u4F7F\u3048\u308B/\":\"\u304C\u306A\u308C\u3070\u30BF\u30A4\u30D7\u3060\u3051\u78BA\u8A8D/\u914D\u5217\u3067\u9078\u629E\n * @param lines \u5DEE\u3057\u66FF\u3048\n * @param fromIndex \u691C\u7D22\u5834\u6240\n * @returns \u5408\u81F4\u3057\u305F\u304B\u3069\u3046\u304B\n */\nfunction tokenEq(typeValues, lines, fromIndex) {\n const check = (pattern, t) => {\n if (pattern instanceof Array) {\n for (let i = 0; i < pattern.length; i++) {\n if (check(pattern[i], t)) {\n return true;\n }\n }\n return false;\n }\n if (pattern === '*') {\n return true;\n }\n if (pattern.indexOf(':') < 0) {\n if (pattern === t.type) {\n return true;\n }\n else {\n return false;\n }\n }\n const tv = `${t.type}:${t.value}`;\n if (pattern === tv) {\n return true;\n }\n return false;\n };\n for (let i = 0; i < typeValues.length; i++) {\n const idx = i + fromIndex;\n if (idx >= lines.length) {\n return false;\n }\n const pat = typeValues[i];\n const t = lines[idx];\n if (!check(pat, t)) {\n return false;\n }\n }\n return true;\n}\nfunction findTokens(tokens, findTypeValue) {\n const findA = findTypeValue.map(s => s.split(':'));\n for (let i = 0; i < tokens.length; i++) {\n let flag = true;\n for (let j = 0; j < findA.length; j++) {\n const f = findA[j];\n const idx = i + j;\n if (idx >= tokens.length) {\n return -1;\n }\n if (tokens[idx].type === f[0] && tokens[idx].value === f[1]) {\n continue;\n }\n else {\n flag = false;\n break;\n }\n }\n if (flag) {\n return i;\n }\n }\n return -1;\n}\nfunction useDNCL2mode(tokens) {\n // \u5148\u982D\u306E100\u8A9E\u8ABF\u3079\u308B\n for (let i = 0; i < tokens.length; i++) {\n if (i > 100) {\n break;\n }\n const t = tokens[i];\n if (t.type === 'line_comment' && DNCL2_KEYWORDS.indexOf(t.value) >= 0) {\n t.type = 'DNCL2\u30E2\u30FC\u30C9';\n return true;\n }\n }\n return false;\n}\n", "/** prepare\u3068tokenize\u306E\u30BD\u30FC\u30B9\u30DE\u30C3\u30D4\u30F3\u30B0 */\nexport class SourceMappingOfTokenization {\n /**\n * @param {number} sourceCodeLength\n * @param {PreprocessItem[]} preprocessed\n */\n constructor(sourceCodeLength, preprocessed) {\n /** @private @readonly */\n this.sourceCodeLength = sourceCodeLength;\n /** @private @readonly */\n this.preprocessed = preprocessed;\n let i = 0;\n /** @private @readonly @type {number[]} */\n this.cumulativeSum = [];\n for (const el of preprocessed) {\n this.cumulativeSum.push(i);\n i += el.text.length;\n }\n /** @private */\n this.lastIndex = 0;\n /** @private */\n this.lastPreprocessedCodePosition = 0;\n }\n /**\n * preprocess\u5F8C\u306E\u6587\u5B57\u5217\u4E0A\u306Eoffset\u304B\u3089\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u4E0A\u306Eoffset\u3078\u5909\u63DB\n * @param {number} preprocessedCodePosition\n * @returns {number}\n */\n map(preprocessedCodePosition) {\n const i = this.findIndex(preprocessedCodePosition);\n return Math.min(this.preprocessed[i].sourcePosition + (preprocessedCodePosition - this.cumulativeSum[i]), i === this.preprocessed.length - 1 ? this.sourceCodeLength : this.preprocessed[i + 1].sourcePosition - 1);\n }\n /**\n * @param {number} preprocessedCodePosition\n * @returns {number}\n */\n findIndex(preprocessedCodePosition) {\n // \u9023\u7D9A\u30A2\u30AF\u30BB\u30B9\u306B\u5BFE\u3059\u308B\u9AD8\u901F\u5316\n if (preprocessedCodePosition < this.lastPreprocessedCodePosition) {\n this.lastIndex = 0;\n }\n this.lastPreprocessedCodePosition = preprocessedCodePosition;\n for (let i = this.lastIndex; i < this.preprocessed.length - 1; i++) {\n if (preprocessedCodePosition < this.cumulativeSum[i + 1]) {\n this.lastIndex = i;\n return i;\n }\n }\n this.lastIndex = this.preprocessed.length - 1;\n return this.preprocessed.length - 1;\n }\n}\nexport class SourceMappingOfIndentSyntax {\n /**\n * @param {string} codeAfterProcessingIndentationSyntax\n * @param {readonly number[]} linesInsertedByIndentationSyntax\n * @param {readonly { lineNumber: number, len: number }[]} linesDeletedByIndentationSyntax\n */\n constructor(codeAfterProcessingIndentationSyntax, linesInsertedByIndentationSyntax, linesDeletedByIndentationSyntax) {\n /** @private @type {{ offset: number, len: number }[]} */\n this.lines = [];\n /** @private @readonly */\n this.linesInsertedByIndentationSyntax = linesInsertedByIndentationSyntax;\n /** @private @readonly */\n this.linesDeletedByIndentationSyntax = linesDeletedByIndentationSyntax;\n let offset = 0;\n for (const line of codeAfterProcessingIndentationSyntax.split('\\n')) {\n this.lines.push({ offset, len: line.length });\n offset += line.length + 1;\n }\n /** @private */\n this.lastLineNumber = 0;\n /** @private */\n this.lastOffset = 0;\n }\n /**\n * @param {number | null} startOffset\n * @param {number | null} endOffset\n * @returns {{ startOffset: number | null, endOffset: number | null }}\n */\n map(startOffset, endOffset) {\n if (startOffset === null) {\n return { startOffset, endOffset };\n }\n // \u4F55\u884C\u76EE\u304B\u3092\u5224\u5B9A\n const tokenLine = this.getLineNumber(startOffset);\n for (const insertedLine of this.linesInsertedByIndentationSyntax) {\n // \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u306E\u51E6\u7406\u5F8C\u306E\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u306E `insertedLine` \u884C\u76EE\u306B\u3042\u308B\u30C8\u30FC\u30AF\u30F3\u306E\u30BD\u30FC\u30B9\u30DE\u30C3\u30D7\u60C5\u5831\u3092\u524A\u9664\u3059\u308B\u3002\n if (tokenLine === insertedLine) {\n startOffset = null;\n endOffset = null;\n break;\n }\n // \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u306E\u51E6\u7406\u5F8C\u306E\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u306E `insertedLine` \u884C\u76EE\u4EE5\u964D\u306B\u3042\u308B\u30C8\u30FC\u30AF\u30F3\u306Eoffset\u304B\u3089\n // `linesInsertedByIndentationSyntax[i]` \u884C\u76EE\u306E\u6587\u5B57\u6570\uFF08\\r\u3092\u542B\u3080\uFF09 \u3092\u5F15\u304F\u3002\n if (tokenLine > insertedLine) {\n // \"\\n\"\u306E\u52061\u8DB3\u3059\n startOffset -= this.lines[insertedLine].len + 1;\n if (endOffset !== null) {\n endOffset -= this.lines[insertedLine].len + 1;\n }\n }\n }\n for (const deletedLine of this.linesDeletedByIndentationSyntax) {\n if (tokenLine >= deletedLine.lineNumber) {\n // \"\\n\"\u306E\u52061\u8DB3\u3059\n if (startOffset !== null) {\n startOffset += deletedLine.len + 1;\n }\n if (endOffset !== null) {\n endOffset += deletedLine.len + 1;\n }\n }\n }\n return { startOffset, endOffset };\n }\n /**\n * @param {number} offset\n * @returns {number}\n * @private\n */\n getLineNumber(offset) {\n // \u9023\u7D9A\u30A2\u30AF\u30BB\u30B9\u306B\u5BFE\u3059\u308B\u9AD8\u901F\u5316\n if (offset < this.lastOffset) {\n this.lastLineNumber = 0;\n }\n this.lastOffset = offset;\n for (let i = this.lastLineNumber; i < this.lines.length - 1; i++) {\n if (offset < this.lines[i + 1].offset) {\n this.lastLineNumber = i;\n return i;\n }\n }\n this.lastLineNumber = this.lines.length - 1;\n return this.lines.length - 1;\n }\n}\n/** offset\u304B\u3089 (line, column) \u3078\u5909\u63DB\u3059\u308B\u3002 */\nexport class OffsetToLineColumn {\n /**\n * @param {string} code\n */\n constructor(code) {\n /** @private @type {number[]} */\n this.lineOffsets = [];\n // \u5404\u884C\u306E\u5148\u982D\u4F4D\u7F6E\u3092\u5148\u306B\u8A08\u7B97\u3057\u3066\u304A\u304F\n let offset = 0;\n for (const line of code.split('\\n')) {\n this.lineOffsets.push(offset);\n offset += line.length + 1;\n }\n /** @private */\n this.lastLineNumber = 0;\n /** @private */\n this.lastOffset = 0;\n }\n /**\n * @param {number} offset\n * @param {boolean} oneBasedLineNumber true\u306E\u3068\u304Dline\u30921\u304B\u3089\u59CB\u3081\u308B\n * @returns {{ line: number, column: number }}\n */\n map(offset, oneBasedLineNumber) {\n // \u9023\u7D9A\u30A2\u30AF\u30BB\u30B9\u306B\u5BFE\u3059\u308B\u9AD8\u901F\u5316\n if (offset < this.lastOffset) {\n this.lastLineNumber = 0;\n }\n this.lastOffset = offset;\n for (let i = this.lastLineNumber; i < this.lineOffsets.length - 1; i++) {\n if (offset < this.lineOffsets[i + 1]) {\n this.lastLineNumber = i;\n return {\n line: i + (oneBasedLineNumber ? 1 : 0),\n column: offset - this.lineOffsets[i]\n };\n }\n }\n this.lastLineNumber = this.lineOffsets.length - 1;\n return {\n line: this.lineOffsets.length - 1 + (oneBasedLineNumber ? 1 : 0),\n column: offset - this.lineOffsets[this.lineOffsets.length - 1]\n };\n }\n}\n/**\n * preCode\u306E\u5206\u3001\u30BD\u30FC\u30B9\u30DE\u30C3\u30D7\u306Eoffset\u3001\u884C\u6570\u3001\u5217\u6570\u3092\u6E1B\u3089\u3059\u3002\n * @type {<T extends {line?: number, column?: number, startOffset: number | null, endOffset: number | null }>(sourceMap: T, preCode: string) => T}\n */\nexport function subtractSourceMapByPreCodeLength(sourceMap, preCode) {\n // offset\u306F\u5358\u7D14\u306B\u5F15\u304F\u3060\u3051\u3067\u3088\u3044\n if (typeof sourceMap.startOffset === 'number') {\n sourceMap.startOffset -= preCode.length;\n }\n if (typeof sourceMap.endOffset === 'number') {\n sourceMap.endOffset -= preCode.length;\n }\n // \u305F\u3068\u3048\u3070 preCode = 'abc\\ndef\\nghi' \u306E\u3068\u304D\u3001line -= 2 \u3057\u3066\u3001\u5148\u982D\u884C\u306A\u3089 column -= 3 \u3082\u3059\u308B\u3002\n if (preCode !== '') {\n const lines = preCode.split('\\n');\n if (typeof sourceMap.line === 'number') {\n sourceMap.line -= lines.length - 1;\n }\n if (sourceMap.line === 0 && typeof sourceMap.column === 'number') {\n sourceMap.column -= lines[lines.length - 1].length;\n }\n }\n return sourceMap;\n}\n", "/**\n * \u30D6\u30E9\u30A6\u30B6\u3068Node.js\u3067\u30C6\u30AD\u30B9\u30C8\u3078\u306E\u8272\u4ED8\u3051\u3092\u5171\u901A\u5316\u3059\u308B\u305F\u3081\u306E\u30B3\u30FC\u30C9\n */\n/**\n * ANSI escape code \u306E\u4E00\u90E8\n */\nconst color = { reset: '\\x1b[0m', bold: '\\x1b[1m', black: '\\x1b[30m', red: '\\x1b[31m', green: '\\x1b[32m', yellow: '\\x1b[33m', blue: '\\x1b[34m', magenta: '\\x1b[35m', cyan: '\\x1b[36m', white: '\\x1b[37m' };\n// 30 ~ 37\nconst colorNames = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'];\n/** @param {string} t */\nconst escapeHTML = (t) => t.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n/**\n * ANSI escape code \u3067\u8272\u4ED8\u3051\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u3092\u3001HTML\u3084\u30D6\u30E9\u30A6\u30B6\u306Econsole.log\u7528\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306B\u5909\u63DB\u3059\u308B\u3002\n * \u305F\u3068\u3048\u3070 `convertColorTextFormat(`foo${color.red}bar`).html` \u3067 `\"foobar\"` \u306E `\"bar\"` \u306E\u90E8\u5206\u304C\u8D64\u304F\u8868\u793A\u3055\u308C\u308BHTML\u3092\u53D6\u5F97\u3067\u304D\u308B\u3002\n * @param {string} text\n * @returns {{ nodeConsole: string, noColor: string, html: string, browserConsole: string[] }}\n */\nconst convertColorTextFormat = (text) => {\n // text\u304B\u3089 [ANSI escape code](https://en.wikipedia.org/wiki/ANSI_escape_code) \u3092\u524A\u9664\u3057\u3066\u3001\u8272\u306E\u7121\u3044\u30C6\u30AD\u30B9\u30C8\u3092\u4F5C\u308B\u3002\n // eslint-disable-next-line no-control-regex\n const noColor = text.replace(/\\x1b\\[\\d+m/g, '');\n // nodeConsole\u304B\u3089browserConsole\u3092\u4F5C\u308B\n /** @type {string[]} */\n const browserConsoleStyles = [];\n let consoleColor = 'inherit'; // \u6587\u5B57\u8272\n let consoleFontWeight = 'inherit'; // \u6587\u5B57\u306E\u592A\u3055\n // /\\x1b\\[(\\d+)m/ \u3067\u6B63\u898F\u8868\u73FE\u30DE\u30C3\u30C1\u3057\u3001\u305D\u308C\u305E\u308C\u3092 %c \u3067\u7F6E\u63DB\u3059\u308B\u3068\u540C\u6642\u306B browserConsoleStyles \u306BCSS\u3067\u306E\u8868\u73FE\u3092push\u3059\u308B\u3002\n // console.log(browserConsoleText, ...browserConsoleStyles) \u3067\u8868\u793A\u3059\u308B\u3053\u3068\u3092\u60F3\u5B9A\u3002\n const browserConsoleText = text === noColor\n ? noColor\n // eslint-disable-next-line no-control-regex\n : text.replace(/\\x1b\\[(\\d+)m/g, (_, m1str) => {\n const m1 = +m1str;\n if (m1 === 0) {\n consoleColor = 'inherit';\n consoleFontWeight = 'inherit';\n }\n if (m1 === 1) {\n consoleFontWeight = 'bold';\n }\n if (m1 >= 30 && m1 <= 37) {\n consoleColor = colorNames[m1 - 30];\n }\n browserConsoleStyles.push(`color: ${consoleColor}; font-weight: ${consoleFontWeight};`);\n return '%c';\n });\n // nodeConsole\u304B\u3089html\u3092\u4F5C\u308B\n let htmlColor = 'inherit'; // \u6587\u5B57\u8272\n let htmlFontWeight = 'inherit'; // \u6587\u5B57\u306E\u592A\u3055\n // text\u304C\u8272\u60C5\u5831\u3092\u542B\u307E\u306A\u3044\u306A\u3089\u305D\u308C\u3092\u305D\u306E\u307E\u307E\u4F7F\u3044\u3001\u542B\u3080\u306A\u3089\u5168\u4F53\u3092 <span>\u3067\u56F2\u3093\u3067\u3001\u66F4\u306B\u3001ANSI escape code \u3067\u56F2\u307E\u308C\u305F\u90E8\u5206\u3092\u5BFE\u5FDC\u3059\u308B style \u3092\u4ED8\u3051\u305F <span> \u3067\u56F2\u3080\u3002\n // eslint-disable-next-line multiline-ternary\n const html = text === noColor ? noColor : ('<span>' + escapeHTML(text)\n // eslint-disable-next-line no-control-regex\n .replace(/\\x1b\\[(\\d+)m/g, (_, m1str) => {\n const m1 = +m1str;\n if (m1 === 0) { // \u30EA\u30BB\u30C3\u30C8\n htmlColor = 'inherit';\n htmlFontWeight = 'inherit';\n }\n if (m1 === 1) { // \u592A\u5B57\u5316\n htmlFontWeight = 'bold';\n }\n if (m1 >= 30 && m1 <= 37) { // \u6587\u5B57\u8272\u306E\u5909\u66F4\n htmlColor = colorNames[m1 - 30];\n }\n return `</span><span style=\"color: ${htmlColor}; font-weight: ${htmlFontWeight};\">`;\n }) + '</span>');\n // \u5404\u8868\u73FE\u3092\u8FD4\u3059\u3002\n return {\n noColor,\n nodeConsole: text === noColor\n ? noColor // text\u304C\u8272\u306E\u60C5\u5831\u3092\u542B\u307E\u306A\u3044\u306A\u3089noColor\u3092\u8FD4\u3059\u3002\n : text + '\\x1b[0m', // \u305D\u3046\u3067\u306A\u3051\u308C\u3070text\u306E\u672B\u5C3E\u306B\u8272\u3092\u30EA\u30BB\u30C3\u30C8\u3059\u308B\u30B3\u30FC\u30C9\u3092\u4ED8\u3051\u3066\u8FD4\u3059\u3002\n html,\n browserConsole: [browserConsoleText, ...browserConsoleStyles]\n };\n};\nexport const NakoColors = { convertColorTextFormat, colorNames, color };\n", "/** NakoLogger */\nimport { NakoError, NakoRuntimeError } from './nako_errors.mjs';\nimport { NakoColors } from './nako_colors.mjs';\n/**\n * \u30ED\u30B0\u30EC\u30D9\u30EB - \u6570\u5B57\u304C\u9AD8\u3044\u307B\u3069\u512A\u5148\u5EA6\u304C\u9AD8\u3044\u3002\n */\nexport class LogLevel {\n // string to level no\n static fromS(levelStr) {\n let level = LogLevel.trace;\n switch (levelStr) {\n case 'all':\n level = LogLevel.all;\n break;\n case 'trace':\n level = LogLevel.trace;\n break;\n case 'debug':\n level = LogLevel.debug;\n break;\n case 'info':\n level = LogLevel.info;\n break;\n case 'warn':\n level = LogLevel.warn;\n break;\n case 'error':\n level = LogLevel.error;\n break;\n case 'stdout':\n level = LogLevel.stdout;\n break;\n default:\n throw new Error('[NakoLogger] unknown logger level:' + levelStr);\n }\n return level;\n }\n static toString(level) {\n const levels = ['all', 'trace', 'debug', 'info', 'warn', 'error', 'stdout'];\n return levels[level];\n }\n}\n// level no\nLogLevel.all = 0;\nLogLevel.trace = 1;\nLogLevel.debug = 2;\nLogLevel.info = 3;\nLogLevel.warn = 4;\nLogLevel.error = 5;\nLogLevel.stdout = 6;\n/**\n * \u30A8\u30E9\u30FC\u4F4D\u7F6E\u3092\u65E5\u672C\u8A9E\u3067\u8868\u793A\u3059\u308B\u3002\n * \u305F\u3068\u3048\u3070 `stringifyPosition({ file: \"foo.txt\", line: 5 })` \u306F `\"foo.txt(6\u884C\u76EE):\"` \u3092\u51FA\u529B\u3059\u308B\u3002\n */\nfunction stringifyPosition(p) {\n if (!p) {\n return '';\n }\n return `${p.file || ''}${p.line === undefined ? '' : `(${p.line + 1}\u884C\u76EE): `}`;\n}\n/**\n * \u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u30ED\u30B0\u60C5\u5831\u3092\u51FA\u529B\u3059\u308B\u305F\u3081\u306E\u30AF\u30E9\u30B9\u3002\n * trace(), debug(), info(), warn(), error() \u306F\u305D\u308C\u305E\u308C\u30E1\u30C3\u30BB\u30FC\u30B8\u306B `[\u8B66\u544A]` \u306A\u3069\u306E\u30BF\u30B0\u3068\u30A8\u30E9\u30FC\u4F4D\u7F6E\u306E\u65E5\u672C\u8A9E\u8868\u73FE\u3092\u4ED8\u3051\u3066\u8868\u793A\u3059\u308B\u3002\n * error() \u306F\u5F15\u6570\u306B\u30A8\u30E9\u30FC\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u53D7\u3051\u53D6\u308B\u3053\u3068\u3082\u3067\u304D\u3001\u305D\u306E\u5834\u5408\u30A8\u30E9\u30FC\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304B\u3089\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u3068\u30A8\u30E9\u30FC\u4F4D\u7F6E\u304C\u53D6\u308A\u51FA\u3055\u308C\u308B\u3002\n */\nexport class NakoLogger {\n constructor() {\n this.listeners = [];\n this.logs = '';\n this.position = '';\n }\n getErrorLogs() {\n return [this.logs.replace(/\\s+$/, ''), this.position];\n }\n clear() {\n this.logs = '';\n this.position = '';\n }\n /**\n * send\u30E1\u30BD\u30C3\u30C9\u3067\u9001\u3089\u308C\u305F\u60C5\u5831\u3092\u53D7\u3051\u53D6\u308B\u30B3\u30FC\u30EB\u30D0\u30C3\u30AF\u3092\u8A2D\u5B9A\u3059\u308B\u3002\n * @param levelStr\n * @param callback\n */\n addListener(levelStr, callback) {\n const level = LogLevel.fromS(levelStr);\n this.listeners.push({ level, callback });\n }\n /**\n * addListener\u30E1\u30BD\u30C3\u30C9\u3067\u8A2D\u5B9A\u3057\u305F\u30B3\u30FC\u30EB\u30D0\u30C3\u30AF\u3092\u53D6\u308A\u5916\u3059\u3002\n * @param {LogListener} callback\n */\n removeListener(callback) {\n this.listeners = this.listeners.filter((l) => l.callback !== callback);\n }\n /** \u672C\u4F53\u958B\u767A\u6642\u306E\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\uFF08debug\u3088\u308A\u66F4\u306B\u8A73\u7D30\u306A\u60C5\u5831\uFF09\n * @param {string} message\n * @param {Position | null} position\n */\n trace(message, position = null) {\n this.sendI(LogLevel.trace, `${NakoColors.color.bold}[\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\uFF08\u8A73\u7D30\uFF09]${NakoColors.color.reset}${stringifyPosition(position)}${message}`, position);\n }\n /** \u672C\u4F53\u958B\u767A\u6642\u306E\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\n * @param {string} message\n * @param {Position | null} position\n */\n debug(message, position = null) {\n this.sendI(LogLevel.debug, `${NakoColors.color.bold}[\u30C7\u30D0\u30C3\u30B0\u60C5\u5831]${NakoColors.color.reset}${stringifyPosition(position)}${message}`, position);\n }\n /** \u30E6\u30FC\u30B6\u30FC\u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\uFF08\u3042\u307E\u308A\u91CD\u8981\u3067\u306F\u306A\u3044\u3082\u306E\uFF09\n * @param {string} message\n * @param {Position | null} position\n */\n info(message, position = null) {\n this.sendI(LogLevel.info, `${NakoColors.color.bold}${NakoColors.color.blue}[\u60C5\u5831]${NakoColors.color.reset}${stringifyPosition(position)}${message}`, position);\n }\n /** \u30E6\u30FC\u30B6\u30FC\u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\uFF08\u91CD\u8981\u306A\u3082\u306E\uFF09\n * @param {string} message\n * @param {Position | null} position\n */\n warn(message, position = null) {\n this.sendI(LogLevel.warn, `${NakoColors.color.bold}${NakoColors.color.green}[\u8B66\u544A]${NakoColors.color.reset}${stringifyPosition(position)}${message}`, position);\n }\n /** \u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\n * @param {string | Error} message\n * @param {Position | null} position\n */\n error(message, position = null) {\n // NakoError\u304B\u5224\u5B9A (`message instanceof NakoError`\u3067\u306F\u5224\u5B9A\u3067\u304D\u306A\u3044\u5834\u5408\u304C\u3042\u308B)\n if (message instanceof Error && typeof message.type === 'string') {\n // NakoError\u304B\n const etype = message.type;\n switch (etype) {\n case 'NakoRuntimeError':\n case 'NakoError':\n if (message instanceof NakoError) {\n const e = message;\n let pos = position;\n if (pos === null || pos === undefined) {\n pos = { file: e.file, line: e.line || 0, startOffset: 0, endOffset: 0 };\n }\n this.sendI(LogLevel.error, e.message, pos);\n return;\n }\n }\n }\n if (message instanceof Error) {\n // \u4E00\u822C\u306E\u30A8\u30E9\u30FC\u306E\u5834\u5408\u306F\u3001message\u306E\u307F\u53D6\u5F97\u3067\u304D\u308B\u3002\n message = message.message;\n }\n this.sendI(LogLevel.error, `${NakoColors.color.bold}${NakoColors.color.red}[\u30A8\u30E9\u30FC]${NakoColors.color.reset}${stringifyPosition(position)}${message}`, position);\n }\n /** RuntimeError\u3092\u751F\u6210\u3059\u308B */\n runtimeError(error, posStr) {\n const e = new NakoRuntimeError(error, posStr);\n return e;\n }\n /** \u30E6\u30FC\u30B6\u30FC\u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\uFF08\u3059\u3079\u3066)\n * @param {string} message\n * @param {Position | null} position\n */\n stdout(message, position = null) {\n this.sendI(LogLevel.stdout, `${message}`, position);\n }\n /** \u6307\u5B9A\u3057\u305Flevel\u306Elistener\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u9001\u308B\u3002html\u3084browserConsole\u306F\u7121\u3051\u308C\u3070nodeConsole\u304B\u3089\u751F\u6210\u3059\u308B\u3002 */\n send(levelStr, nodeConsole, position, html = null, browserConsole = null) {\n const i = LogLevel.fromS(levelStr);\n this.sendI(i, nodeConsole, position, html, browserConsole);\n }\n /** \u6307\u5B9A\u3057\u305Flevel\u306Elistener\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u9001\u308B\u3002html\u3084browserConsole\u306F\u7121\u3051\u308C\u3070nodeConsole\u304B\u3089\u751F\u6210\u3059\u308B\u3002 */\n sendI(level, nodeConsole, position, html = null, browserConsole = null) {\n const makeData = () => {\n // nodeConsole\u304B\u3089noColor, nodeCondole\u306A\u3069\u306E\u5F62\u5F0F\u3092\u751F\u6210\u3059\u308B\u3002\n const formats = NakoColors.convertColorTextFormat(nodeConsole);\n // \u30ED\u30B0\u304C\u8907\u6570\u884C\u304B\u3089\u69CB\u6210\u3055\u308C\u308B\u5834\u5408\u306F\u3001html\u3067\u306E\u8868\u73FE\u306Bborder\u3092\u8A2D\u5B9A\u3059\u308B\u3002\n let style = '';\n if (nodeConsole.includes('\\n')) {\n style += 'border-top: 1px solid #8080806b; border-bottom: 1px solid #8080806b;';\n }\n // \u5404\u30A4\u30D9\u30F3\u30C8\u30EA\u30B9\u30CA\u30FC\u304C\u53D7\u3051\u53D6\u308B\u30C7\u30FC\u30BF\n const data = {\n noColor: formats.noColor,\n nodeConsole: formats.nodeConsole,\n browserConsole: browserConsole || formats.browserConsole,\n html: `<div style=\"${style}\">` + (html || formats.html) + '</div>', // \u5404\u884C\u3092 style: block \u3067\u8868\u793A\u3059\u308B\u305F\u3081\u306B\u3001<div>\u3067\u56F2\u3080\u3002\n level: LogLevel.toString(level),\n position\n };\n return data;\n };\n // \u30A8\u30E9\u30FC\u306A\u3089\u30ED\u30B0\u306B\u8FFD\u52A0\n if (level === LogLevel.error) {\n const data = makeData();\n this.logs += data.noColor + '\\n';\n if (position && this.position !== null) {\n this.position = `l${position.line}:${position.file}`;\n }\n }\n // \u767B\u9332\u3057\u305F\u30EA\u30B9\u30CA\u30FC\u306B\u901A\u77E5\u3059\u308B\n for (const l of this.listeners) {\n if (l.level <= level) {\n const data = makeData();\n l.callback(data);\n }\n }\n }\n}\n", "import { NakoColors } from './nako_colors.mjs';\n/**\n * \u30B3\u30F3\u30D1\u30A4\u30EB\u3055\u308C\u305F\u306A\u3067\u3057\u3053\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u3067\u3001\u30B0\u30ED\u30FC\u30D0\u30EB\u7A7A\u9593\u306Ethis\u304C\u6307\u3059\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n */\nexport class NakoGlobal {\n /**\n * @param compiler\n * @param gen\n */\n constructor(compiler, gen, guid = 0) {\n this.guid = guid;\n this.lastJSCode = '';\n // \u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u304B\u3089\u7DE8\u96C6\u3055\u308C\u308B\u5909\u6570\n this.__locals = new Map();\n this.__varslist = [\n compiler.newVaiables(compiler.__varslist[0]), // system\n compiler.newVaiables(compiler.__varslist[1]), // global\n compiler.newVaiables(compiler.__varslist[2]) // local [2][3][4][5] ...\n ];\n this.numFailures = 0;\n this.index = 0;\n this.nextIndex = -1;\n this.__code = [];\n this.__callstack = [];\n this.__stack = [];\n this.__labels = [];\n this.__genMode = gen.genMode;\n // \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u306E\u5F15\u304D\u7D99\u304E\n this.version = compiler.version;\n this.coreVersion = compiler.coreVersion;\n // PluginSystem\u3068destroy()\u304B\u3089\u53C2\u7167\u3059\u308B\u305F\u3081\n this.__module = { ...compiler.__module }; // shallow copy\n this.pluginfiles = { ...compiler.getPluginfiles() };\n // PluginWorker\u3067\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u95A2\u6570\u306EJavaScript\u30B3\u30FC\u30C9\u3092worker\u306E\u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3078\u30B3\u30D4\u30FC\u3059\u308B\u305F\u3081\n this.gen = gen;\n // \u4EE5\u4E0B\u306E\u30E1\u30BD\u30C3\u30C9\u3067\u4F7F\u3046\u305F\u3081\n this.logger = compiler.getLogger();\n this.compiler = compiler;\n this.josiList = compiler.josiList;\n this.reservedWords = compiler.reservedWords;\n }\n clearLog() {\n this.__varslist[0].set('\u8868\u793A\u30ED\u30B0', '');\n }\n get log() {\n let s = this.__varslist[0].get('\u8868\u793A\u30ED\u30B0');\n s = s.replace(/\\s+$/, '');\n return s;\n }\n /**\n * \u30B7\u30B9\u30C6\u30E0\u5909\u6570\u3092\u8A2D\u5B9A\u3059\u308B\n * @param name \u30B7\u30B9\u30C6\u30E0\u5909\u6570\u540D\n * @param value \u8A2D\u5B9A\u3057\u305F\u3044\u5024\n */\n __setSysVar(name, value) {\n this.__varslist[0].set(name, value);\n }\n /**\n * \u30B7\u30B9\u30C6\u30E0\u5909\u6570\u3092\u53D6\u5F97\u3059\u308B\n * @param name \u30B7\u30B9\u30C6\u30E0\u5909\u6570\u540D\n * @returns \u30B7\u30B9\u30C6\u30E0\u5909\u6570\u306E\u5024\n */\n __getSysVar(name) {\n return this.__varslist[0].get(name);\n }\n /**\n * \u300C\u30CA\u30C7\u30B7\u30B3\u300D\u547D\u4EE4\u306E\u305F\u3081\u306E\u30E1\u30BD\u30C3\u30C9\n */\n runEx(code, fname, opts, preCode = '') {\n // \u30B9\u30B3\u30FC\u30D7\u3092\u5171\u6709\u3057\u3066\u5B9F\u884C\n opts.preCode = preCode;\n opts.nakoGlobal = this;\n return this.compiler.runSync(code, fname, opts);\n }\n async runAsync(code, fname, opts, preCode = '') {\n // \u30B9\u30B3\u30FC\u30D7\u3092\u5171\u6709\u3057\u3066\u5B9F\u884C\n opts.preCode = preCode;\n opts.nakoGlobal = this;\n return await this.compiler.runAsync(code, fname, opts);\n }\n /**\n * \u30C6\u30B9\u30C8\u5B9F\u884C\u306E\u305F\u3081\u306E\u30E1\u30BD\u30C3\u30C9\n * @param {{ name: string, f: () => void }[]} tests\n */\n _runTests(tests) {\n let text = `${NakoColors.color.bold}\u30C6\u30B9\u30C8\u306E\u5B9F\u884C\u7D50\u679C${NakoColors.color.reset}\\n`;\n let pass = 0;\n let numFailures = 0;\n for (const t of tests) {\n try {\n t.f();\n text += `${NakoColors.color.green}\u2714${NakoColors.color.reset} ${t.name}\\n`;\n pass++;\n }\n catch (err) {\n text += `${NakoColors.color.red}\u2613${NakoColors.color.reset} ${t.name}: ${err.message}\\n`;\n numFailures++;\n }\n }\n if (numFailures > 0) {\n text += `${NakoColors.color.green}\u6210\u529F ${pass}\u4EF6 ${NakoColors.color.red}\u5931\u6557 ${numFailures}\u4EF6`;\n }\n else {\n text += `${NakoColors.color.green}\u6210\u529F ${pass}\u4EF6`;\n }\n this.numFailures = numFailures;\n this.logger.stdout(text);\n }\n /**\n * \u6BCE\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u300C!\u30AF\u30EA\u30A2\u300D\u95A2\u6570\u3092\u5B9F\u884C\n */\n clearPlugins() {\n // \u5B9F\u884C\u3057\u3066\u3044\u308B\u95A2\u6570\u3092\u3059\u3079\u3066\u7D42\u4E86\u3055\u305B\u308B\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30AF\u30EA\u30A2\u95A2\u6570\u3092\u547C\u3073\u51FA\u3059\n const clearName = '!\u30AF\u30EA\u30A2';\n for (const pname in this.pluginfiles) {\n const po = this.__module[pname];\n if (po[clearName] && po[clearName].fn) {\n po[clearName].fn(this);\n }\n }\n }\n /**\n * \u5404\u7A2E\u30EA\u30BB\u30C3\u30C8\u51E6\u7406\n */\n reset() {\n this.clearPlugins();\n }\n destroy() {\n this.reset();\n }\n}\n", "// \u5B9F\u969B\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u5B9A\u7FA9 (\u81EA\u52D5\u751F\u6210\u3055\u308C\u308B\u306E\u3067\u4EE5\u4E0B\u3092\u7DE8\u96C6\u3057\u306A\u3044)\nconst coreVersion = {\n version: '3.6.14',\n major: 3,\n minor: 6,\n patch: 14\n};\nexport default coreVersion;\n", "import { NakoRuntimeError } from './nako_errors.mjs';\nexport default {\n 'meta': {\n type: 'const',\n value: {\n pluginName: 'plugin_system', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\n description: '\u30B7\u30B9\u30C6\u30E0\u95A2\u9023\u306E\u547D\u4EE4\u3092\u63D0\u4F9B\u3059\u308B\u30D7\u30E9\u30B0\u30A4\u30F3', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8AAC\u660E\n pluginVersion: '3.6.0', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\n nakoRuntime: ['wnako', 'cnako', 'phpnako'], // \u5BFE\u8C61\u30E9\u30F3\u30BF\u30A4\u30E0\n nakoVersion: '3.6.0' // \u8981\u6C42\u306A\u3067\u3057\u3053\u30D0\u30FC\u30B8\u30E7\u30F3\n }\n },\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: false,\n fn: function (sys) {\n // \u30B7\u30B9\u30C6\u30E0\u5909\u6570\u306E\u521D\u671F\u5316\n const system = sys;\n sys.isDebug = false;\n // \u30B7\u30B9\u30C6\u30E0\u5909\u6570\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u305F\u3081\u306E\u95A2\u6570\u3092\u5B9A\u7FA9\n sys.__setSysVar = (name, value) => system.__v0.set(name, value);\n sys.__getSysVar = (name, defaultValue = undefined) => {\n const v = system.__v0.get(name);\n if (v === undefined) {\n return defaultValue;\n }\n return v;\n };\n sys.__setSore = (v) => { sys.__vars.set('\u305D\u308C', v); return v; };\n sys.__getSore = () => sys.__vars.get('\u305D\u308C');\n sys.tags = {}; // \u30BF\u30B0 - \u30D7\u30E9\u30B0\u30A4\u30F3\u5074\u3067\u81EA\u7531\u306B\u4F7F\u3048\u308B\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n // \u8A00\u8A9E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u8A2D\u5B9A\n sys.__setSysVar('\u30CA\u30C7\u30B7\u30B3\u30D0\u30FC\u30B8\u30E7\u30F3', sys.version);\n sys.__setSysVar('\u30CA\u30C7\u30B7\u30B3\u8A00\u8A9E\u30D0\u30FC\u30B8\u30E7\u30F3', sys.coreVersion);\n if (!system.__namespaceList) {\n system.__namespaceList = [];\n }\n // \u306A\u3067\u3057\u3053\u306E\u95A2\u6570\u3084\u5909\u6570\u3092\u63A2\u3057\u3066\u8FD4\u3059\n sys.__findVar = function (nameStr, def) {\n if (typeof nameStr === 'function') {\n return nameStr;\n }\n // \u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092\u63A2\u3059\n const localVar = system.__locals.get(nameStr);\n if (localVar) {\n return localVar;\n }\n // \u540D\u524D\u7A7A\u9593\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\n if (nameStr.indexOf('__') >= 0) {\n for (let i = 2; i >= 0; i--) {\n const varScope = system.__varslist[i];\n const scopeValue = varScope.get(nameStr);\n if (scopeValue) {\n return scopeValue;\n }\n }\n return def;\n }\n // \u540D\u524D\u7A7A\u9593\u3092\u53C2\u7167\u3057\u3066\u95A2\u6570\u30FB\u5909\u6570\u540D\u3092\u89E3\u6C7A\u3059\u308B\n const modList = system.__modList ? system.__modList : [system.__modName];\n for (const modName of modList) {\n const gname = modName + '__' + nameStr;\n for (let i = 2; i >= 0; i--) {\n const scope = system.__varslist[i];\n const scopeValue = scope.get(gname);\n if (scopeValue) {\n return scopeValue;\n }\n }\n }\n return def;\n };\n // \u6587\u5B57\u5217\u304B\u3089\u95A2\u6570\u3092\u63A2\u3059\n sys.__findFunc = function (nameStr, parentFunc) {\n const f = sys.__findVar(nameStr);\n if (typeof f === 'function') {\n return f;\n }\n throw new Error(`\u300E${parentFunc}\u300F\u306B\u5B9F\u884C\u3067\u304D\u306A\u3044\u95A2\u6570\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002`);\n };\n // \u30B7\u30B9\u30C6\u30E0\u95A2\u6570\u3092\u5B9F\u884C\n sys.__exec = function (func, params) {\n // \u30B7\u30B9\u30C6\u30E0\u547D\u4EE4\u3092\u512A\u5148\n const f0 = sys.__getSysVar(func);\n if (f0) {\n return f0.apply(this, params);\n }\n // \u30B0\u30ED\u30FC\u30D0\u30EB\u30FB\u30ED\u30FC\u30AB\u30EB\u3092\u63A2\u3059\n const f = sys.__findVar(func);\n if (!f) {\n throw new Error('\u30B7\u30B9\u30C6\u30E0\u95A2\u6570\u3067\u30A8\u30A4\u30EA\u30A2\u30B9\u306E\u6307\u5B9A\u30DF\u30B9:' + func);\n }\n return f.apply(this, params);\n };\n // \u30BF\u30A4\u30DE\u30FC\u306B\u95A2\u3059\u308B\u51E6\u7406(\u30BF\u30A4\u30DE\u30FC\u306F\u300C!\u30AF\u30EA\u30A2\u300D\u3067\u5168\u90E8\u505C\u6B62\u3059\u308B)\n sys.__timeout = [];\n sys.__interval = [];\n // \u65E5\u4ED8\u51E6\u7406\u306A\u3069\u306B\u4F7F\u3046\n const z2 = sys.__zero2 = (s) => {\n s = '00' + s;\n return s.substring(s.length - 2);\n };\n sys.__zero = (s, keta) => {\n let zeroS = '';\n for (let i = 0; i < keta; i++) {\n zeroS += '0';\n }\n s = zeroS + s;\n return s.substring(s.length - keta);\n };\n sys.__formatDate = (t) => {\n return t.getFullYear() + '/' + z2(t.getMonth() + 1) + '/' + z2(t.getDate());\n };\n sys.__formatTime = (t) => {\n return z2(t.getHours()) + ':' + z2(t.getSeconds()) + ':' + z2(t.getMinutes());\n };\n sys.__formatDateTime = (t, fmt) => {\n const dateStr = t.getFullYear() + '/' + z2(t.getMonth() + 1) + '/' + z2(t.getDate());\n const timeStr = z2(t.getHours()) + ':' + z2(t.getMinutes()) + ':' + z2(t.getSeconds());\n if (fmt.match(/^\\d+\\/\\d+\\/\\d+\\s+\\d+:\\d+:\\d+$/)) {\n return dateStr + ' ' + timeStr;\n }\n if (fmt.match(/^\\d+\\/\\d+\\/\\d+$/)) {\n return dateStr;\n }\n if (fmt.match(/^\\d+:\\d+:\\d+$/)) {\n return timeStr;\n }\n return dateStr + ' ' + timeStr;\n };\n sys.__str2date = (s) => {\n // trim\n s = ('' + s).replace(/(^\\s+|\\s+$)/, '');\n // is unix time\n if (s.match(/^(\\d+|\\d+\\.\\d+)$/)) {\n return new Date(parseFloat(s) * 1000);\n }\n // is time ?\n if (s.match(/^\\d+:\\d+(:\\d+)?$/)) {\n const t = new Date();\n const a = (s + ':0').split(':');\n return new Date(t.getFullYear(), t.getMonth(), t.getDate(), parseInt(a[0]), parseInt(a[1]), parseInt(a[2]));\n }\n // replace splitter to '/'\n s = s.replace(/[\\s:\\-T]/g, '/');\n s += '/0/0/0'; // \u65E5\u4ED8\u3060\u3051\u306E\u3068\u304D\u306E\u305F\u3081\u306B\u6642\u9593\u5206\u3092\u8DB3\u3059\n const a = s.split('/');\n return new Date(parseInt(a[0]), parseInt(a[1]) - 1, parseInt(a[2]), parseInt(a[3]), parseInt(a[4]), parseInt(a[5]));\n };\n // \u300E\u7D99\u7D9A\u8868\u793A\u300F\u306E\u305F\u3081\u306E\u4E00\u6642\u5909\u6570(\u300E\u8868\u793A\u300F\u5B9F\u884C\u3067\u521D\u671F\u5316)\n sys.__printPool = '';\n // \u6697\u9ED9\u306E\u578B\u5909\u63DB\u3067\u8DB3\u3057\u7B97\u3092\u884C\u3046\u3068\u304D\u306B\u4F7F\u7528\u3002bigint \u306F\u305D\u306E\u307E\u307E\u3001\u305D\u306E\u4ED6\u306F number \u306B\u81EA\u52D5\u5909\u63DB\n sys.__parseFloatOrBigint = (v) => {\n return (typeof v) === 'bigint' ? v : parseFloat(v);\n };\n // undefined\u30C1\u30A7\u30C3\u30AF\n system.chk = (value, constId) => {\n if (typeof value === 'undefined') {\n const cp = system.constPools[constId];\n const [msgNo, msgArgs, fileNo, lineNo] = cp;\n let msg = system.constPoolsTemplate[msgNo];\n for (const i in msgArgs) {\n const arg = system.constPoolsTemplate[msgArgs[i]];\n msg = msg.split(`$${i}`).join(arg);\n }\n const fileStr = system.constPoolsTemplate[fileNo];\n sys.logger.warn(msg, { file: fileStr, line: lineNo });\n }\n return value;\n };\n // eval function\n sys.__evalJS = (src) => {\n try {\n return eval(src); // eslint-disable-line\n }\n catch (e) {\n console.error('[eval]', e);\n return null;\n }\n };\n }\n },\n '!\u30AF\u30EA\u30A2': {\n type: 'func',\n josi: [],\n pure: false,\n fn: function (sys) {\n if (sys.__exec) {\n sys.__exec('\u5168\u30BF\u30A4\u30DE\u30FC\u505C\u6B62', [sys]);\n }\n sys.__setSysVar('\u8868\u793A\u30ED\u30B0', '');\n }\n },\n // @\u30B7\u30B9\u30C6\u30E0\u5B9A\u6570\n '\u30CA\u30C7\u30B7\u30B3\u30D0\u30FC\u30B8\u30E7\u30F3': { type: 'const', value: '?' }, // @\u306A\u3067\u3057\u3053\u3070\u30FC\u3058\u3087\u3093\n '\u30CA\u30C7\u30B7\u30B3\u8A00\u8A9E\u30D0\u30FC\u30B8\u30E7\u30F3': { type: 'const', value: '?' }, // @\u306A\u3067\u3057\u3053\u3052\u3093\u3054\u3070\u30FC\u3058\u3087\u3093\n '\u30CA\u30C7\u30B7\u30B3\u30A8\u30F3\u30B8\u30F3': { type: 'const', value: 'nadesi.com/v3' }, // @\u306A\u3067\u3057\u3053\u3048\u3093\u3058\u3093\n '\u30CA\u30C7\u30B7\u30B3\u7A2E\u985E': { type: 'const', value: '?' }, // @\u306A\u3067\u3057\u3053\u3057\u3085\u308B\u3044\n '\u306F\u3044': { type: 'const', value: 1 }, // @\u306F\u3044\n '\u3044\u3044\u3048': { type: 'const', value: 0 }, // @\u3044\u3044\u3048\n '\u771F': { type: 'const', value: 1 }, // @\u3057\u3093\n '\u507D': { type: 'const', value: 0 }, // @\u304E\n '\u6C38\u9060': { type: 'const', value: 1 }, // @\u3048\u3044\u3048\u3093\n '\u30AA\u30F3': { type: 'const', value: 1 }, // @\u304A\u3093\n '\u30AA\u30D5': { type: 'const', value: 0 }, // @\u304A\u3075\n '\u6539\u884C': { type: 'const', value: '\\n' }, // @\u304B\u3044\u304E\u3087\u3046\n '\u30BF\u30D6': { type: 'const', value: '\\t' }, // @\u305F\u3076\n '\u30AB\u30C3\u30B3': { type: 'const', value: '\u300C' }, // @\u304B\u3063\u3053\n '\u30AB\u30C3\u30B3\u9589': { type: 'const', value: '\u300D' }, // @\u304B\u3063\u3053\u3068\u3058\n '\u6CE2\u30AB\u30C3\u30B3': { type: 'const', value: '{' }, // @\u306A\u307F\u304B\u3063\u3053\n '\u6CE2\u30AB\u30C3\u30B3\u9589': { type: 'const', value: '}' }, // @\u306A\u307F\u304B\u3063\u3053\u3068\u3058\n 'OK': { type: 'const', value: true }, // @OK\n 'NG': { type: 'const', value: false }, // @NG\n '\u30AD\u30E3\u30F3\u30BB\u30EB': { type: 'const', value: 0 }, // @\u304D\u3083\u3093\u305B\u308B\n 'TRUE': { type: 'const', value: true }, // @TRUE\n 'FALSE': { type: 'const', value: false }, // @FALSE\n 'true': { type: 'const', value: true }, // @true\n 'false': { type: 'const', value: false }, // @false\n 'PI': { type: 'const', value: Math.PI }, // @PI\n '\u7A7A': { type: 'const', value: '' }, // @\u304B\u3089\n 'NULL': { type: 'const', value: null }, // @NULL\n 'undefined': { type: 'const', value: undefined }, // @undefined\n '\u672A\u5B9A\u7FA9': { type: 'const', value: undefined }, // @\u307F\u3066\u3044\u304E\n '\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8': { type: 'const', value: '' }, // @\u3048\u3089\u30FC\u3081\u3063\u305B\u30FC\u3058\n '\u5BFE\u8C61': { type: 'const', value: '' }, // @\u305F\u3044\u3057\u3087\u3046\n '\u5BFE\u8C61\u30AD\u30FC': { type: 'const', value: '' }, // @\u305F\u3044\u3057\u3087\u3046\u304D\u30FC\n '\u56DE\u6570': { type: 'const', value: '' }, // @\u304B\u3044\u3059\u3046\n 'CR': { type: 'const', value: '\\r' }, // @CR\n 'LF': { type: 'const', value: '\\n' }, // @LF\n '\u975E\u6570': { type: 'const', value: NaN }, // @\u3072\u3059\u3046\n '\u7121\u9650\u5927': { type: 'const', value: Infinity }, // @\u3080\u3052\u3093\u3060\u3044\n '\u623B\u5024\u7121': { type: 'const', value: 0 }, // @\u3082\u3069\u308A\u3061\u306A\u3057\n '\u623B\u5024\u6709': { type: 'const', value: 1 }, // @\u3082\u3069\u308A\u3061\u3042\u308A\n '\u7A7A\u914D\u5217': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n return [];\n }\n },\n '\u7A7A\u8F9E\u66F8': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n return {};\n }\n },\n '\u7A7A\u30CF\u30C3\u30B7\u30E5': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n return {};\n }\n },\n '\u7A7A\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8': {\n type: 'func',\n josi: [],\n pure: false,\n fn: function (sys) {\n return sys.__exec('\u7A7A\u30CF\u30C3\u30B7\u30E5', [sys]);\n }\n },\n // @\u6A19\u6E96\u51FA\u529B\n '\u8868\u793A': {\n type: 'func',\n josi: [['\u3092', '\u3068']],\n pure: true,\n fn: function (s, sys) {\n // \u7D99\u7D9A\u8868\u793A\u306E\u4E00\u6642\u30D7\u30FC\u30EB\u3092\u51FA\u529B\n s = sys.__printPool + s;\n sys.__printPool = '';\n //\n sys.__setSysVar('\u8868\u793A\u30ED\u30B0', sys.__getSysVar('\u8868\u793A\u30ED\u30B0') + s + '\\n');\n sys.logger.send('stdout', s + '');\n },\n return_none: true\n },\n '\u7D99\u7D9A\u8868\u793A': {\n type: 'func',\n josi: [['\u3092', '\u3068']],\n pure: true,\n fn: function (s, sys) {\n sys.__printPool += s;\n },\n return_none: true\n },\n '\u9023\u7D9A\u8868\u793A': {\n type: 'func',\n josi: [['\u3068', '\u3092']],\n isVariableJosi: true,\n pure: true,\n fn: function (...a) {\n const sys = a.pop();\n const v = a.join('');\n sys.__exec('\u8868\u793A', [v, sys]);\n },\n return_none: true\n },\n '\u9023\u7D9A\u7121\u6539\u884C\u8868\u793A': {\n type: 'func',\n josi: [['\u3068', '\u3092']],\n isVariableJosi: true,\n pure: true,\n fn: function (...a) {\n const sys = a.pop();\n const v = a.join('');\n sys.__exec('\u7D99\u7D9A\u8868\u793A', [v, sys]);\n },\n return_none: true\n },\n '\u8868\u793A\u30ED\u30B0': { type: 'const', value: '' }, // @\u3072\u3087\u3046\u3058\u308D\u3050\n '\u8868\u793A\u30ED\u30B0\u30AF\u30EA\u30A2': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n sys.__setSysVar('\u8868\u793A\u30ED\u30B0', '');\n },\n return_none: true\n },\n '\u8A00': {\n type: 'func',\n josi: [['\u3092', '\u3068']],\n pure: true,\n fn: function (s, sys) {\n sys.logger.send('stdout', s + '');\n },\n return_none: true\n },\n '\u30B3\u30F3\u30BD\u30FC\u30EB\u8868\u793A': {\n type: 'func',\n josi: [['\u3092', '\u3068']],\n pure: true,\n fn: function (s) {\n console.log(s);\n },\n return_none: true\n },\n // @\u56DB\u5247\u6F14\u7B97\n '\u8DB3': {\n type: 'func',\n josi: [['\u306B', '\u3068'], ['\u3092']],\n isVariableJosi: false,\n pure: true,\n fn: function (a, b) {\n return a + b;\n }\n },\n '\u5F15': {\n type: 'func',\n josi: [['\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (a, b) {\n return a - b;\n }\n },\n '\u639B': {\n type: 'func',\n josi: [['\u306B', '\u3068'], ['\u3092']],\n pure: true,\n fn: function (a, b) {\n // \u6570\u5024\u306E\u639B\u3051\u7B97\n if (typeof a === 'number') {\n return a * b;\n }\n // \u6587\u5B57\u5217\u306E\u639B\u3051\u7B97(\u6587\u5B57\u5217\u306E\u7E70\u308A\u8FD4\u3057)\n if (typeof a === 'string') {\n let s = '';\n for (let i = 0; i < parseInt(b); i++) {\n s += a;\n }\n return s;\n }\n // \u914D\u5217\u306E\u7E70\u308A\u8FD4\u3057\n if (a instanceof Array) {\n const aa = [];\n for (let i = 0; i < parseInt(b); i++) {\n aa.push(...a);\n }\n return aa;\n }\n return a * b;\n }\n },\n '\u500D': {\n type: 'func',\n josi: [['\u306E', '\u3092'], ['']],\n pure: true,\n fn: function (a, b) {\n return a * b;\n }\n },\n '\u5272': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (a, b) {\n return a / b;\n }\n },\n '\u5272\u4F59': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (a, b) {\n return a % b;\n }\n },\n '\u5076\u6570': {\n type: 'func',\n josi: [['\u304C']],\n pure: true,\n fn: function (a) {\n return (parseInt(a) % 2 === 0);\n }\n },\n '\u5947\u6570': {\n type: 'func',\n josi: [['\u304C']],\n pure: true,\n fn: function (a) {\n return (parseInt(a) % 2 === 1);\n }\n },\n '\u4E8C\u4E57': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (a) {\n return a * a;\n }\n },\n '\u3079\u304D\u4E57': {\n type: 'func',\n josi: [['\u306E'], ['\u306E']],\n pure: true,\n fn: function (a, b) {\n return Math.pow(a, b);\n }\n },\n '\u4EE5\u4E0A': {\n type: 'func',\n josi: [['\u304C'], ['']],\n pure: true,\n fn: function (a, b) {\n return a >= b;\n }\n },\n '\u4EE5\u4E0B': {\n type: 'func',\n josi: [['\u304C'], ['']],\n pure: true,\n fn: function (a, b) {\n return a <= b;\n }\n },\n '\u672A\u6E80': {\n type: 'func',\n josi: [['\u304C'], ['']],\n pure: true,\n fn: function (a, b) {\n return a < b;\n }\n },\n '\u8D85': {\n type: 'func',\n josi: [['\u304C'], ['']],\n pure: true,\n fn: function (a, b) {\n return a > b;\n }\n },\n '\u7B49': {\n type: 'func',\n josi: [['\u304C'], ['\u3068']],\n pure: true,\n fn: function (a, b) {\n return a === b;\n }\n },\n '\u7B49\u7121': {\n type: 'func',\n josi: [['\u304C'], ['\u3068']],\n pure: true,\n fn: function (a, b) {\n return a !== b;\n }\n },\n '\u4E00\u81F4': {\n type: 'func',\n josi: [['\u304C'], ['\u3068']],\n pure: true,\n fn: function (a, b) {\n // \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u5834\u5408\u3001JSON\u306B\u5909\u63DB\u3057\u3066\u6BD4\u8F03\n if (typeof (a) === 'object') {\n const jsonA = JSON.stringify(a);\n const jsonB = JSON.stringify(b);\n return jsonA === jsonB;\n }\n return a === b;\n }\n },\n '\u4E0D\u4E00\u81F4': {\n type: 'func',\n josi: [['\u304C'], ['\u3068']],\n pure: true,\n fn: function (a, b) {\n // \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u5834\u5408\u3001JSON\u306B\u5909\u63DB\u3057\u3066\u6BD4\u8F03\n if (typeof (a) === 'object') {\n const jsonA = JSON.stringify(a);\n const jsonB = JSON.stringify(b);\n return jsonA !== jsonB;\n }\n return a !== b;\n }\n },\n '\u7BC4\u56F2\u5185': {\n type: 'func',\n josi: [['\u304C'], ['\u304B\u3089'], ['\u306E', '\u307E\u3067\u306E']],\n pure: true,\n fn: function (v, a, b) {\n return (a <= v) && (v <= b);\n }\n },\n '\u7BC4\u56F2': {\n type: 'func',\n josi: [['\u304B\u3089'], ['\u306E', '\u307E\u3067\u306E']],\n pure: true,\n fn: function (a, b) {\n return {\n '\u5148\u982D': a,\n '\u672B\u5C3E': b\n };\n }\n },\n '\u9023\u7D9A\u52A0\u7B97': {\n type: 'func',\n josi: [['\u3092'], ['\u306B', '\u3068']],\n isVariableJosi: true,\n pure: true,\n fn: function (b, ...a) {\n a.pop(); // \u5FC5\u305A\u672B\u5C3E\u306B sys \u304C\u3042\u308B\u306E\u3067\u3001\u672B\u5C3E\u306E\u30B7\u30B9\u30C6\u30E0\u5909\u6570\u3092\u9664\u5916\n a.push(b);\n return a.reduce((p, c) => p + c);\n }\n },\n // @\u656C\u8A9E\n '\u304F\u3060\u3055\u3044': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n if (!sys.__reisetu) {\n sys.__reisetu = 0;\n }\n sys.__reisetu++;\n },\n return_none: true\n },\n '\u304A\u9858': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n if (!sys.__reisetu) {\n sys.__reisetu = 0;\n }\n sys.__reisetu++;\n },\n return_none: true\n },\n '\u3067\u3059': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n if (!sys.__reisetu) {\n sys.__reisetu = 0;\n }\n sys.__reisetu++;\n },\n return_none: true\n },\n '\u62DD\u5553': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n sys.__reisetu = 0;\n },\n return_none: true\n },\n '\u656C\u5177': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n sys.__reisetu += 100; // bonus point\n },\n return_none: true\n },\n '\u793C\u7BC0\u30EC\u30D9\u30EB\u53D6\u5F97': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n if (!sys.__reisetu) {\n sys.__reisetu = 0;\n }\n return sys.__reisetu;\n }\n },\n // @\u7279\u6B8A\u547D\u4EE4\n 'JS\u5B9F\u884C': {\n type: 'func',\n josi: [['\u3092', '\u3067']],\n pure: true,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fn: function (src, sys) {\n // [\u30E1\u30E2] \u2191\u306Esys \u306F eval \u306E\u4E2D\u3067\u3082\u6709\u52B9\u306A\u306E\u3067\u6D88\u3055\u306A\u3044!!\n // https://github.com/kujirahand/nadesiko3/issues/1237\n return sys.__evalJS(src); // eslint-disable-line\n }\n },\n 'JS\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E']],\n pure: false,\n fn: function (name, sys) {\n return sys.__findVar(name, null);\n }\n },\n 'JS\u95A2\u6570\u5B9F\u884C': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n fn: function (name, args, sys) {\n // name\u304C\u6587\u5B57\u5217\u306A\u3089eval\u3057\u3066\u95A2\u6570\u3092\u5F97\u308B\n // eslint-disable-next-line no-eval\n if (typeof name === 'string') {\n name = sys.__evalJS(name);\n }\n if (typeof name !== 'function') {\n throw new Error('JS\u95A2\u6570\u53D6\u5F97\u3067\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093\u3002');\n }\n // args\u304CArray\u3067\u306A\u3051\u308C\u3070Array\u306B\u5909\u63DB\u3059\u308B\n if (!(args instanceof Array)) {\n args = [args];\n }\n // \u5B9F\u884C\n // eslint-disable-next-line prefer-spread\n return name.apply(null, args);\n }\n },\n 'ASYNC': {\n type: 'func',\n josi: [],\n asyncFn: true,\n pure: true,\n fn: async function () {\n // empty\n },\n return_none: true\n },\n 'AWAIT\u5B9F\u884C': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n asyncFn: true,\n fn: async function (f, args, sys) {\n // name\u304C\u6587\u5B57\u5217\u306A\u3089eval\u3057\u3066\u95A2\u6570\u3092\u5F97\u308B\n if (typeof f === 'string') {\n f = sys.__findFunc(f, 'AWAIT\u5B9F\u884C');\n }\n if (!(f instanceof Function)) {\n throw new Error('\u300EAWAIT\u5B9F\u884C\u300F\u306E\u7B2C\u4E00\u5F15\u6570\u306F\u306A\u3067\u3057\u3053\u95A2\u6570\u540D\u304BFunction\u578B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002');\n }\n // \u5B9F\u884C\n return await f(...args);\n }\n },\n 'JS\u30E1\u30BD\u30C3\u30C9\u5B9F\u884C': {\n type: 'func',\n josi: [['\u306E'], ['\u3092'], ['\u3067']],\n fn: function (obj, m, args, sys) {\n // obj\u304C\u6587\u5B57\u5217\u306A\u3089eval\u3057\u3066\u95A2\u6570\u3092\u5F97\u308B\n // eslint-disable-next-line no-eval\n if (typeof obj === 'string') {\n obj = sys.__evalJS(obj);\n }\n if (typeof obj !== 'object') {\n throw new Error('JS\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002');\n }\n // method \u3092\u6C42\u3081\u308B\n if (typeof m !== 'function') {\n m = obj[m];\n }\n // args\u304CArray\u3067\u306A\u3051\u308C\u3070Array\u306B\u5909\u63DB\u3059\u308B\n if (!(args instanceof Array)) {\n args = [args];\n }\n // \u5B9F\u884C\n return m.apply(obj, args);\n }\n },\n '\u30CA\u30C7\u30B7\u30B3': {\n type: 'func',\n josi: [['\u3092', '\u3067']],\n pure: false,\n fn: function (code, sys) {\n sys.__setSysVar('\u8868\u793A\u30ED\u30B0', '');\n sys.__self.runEx(code, sys.__modName, { resetEnv: false, resetLog: true });\n const outLog = sys.__getSysVar('\u8868\u793A\u30ED\u30B0') + '';\n if (outLog) {\n sys.logger.trace(outLog);\n }\n return outLog;\n }\n },\n '\u30CA\u30C7\u30B7\u30B3\u7D9A': {\n type: 'func',\n josi: [['\u3092', '\u3067']],\n fn: function (code, sys) {\n sys.__self.runEx(code, sys.__modName, { resetEnv: false, resetAll: false });\n const out = sys.__getSysVar('\u8868\u793A\u30ED\u30B0') + '';\n if (out) {\n sys.logger.trace(out);\n }\n return out;\n }\n },\n '\u5B9F\u884C': {\n type: 'func',\n josi: [['\u3092', '\u306B', '\u3067']],\n pure: false,\n fn: function (f, sys) {\n // #938 \u306E\u898F\u5247\u306B\u5F93\u3063\u3066\u51E6\u7406\n // \u5F15\u6570\u304C\u95A2\u6570\u306A\u3089\u5B9F\u884C\n if (typeof f === 'function') {\n return f(sys);\n }\n // \u6587\u5B57\u5217\u306A\u3089\u95A2\u6570\u306B\u5909\u63DB\u3067\u304D\u308B\u304B\u5224\u5B9A\u3057\u3066\u5B9F\u884C\n if (typeof f === 'string') {\n const tf = sys.__findFunc(f, '\u5B9F\u884C');\n if (typeof tf === 'function') {\n return tf(sys);\n }\n }\n // \u305D\u308C\u4EE5\u5916\u306A\u3089\u305D\u306E\u307E\u307E\u5024\u3092\u8FD4\u3059\n return f;\n }\n },\n '\u5B9F\u884C\u6642\u9593\u8A08\u6E2C': {\n type: 'func',\n josi: [['\u306E']],\n pure: false,\n fn: function (f, sys) {\n if (typeof f === 'string') {\n f = sys.__findFunc(f, '\u5B9F\u884C\u6642\u9593\u8A08\u6E2C');\n }\n //\n if (performance && performance.now) {\n const t1 = performance.now();\n f(sys);\n const t2 = performance.now();\n return (t2 - t1);\n }\n else {\n const t1 = Date.now();\n f(sys);\n const t2 = Date.now();\n return (t2 - t1);\n }\n }\n },\n '\u7D42': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n // \u30C7\u30D0\u30C3\u30B0\u30E2\u30FC\u30C9\u3067\u306A\u3051\u308C\u3070\u4F8B\u5916\u3092\u6295\u3052\u308B\u3053\u3068\u3067\u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u7D42\u4E86\u3055\u305B\u308B\n sys.__setSysVar('__forceClose', true);\n if (!sys.__getSysVar('__useDebug')) {\n throw new Error('__\u7D42\u308F\u308B__');\n }\n }\n },\n // @\u578B\u5909\u63DB\n '\u5909\u6570\u578B\u78BA\u8A8D': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return (typeof v);\n }\n },\n 'TYPEOF': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return (typeof v);\n }\n },\n '\u6587\u5B57\u5217\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return String(v);\n }\n },\n 'TOSTR': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return String(v);\n }\n },\n '\u6574\u6570\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return parseInt(v);\n }\n },\n 'TOINT': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return parseInt(v);\n }\n },\n '\u5B9F\u6570\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return parseFloat(v);\n }\n },\n 'TOFLOAT': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return parseFloat(v);\n }\n },\n 'INT': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return parseInt(v);\n }\n },\n 'FLOAT': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return parseFloat(v);\n }\n },\n 'NAN\u5224\u5B9A': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return isNaN(v);\n }\n },\n '\u975E\u6570\u5224\u5B9A': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n // https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN\n return Number.isNaN(v);\n }\n },\n 'HEX': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return parseInt(a).toString(16);\n }\n },\n '\u9032\u6570\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092', '\u306E'], ['']],\n pure: true,\n fn: function (v, n) {\n return parseInt(v).toString(n);\n }\n },\n '\u4E8C\u9032': {\n type: 'func',\n josi: [['\u3092', '\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (v) {\n return parseInt(v).toString(2);\n }\n },\n '\u4E8C\u9032\u8868\u793A': {\n type: 'func',\n josi: [['\u3092', '\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (v, sys) {\n const s = parseInt(v).toString(2);\n sys.__exec('\u8868\u793A', [s, sys]);\n }\n },\n 'RGB': {\n type: 'func',\n josi: [['\u3068'], ['\u306E'], ['\u3067']],\n pure: true,\n fn: function (r, g, b) {\n const z2 = (v) => {\n const v2 = '00' + (parseInt('' + v).toString(16));\n return v2.substring(v2.length - 2, v2.length);\n };\n return '#' + z2(r) + z2(g) + z2(b);\n }\n },\n // @\u8AD6\u7406\u6F14\u7B97\n '\u8AD6\u7406OR': {\n type: 'func',\n josi: [['\u3068'], ['\u306E']],\n pure: true,\n fn: function (a, b) {\n return (a || b);\n }\n },\n '\u8AD6\u7406AND': {\n type: 'func',\n josi: [['\u3068'], ['\u306E']],\n pure: true,\n fn: function (a, b) {\n return (a && b);\n }\n },\n '\u8AD6\u7406NOT': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return (!v) ? 1 : 0;\n }\n },\n // @\u30D3\u30C3\u30C8\u6F14\u7B97\n 'OR': {\n type: 'func',\n josi: [['\u3068'], ['\u306E']],\n pure: true,\n fn: function (a, b) {\n return (a | b);\n }\n },\n 'AND': {\n type: 'func',\n josi: [['\u3068'], ['\u306E']],\n pure: true,\n fn: function (a, b) {\n return (a & b);\n }\n },\n 'XOR': {\n type: 'func',\n josi: [['\u3068'], ['\u306E']],\n pure: true,\n fn: function (a, b) {\n return (a ^ b);\n }\n },\n 'NOT': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return (~v);\n }\n },\n 'SHIFT_L': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (a, b) {\n return (a << b);\n }\n },\n 'SHIFT_R': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (a, b) {\n return (a >> b);\n }\n },\n 'SHIFT_UR': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (a, b) {\n return (a >>> b);\n }\n },\n // @\u6587\u5B57\u5217\u51E6\u7406\n '\u6587\u5B57\u6570': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n if (!Array.from) {\n return String(v).length;\n }\n return Array.from(v).length;\n }\n },\n '\u4F55\u6587\u5B57\u76EE': {\n type: 'func',\n josi: [['\u3067', '\u306E'], ['\u304C']],\n pure: true,\n fn: function (s, a) {\n return String(s).indexOf(a) + 1;\n }\n },\n 'CHR': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n if (!String.fromCodePoint) {\n return String.fromCharCode(v);\n }\n return String.fromCodePoint(v);\n }\n },\n 'ASC': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n if (!String.prototype.codePointAt) {\n return String(v).charCodeAt(0);\n }\n return String(v).codePointAt(0);\n }\n },\n '\u6587\u5B57\u633F\u5165': {\n type: 'func',\n josi: [['\u3067', '\u306E'], ['\u306B', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (s, i, a) {\n if (i <= 0) {\n i = 1;\n }\n const ss = String(s);\n const mae = ss.substring(0, i - 1);\n const usi = ss.substring(i - 1);\n return mae + a + usi;\n }\n },\n '\u6587\u5B57\u691C\u7D22': {\n type: 'func',\n josi: [['\u3067', '\u306E'], ['\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (s, a, b) {\n let str = String(s);\n str = str.substring(a);\n const res = str.indexOf(b);\n if (res === -1) {\n return 0;\n }\n return res + 1 + a;\n }\n },\n '\u8FFD\u52A0': {\n type: 'func',\n josi: [['\u3067', '\u306B', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (s, a) {\n if (s instanceof Array) {\n s.push(a);\n return s;\n }\n return String(s) + String(a);\n }\n },\n '\u4E00\u884C\u8FFD\u52A0': {\n type: 'func',\n josi: [['\u3067', '\u306B', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (s, a) {\n if (s instanceof Array) {\n s.push(a);\n return s;\n }\n return String(s) + String(a) + '\\n';\n }\n },\n '\u6587\u5B57\u5217\u5206\u89E3': {\n type: 'func',\n josi: [['\u3092', '\u306E', '\u3067']],\n pure: true,\n fn: function (v) {\n if (!Array.from) {\n return String(v).split('');\n }\n return Array.from(v);\n }\n },\n '\u30EA\u30D5\u30EC\u30A4\u30F3': {\n type: 'func',\n josi: [['\u3092', '\u306E'], ['\u3067']],\n pure: true,\n fn: function (v, cnt) {\n let s = '';\n for (let i = 0; i < cnt; i++) {\n s += String(v);\n }\n return s;\n }\n },\n '\u51FA\u73FE\u56DE\u6570': {\n type: 'func',\n josi: [['\u3067'], ['\u306E']],\n pure: true,\n fn: function (s, a) {\n s = '' + s;\n a = '' + a;\n return s.split(a).length - 1;\n }\n },\n 'MID': {\n type: 'func',\n josi: [['\u3067', '\u306E'], ['\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (s, a, cnt) {\n cnt = cnt || 1;\n return (String(s).substring(a - 1, a + cnt - 1));\n }\n },\n '\u6587\u5B57\u629C\u51FA': {\n type: 'func',\n josi: [['\u3067', '\u306E'], ['\u304B\u3089'], ['\u3092', '']],\n pure: true,\n fn: function (s, a, cnt) {\n cnt = cnt || 1;\n return (String(s).substring(a - 1, a + cnt - 1));\n }\n },\n 'LEFT': {\n type: 'func',\n josi: [['\u306E', '\u3067'], ['\u3060\u3051']],\n pure: true,\n fn: function (s, cnt) {\n return (String(s).substring(0, cnt));\n }\n },\n '\u6587\u5B57\u5DE6\u90E8\u5206': {\n type: 'func',\n josi: [['\u306E', '\u3067'], ['\u3060\u3051', '']],\n pure: true,\n fn: function (s, cnt) {\n return (String(s).substring(0, cnt));\n }\n },\n 'RIGHT': {\n type: 'func',\n josi: [['\u306E', '\u3067'], ['\u3060\u3051']],\n pure: true,\n fn: function (s, cnt) {\n s = '' + s;\n return (s.substring(s.length - cnt, s.length));\n }\n },\n '\u6587\u5B57\u53F3\u90E8\u5206': {\n type: 'func',\n josi: [['\u306E', '\u3067'], ['\u3060\u3051', '']],\n pure: true,\n fn: function (s, cnt) {\n s = '' + s;\n return (s.substring(s.length - cnt, s.length));\n }\n },\n '\u533A\u5207': {\n type: 'func',\n josi: [['\u306E', '\u3092'], ['\u3067']],\n pure: true,\n fn: function (s, a) {\n return ('' + s).split('' + a);\n }\n },\n '\u6587\u5B57\u5217\u5206\u5272': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (s, a) {\n s = '' + s;\n a = '' + a;\n const i = s.indexOf(a);\n if (i < 0) {\n return [s];\n }\n return [s.substring(0, i), s.substring(i + a.length)];\n }\n },\n '\u5207\u53D6': {\n type: 'func',\n josi: [['\u304B\u3089', '\u306E'], ['\u307E\u3067', '\u3092']],\n pure: true,\n fn: function (s, a, sys) {\n s = String(s);\n const i = s.indexOf(a);\n if (i < 0) {\n sys.__setSysVar('\u5BFE\u8C61', '');\n return s;\n }\n sys.__setSysVar('\u5BFE\u8C61', s.substring(i + a.length));\n return s.substring(0, i);\n }\n },\n '\u7BC4\u56F2\u5207\u53D6': {\n type: 'func',\n josi: [['\u3067', '\u306E'], ['\u304B\u3089'], ['\u307E\u3067', '\u3092']],\n pure: true,\n fn: function (s, a, b, sys) {\n s = String(s);\n let mae = '';\n let usiro = '';\n const i = s.indexOf(a);\n if (i < 0) {\n sys.__setSysVar('\u5BFE\u8C61', s);\n return '';\n }\n mae = s.substring(0, i);\n const subS = s.substring(i + a.length);\n const j = subS.indexOf(b);\n if (j < 0) {\n sys.__setSysVar('\u5BFE\u8C61', mae);\n return subS;\n }\n const result = subS.substring(0, j);\n usiro = subS.substring(j + b.length);\n sys.__setSysVar('\u5BFE\u8C61', mae + usiro);\n return result;\n }\n },\n '\u6587\u5B57\u524A\u9664': {\n type: 'func',\n josi: [['\u306E'], ['\u304B\u3089'], ['\u3060\u3051', '\u3092', '']],\n pure: true,\n fn: function (s, a, b) {\n s = '' + s;\n const mae = s.substring(0, a - 1);\n const usi = s.substring((a - 1 + b));\n return mae + usi;\n }\n },\n // @\u7F6E\u63DB\u30FB\u30C8\u30EA\u30E0\n '\u7F6E\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3067'], ['\u3092', '\u304B\u3089'], ['\u306B', '\u3078']],\n pure: true,\n fn: function (s, a, b) {\n return String(s).split(a).join(b);\n }\n },\n '\u5358\u7F6E\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3067'], ['\u3092'], ['\u306B', '\u3078']],\n pure: true,\n fn: function (s, a, b) {\n // replace\u306F\u6700\u521D\u306E\u4E00\u5EA6\u3060\u3051\u7F6E\u63DB\u3059\u308B\n return String(s).replace(a, b);\n }\n },\n '\u30C8\u30EA\u30E0': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s) {\n s = String(s).replace(/^\\s+/, '').replace(/\\s+$/, '');\n return s;\n }\n },\n '\u7A7A\u767D\u9664\u53BB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s) {\n s = String(s).replace(/^\\s+/, '').replace(/\\s+$/, '');\n return s;\n }\n },\n // @\u6587\u5B57\u5909\u63DB\n '\u5927\u6587\u5B57\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s) {\n return String(s).toUpperCase();\n }\n },\n '\u5C0F\u6587\u5B57\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s) {\n return String(s).toLowerCase();\n }\n },\n '\u5E73\u4EEE\u540D\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s) {\n const kanaToHira = (str) => {\n return String(str).replace(/[\\u30a1-\\u30f6]/g, function (m) {\n const chr = m.charCodeAt(0) - 0x60;\n return String.fromCharCode(chr);\n });\n };\n return kanaToHira('' + s);\n }\n },\n '\u30AB\u30BF\u30AB\u30CA\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s) {\n const hiraToKana = (str) => {\n return String(str).replace(/[\\u3041-\\u3096]/g, function (m) {\n const chr = m.charCodeAt(0) + 0x60;\n return String.fromCharCode(chr);\n });\n };\n return hiraToKana('' + s);\n }\n },\n '\u82F1\u6570\u5168\u89D2\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s) {\n return String(s).replace(/[A-Za-z0-9]/g, function (v) {\n return String.fromCharCode(v.charCodeAt(0) + 0xFEE0);\n });\n }\n },\n '\u82F1\u6570\u534A\u89D2\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s) {\n return String(s).replace(/[\uFF21-\uFF3A\uFF41-\uFF5A\uFF10-\uFF19]/g, function (v) {\n return String.fromCharCode(v.charCodeAt(0) - 0xFEE0);\n });\n }\n },\n '\u82F1\u6570\u8A18\u53F7\u5168\u89D2\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s) {\n return String(s).replace(/[\\x20-\\x7F]/g, function (v) {\n return String.fromCharCode(v.charCodeAt(0) + 0xFEE0);\n });\n }\n },\n '\u82F1\u6570\u8A18\u53F7\u534A\u89D2\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s) {\n return String(s).replace(/[\\uFF00-\\uFF5F]/g, function (v) {\n return String.fromCharCode(v.charCodeAt(0) - 0xFEE0);\n });\n }\n },\n '\u30AB\u30BF\u30AB\u30CA\u5168\u89D2\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s, sys) {\n // \u534A\u89D2\u30AB\u30BF\u30AB\u30CA\n const zen1 = sys.__getSysVar('\u5168\u89D2\u30AB\u30CA\u4E00\u89A7');\n const han1 = sys.__getSysVar('\u534A\u89D2\u30AB\u30CA\u4E00\u89A7');\n const zen2 = sys.__getSysVar('\u5168\u89D2\u30AB\u30CA\u6FC1\u97F3\u4E00\u89A7');\n const han2 = sys.__getSysVar('\u534A\u89D2\u30AB\u30CA\u6FC1\u97F3\u4E00\u89A7');\n let str = '';\n let i = 0;\n while (i < s.length) {\n // \u6FC1\u70B9\u306E\u5909\u63DB\n const c2 = s.substring(i, i + 2);\n const n2 = han2.indexOf(c2);\n if (n2 >= 0) {\n str += zen2.charAt(n2 / 2);\n i += 2;\n continue;\n }\n // \u6FC1\u70B9\u4EE5\u5916\u306E\u5909\u63DB\n const c = s.charAt(i);\n const n = han1.indexOf(c);\n if (n >= 0) {\n str += zen1.charAt(n);\n i++;\n continue;\n }\n str += c;\n i++;\n }\n return str;\n }\n },\n '\u30AB\u30BF\u30AB\u30CA\u534A\u89D2\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (s, sys) {\n // \u534A\u89D2\u30AB\u30BF\u30AB\u30CA\n const zen1 = sys.__getSysVar('\u5168\u89D2\u30AB\u30CA\u4E00\u89A7');\n const han1 = sys.__getSysVar('\u534A\u89D2\u30AB\u30CA\u4E00\u89A7');\n const zen2 = sys.__getSysVar('\u5168\u89D2\u30AB\u30CA\u6FC1\u97F3\u4E00\u89A7');\n const han2 = sys.__getSysVar('\u534A\u89D2\u30AB\u30CA\u6FC1\u97F3\u4E00\u89A7');\n return s.split('').map((c) => {\n const i = zen1.indexOf(c);\n if (i >= 0) {\n return han1.charAt(i);\n }\n const j = zen2.indexOf(c);\n if (j >= 0) {\n return han2.substring(j * 2, j * 2 + 2);\n }\n return c;\n }).join('');\n }\n },\n '\u5168\u89D2\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: false,\n fn: function (s, sys) {\n let result = s;\n result = sys.__exec('\u30AB\u30BF\u30AB\u30CA\u5168\u89D2\u5909\u63DB', [result, sys]);\n result = sys.__exec('\u82F1\u6570\u8A18\u53F7\u5168\u89D2\u5909\u63DB', [result, sys]);\n return result;\n }\n },\n '\u534A\u89D2\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: false,\n fn: function (s, sys) {\n let result = s;\n result = sys.__exec('\u30AB\u30BF\u30AB\u30CA\u534A\u89D2\u5909\u63DB', [result, sys]);\n result = sys.__exec('\u82F1\u6570\u8A18\u53F7\u534A\u89D2\u5909\u63DB', [result, sys]);\n return result;\n }\n },\n '\u5168\u89D2\u30AB\u30CA\u4E00\u89A7': { type: 'const', value: '\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EF\u30F2\u30F3\u30A1\u30A3\u30A5\u30A7\u30A9\u30E3\u30E5\u30E7\u30C3\u3001\u3002\u30FC\u300C\u300D' }, // @\u305C\u3093\u304B\u304F\u304B\u306A\u3044\u3061\u3089\u3093\n '\u5168\u89D2\u30AB\u30CA\u6FC1\u97F3\u4E00\u89A7': { type: 'const', value: '\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0\u30D3\u30D6\u30D9\u30DC\u30D1\u30D4\u30D7\u30DA\u30DD' }, // @\u305C\u3093\u304B\u304F\u304B\u306A\u3060\u304F\u304A\u3093\u3044\u3061\u3089\u3093\n '\u534A\u89D2\u30AB\u30CA\u4E00\u89A7': { type: 'const', value: '\uFF71\uFF72\uFF73\uFF74\uFF75\uFF76\uFF77\uFF78\uFF79\uFF7A\uFF7B\uFF7C\uFF7D\uFF7E\uFF7F\uFF80\uFF81\uFF82\uFF83\uFF84\uFF85\uFF86\uFF87\uFF88\uFF89\uFF8A\uFF8B\uFF8C\uFF8D\uFF8E\uFF8F\uFF90\uFF91\uFF92\uFF93\uFF94\uFF95\uFF96\uFF97\uFF98\uFF99\uFF9A\uFF9B\uFF9C\uFF66\uFF9D\uFF67\uFF68\uFF69\uFF6A\uFF6B\uFF6C\uFF6D\uFF6E\uFF6F\uFF64\uFF61\uFF70\uFF62\uFF63\uFF9E\uFF9F' }, // @\u306F\u3093\u304B\u304F\u304B\u306A\u3044\u3061\u3089\u3093\n '\u534A\u89D2\u30AB\u30CA\u6FC1\u97F3\u4E00\u89A7': { type: 'const', value: '\uFF76\uFF9E\uFF77\uFF9E\uFF78\uFF9E\uFF79\uFF9E\uFF7A\uFF9E\uFF7B\uFF9E\uFF7C\uFF9E\uFF7D\uFF9E\uFF7E\uFF9E\uFF7F\uFF9E\uFF80\uFF9E\uFF81\uFF9E\uFF82\uFF9E\uFF83\uFF9E\uFF84\uFF9E\uFF8A\uFF9E\uFF8B\uFF9E\uFF8C\uFF9E\uFF8D\uFF9E\uFF8E\uFF9E\uFF8A\uFF9F\uFF8B\uFF9F\uFF8C\uFF9F\uFF8D\uFF9F\uFF8E\uFF9F' }, // @\u306F\u3093\u304B\u304F\u304B\u306A\u3060\u304F\u304A\u3093\u3044\u3061\u3089\u3093\n // @JSON\n 'JSON\u30A8\u30F3\u30B3\u30FC\u30C9': {\n type: 'func',\n josi: [['\u3092', '\u306E']],\n pure: true,\n fn: function (v) {\n return JSON.stringify(v);\n }\n },\n 'JSON\u30A8\u30F3\u30B3\u30FC\u30C9\u6574\u5F62': {\n type: 'func',\n josi: [['\u3092', '\u306E']],\n pure: true,\n fn: function (v) {\n return JSON.stringify(v, null, 2);\n }\n },\n 'JSON\u30C7\u30B3\u30FC\u30C9': {\n type: 'func',\n josi: [['\u3092', '\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (s) {\n return JSON.parse(s);\n }\n },\n // @\u6B63\u898F\u8868\u73FE\n '\u6B63\u898F\u8868\u73FE\u30DE\u30C3\u30C1': {\n type: 'func',\n josi: [['\u3092', '\u304C'], ['\u3067', '\u306B']],\n pure: true,\n fn: function (a, b, sys) {\n let re;\n const f = ('' + b).match(/^\\/(.+)\\/([a-zA-Z]*)$/);\n // \u30D1\u30BF\u30FC\u30F3\u304C\u306A\u3044\u5834\u5408\n if (f === null) {\n re = new RegExp(b, 'g');\n }\n else {\n re = new RegExp(f[1], f[2]);\n }\n const sa = sys.__getSysVar('\u62BD\u51FA\u6587\u5B57\u5217');\n sa.splice(0, sa.length); // clear\n const m = String(a).match(re);\n let result = m;\n if (re.global) {\n // no groups\n }\n else if (m) {\n // has group?\n if (m.length > 0) {\n result = m[0];\n for (let i = 1; i < m.length; i++) {\n sa[i - 1] = m[i];\n }\n }\n }\n return result;\n }\n },\n '\u62BD\u51FA\u6587\u5B57\u5217': { type: 'const', value: [] }, // @\u3061\u3085\u3046\u3057\u3085\u3064\u3082\u3058\u308C\u3064\n '\u6B63\u898F\u8868\u73FE\u7F6E\u63DB': {\n type: 'func',\n josi: [['\u306E'], ['\u3092', '\u304B\u3089'], ['\u3067', '\u306B', '\u3078']],\n pure: true,\n fn: function (s, a, b) {\n let re;\n const f = a.match(/^\\/(.+)\\/([a-zA-Z]*)/);\n if (f === null) {\n re = new RegExp(a, 'g');\n }\n else {\n re = new RegExp(f[1], f[2]);\n }\n return String(s).replace(re, b);\n }\n },\n '\u6B63\u898F\u8868\u73FE\u533A\u5207': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (s, a) {\n let re;\n const f = a.match(/^\\/(.+)\\/([a-zA-Z]*)/);\n if (f === null) {\n re = new RegExp(a, 'g');\n }\n else {\n re = new RegExp(f[1], f[2]);\n }\n return String(s).split(re);\n }\n },\n // @\u6307\u5B9A\u5F62\u5F0F\n '\u901A\u8CA8\u5F62\u5F0F': {\n type: 'func',\n josi: [['\u3092', '\u306E']],\n pure: true,\n fn: function (v) {\n return String(v).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1,');\n }\n },\n '\u30BC\u30ED\u57CB': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (v, a) {\n v = String(v);\n let z = '0';\n for (let i = 0; i < a; i++) {\n z += '0';\n }\n a = parseInt(a);\n if (a < v.length) {\n a = v.length;\n }\n const s = z + String(v);\n return s.substring(s.length - a, s.length);\n }\n },\n '\u7A7A\u767D\u57CB': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (v, a) {\n v = String(v);\n let z = ' ';\n for (let i = 0; i < a; i++) {\n z += ' ';\n }\n a = parseInt(a);\n if (a < v.length) {\n a = v.length;\n }\n const s = z + String(v);\n return s.substring(s.length - a, s.length);\n }\n },\n // @\u6587\u5B57\u7A2E\u985E\n '\u304B\u306A\u304B\u5224\u5B9A': {\n type: 'func',\n josi: [['\u3092', '\u306E', '\u304C']],\n pure: true,\n fn: function (s) {\n const c = String(s).charCodeAt(0);\n return (c >= 0x3041 && c <= 0x309F);\n }\n },\n '\u30AB\u30BF\u30AB\u30CA\u5224\u5B9A': {\n type: 'func',\n josi: [['\u3092', '\u306E', '\u304C']],\n pure: true,\n fn: function (s) {\n const c = String(s).charCodeAt(0);\n return (c >= 0x30A1 && c <= 0x30FA);\n }\n },\n '\u6570\u5B57\u5224\u5B9A': {\n type: 'func',\n josi: [['\u3092', '\u304C']],\n pure: true,\n fn: function (s) {\n const c = String(s).charAt(0);\n return ((c >= '0' && c <= '9') || (c >= '\uFF10' && c <= '\uFF19'));\n }\n },\n '\u6570\u5217\u5224\u5B9A': {\n type: 'func',\n josi: [['\u3092', '\u304C']],\n pure: true,\n fn: function (s) {\n const checkerRE = /^[+\\-\uFF0B\uFF0D]?([0-9\uFF10-\uFF19]*)(([.\uFF0E][0-9\uFF10-\uFF19]+)?|([.\uFF0E][0-9\uFF10-\uFF19]+[eE\uFF45\uFF25][+\\-\uFF0B\uFF0D]?[0-9\uFF10-\uFF19]+)?)$/;\n return String(s).match(checkerRE) !== null;\n }\n },\n // @\u914D\u5217\u64CD\u4F5C\n '\u914D\u5217\u7D50\u5408': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (a, s) {\n // \u914D\u5217\u306A\u3089OK\n if (a instanceof Array) {\n return a.join('' + s);\n }\n const a2 = String(a).split('\\n'); // \u914D\u5217\u3067\u306A\u3051\u308C\u3070\u7121\u7406\u77E2\u7406\u6539\u884C\u3067\u533A\u5207\u3063\u3066\u307F\u308B\n return a2.join('' + s);\n }\n },\n '\u914D\u5217\u691C\u7D22': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (a, s) {\n if (a instanceof Array) {\n return a.indexOf(s);\n } // \u914D\u5217\u306A\u3089OK\n return -1;\n }\n },\n '\u914D\u5217\u8981\u7D20\u6570': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n if (a instanceof Array) {\n return a.length;\n } // \u914D\u5217\u306A\u3089OK\n if (a instanceof Object) {\n return Object.keys(a).length;\n } // \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n if (typeof a === 'string') {\n return String(a).length;\n } // \u6587\u5B57\u5217\n return 1;\n }\n },\n '\u8981\u7D20\u6570': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a, sys) {\n return sys.__exec('\u914D\u5217\u8981\u7D20\u6570', [a]);\n }\n },\n 'LEN': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a, sys) {\n return sys.__exec('\u914D\u5217\u8981\u7D20\u6570', [a]);\n }\n },\n '\u914D\u5217\u633F\u5165': {\n type: 'func',\n josi: [['\u306E'], ['\u306B', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (a, i, s) {\n if (a instanceof Array) {\n return a.splice(i, 0, s);\n } // \u914D\u5217\u306A\u3089OK\n throw new Error('\u300E\u914D\u5217\u633F\u5165\u300F\u3067\u914D\u5217\u4EE5\u5916\u306E\u8981\u7D20\u3078\u306E\u633F\u5165\u3002');\n }\n },\n '\u914D\u5217\u4E00\u62EC\u633F\u5165': {\n type: 'func',\n josi: [['\u306E'], ['\u306B', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (a, i, b) {\n if (a instanceof Array && b instanceof Array) { // \u914D\u5217\u306A\u3089OK\n for (let j = 0; j < b.length; j++) {\n a.splice(i + j, 0, b[j]);\n }\n return a;\n }\n throw new Error('\u300E\u914D\u5217\u4E00\u62EC\u633F\u5165\u300F\u3067\u914D\u5217\u4EE5\u5916\u306E\u8981\u7D20\u3078\u306E\u633F\u5165\u3002');\n }\n },\n '\u914D\u5217\u30BD\u30FC\u30C8': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (a) {\n if (a instanceof Array) {\n return a.sort();\n } // \u914D\u5217\u306A\u3089OK\n throw new Error('\u300E\u914D\u5217\u30BD\u30FC\u30C8\u300F\u3067\u914D\u5217\u4EE5\u5916\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002');\n }\n },\n '\u914D\u5217\u6570\u5024\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (a) {\n // \u914D\u5217\u306A\u3089OK\n if (a instanceof Array) {\n for (let i = 0; i < a.length; i++) {\n a[i] = parseFloat(a[i]);\n }\n return a;\n }\n throw new Error('\u300E\u914D\u5217\u6570\u5024\u5909\u63DB\u300F\u3067\u914D\u5217\u4EE5\u5916\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002');\n }\n },\n '\u914D\u5217\u6570\u5024\u30BD\u30FC\u30C8': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (a) {\n // \u914D\u5217\u306A\u3089OK\n if (a instanceof Array) {\n return a.sort((a, b) => {\n return parseFloat(a) - parseFloat(b);\n });\n }\n throw new Error('\u300E\u914D\u5217\u6570\u5024\u30BD\u30FC\u30C8\u300F\u3067\u914D\u5217\u4EE5\u5916\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002');\n }\n },\n '\u914D\u5217\u30AB\u30B9\u30BF\u30E0\u30BD\u30FC\u30C8': {\n type: 'func',\n josi: [['\u3067'], ['\u306E', '\u3092']],\n pure: false,\n fn: function (f, a, sys) {\n let ufunc = f;\n if (typeof f === 'string') {\n ufunc = sys.__findFunc(f, '\u914D\u5217\u30AB\u30B9\u30BF\u30E0\u30BD\u30FC\u30C8');\n }\n if (a instanceof Array) {\n return a.sort(ufunc);\n }\n throw new Error('\u300E\u914D\u5217\u30AB\u30B9\u30BF\u30E0\u30BD\u30FC\u30C8\u300F\u3067\u914D\u5217\u4EE5\u5916\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002');\n }\n },\n '\u914D\u5217\u9006\u9806': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (a) {\n if (a instanceof Array) {\n return a.reverse();\n } // \u914D\u5217\u306A\u3089OK\n throw new Error('\u300E\u914D\u5217\u30BD\u30FC\u30C8\u300F\u3067\u914D\u5217\u4EE5\u5916\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002');\n }\n },\n '\u914D\u5217\u30B7\u30E3\u30C3\u30D5\u30EB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (a) {\n if (a instanceof Array) { // \u914D\u5217\u306A\u3089OK\n for (let i = a.length - 1; i > 0; i--) {\n const r = Math.floor(Math.random() * (i + 1));\n const tmp = a[i];\n a[i] = a[r];\n a[r] = tmp;\n }\n return a;\n }\n throw new Error('\u300E\u914D\u5217\u30B7\u30E3\u30C3\u30D5\u30EB\u300F\u3067\u914D\u5217\u4EE5\u5916\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002');\n }\n },\n '\u914D\u5217\u524A\u9664': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (a, i, sys) {\n return sys.__exec('\u914D\u5217\u5207\u53D6', [a, i, sys]);\n }\n },\n '\u914D\u5217\u5207\u53D6': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (a, i) {\n // \u914D\u5217\u5909\u6570\u306E\u3068\u304D\n if (a instanceof Array) {\n if (typeof i === 'number') {\n const b = a.splice(i, 1);\n if (b instanceof Array) {\n return b[0];\n } // \u5207\u308A\u53D6\u3063\u305F\u623B\u308A\u5024\u306F\u5FC5\u305AArray\u306B\u306A\u308B\u306E\u3067\u3002\n }\n if (typeof i === 'object' && typeof i['\u5148\u982D'] === 'number') {\n const idx = i['\u5148\u982D'];\n const cnt = i['\u672B\u5C3E'] - i['\u5148\u982D'] + 1;\n return a.splice(idx, cnt);\n }\n return null;\n }\n // \u8F9E\u66F8\u578B\u5909\u6570\u306E\u3068\u304D\n if (a instanceof Object && typeof (i) === 'string') { // \u8F9E\u66F8\u578B\u5909\u6570\u3082\u8A31\u5BB9\n if (a[i]) {\n const old = a[i];\n delete a[i];\n return old;\n }\n return undefined;\n }\n throw new Error('\u300E\u914D\u5217\u5207\u53D6\u300F\u3067\u914D\u5217\u4EE5\u5916\u3092\u6307\u5B9A\u3002');\n }\n },\n '\u914D\u5217\u53D6\u51FA': {\n type: 'func',\n josi: [['\u306E'], ['\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (a, i, cnt) {\n if (a instanceof Array) {\n return a.splice(i, cnt);\n }\n throw new Error('\u300E\u914D\u5217\u53D6\u51FA\u300F\u3067\u914D\u5217\u4EE5\u5916\u3092\u6307\u5B9A\u3002');\n }\n },\n '\u914D\u5217\u30DD\u30C3\u30D7': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (a) {\n if (a instanceof Array) {\n return a.pop();\n }\n throw new Error('\u300E\u914D\u5217\u30DD\u30C3\u30D7\u300F\u3067\u914D\u5217\u4EE5\u5916\u306E\u51E6\u7406\u3002');\n }\n },\n '\u914D\u5217\u30D7\u30C3\u30B7\u30E5': {\n type: 'func',\n josi: [['\u306B', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (a, b, sys) {\n return sys.__exec('\u914D\u5217\u8FFD\u52A0', [a, b, sys]);\n }\n },\n '\u914D\u5217\u8FFD\u52A0': {\n type: 'func',\n josi: [['\u306B', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (a, b) {\n if (a instanceof Array) { // \u914D\u5217\u306A\u3089OK\n a.push(b);\n return a;\n }\n throw new Error('\u300E\u914D\u5217\u8FFD\u52A0\u300F\u3067\u914D\u5217\u4EE5\u5916\u306E\u51E6\u7406\u3002');\n }\n },\n '\u914D\u5217\u8907\u88FD': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (a) {\n return JSON.parse(JSON.stringify(a));\n }\n },\n '\u914D\u5217\u7BC4\u56F2\u30B3\u30D4\u30FC': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (a, i) {\n if (!Array.isArray(a)) {\n throw new Error('\u300E\u914D\u5217\u7BC4\u56F2\u30B3\u30D4\u30FC\u300F\u3067\u914D\u5217\u4EE5\u5916\u306E\u5024\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002');\n }\n if (typeof i === 'number') {\n if (typeof a[i] === 'object') {\n return JSON.parse(JSON.stringify(a[i]));\n }\n return a[i];\n }\n // \u7BC4\u56F2\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u3068\u304D\n if (typeof i === 'object' && typeof i['\u5148\u982D'] === 'number') {\n const start = i['\u5148\u982D'];\n const last = i['\u672B\u5C3E'] + 1;\n return JSON.parse(JSON.stringify(a.slice(start, last)));\n }\n return undefined;\n }\n },\n '\u53C2\u7167': {\n type: 'func',\n josi: [['\u304B\u3089', '\u306E'], ['\u3092']],\n pure: true,\n fn: function (a, i, sys) {\n // \u6587\u5B57\u5217\u306E\u3068\u304D\n if (typeof a === 'string') {\n if (typeof i === 'number') {\n return a.charAt(i);\n }\n // \u7BC4\u56F2\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u3068\u304D\n if (typeof i === 'object' && typeof i['\u5148\u982D'] === 'number') {\n const start = i['\u5148\u982D'];\n const last = i['\u672B\u5C3E'] + 1;\n return a.substring(start, last);\n }\n throw new Error(`\u300E\u53C2\u7167\u300F\u3067\u6587\u5B57\u5217\u578B\u306E\u7BC4\u56F2\u6307\u5B9A(${JSON.stringify(i)})\u304C\u4E0D\u6B63\u3067\u3059\u3002`);\n }\n // \u914D\u5217\u578B\u306E\u3068\u304D\n if (Array.isArray(a)) {\n if (typeof i === 'number') {\n return a[i];\n }\n // \u7BC4\u56F2\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u3068\u304D\n if (typeof i === 'object' && typeof i['\u5148\u982D'] === 'number') {\n const start = i['\u5148\u982D'];\n const last = i['\u672B\u5C3E'] + 1;\n return a.slice(start, last);\n }\n }\n // \u8F9E\u66F8\u578B\u306E\u3068\u304D\n if (typeof a === 'object') {\n return a[i];\n }\n throw new Error('\u300E\u53C2\u7167\u300F\u3067\u6587\u5B57\u5217/\u914D\u5217/\u8F9E\u66F8\u578B\u4EE5\u5916\u306E\u5024\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002');\n }\n },\n '\u914D\u5217\u53C2\u7167': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (a, i, sys) {\n return sys.__exec('\u53C2\u7167', [a, i, sys]);\n }\n },\n '\u914D\u5217\u8DB3': {\n type: 'func',\n josi: [['\u306B', '\u3078', '\u3068'], ['\u3092']],\n pure: true,\n fn: function (a, b) {\n if (a instanceof Array) {\n return a.concat(b);\n }\n return JSON.parse(JSON.stringify(a));\n }\n },\n '\u914D\u5217\u6700\u5927\u5024': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return a.reduce((x, y) => Math.max(x, y));\n }\n },\n '\u914D\u5217\u6700\u5C0F\u5024': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return a.reduce((x, y) => Math.min(x, y));\n }\n },\n '\u914D\u5217\u5408\u8A08': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n if (a instanceof Array) {\n let v = 0;\n a.forEach((n) => {\n const nn = parseFloat(n);\n if (isNaN(nn)) {\n return;\n }\n v += nn;\n });\n return v;\n }\n throw new Error('\u300E\u914D\u5217\u5408\u8A08\u300F\u3067\u914D\u5217\u5909\u6570\u4EE5\u5916\u306E\u5024\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002');\n }\n },\n '\u914D\u5217\u5165\u66FF': {\n type: 'func',\n josi: [['\u306E'], ['\u3068'], ['\u3092']],\n pure: true,\n fn: function (a, i, j) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u914D\u5217\u5165\u66FF\u300F\u306E\u7B2C1\u5F15\u6570\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002');\n }\n const tmp = a[i];\n a[i] = a[j];\n a[j] = tmp;\n return a;\n }\n },\n '\u914D\u5217\u9023\u756A\u4F5C\u6210': {\n type: 'func',\n josi: [['\u304B\u3089'], ['\u307E\u3067\u306E', '\u307E\u3067', '\u306E']],\n pure: true,\n fn: function (a, b) {\n const result = [];\n for (let i = a; i <= b; i++) {\n result.push(i);\n }\n return result;\n }\n },\n '\u914D\u5217\u8981\u7D20\u4F5C\u6210': {\n type: 'func',\n josi: [['\u3092'], ['\u3060\u3051']],\n pure: true,\n fn: function (a, b) {\n const result = [];\n for (let i = 0; i < b; i++) {\n result.push(a);\n }\n return result;\n }\n },\n '\u914D\u5217\u95A2\u6570\u9069\u7528': {\n type: 'func',\n josi: [['\u3092'], ['\u3078', '\u306B']],\n pure: true,\n fn: function (f, a, sys) {\n let ufunc = f;\n if (typeof f === 'string') {\n ufunc = sys.__findFunc(f, '\u914D\u5217\u95A2\u6570\u9069\u7528');\n }\n const result = [];\n for (const e of a) {\n result.push(ufunc(e));\n }\n return result;\n }\n },\n '\u914D\u5217\u30DE\u30C3\u30D7': {\n type: 'func',\n josi: [['\u3092'], ['\u3078', '\u306B']],\n pure: true,\n fn: function (f, a, sys) {\n return sys.__exec('\u914D\u5217\u95A2\u6570\u9069\u7528', [f, a, sys]);\n }\n },\n '\u914D\u5217\u30D5\u30A3\u30EB\u30BF': {\n type: 'func',\n josi: [['\u3067', '\u306E'], ['\u3092', '\u306B\u3064\u3044\u3066']],\n pure: true,\n fn: function (f, a, sys) {\n let ufunc = f;\n if (typeof f === 'string') {\n ufunc = sys.__findFunc(f, '\u914D\u5217\u30D5\u30A3\u30EB\u30BF');\n }\n const result = [];\n for (const e of a) {\n if (ufunc(e)) {\n result.push(e);\n }\n }\n return result;\n }\n },\n // @\u4E8C\u6B21\u5143\u914D\u5217\u51E6\u7406\n '\u8868\u30BD\u30FC\u30C8': {\n type: 'func',\n josi: [['\u306E'], ['\u3092']],\n pure: true,\n fn: function (a, no) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u30BD\u30FC\u30C8\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n a.sort((n, m) => {\n const ns = n[no];\n const ms = m[no];\n if (ns === ms) {\n return 0;\n }\n else if (ns < ms) {\n return -1;\n }\n else {\n return 1;\n }\n });\n return a;\n }\n },\n '\u8868\u6570\u5024\u30BD\u30FC\u30C8': {\n type: 'func',\n josi: [['\u306E'], ['\u3092']],\n pure: true,\n fn: function (a, no) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u6570\u5024\u30BD\u30FC\u30C8\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n a.sort((n, m) => {\n const ns = n[no];\n const ms = m[no];\n return ns - ms;\n });\n return a;\n }\n },\n '\u8868\u30D4\u30C3\u30AF\u30A2\u30C3\u30D7': {\n type: 'func',\n josi: [['\u306E'], ['\u304B\u3089'], ['\u3092', '\u3067']],\n pure: true,\n fn: function (a, no, s) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u30D4\u30C3\u30AF\u30A2\u30C3\u30D7\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n return a.filter((row) => String(row[no]).indexOf(s) >= 0);\n }\n },\n '\u8868\u5B8C\u5168\u4E00\u81F4\u30D4\u30C3\u30AF\u30A2\u30C3\u30D7': {\n type: 'func',\n josi: [['\u306E'], ['\u304B\u3089'], ['\u3092', '\u3067']],\n pure: true,\n fn: function (a, no, s) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u5B8C\u5168\u30D4\u30C3\u30AF\u30A2\u30C3\u30D7\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n return a.filter((row) => row[no] === s);\n }\n },\n '\u8868\u691C\u7D22': {\n type: 'func',\n josi: [['\u306E'], ['\u3067', '\u306B'], ['\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (a, col, row, s) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u691C\u7D22\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n for (let i = row; i < a.length; i++) {\n if (a[i][col] === s) {\n return i;\n }\n }\n return -1;\n }\n },\n '\u8868\u5217\u6570': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u5217\u6570\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n let cols = 1;\n for (let i = 0; i < a.length; i++) {\n if (a[i].length > cols) {\n cols = a[i].length;\n }\n }\n return cols;\n }\n },\n '\u8868\u884C\u6570': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u884C\u6570\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n return a.length;\n }\n },\n '\u8868\u884C\u5217\u4EA4\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (a, sys) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u884C\u5217\u4EA4\u63DB\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n const cols = sys.__exec('\u8868\u5217\u6570', [a]);\n const rows = a.length;\n const res = [];\n for (let r = 0; r < cols; r++) {\n const row = [];\n res.push(row);\n for (let c = 0; c < rows; c++) {\n row[c] = (a[c][r] !== undefined) ? a[c][r] : '';\n }\n }\n return res;\n }\n },\n '\u8868\u53F3\u56DE\u8EE2': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (a, sys) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u53F3\u56DE\u8EE2\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n const cols = sys.__exec('\u8868\u5217\u6570', [a]);\n const rows = a.length;\n const res = [];\n for (let r = 0; r < cols; r++) {\n const row = [];\n res.push(row);\n for (let c = 0; c < rows; c++) {\n row[c] = a[rows - c - 1][r];\n }\n }\n return res;\n }\n },\n '\u8868\u91CD\u8907\u524A\u9664': {\n type: 'func',\n josi: [['\u306E'], ['\u3092', '\u3067']],\n pure: true,\n fn: function (a, i) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u91CD\u8907\u524A\u9664\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n const res = [];\n const keys = {};\n for (let n = 0; n < a.length; n++) {\n const k = a[n][i];\n if (undefined === keys[k]) {\n keys[k] = true;\n res.push(a[n]);\n }\n }\n return res;\n }\n },\n '\u8868\u5217\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E'], ['\u3092']],\n pure: true,\n fn: function (a, i) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u5217\u53D6\u5F97\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n const res = a.map(row => row[i]);\n return res;\n }\n },\n '\u8868\u5217\u633F\u5165': {\n type: 'func',\n josi: [['\u306E'], ['\u306B', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (a, i, s) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u5217\u633F\u5165\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n const res = [];\n a.forEach((row, idx) => {\n let nr = [];\n if (i > 0) {\n nr = nr.concat(row.slice(0, i));\n }\n nr.push(s[idx]);\n nr = nr.concat(row.slice(i));\n res.push(nr);\n });\n return res;\n }\n },\n '\u8868\u5217\u524A\u9664': {\n type: 'func',\n josi: [['\u306E'], ['\u3092']],\n pure: true,\n fn: function (a, i) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u5217\u524A\u9664\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n const res = [];\n a.forEach((row) => {\n const nr = row.slice(0);\n nr.splice(i, 1);\n res.push(nr);\n });\n return res;\n }\n },\n '\u8868\u5217\u5408\u8A08': {\n type: 'func',\n josi: [['\u306E'], ['\u3092', '\u3067']],\n pure: true,\n fn: function (a, i) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u5217\u5408\u8A08\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n let sum = 0;\n a.forEach((row) => { sum += row[i]; });\n return sum;\n }\n },\n '\u8868\u66D6\u6627\u691C\u7D22': {\n type: 'func',\n josi: [['\u306E'], ['\u304B\u3089'], ['\u3067'], ['\u3092']],\n pure: true,\n fn: function (a, row, col, s) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u66D6\u6627\u691C\u7D22\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n const re = new RegExp(s);\n for (let i = row; i < a.length; i++) {\n const line = a[i];\n if (re.test(line[col])) {\n return i;\n }\n }\n return -1;\n }\n },\n '\u8868\u6B63\u898F\u8868\u73FE\u30D4\u30C3\u30AF\u30A2\u30C3\u30D7': {\n type: 'func',\n josi: [['\u306E', '\u3067'], ['\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (a, col, s) {\n if (!(a instanceof Array)) {\n throw new Error('\u300E\u8868\u6B63\u898F\u8868\u73FE\u30D4\u30C3\u30AF\u30A2\u30C3\u30D7\u300F\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n const re = new RegExp(s);\n const res = [];\n for (let i = 0; i < a.length; i++) {\n const row = a[i];\n if (re.test(row[col])) {\n res.push(row.slice(0));\n }\n }\n return res;\n }\n },\n // @\u8F9E\u66F8\u578B\u5909\u6570\u306E\u64CD\u4F5C\n '\u8F9E\u66F8\u30AD\u30FC\u5217\u6319': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n const keys = [];\n if (a instanceof Object) { // \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AD\u30FC\u3092\u8FD4\u3059\n for (const key in a) {\n keys.push(key);\n }\n return keys;\n }\n if (a instanceof Array) { // \u914D\u5217\u306A\u3089\u6570\u5B57\u3092\u8FD4\u3059\n for (let i = 0; i < a.length; i++) {\n keys.push(i);\n }\n return keys;\n }\n throw new Error('\u300E\u8F9E\u66F8\u30AD\u30FC\u5217\u6319\u300F\u3067\u30CF\u30C3\u30B7\u30E5\u4EE5\u5916\u304C\u4E0E\u3048\u3089\u308C\u307E\u3057\u305F\u3002');\n }\n },\n '\u8F9E\u66F8\u30AD\u30FC\u524A\u9664': {\n type: 'func',\n josi: [['\u304B\u3089', '\u306E'], ['\u3092']],\n pure: true,\n fn: function (a, key) {\n if (a instanceof Object) { // \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AD\u30FC\u3092\u8FD4\u3059\n if (key in a) {\n delete a[key];\n }\n return a;\n }\n throw new Error('\u300E\u8F9E\u66F8\u30AD\u30FC\u524A\u9664\u300F\u3067\u30CF\u30C3\u30B7\u30E5\u4EE5\u5916\u304C\u4E0E\u3048\u3089\u308C\u307E\u3057\u305F\u3002');\n }\n },\n '\u8F9E\u66F8\u30AD\u30FC\u5B58\u5728': {\n type: 'func',\n josi: [['\u306E', '\u306B'], ['\u304C']],\n pure: true,\n fn: function (a, key) {\n return key in a;\n }\n },\n // @\u30CF\u30C3\u30B7\u30E5\n '\u30CF\u30C3\u30B7\u30E5\u30AD\u30FC\u5217\u6319': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a, sys) {\n return sys.__exec('\u8F9E\u66F8\u30AD\u30FC\u5217\u6319', [a, sys]);\n }\n },\n '\u30CF\u30C3\u30B7\u30E5\u5185\u5BB9\u5217\u6319': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n const body = [];\n if (a instanceof Object) { // \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AD\u30FC\u3092\u8FD4\u3059\n for (const key in a) {\n body.push(a[key]);\n }\n return body;\n }\n throw new Error('\u300E\u30CF\u30C3\u30B7\u30E5\u5185\u5BB9\u5217\u6319\u300F\u3067\u30CF\u30C3\u30B7\u30E5\u4EE5\u5916\u304C\u4E0E\u3048\u3089\u308C\u307E\u3057\u305F\u3002');\n }\n },\n '\u30CF\u30C3\u30B7\u30E5\u30AD\u30FC\u524A\u9664': {\n type: 'func',\n josi: [['\u304B\u3089', '\u306E'], ['\u3092']],\n pure: true,\n fn: function (a, key, sys) {\n return sys.__exec('\u8F9E\u66F8\u30AD\u30FC\u524A\u9664', [a, key, sys]);\n }\n },\n '\u30CF\u30C3\u30B7\u30E5\u30AD\u30FC\u5B58\u5728': {\n type: 'func',\n josi: [['\u306E', '\u306B'], ['\u304C']],\n pure: true,\n fn: function (a, key) {\n return key in a;\n }\n },\n // @\u30BF\u30A4\u30DE\u30FC\n '\u79D2\u5F85': {\n type: 'func',\n josi: [['']],\n pure: true,\n asyncFn: true,\n fn: function (n, sys) {\n return new Promise((resolve, reject) => {\n try {\n // \u30BF\u30A4\u30DE\u30FC\u3092\u4ED5\u639B\u3051\u308B\n const timerId = setTimeout(() => {\n // \u30BF\u30A4\u30DE\u30FC\u4F7F\u7528\u4E2D\u30EA\u30B9\u30C8\u306B\u8FFD\u52A0\u3057\u305FID\u3092\u524A\u9664\n const i = sys.__timeout.indexOf(timerId);\n if (i >= 0) {\n sys.__timeout.splice(i, 1);\n }\n // Promise\u3092\u7D42\u4E86\n resolve();\n }, parseFloat(n) * 1000);\n // \u30BF\u30A4\u30DE\u30FC\u4F7F\u7528\u4E2D\u30EA\u30B9\u30C8\u306B\u8FFD\u52A0\n sys.__timeout.push(timerId);\n }\n catch (err) {\n reject(err);\n }\n });\n },\n return_none: true\n },\n '\u79D2\u5F85\u6A5F': {\n type: 'func',\n josi: [['']],\n pure: true,\n asyncFn: true,\n fn: async function (n, sys) {\n const p = sys.__exec('\u79D2\u5F85', [n, sys]);\n return await p;\n },\n return_none: true\n },\n '\u79D2\u9010\u6B21\u5F85\u6A5F': {\n type: 'func',\n josi: [['']],\n pure: true,\n asyncFn: true,\n fn: async function (n, sys) {\n const p = sys.__exec('\u79D2\u5F85', [n, sys]);\n return await p;\n },\n return_none: true\n },\n '\u79D2\u5F8C': {\n type: 'func',\n josi: [['\u3092'], ['']],\n pure: true,\n fn: function (f, n, sys) {\n // \u6587\u5B57\u5217\u3067\u6307\u5B9A\u3055\u308C\u305F\u95A2\u6570\u3092\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u5909\u63DB\n if (typeof f === 'string') {\n f = sys.__findFunc(f, '\u79D2\u5F8C');\n }\n // 1\u56DE\u9650\u308A\u306E\u30BF\u30A4\u30DE\u30FC\u3092\u30BB\u30C3\u30C8\n const timerId = setTimeout(() => {\n // \u4F7F\u7528\u4E2D\u30EA\u30B9\u30C8\u306B\u8FFD\u52A0\u3057\u305FID\u3092\u524A\u9664\n const i = sys.__timeout.indexOf(timerId);\n if (i >= 0) {\n sys.__timeout.splice(i, 1);\n }\n try {\n f(timerId, sys);\n }\n catch (e) {\n let err = e;\n if (!(e instanceof NakoRuntimeError)) {\n err = new NakoRuntimeError(e, sys.__getSysVar('__line'));\n }\n sys.logger.error(err);\n }\n }, parseFloat(n) * 1000);\n sys.__timeout.unshift(timerId);\n sys.__setSysVar('\u5BFE\u8C61', timerId);\n return timerId;\n }\n },\n '\u79D2\u6BCE': {\n type: 'func',\n josi: [['\u3092'], ['']],\n pure: false,\n fn: function (f, n, sys) {\n // \u6587\u5B57\u5217\u3067\u6307\u5B9A\u3055\u308C\u305F\u95A2\u6570\u3092\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u5909\u63DB\n if (typeof f === 'string') {\n f = sys.__findFunc(f, '\u79D2\u6BCE');\n }\n // \u30BF\u30A4\u30DE\u30FC\u3092\u30BB\u30C3\u30C8\n const timerId = setInterval(() => {\n f(timerId, sys);\n }, parseFloat(n) * 1000);\n // \u30BF\u30A4\u30DE\u30FCID\u3092\u8FFD\u52A0\n sys.__interval.unshift(timerId);\n sys.__setSysVar('\u5BFE\u8C61', timerId);\n return timerId;\n }\n },\n '\u79D2\u30BF\u30A4\u30DE\u30FC\u958B\u59CB\u6642': {\n type: 'func',\n josi: [['\u3092'], ['']],\n pure: false,\n fn: function (f, n, sys) {\n return sys.__exec('\u79D2\u6BCE', [f, n, sys]);\n }\n },\n '\u30BF\u30A4\u30DE\u30FC\u505C\u6B62': {\n type: 'func',\n josi: [['\u306E', '\u3067']],\n pure: true,\n fn: function (timerId, sys) {\n const i = sys.__interval.indexOf(timerId);\n if (i >= 0) {\n sys.__interval.splice(i, 1);\n clearInterval(timerId);\n return true;\n }\n const j = sys.__timeout.indexOf(timerId);\n if (j >= 0) {\n sys.__timeout.splice(j, 1);\n clearTimeout(timerId);\n return true;\n }\n return false;\n },\n return_none: false\n },\n '\u5168\u30BF\u30A4\u30DE\u30FC\u505C\u6B62': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n // clearInterval\n for (let i = 0; i < sys.__interval.length; i++) {\n const timerId = sys.__interval[i];\n clearInterval(timerId);\n }\n sys.__interval = [];\n // clearTimeout\n for (let i = 0; i < sys.__timeout.length; i++) {\n const timerId = sys.__timeout[i];\n clearTimeout(timerId);\n }\n sys.__timeout = [];\n },\n return_none: true\n },\n // @\u65E5\u6642\u51E6\u7406(\u7C21\u6613)\n '\u5143\u53F7\u30C7\u30FC\u30BF': { type: 'const', value: [{ '\u5143\u53F7': '\u4EE4\u548C', '\u6539\u5143\u65E5': '2019/05/01' }, { '\u5143\u53F7': '\u5E73\u6210', '\u6539\u5143\u65E5': '1989/01/08' }, { '\u5143\u53F7': '\u662D\u548C', '\u6539\u5143\u65E5': '1926/12/25' }, { '\u5143\u53F7': '\u5927\u6B63', '\u6539\u5143\u65E5': '1912/07/30' }, { '\u5143\u53F7': '\u660E\u6CBB', '\u6539\u5143\u65E5': '1868/10/23' }] }, // @\u3052\u3093\u3054\u3046\u3067\u30FC\u305F\n '\u4ECA': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n const z2 = (n) => {\n n = '00' + n;\n return n.substring(n.length - 2, n.length);\n };\n const t = new Date();\n return z2(t.getHours()) + ':' + z2(t.getMinutes()) + ':' + z2(t.getSeconds());\n }\n },\n '\u30B7\u30B9\u30C6\u30E0\u6642\u9593': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n const now = new Date();\n return Math.floor(now.getTime() / 1000);\n }\n },\n '\u30B7\u30B9\u30C6\u30E0\u6642\u9593\u30DF\u30EA\u79D2': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n const now = new Date();\n return now.getTime();\n }\n },\n '\u4ECA\u65E5': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n return sys.__formatDate(new Date());\n }\n },\n '\u660E\u65E5': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const t = Date.now() + (24 * 60 * 60 * 1000);\n return sys.__formatDate(new Date(t));\n }\n },\n '\u6628\u65E5': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const t = Date.now() - (24 * 60 * 60 * 1000);\n return sys.__formatDate(new Date(t));\n }\n },\n '\u4ECA\u5E74': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n return (new Date()).getFullYear();\n }\n },\n '\u6765\u5E74': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n return (new Date()).getFullYear() + 1;\n }\n },\n '\u53BB\u5E74': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n return (new Date()).getFullYear() - 1;\n }\n },\n '\u4ECA\u6708': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n return (new Date()).getMonth() + 1;\n }\n },\n '\u6765\u6708': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n return (new Date()).getMonth() + 2;\n }\n },\n '\u5148\u6708': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n return (new Date()).getMonth();\n }\n },\n '\u66DC\u65E5': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (s, sys) {\n const d = sys.__str2date(s);\n return '\u65E5\u6708\u706B\u6C34\u6728\u91D1\u571F'.charAt(d.getDay() % 7);\n }\n },\n '\u66DC\u65E5\u756A\u53F7\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (s) {\n const a = s.split('/');\n const t = new Date(a[0], a[1] - 1, a[2]);\n return t.getDay();\n }\n },\n 'UNIXTIME\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092', '\u304B\u3089']],\n pure: true,\n fn: function (s, sys) {\n const d = sys.__str2date(s);\n return d.getTime() / 1000;\n }\n },\n 'UNIX\u6642\u9593\u5909\u63DB': {\n type: 'func',\n josi: [['\u306E', '\u3092', '\u304B\u3089']],\n pure: true,\n fn: function (s, sys) {\n const d = sys.__str2date(s);\n return d.getTime() / 1000;\n }\n },\n '\u65E5\u6642\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092', '\u304B\u3089']],\n pure: true,\n fn: function (tm, sys) {\n const t = tm * 1000;\n return sys.__formatDateTime(new Date(t), '2022/01/01 00:00:00');\n }\n },\n '\u65E5\u6642\u66F8\u5F0F\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (tm, fmt, sys) {\n const t = sys.__str2date(tm);\n fmt = fmt.replace(/(YYYY|ccc|WWW|MMM|YY|MM|DD|HH|mm|ss|[MDHmsW])/g, (m) => {\n switch (m) {\n case 'YYYY': return t.getFullYear();\n case 'YY': return ('' + t.getFullYear()).substring(2);\n case 'MM': return sys.__zero2(t.getMonth() + 1);\n case 'DD': return sys.__zero2(t.getDate());\n case 'M': return (t.getMonth() + 1);\n case 'D': return (t.getDate());\n case 'HH': return sys.__zero2(t.getHours());\n case 'mm': return sys.__zero2(t.getMinutes());\n case 'ss': return sys.__zero2(t.getSeconds());\n case 'ccc': return sys.__zero(t.getMilliseconds(), 3);\n case 'H': return (t.getHours());\n case 'm': return (t.getMinutes());\n case 's': return (t.getSeconds());\n case 'W': return '\u65E5\u6708\u706B\u6C34\u6728\u91D1\u571F'.charAt(t.getDay() % 7);\n case 'WWW': return ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][t.getDay() % 7];\n case 'MMM': return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][t.getMonth()];\n }\n return m;\n });\n return fmt;\n }\n },\n '\u548C\u66A6\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (s, sys) {\n const d = sys.__str2date(s);\n const t = d.getTime();\n for (const era of sys.__getSysVar('\u5143\u53F7\u30C7\u30FC\u30BF')) {\n const gengo = era['\u5143\u53F7'];\n const d2 = sys.__str2date(era['\u6539\u5143\u65E5']);\n const t2 = d2.getTime();\n if (t2 <= t) {\n let y = (d.getFullYear() - d2.getFullYear()) + 1;\n if (y === 1) {\n y = '\u5143';\n }\n return gengo + y + '\u5E74' + sys.__zero2(d.getMonth() + 1) + '\u6708' + sys.__zero2(d.getDate()) + '\u65E5';\n }\n }\n throw new Error('\u300E\u548C\u66A6\u5909\u63DB\u300F\u306F\u660E\u793A\u4EE5\u524D\u306E\u65E5\u4ED8\u306B\u306F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\u3002');\n }\n },\n '\u5E74\u6570\u5DEE': {\n type: 'func',\n josi: [['\u3068', '\u304B\u3089'], ['\u306E', '\u307E\u3067\u306E']],\n pure: true,\n fn: function (a, b, sys) {\n const t1 = sys.__str2date(a);\n const t2 = sys.__str2date(b);\n return (t2.getFullYear() - t1.getFullYear());\n }\n },\n '\u6708\u6570\u5DEE': {\n type: 'func',\n josi: [['\u3068', '\u304B\u3089'], ['\u306E', '\u307E\u3067\u306E']],\n pure: true,\n fn: function (a, b, sys) {\n const t1 = sys.__str2date(a);\n const t2 = sys.__str2date(b);\n return ((t2.getFullYear() * 12 + t2.getMonth()) -\n (t1.getFullYear() * 12 + t1.getMonth()));\n }\n },\n '\u65E5\u6570\u5DEE': {\n type: 'func',\n josi: [['\u3068', '\u304B\u3089'], ['\u306E', '\u307E\u3067\u306E']],\n pure: true,\n fn: function (a, b, sys) {\n const t1 = Math.ceil(sys.__str2date(a).getTime() / 1000);\n const t2 = Math.ceil(sys.__str2date(b).getTime() / 1000);\n const days = Math.ceil((t2 - t1) / (60 * 60 * 24));\n return days;\n }\n },\n '\u6642\u9593\u5DEE': {\n type: 'func',\n josi: [['\u3068', '\u304B\u3089'], ['\u306E', '\u307E\u3067\u306E']],\n pure: true,\n fn: function (a, b, sys) {\n const t1 = Math.ceil(sys.__str2date(a).getTime() / 1000);\n const t2 = Math.ceil(sys.__str2date(b).getTime() / 1000);\n const hours = Math.ceil((t2 - t1) / (60 * 60));\n return hours;\n }\n },\n '\u5206\u5DEE': {\n type: 'func',\n josi: [['\u3068', '\u304B\u3089'], ['\u306E', '\u307E\u3067\u306E']],\n pure: true,\n fn: function (a, b, sys) {\n const t1 = Math.ceil(sys.__str2date(a).getTime() / 1000);\n const t2 = Math.ceil(sys.__str2date(b).getTime() / 1000);\n const min = Math.ceil((t2 - t1) / (60));\n return min;\n }\n },\n '\u79D2\u5DEE': {\n type: 'func',\n josi: [['\u3068', '\u304B\u3089'], ['\u306E', '\u307E\u3067\u306E']],\n pure: true,\n fn: function (a, b, sys) {\n const t1 = Math.ceil(sys.__str2date(a).getTime() / 1000);\n const t2 = Math.ceil(sys.__str2date(b).getTime() / 1000);\n const sec = Math.ceil((t2 - t1));\n return sec;\n }\n },\n '\u65E5\u6642\u5DEE': {\n type: 'func',\n josi: [['\u3068', '\u304B\u3089'], ['\u306E', '\u307E\u3067\u306E'], ['\u306B\u3088\u308B']],\n pure: true,\n fn: function (a, b, unit, sys) {\n switch (unit) {\n case '\u5E74': return sys.__exec('\u5E74\u6570\u5DEE', [a, b, sys]);\n case '\u6708': return sys.__exec('\u6708\u6570\u5DEE', [a, b, sys]);\n case '\u65E5': return sys.__exec('\u65E5\u6570\u5DEE', [a, b, sys]);\n case '\u6642\u9593': return sys.__exec('\u6642\u9593\u5DEE', [a, b, sys]);\n case '\u5206': return sys.__exec('\u5206\u5DEE', [a, b, sys]);\n case '\u79D2': return sys.__exec('\u79D2\u5DEE', [a, b, sys]);\n }\n throw new Error('\u300E\u65E5\u6642\u5DEE\u300F\u3067\u4E0D\u660E\u306A\u5358\u4F4D\u3067\u3059\u3002');\n }\n },\n '\u6642\u9593\u52A0\u7B97': {\n type: 'func',\n josi: [['\u306B'], ['\u3092']],\n pure: true,\n fn: function (s, a, sys) {\n const op = a.charAt(0);\n if (op === '-' || op === '+') {\n a = a.substring(1);\n }\n const d = sys.__str2date(s);\n const aa = (a + ':0:0').split(':');\n let sec = parseInt(aa[0]) * 60 * 60 +\n parseInt(aa[1]) * 60 +\n parseInt(aa[2]);\n if (op === '-') {\n sec *= -1;\n }\n const rd = new Date(d.getTime() + (sec * 1000));\n return sys.__formatDateTime(rd, s);\n }\n },\n '\u65E5\u4ED8\u52A0\u7B97': {\n type: 'func',\n josi: [['\u306B'], ['\u3092']],\n pure: true,\n fn: function (s, a, sys) {\n let op = 1;\n const opc = a.charAt(0);\n if (opc === '-' || opc === '+') {\n a = a.substring(1);\n if (opc === '-') {\n op *= -1;\n }\n }\n const d = sys.__str2date(s);\n const aa = (a + '/0/0').split('/');\n const addY = parseInt(aa[0]) * op;\n const addM = parseInt(aa[1]) * op;\n const addD = parseInt(aa[2]) * op;\n d.setFullYear(d.getFullYear() + addY);\n d.setMonth(d.getMonth() + addM);\n d.setDate(d.getDate() + addD);\n return sys.__formatDateTime(d, s);\n }\n },\n '\u65E5\u6642\u52A0\u7B97': {\n type: 'func',\n josi: [['\u306B'], ['\u3092']],\n pure: true,\n fn: function (s, a, sys) {\n const r = ('' + a).match(/([+|-]?)(\\d+)(\u5E74|\u30F6\u6708|\u65E5|\u9031\u9593|\u6642\u9593|\u5206|\u79D2)$/);\n if (!r) {\n throw new Error('\u300E\u65E5\u4ED8\u52A0\u7B97\u300F\u306F\u300E(+\uFF5C-)1(\u5E74|\u30F6\u6708|\u65E5|\u6642\u9593|\u5206|\u79D2)\u300F\u306E\u66F8\u5F0F\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002');\n }\n switch (r[3]) {\n case '\u5E74': return sys.__exec('\u65E5\u4ED8\u52A0\u7B97', [s, `${r[1]}${r[2]}/0/0`, sys]);\n case '\u30F6\u6708': return sys.__exec('\u65E5\u4ED8\u52A0\u7B97', [s, `${r[1]}0/${r[2]}/0`, sys]);\n case '\u9031\u9593': return sys.__exec('\u65E5\u4ED8\u52A0\u7B97', [s, `${r[1]}0/0/${parseInt(r[2]) * 7}`, sys]);\n case '\u65E5': return sys.__exec('\u65E5\u4ED8\u52A0\u7B97', [s, `${r[1]}0/0/${r[2]}`, sys]);\n case '\u6642\u9593': return sys.__exec('\u6642\u9593\u52A0\u7B97', [s, `${r[1]}${r[2]}:0:0`, sys]);\n case '\u5206': return sys.__exec('\u6642\u9593\u52A0\u7B97', [s, `${r[1]}0:${r[2]}:0`, sys]);\n case '\u79D2': return sys.__exec('\u6642\u9593\u52A0\u7B97', [s, `${r[1]}0:0:${r[2]}`, sys]);\n }\n }\n },\n '\u6642\u9593\u30DF\u30EA\u79D2\u53D6\u5F97': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n if (performance && performance.now) {\n return performance.now();\n }\n else if (Date.now) {\n return Date.now();\n }\n else {\n const now = new Date();\n return now.getTime();\n }\n }\n },\n // @\u30C7\u30D0\u30C3\u30B0\u652F\u63F4\n '\u30A8\u30E9\u30FC\u767A\u751F': {\n type: 'func',\n josi: [['\u306E', '\u3067']],\n pure: true,\n fn: function (s) {\n throw new Error(s);\n },\n return_none: true\n },\n '__DEBUG': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n sys.isDebug = true;\n console.log(sys);\n }\n },\n '__DEBUG\u5F37\u5236\u5F85\u6A5F': { type: 'const', value: 0 }, // @__DEBUG\u304D\u3087\u3046\u305B\u3044\u305F\u3044\u304D\n '__DEBUG\u30D6\u30EC\u30A4\u30AF\u30DD\u30A4\u30F3\u30C8\u4E00\u89A7': { type: 'const', value: [] }, // @__DEBUG\u3076\u308C\u3044\u304F\u307D\u3044\u3093\u3068\u3044\u3061\u3089\u3093\n '__DEBUG\u5F85\u6A5F\u30D5\u30E9\u30B0': { type: 'const', value: 0 }, // @__DEBUG\u305F\u3044\u304D\u30D5\u30E9\u30B0\n '__DEBUG_BP_WAIT': {\n type: 'func',\n josi: [['\u3067']],\n pure: true,\n asyncFn: true,\n fn: function (curLine, sys) {\n return new Promise((resolve) => {\n const breakpoints = sys.__getSysVar('__DEBUG\u30D6\u30EC\u30A4\u30AF\u30DD\u30A4\u30F3\u30C8\u4E00\u89A7');\n const forceLine = sys.__getSysVar('__DEBUG\u5F37\u5236\u5F85\u6A5F');\n sys.__setSysVar('__DEBUG\u5F37\u5236\u5F85\u6A5F', 0);\n // \u30D6\u30EC\u30A4\u30AF\u30DD\u30A4\u30F3\u30C8 or __DEBUG\u5F37\u5236\u5F85\u6A5F \u304C\u6307\u5B9A\u3055\u308C\u305F\u304B\uFF1F\n if (breakpoints.indexOf(curLine) >= 0 || forceLine) {\n if (sys.__getSysVar('\u30D7\u30E9\u30B0\u30A4\u30F3\u540D') !== '\u30E1\u30A4\u30F3') {\n return;\n } // \u73FE\u72B6\u30E1\u30A4\u30F3\u306E\u307F\u30C7\u30D0\u30C3\u30B0\u3059\u308B\n console.log(`@__DEBUG_BP_WAIT(${curLine})`);\n const timerId = setInterval(() => {\n if (sys.__getSysVar('__DEBUG\u5F85\u6A5F\u30D5\u30E9\u30B0') === 1) {\n sys.__setSysVar('__DEBUG\u5F85\u6A5F\u30D5\u30E9\u30B0', 0);\n clearInterval(timerId);\n resolve(curLine);\n }\n }, 500);\n }\n else {\n resolve(curLine);\n }\n });\n }\n },\n '\u30B0\u30ED\u30FC\u30D0\u30EB\u95A2\u6570\u4E00\u89A7\u53D6\u5F97': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const vars = sys.__varslist[1];\n const res = [];\n for (const key of vars.keys()) {\n res.push(key);\n }\n return res;\n }\n },\n '\u30B7\u30B9\u30C6\u30E0\u95A2\u6570\u4E00\u89A7\u53D6\u5F97': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const vars = sys.__v0;\n const res = [];\n for (const key of vars.keys()) {\n if (key.startsWith('__') || key.startsWith('!') || key === 'meta') {\n continue;\n }\n res.push(key);\n }\n return res;\n }\n },\n '\u30B7\u30B9\u30C6\u30E0\u95A2\u6570\u5B58\u5728': {\n type: 'func',\n josi: [['\u304C', '\u306E']],\n pure: true,\n fn: function (fname, sys) {\n return (typeof sys.__getSysVar(fname) !== 'undefined');\n }\n },\n '\u30D7\u30E9\u30B0\u30A4\u30F3\u4E00\u89A7\u53D6\u5F97': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const a = [];\n for (const f in sys.pluginfiles) {\n a.push(f);\n }\n return a;\n }\n },\n '\u30E2\u30B8\u30E5\u30FC\u30EB\u4E00\u89A7\u53D6\u5F97': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const a = [];\n for (const f in sys.__module) {\n a.push(f);\n }\n return a;\n }\n },\n '\u52A9\u8A5E\u4E00\u89A7\u53D6\u5F97': {\n type: 'func',\n josi: [],\n pure: true,\n asyncFn: true,\n fn: function (sys) {\n return sys.josiList;\n }\n },\n '\u4E88\u7D04\u8A9E\u4E00\u89A7\u53D6\u5F97': {\n type: 'func',\n josi: [],\n pure: true,\n asyncFn: true,\n fn: function (sys) {\n return sys.reservedWords;\n }\n },\n // @\u30D7\u30E9\u30B0\u30A4\u30F3\u7BA1\u7406\n '\u30D7\u30E9\u30B0\u30A4\u30F3\u540D': { type: 'const', value: '\u30E1\u30A4\u30F3' }, // @\u3077\u3089\u3050\u3044\u3093\u3081\u3044\n '\u30D7\u30E9\u30B0\u30A4\u30F3\u540D\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (s, sys) {\n sys.__setSysVar('\u30D7\u30E9\u30B0\u30A4\u30F3\u540D', s);\n },\n return_none: true\n },\n '\u540D\u524D\u7A7A\u9593': { type: 'const', value: '' }, // @\u306A\u307E\u3048\u304F\u3046\u304B\u3093\n '\u540D\u524D\u7A7A\u9593\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (s, sys) {\n // push namespace\n sys.__namespaceList.push([sys.__getSysVar('\u540D\u524D\u7A7A\u9593'), sys.__getSysVar('\u30D7\u30E9\u30B0\u30A4\u30F3\u540D')]);\n sys.__setSysVar('\u540D\u524D\u7A7A\u9593', s);\n },\n return_none: true\n },\n '\u540D\u524D\u7A7A\u9593\u30DD\u30C3\u30D7': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n // pop namespace\n const a = sys.__namespaceList.pop();\n if (a) {\n sys.__setSysVar('\u540D\u524D\u7A7A\u9593', a[0]);\n sys.__setSysVar('\u30D7\u30E9\u30B0\u30A4\u30F3\u540D', a[1]);\n }\n },\n return_none: true\n },\n // @URL\u30A8\u30F3\u30B3\u30FC\u30C9\u3068\u30D1\u30E9\u30E1\u30FC\u30BF\n 'URL\u30A8\u30F3\u30B3\u30FC\u30C9': {\n type: 'func',\n josi: [['\u3092', '\u304B\u3089']],\n pure: true,\n fn: function (text) {\n return encodeURIComponent(text);\n }\n },\n 'URL\u30C7\u30B3\u30FC\u30C9': {\n type: 'func',\n josi: [['\u3092', '\u3078', '\u306B']],\n pure: true,\n fn: function (text) {\n return decodeURIComponent(text);\n }\n },\n 'URL\u30D1\u30E9\u30E1\u30FC\u30BF\u89E3\u6790': {\n type: 'func',\n josi: [['\u3092', '\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (url, sys) {\n const res = {};\n if (typeof url !== 'string') {\n return res;\n }\n const p = url.split('?');\n if (p.length <= 1) {\n return res;\n }\n const params = p[1].split('&');\n for (const line of params) {\n const line2 = line + '=';\n const kv = line2.split('=');\n const k = sys.__exec('URL\u30C7\u30B3\u30FC\u30C9', [kv[0]]);\n res[k] = sys.__exec('URL\u30C7\u30B3\u30FC\u30C9', [kv[1]]);\n }\n return res;\n }\n },\n // @BASE64\n 'BASE64\u30A8\u30F3\u30B3\u30FC\u30C9': {\n type: 'func',\n josi: [['\u3092', '\u304B\u3089']],\n pure: true,\n fn: function (text) {\n // browser?\n if (typeof (window) !== 'undefined' && window.btoa) {\n const u8a = new TextEncoder().encode(text);\n const utf8str = String.fromCharCode.apply(null, u8a);\n return btoa(utf8str);\n }\n // Node?\n if (typeof (Buffer) !== 'undefined') {\n return Buffer.from(text).toString('base64');\n }\n throw new Error('\u300EBASE64\u30A8\u30F3\u30B3\u30FC\u30C9\u300F\u306F\u5229\u7528\u3067\u304D\u307E\u305B\u3093\u3002');\n }\n },\n 'BASE64\u30C7\u30B3\u30FC\u30C9': {\n type: 'func',\n josi: [['\u3092', '\u3078', '\u306B']],\n pure: true,\n fn: function (text) {\n if (typeof (window) !== 'undefined' && window.atob) {\n const decodedUtf8str = atob(text);\n const dec = Array.prototype.map.call(decodedUtf8str, c => c.charCodeAt());\n const decodedArray = new Uint8Array(dec);\n return new TextDecoder('UTF-8').decode(decodedArray);\n }\n // Node?\n if (typeof (Buffer) !== 'undefined') {\n return Buffer.from(text, 'base64').toString();\n }\n throw new Error('\u300EBASE64\u30C7\u30B3\u30FC\u30C9\u300F\u306F\u5229\u7528\u3067\u304D\u307E\u305B\u3093\u3002');\n }\n }\n};\n", "export default {\n 'meta': {\n type: 'const',\n value: {\n pluginName: 'plugin_math', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\n description: '\u6570\u5B66\u95A2\u6570\u3092\u63D0\u4F9B\u3059\u308B\u30D7\u30E9\u30B0\u30A4\u30F3', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8AAC\u660E\n pluginVersion: '3.6.0', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\n nakoRuntime: ['wnako', 'cnako', 'phpnako'], // \u5BFE\u8C61\u30E9\u30F3\u30BF\u30A4\u30E0\n nakoVersion: '^3.6.0' // \u8981\u6C42\u306A\u3067\u3057\u3053\u30D0\u30FC\u30B8\u30E7\u30F3\n }\n },\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n // \u521D\u671F\u5316\u4E0D\u8981\n }\n },\n // @\u4E09\u89D2\u95A2\u6570\n 'SIN': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return Math.sin(v);\n }\n },\n 'COS': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return Math.cos(v);\n }\n },\n 'TAN': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return Math.tan(v);\n }\n },\n 'ARCSIN': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return Math.asin(v);\n }\n },\n 'ARCCOS': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return Math.acos(v);\n }\n },\n 'ARCTAN': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return Math.atan(v);\n }\n },\n 'ATAN2': {\n type: 'func',\n josi: [['\u3068'], ['\u306E']],\n pure: true,\n fn: function (y, x) {\n return Math.atan2(y, x);\n }\n },\n '\u5EA7\u6A19\u89D2\u5EA6\u8A08\u7B97': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (XY) {\n return Math.atan2(XY[1], XY[0]) * 180 / Math.PI;\n }\n },\n 'RAD2DEG': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return v / Math.PI * 180;\n }\n },\n 'DEG2RAD': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return (v / 180) * Math.PI;\n }\n },\n '\u5EA6\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return v / Math.PI * 180;\n }\n },\n '\u30E9\u30B8\u30A2\u30F3\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return (v / 180) * Math.PI;\n }\n },\n // @\u7B97\u8853\u95A2\u6570\n 'SIGN': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (v) {\n return (parseFloat(v) === 0) ? 0 : (v > 0) ? 1 : -1;\n }\n },\n '\u7B26\u53F7': {\n type: 'func',\n josi: [['\u306E']],\n pure: false,\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n fn: function (v, sys) {\n return sys.__exec('SIGN', [v]);\n }\n },\n 'ABS': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return Math.abs(a);\n }\n },\n '\u7D76\u5BFE\u5024': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return Math.abs(a);\n }\n },\n 'EXP': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return Math.exp(a);\n }\n },\n 'HYPOT': {\n type: 'func',\n josi: [['\u3068'], ['\u306E']],\n pure: true,\n fn: function (a, b) {\n return Math.hypot(a, b);\n }\n },\n '\u659C\u8FBA': {\n type: 'func',\n josi: [['\u3068'], ['\u306E']],\n pure: true,\n fn: function (a, b) {\n return Math.hypot(a, b);\n }\n },\n 'LN': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return Math.log(a);\n }\n },\n 'LOG': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return Math.log(a);\n }\n },\n 'LOGN': {\n type: 'func',\n josi: [['\u3067'], ['\u306E']],\n pure: true,\n fn: function (a, b) {\n if (a === 2) {\n return Math.LOG2E * Math.log(b);\n }\n if (a === 10) {\n return Math.LOG10E * Math.log(b);\n }\n return Math.log(b) / Math.log(a);\n }\n },\n 'FRAC': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return a % 1;\n }\n },\n '\u5C0F\u6570\u90E8\u5206': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return a % 1;\n }\n },\n '\u6574\u6570\u90E8\u5206': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return Math.trunc(a);\n }\n },\n '\u4E71\u6570': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n // number\u306E\u5834\u5408\n if (typeof a === 'number') {\n return Math.floor(Math.random() * a);\n }\n // \u7BC4\u56F2\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u5834\u5408\n if (typeof a === 'object' && a['\u5148\u982D'] !== undefined) {\n const min = a['\u5148\u982D'];\n const max = a['\u672B\u5C3E'];\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n // \u914D\u5217\u306E\u5834\u5408\n if (Array.isArray(a)) {\n const min = a[0];\n const max = a[1];\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n return undefined;\n }\n },\n '\u4E71\u6570\u7BC4\u56F2': {\n type: 'func',\n josi: [['\u304B\u3089'], ['\u307E\u3067\u306E', '\u306E']],\n pure: true,\n fn: function (a, b) {\n return (Math.floor(Math.random() * (b - a + 1)) + a);\n }\n },\n 'SQRT': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return Math.sqrt(a);\n }\n },\n '\u5E73\u65B9\u6839': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n return Math.sqrt(a);\n }\n },\n // @\u6570\u5024\u5207\u4E0A\u5207\u6368\u4E38\u3081\n 'ROUND': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return Math.round(v);\n }\n },\n '\u56DB\u6368\u4E94\u5165': {\n type: 'func',\n josi: [['\u3092', '\u306E']],\n pure: true,\n fn: function (v) {\n return Math.round(v);\n }\n },\n '\u5C0F\u6570\u70B9\u5207\u4E0A': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (a, b) {\n const base = Math.pow(10, b);\n return Math.ceil(a * base) / base;\n }\n },\n '\u5C0F\u6570\u70B9\u5207\u4E0B': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (a, b) {\n const base = Math.pow(10, b);\n return Math.floor(a * base) / base;\n }\n },\n '\u5C0F\u6570\u70B9\u56DB\u6368\u4E94\u5165': {\n type: 'func',\n josi: [['\u3092'], ['\u3067']],\n pure: true,\n fn: function (a, b) {\n const base = Math.pow(10, b);\n return Math.round(a * base) / base;\n }\n },\n 'CEIL': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return Math.ceil(v);\n }\n },\n '\u5207\u4E0A': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return Math.ceil(v);\n }\n },\n 'FLOOR': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return Math.floor(v);\n }\n },\n '\u5207\u6368': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (v) {\n return Math.floor(v);\n }\n }\n};\n", "export const options = {\n delimiter: ',',\n eol: '\\r\\n'\n};\nexport function resetEnv() {\n options.delimiter = ',';\n options.eol = '\\r\\n';\n}\nexport function parse(txt, delimiter = undefined) {\n // delimiter\n if (delimiter === undefined) {\n delimiter = options.delimiter;\n }\n // check txt\n txt = '' + txt + '\\n';\n // convert CRLF to LF, and CR to LF\n txt = txt.replace(/(\\r\\n|\\r)/g, '\\n');\n // trim right\n txt = txt.replace(/\\s+$/, '') + '\\n';\n // set pattern\n const patToDelim = '^(.*?)([\\\\' + delimiter + '\\\\n])';\n const reToDelim = new RegExp(patToDelim);\n // if value is number then convert to float\n const convType = function (v) {\n if (typeof (v) === 'string') {\n if (v.search(/^[0-9.]+$/) >= 0) {\n v = parseFloat(v); // convert number\n }\n }\n return v;\n };\n // parse txt\n const res = [];\n let cells = [];\n let c = '';\n while (txt !== '') {\n // first check delimiter (because /^\\s+/ skip delimiter'\\t') (#3)\n c = txt.charAt(0);\n if (c === delimiter) {\n txt = txt.substring(1);\n cells.push('');\n continue;\n }\n // second check LF (#7)\n if (c === '\\n') {\n cells.push('');\n res.push(cells);\n cells = [];\n txt = txt.substring(1);\n continue;\n }\n // trim white space\n txt = txt.replace(/^\\s+/, '');\n c = txt.charAt(0);\n // no data\n if (c === delimiter) {\n console.log('delimiter');\n cells.push('');\n txt = txt.substring(delimiter.length);\n continue;\n }\n // written using the dialect of Excel\n if (c === '=' && txt.charAt(1) === '\"') {\n txt = txt.substring(1);\n continue;\n }\n // number or simple string\n if (c !== '\"') { // number or simple str\n const m = reToDelim.exec(txt);\n if (!m) {\n cells.push(convType(txt));\n res.push(cells);\n cells = [];\n break;\n }\n if (m[2] === '\\n') {\n cells.push(convType(m[1]));\n res.push(cells);\n cells = [];\n }\n else if (m[2] === delimiter) {\n cells.push(convType(m[1]));\n }\n txt = txt.substring(m[0].length);\n continue;\n }\n // \"\" ... blank data\n if (txt.substring(0, 2) === '\"\"') {\n cells.push('');\n txt = txt.substring(2);\n continue;\n }\n // \"...\"\n let i = 1;\n let s = '';\n while (i < txt.length) {\n const c1 = txt.charAt(i);\n const c2 = txt.charAt(i + 1);\n // console.log(\"@\" + c1 + c2);\n // 2quote => 1quote char\n if (c1 === '\"' && c2 === '\"') {\n i += 2;\n s += '\"';\n continue;\n }\n if (c1 === '\"') {\n i++;\n if (c2 === delimiter) {\n i++;\n cells.push(convType(s));\n s = '';\n break;\n }\n if (c2 === '\\n') {\n i++;\n cells.push(convType(s));\n res.push(cells);\n cells = [];\n break;\n }\n // if (c2 === \" \" || c2 === \"\\t\") {\n i++;\n continue;\n }\n s += c1;\n i++;\n }\n txt = txt.substr(i);\n }\n if (cells.length > 0)\n res.push(cells);\n return res;\n}\nexport function stringify(ary, delimiter = undefined, eol = undefined) {\n // check arguments\n if (delimiter === undefined) {\n delimiter = options.delimiter;\n }\n if (eol === undefined) {\n eol = options.eol;\n }\n const valueConv = genValueConverter(delimiter);\n if (ary === undefined)\n return '';\n let r = '';\n for (let i = 0; i < ary.length; i++) {\n const cells = ary[i];\n if (cells === undefined) {\n r += eol;\n continue;\n }\n for (let j = 0; j < cells.length; j++) {\n cells[j] = valueConv(cells[j]);\n }\n r += cells.join(delimiter) + eol;\n }\n // replace return code\n r = r.replace(/(\\r\\n|\\r|\\n)/g, eol);\n return r;\n}\nexport function replaceEolMark(eol) {\n eol = eol.replace(/\\n\\r/g, '[CRLF]');\n eol = eol.replace(/\\r/g, '[CR]');\n eol = eol.replace(/\\n/g, '[LF]');\n return eol;\n}\nfunction genValueConverter(delimiter) {\n return function (s) {\n s = '' + s;\n let fQuot = false;\n if (s.indexOf('\\n') >= 0 || s.indexOf('\\r') >= 0) {\n fQuot = true;\n }\n if (s.indexOf(delimiter) >= 0) {\n fQuot = true;\n }\n if (s.indexOf('\"') >= 0) {\n fQuot = true;\n s = s.replace(/\"/g, '\"\"');\n }\n if (fQuot)\n s = '\"' + s + '\"';\n return s;\n };\n}\n", "import { options, parse, stringify } from './nako_csv.mjs';\nconst PluginCSV = {\n 'meta': {\n type: 'const',\n value: {\n pluginName: 'plugin_csv', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\n description: 'CSV\u95A2\u9023\u306E\u547D\u4EE4\u3092\u63D0\u4F9B\u3059\u308B\u30D7\u30E9\u30B0\u30A4\u30F3', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8AAC\u660E\n pluginVersion: '3.6.0', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\n nakoRuntime: ['wnako', 'cnako', 'phpnako'], // \u5BFE\u8C61\u30E9\u30F3\u30BF\u30A4\u30E0\n nakoVersion: '3.6.0' // \u8981\u6C42\u306A\u3067\u3057\u3053\u30D0\u30FC\u30B8\u30E7\u30F3\n }\n },\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n // \u57FA\u672C\u7684\u306B\u521D\u671F\u5316\u4E0D\u8981\n }\n },\n // @CSV\u64CD\u4F5C\n 'CSV\u53D6\u5F97': {\n type: 'func',\n josi: [['\u3092', '\u306E', '\u3067']],\n pure: true,\n fn: function (str) {\n options.delimiter = ',';\n return parse(str);\n }\n },\n 'TSV\u53D6\u5F97': {\n type: 'func',\n josi: [['\u3092', '\u306E', '\u3067']],\n pure: true,\n fn: function (str) {\n options.delimiter = '\\t';\n return parse(str);\n }\n },\n '\u8868CSV\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (a) {\n options.delimiter = ',';\n return stringify(a);\n }\n },\n '\u8868TSV\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (a) {\n options.delimiter = '\\t';\n return stringify(a);\n }\n }\n};\nexport default PluginCSV;\n", "export default {\n 'meta': {\n type: 'const',\n value: {\n pluginName: 'plugin_promise', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\n description: 'promise\u95A2\u9023\u306E\u547D\u4EE4\u3092\u63D0\u4F9B\u3059\u308B\u30D7\u30E9\u30B0\u30A4\u30F3', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8AAC\u660E\n pluginVersion: '3.6.0', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\n nakoRuntime: ['wnako', 'cnako'], // \u5BFE\u8C61\u30E9\u30F3\u30BF\u30A4\u30E0\n nakoVersion: '^3.6.0' // \u8981\u6C42\u306A\u3067\u3057\u3053\u30D0\u30FC\u30B8\u30E7\u30F3\n }\n },\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n if (sys.__promise == null) {\n sys.__promise = {\n setLastPromise: function (promise) {\n sys.__setSysVar('\u305D', promise);\n return promise;\n }\n };\n }\n }\n },\n // @\u975E\u540C\u671F\u51E6\u7406\u306E\u4FDD\u8A3C\u306E\u5B9A\u6570\n '\u305D': { type: 'const', value: '' }, // @\u305D\n // @\u975E\u540C\u671F\u51E6\u7406\u306E\u4FDD\u8A3C\n '\u52D5\u6642': {\n type: 'func',\n josi: [['\u3092', '\u3067']],\n pure: true,\n fn: function (callback, sys) {\n return sys.__promise.setLastPromise(new Promise((resolve, reject) => {\n return callback(resolve, reject);\n }));\n },\n return_none: false\n },\n '\u6210\u529F\u6642': {\n type: 'func',\n josi: [['\u3092'], ['\u306E', '\u304C', '\u306B']],\n pure: true,\n fn: function (callback, promise, sys) {\n return sys.__promise.setLastPromise(promise.then((result) => {\n sys.__setSysVar('\u5BFE\u8C61', result);\n return callback(result);\n }));\n },\n return_none: false\n },\n '\u51E6\u7406\u6642': {\n type: 'func',\n josi: [['\u3092'], ['\u306E', '\u304C', '\u306B']],\n pure: true,\n fn: function (cbFunc, promise, sys) {\n return sys.__promise.setLastPromise(promise.then((result) => {\n sys.__setSysVar('\u5BFE\u8C61', result);\n return cbFunc(true, result, sys);\n }, (reason) => {\n sys.__setSysVar('\u5BFE\u8C61', reason);\n return cbFunc(false, reason, sys);\n }));\n },\n return_none: false\n },\n '\u5931\u6557\u6642': {\n type: 'func',\n josi: [['\u3092'], ['\u306E', '\u304C', '\u306B']],\n pure: true,\n fn: function (callback, promise, sys) {\n return sys.__promise.setLastPromise(promise.catch((err) => {\n sys.__setSysVar('\u5BFE\u8C61', err);\n return callback(err);\n }));\n },\n return_none: false\n },\n '\u7D42\u4E86\u6642': {\n type: 'func',\n josi: [['\u3092'], ['\u306E', '\u304C', '\u306B']],\n pure: true,\n fn: function (callback, promise, sys) {\n return sys.__promise.setLastPromise(promise.finally(() => {\n return callback();\n }));\n },\n return_none: false\n },\n '\u675F': {\n type: 'func',\n josi: [['\u3068', '\u3092']],\n pure: true,\n fn: function (...args) {\n const sys = args.pop();\n return sys.__promise.setLastPromise(Promise.all(args));\n },\n return_none: false\n }\n};\n", "/**\n * file: plugin_test.js\n * \u30C6\u30B9\u30C8\u5B9F\u884C\u7528\u30D7\u30E9\u30B0\u30A4\u30F3\n */\nexport default {\n 'meta': {\n type: 'const',\n value: {\n pluginName: 'plugin_test', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\n description: '\u30C6\u30B9\u30C8\u3092\u63D0\u4F9B\u3059\u308B\u30D7\u30E9\u30B0\u30A4\u30F3', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8AAC\u660E\n pluginVersion: '3.6.0', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\n nakoRuntime: ['wnako', 'cnako', 'phpnako'], // \u5BFE\u8C61\u30E9\u30F3\u30BF\u30A4\u30E0\n nakoVersion: '^3.6.0' // \u8981\u6C42\u306A\u3067\u3057\u3053\u30D0\u30FC\u30B8\u30E7\u30F3\n }\n },\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n // \u521D\u671F\u5316\u4E0D\u8981\n }\n },\n // @\u30C6\u30B9\u30C8\n 'ASSERT\u7B49': {\n type: 'func',\n josi: [['\u3068'], ['\u304C']],\n pure: true,\n fn: function (a, b) {\n if (a !== b) {\n throw new Error(`\u4E0D\u4E00\u81F4 [\u5B9F\u969B]${a} [\u671F\u5F85]${b}`);\n }\n return true;\n }\n },\n '\u30C6\u30B9\u30C8\u5B9F\u884C': {\n type: 'func',\n josi: [['\u3068'], ['\u3067']],\n pure: false,\n fn: function (a, b, sys) {\n sys.__exec('ASSERT\u7B49', [a, b, sys]);\n }\n },\n '\u30C6\u30B9\u30C8\u7B49': {\n type: 'func',\n josi: [['\u3068'], ['\u304C']],\n pure: false,\n fn: function (a, b, sys) {\n sys.__exec('ASSERT\u7B49', [a, b, sys]);\n }\n }\n};\n", "// parser / lexer\nimport { NakoParser } from './nako_parser3.mjs';\nimport { NakoLexer } from './nako_lexer.mjs';\nimport { NakoPrepare } from './nako_prepare.mjs';\nimport { generateJS, NakoGenOptions } from './nako_gen.mjs';\nimport { convertInlineIndent, convertIndentSyntax } from './nako_indent_inline.mjs';\nimport { convertDNCL } from './nako_from_dncl.mjs';\nimport { convertDNCL2 } from './nako_from_dncl2.mjs';\nimport { SourceMappingOfTokenization, SourceMappingOfIndentSyntax, OffsetToLineColumn, subtractSourceMapByPreCodeLength } from './nako_source_mapping.mjs';\nimport { NakoLexerError, NakoImportError, NakoSyntaxError, InternalLexerError } from './nako_errors.mjs';\nimport { NakoLogger } from './nako_logger.mjs';\nimport { NakoGlobal } from './nako_global.mjs';\n// version info\nimport coreVersion from './nako_core_version.mjs';\n// basic plugins\nimport PluginSystem from './plugin_system.mjs';\nimport PluginMath from './plugin_math.mjs';\nimport PluginCSV from './plugin_csv.mjs';\nimport PluginPromise from './plugin_promise.mjs';\nimport PluginTest from './plugin_test.mjs';\nconst cloneAsJSON = (x) => JSON.parse(JSON.stringify(x));\nconst PLUGIN_MIN_VERSION_INT = 600; // = minor * 100 + patch\n/** \u30B3\u30F3\u30D1\u30A4\u30E9\u5B9F\u884C\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u751F\u6210 */\nexport function newCompilerOptions(initObj = {}) {\n if (typeof initObj !== 'object') {\n initObj = {};\n }\n initObj.testOnly = initObj.testOnly || false;\n initObj.resetEnv = initObj.resetEnv || false;\n initObj.resetAll = initObj.resetAll || false;\n initObj.preCode = initObj.preCode || '';\n initObj.nakoGlobal = initObj.nakoGlobal || null;\n return initObj;\n}\n/** \u306A\u3067\u3057\u3053\u30B3\u30F3\u30D1\u30A4\u30E9 */\nexport class NakoCompiler {\n /**\n * @param {undefined | {'useBasicPlugin':true|false}} options\n */\n constructor(options = undefined) {\n if (options === undefined) {\n options = { useBasicPlugin: true };\n }\n // \u74B0\u5883\u306E\u30EA\u30BB\u30C3\u30C8\n this.__varslist = [this.newVaiables(), this.newVaiables(), this.newVaiables()]; // \u3053\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u5909\u66F4\u3057\u306A\u3044\u3053\u3068 (this.gen.__varslist \u3068\u5171\u6709\u3059\u308B)\n this.__locals = this.newVaiables(); // \u30ED\u30FC\u30AB\u30EB\u5909\u6570\n this.__self = this;\n this.__vars = this.__varslist[2]; // alias of __varslist[2]\n this.__v1 = this.__varslist[1]; // alias of __varslist[1]\n this.__v0 = this.__varslist[0]; // alias of __varslist[0]\n // \u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u8A2D\u5B9A\n this.version = coreVersion.version;\n this.coreVersion = coreVersion.version;\n this.__globals = []; // \u751F\u6210\u3057\u305F NakoGlobal \u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u4FDD\u6301\n this.__globalObj = null;\n this.__module = {}; // require\u306A\u3069\u3067\u53D6\u308A\u8FBC\u3093\u3060\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u4E00\u89A7\n this.pluginFunclist = {}; // \u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u5B9A\u7FA9\u3055\u308C\u305F\u95A2\u6570\n this.funclist = this.newVaiables(); // \u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u5B9A\u7FA9\u3055\u308C\u305F\u95A2\u6570 + \u30E6\u30FC\u30B6\u30FC\u304C\u5B9A\u7FA9\u3057\u305F\u95A2\u6570\n this.moduleExport = this.newVaiables();\n this.pluginfiles = {}; // \u53D6\u308A\u8FBC\u3093\u3060\u30D5\u30A1\u30A4\u30EB\u4E00\u89A7\n this.commandlist = new Set(); // \u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u5B9A\u7FA9\u3055\u308C\u305F\u5B9A\u6570\u30FB\u5909\u6570\u30FB\u95A2\u6570\u306E\u540D\u524D\n this.nakoFuncList = this.newVaiables(); // __v1\u306B\u914D\u7F6E\u3059\u308BJavaScript\u306E\u30B3\u30FC\u30C9\u3067\u5B9A\u7FA9\u3055\u308C\u305F\u95A2\u6570\n this.eventList = []; // \u5B9F\u884C\u524D\u306B\u74B0\u5883\u3092\u5909\u66F4\u3059\u308B\u305F\u3081\u306E\u30A4\u30D9\u30F3\u30C8\n this.codeGenerateor = {}; // \u30B3\u30FC\u30C9\u30B8\u30A7\u30CD\u30EC\u30FC\u30BF\n this.debugOption = { useDebug: false, waitTime: 0 };\n this.logger = new NakoLogger();\n this.filename = 'main.nako3';\n /**\n * \u53D6\u308A\u8FBC\u307F\u6587\u3092\u7F6E\u63DB\u3059\u308B\u305F\u3081\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3002\n * \u6B63\u898F\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u540D\u304C\u30AD\u30FC\u306B\u306A\u308A\u3001\u53D6\u308A\u8FBC\u307F\u6587\u306E\u5F15\u6570\u306B\u6307\u5B9A\u3055\u308C\u305F\u6B63\u898F\u5316\u3055\u308C\u3066\u3044\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u540D\u306Falias\u306B\u5165\u308C\u3089\u308C\u308B\u3002\n * JavaScript\u30D5\u30A1\u30A4\u30EB\u306B\u3088\u308B\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u5834\u5408\u3001content\u306F\u7A7A\u6587\u5B57\u5217\u3002\n * funclist\u306F\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u306E\u9AD8\u901F\u5316\u306E\u305F\u3081\u306B\u4E8B\u524D\u306B\u53D6\u308A\u51FA\u3057\u305F\u3001\u30D5\u30A1\u30A4\u30EB\u304C\u5B9A\u7FA9\u3059\u308B\u95A2\u6570\u540D\u306E\u30EA\u30B9\u30C8\u3002\n */\n this.dependencies = {};\n this.usedFuncs = new Set();\n this.numFailures = 0;\n if (options.useBasicPlugin) {\n this.addBasicPlugins();\n }\n // \u5FC5\u8981\u306A\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u899A\u3048\u3066\u304A\u304F\n this.prepare = NakoPrepare.getInstance();\n this.parser = new NakoParser(this.logger);\n this.lexer = new NakoLexer(this.logger);\n // \u95A2\u6570\u4E00\u89A7\u3092\u8A2D\u5B9A\n this.lexer.setFuncList(this.funclist);\n this.lexer.setModuleExport(this.moduleExport);\n // link for plysin_system::\u4E88\u7D04\u8A9E\u4E00\u89A7\u53D6\u5F97/\u52A9\u8A5E\u4E00\u89A7\u53D6\u5F97\n this.reservedWords = JSON.parse(JSON.stringify(this.lexer.reservedWords)); // \u5916\u90E8\u516C\u958B\u7528\u306E\u30C7\u30FC\u30BF\u306A\u306E\u3067\u8907\u88FD\u3057\u3066\u4FDD\u6301\u3059\u308B\n this.josiList = JSON.parse(JSON.stringify(this.lexer.josiList));\n }\n /** \u30E2\u30B8\u30E5\u30FC\u30EB(\u540D\u524D\u7A7A\u9593)\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B */\n getModList() {\n return this.lexer.modList;\n }\n getLogger() {\n return this.logger;\n }\n getNakoFuncList() {\n return this.nakoFuncList;\n }\n getNakoFunc(name) {\n return this.nakoFuncList.get(name);\n }\n getPluginfiles() {\n return this.pluginfiles;\n }\n /**\n * \u57FA\u672C\u7684\u306A\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u8FFD\u52A0\u3059\u308B\n */\n addBasicPlugins() {\n this.addPlugin(PluginSystem);\n this.addPlugin(PluginMath);\n this.addPlugin(PluginPromise);\n this.addPlugin(PluginTest);\n this.addPlugin(PluginCSV);\n }\n /**\n * logger\u3092\u65B0\u3057\u3044\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3067\u7F6E\u304D\u63DB\u3048\u308B\u3002\n */\n replaceLogger() {\n const logger = this.lexer.logger = this.parser.logger = this.logger = new NakoLogger();\n return logger;\n }\n /**\n * \u30D5\u30A1\u30A4\u30EB\u5185\u306Erequire\u6587\u306E\u4F4D\u7F6E\u3092\u5217\u6319\u3059\u308B\u3002\u51FA\u529B\u306E\u914D\u5217\u306Fstart\u3067\u30BD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u3002\n * @param {Token[]} tokens rawtokenize\u306E\u51FA\u529B\n */\n static listRequireStatements(tokens) {\n const requireStatements = [];\n for (let i = 0; i + 2 < tokens.length; i++) {\n // not (string|string_ex) '\u53D6\u308A\u8FBC\u307F'\n if (!(tokens[i].type === 'not' &&\n (tokens[i + 1].type === 'string' || tokens[i + 1].type === 'string_ex') &&\n tokens[i + 2].value === '\u53D6\u8FBC')) {\n continue;\n }\n // \u53D6\u308A\u8FBC\u3080\u30E9\u30A4\u30D6\u30E9\u30EA\n let filename = tokens[i + 1].value + '';\n // \u300E\u53D6\u308A\u8FBC\u3080\u300F\u6587\u3067\u300C\u62E1\u5F35\u30D7\u30E9\u30B0\u30A4\u30F3:\u300D\u6A5F\u69CB\u3092\u8FFD\u52A0\u3059\u308B #139\n // (ex) !\u300E\u8CAF\u8535\u5EAB:ojyo-sama.nako3\u300F\u3092\u53D6\u308A\u8FBC\u3080 \u2192 https://n3s.nadesi.com/plain/ojyo-sama.nako3\n if (filename.startsWith('\u8CAF\u8535\u5EAB:')) {\n filename = `https://n3s.nadesi.com/plain/${filename.substring(4)}`;\n }\n // (ex) !\u300E\u62E1\u5F35\u30D7\u30E9\u30B0\u30A4\u30F3:music.js@1.0.2\u300F\u3092\u53D6\u308A\u8FBC\u3080 \u2192 https://cdn.jsdelivr.net/npm/nadesiko3-music@1.0.2/nadesiko3-music.js\n if (filename.startsWith('\u62E1\u5F35\u30D7\u30E9\u30B0\u30A4\u30F3:')) {\n const name = filename.split(':')[1];\n const m = name.match(/^([a-zA-Z0-9_-]+)\\.(js|mjs|nako3)(@[0-9.]+)?$/);\n if (m) {\n let basename = m[1];\n const ext = m[2];\n const version = m[3] || '@latest';\n if (ext === 'js' || ext === 'mjs') {\n // JS\u30D7\u30E9\u30B0\u30A4\u30F3\n if (!basename.startsWith('nadesiko3-')) {\n basename = `nadesiko3-${basename}`;\n }\n filename = `https://cdn.jsdelivr.net/npm/${basename}${version}/${basename}.${ext}`;\n }\n else {\n // \u306A\u3067\u3057\u30533\u30D7\u30E9\u30B0\u30A4\u30F3\n filename = `https://n3s.nadesi.com/plain/${basename}.${ext}`;\n }\n }\n else {\n throw new NakoImportError('\u300E\u53D6\u8FBC\u300F\u306E\u6307\u5B9A\u30A8\u30E9\u30FC\u3002\u300E\u62E1\u5F35\u30D7\u30E9\u30B0\u30A4\u30F3:(\u30D5\u30A1\u30A4\u30EB\u540D).(js|nako3)(@ver)\u300F\u306E\u66F8\u5F0F\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002', tokens[i].file, tokens[i].line);\n }\n }\n // push\n requireStatements.push({\n ...tokens[i],\n start: i,\n end: i + 3,\n value: filename,\n firstToken: tokens[i],\n lastToken: tokens[i + 2]\n });\n i += 2;\n }\n return requireStatements;\n }\n /**\n * \u30D7\u30ED\u30B0\u30E9\u30E0\u304C\u4F9D\u5B58\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u518D\u5E30\u7684\u306B\u53D6\u5F97\u3059\u308B\u3002\n * - \u4F9D\u5B58\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u304CJavaScript\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u5408\u3001\u305D\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u5B9F\u884C\u3057\u3066\u8A55\u4FA1\u7D50\u679C\u3092this.addPluginFile\u306B\u6E21\u3059\u3002\n * - \u4F9D\u5B58\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u304C\u306A\u3067\u3057\u3053\u8A00\u8A9E\u306E\u5834\u5408\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u4E2D\u8EAB\u3092\u53D6\u5F97\u3057\u3066\u5909\u6570\u306B\u4FDD\u5B58\u3057\u3001\u518D\u5E30\u3059\u308B\u3002\n *\n * @param {string} code\n * @param {string} filename\n * @param {string} preCode\n * @param {LoaderTool} tools \u5B9F\u884C\u74B0\u5883 (\u30D6\u30E9\u30A6\u30B6 or Node.js) \u306B\u3088\u3063\u3066\u5916\u90E8\u30D5\u30A1\u30A4\u30EB\u306E\u53D6\u5F97\u30FB\u5B9F\u884C\u65B9\u6CD5\u306F\u7570\u306A\u308B\u305F\u3081\u3001\u5F15\u6570\u3067\u305D\u308C\u3089\u3092\u884C\u3046\u95A2\u6570\u3092\u53D7\u3051\u53D6\u308B\u3002\n * - resolvePath \u306F\u6307\u5B9A\u3057\u305F\u540D\u524D\u3092\u3082\u3064\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3057\u3001\u6B63\u898F\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u8FD4\u3059\u95A2\u6570\u3002\u8FD4\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u540D\u306FreadNako3\u304BreadJs\u306E\u5F15\u6570\u306B\u306A\u308B\u3002\n * - readNako3\u306F\u6307\u5B9A\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306E\u4E2D\u8EAB\u3092\u8FD4\u3059\u95A2\u6570\u3002\n * - readJs\u306F\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092JavaScript\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u3068\u3057\u3066\u5B9F\u884C\u3057\u3001`export default` \u3067\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305F\u5024\u3092\u8FD4\u3059\u95A2\u6570\u3002\n * @returns {Promise<unknown> | void}\n * @protected\n */\n _loadDependencies(code, filename, preCode, tools) {\n const dependencies = {};\n const compiler = new NakoCompiler({ useBasicPlugin: true });\n /**\n * @param {any} item\n * @param {any} tasks\n */\n const loadJS = (item, tasks) => {\n // js\u306A\u3089\u30D7\u30E9\u30B0\u30A4\u30F3\u3068\u3057\u3066\u8AAD\u307F\u8FBC\u3080\u3002(ESM\u3067\u306F\u5FC5\u305A\u52D5\u7684\u306B\u8AAD\u3080)\n const obj = tools.readJs(item.filePath, item.firstToken);\n tasks.push(obj.task.then((res) => {\n const pluginFuncs = res();\n this.addPluginFile(item.value, item.filePath, pluginFuncs, false);\n dependencies[item.filePath].funclist = pluginFuncs;\n dependencies[item.filePath].moduleExport = {};\n dependencies[item.filePath].addPluginFile = () => { this.addPluginFile(item.value, item.filePath, pluginFuncs, false); };\n }));\n };\n const loadNako3 = (item, tasks) => {\n // nako3\u306A\u3089\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3093\u3067dependencies\u306B\u4FDD\u5B58\u3059\u308B\u3002\n const content = tools.readNako3(item.filePath, item.firstToken);\n const registerFile = (code) => {\n // \u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u306E\u9AD8\u901F\u5316\u306E\u305F\u3081\u306B\u3001\u4E8B\u524D\u306B\u30D5\u30A1\u30A4\u30EB\u304C\u5B9A\u7FA9\u3059\u308B\u95A2\u6570\u540D\u306E\u30EA\u30B9\u30C8\u3092\u53D6\u308A\u51FA\u3057\u3066\u304A\u304F\u3002\n // preDefineFunc\u306F\u30C8\u30FC\u30AF\u30F3\u5217\u306B\u5909\u66F4\u3092\u52A0\u3048\u308B\u305F\u3081\u3001\u4E8B\u524D\u306B\u30AF\u30ED\u30FC\u30F3\u3057\u3066\u304A\u304F\u3002\n // \u300C\u30D7\u30E9\u30B0\u30A4\u30F3\u540D\u8A2D\u5B9A\u300D\u3092\u884C\u3046 (#956)\n const modName = NakoLexer.filenameToModName(item.filePath);\n code = `\u300E${modName}\u300F\u306B\u540D\u524D\u7A7A\u9593\u8A2D\u5B9A;\u300E${modName}\u300F\u306B\u30D7\u30E9\u30B0\u30A4\u30F3\u540D\u8A2D\u5B9A;` + code + ';\u540D\u524D\u7A7A\u9593\u30DD\u30C3\u30D7;';\n const tokens = this.rawtokenize(code, 0, item.filePath);\n dependencies[item.filePath].tokens = tokens;\n const funclist = new Map();\n const moduleexport = new Map();\n NakoLexer.preDefineFunc(cloneAsJSON(tokens), this.logger, funclist, moduleexport);\n dependencies[item.filePath].funclist = funclist;\n dependencies[item.filePath].moduleExport = moduleexport;\n // \u518D\u5E30\n return loadRec(code, item.filePath, '');\n };\n // \u53D6\u308A\u8FBC\u307F\u69CB\u6587\u306B\u304A\u3051\u308B\u554F\u984C\u3092\u6E1B\u3089\u3059\u305F\u3081\u3001\u5FC5\u305A\u975E\u540C\u671F\u3067\u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u8AAD\u307F\u8FBC\u3080\u4ED5\u69D8\u3068\u3057\u305F #1219\n tasks.push(content.task.then((res) => registerFile(res)));\n };\n const loadRec = (code, filename, preCode) => {\n const tasks = [];\n // \u53D6\u308A\u8FBC\u307F\u304C\u5FC5\u8981\u306A\u60C5\u5831\u4E00\u89A7\u3092\u8ABF\u3079\u308B(\u30C8\u30FC\u30AF\u30F3\u5206\u5272\u3057\u3066\u3001\u53D6\u308A\u8FBC\u307F\u30BF\u30B0\u3092\u5F97\u308B)\n const tags = NakoCompiler.listRequireStatements(compiler.rawtokenize(code, 0, filename, preCode));\n // \u30D1\u30B9\u3092\u89E3\u6C7A\u3059\u308B\n const tagsResolvePath = tags.map((v) => ({ ...v, ...tools.resolvePath(v.value, v.firstToken, filename) }));\n // \u53D6\u308A\u8FBC\u307F\u958B\u59CB\n for (const item of tagsResolvePath) {\n // 2\u56DE\u76EE\u4EE5\u964D\u306E\u8AAD\u307F\u8FBC\u307F\n // eslint-disable-next-line no-prototype-builtins\n if (dependencies.hasOwnProperty(item.filePath)) {\n dependencies[item.filePath].alias.add(item.value);\n continue;\n }\n // \u521D\u56DE\u306E\u8AAD\u307F\u8FBC\u307F\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n dependencies[item.filePath] = { tokens: [], alias: new Set([item.value]), addPluginFile: () => { }, funclist: {}, moduleExport: {} };\n if (item.type === 'js' || item.type === 'mjs') {\n loadJS(item, tasks);\n }\n else if (item.type === 'nako3') {\n loadNako3(item, tasks);\n }\n else {\n throw new NakoImportError(`\u30D5\u30A1\u30A4\u30EB\u300E${item.value}\u300F\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3002\u30D5\u30A1\u30A4\u30EB\u304C\u5B58\u5728\u3057\u306A\u3044\u304B\u672A\u5BFE\u5FDC\u306E\u62E1\u5F35\u5B50\u3067\u3059\u3002`, item.firstToken.file, item.firstToken.line);\n }\n }\n if (tasks.length > 0) {\n return Promise.all(tasks);\n }\n return undefined;\n };\n try {\n const result = loadRec(code, filename, preCode);\n // \u975E\u540C\u671F\u306A\u5834\u5408\u306E\u30A8\u30E9\u30FC\u30CF\u30F3\u30C9\u30EA\u30F3\u30B0\n if (result !== undefined) {\n result.catch((err) => {\n // \u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u305F\u3089\u51E6\u7406\u3092\u4E2D\u65AD\u3059\u308B\n this.logger.error(err.msg);\n this.numFailures++;\n });\n }\n // \u3059\u3079\u3066\u304C\u7D42\u308F\u3063\u3066\u304B\u3089this.dependencies\u306B\u4EE3\u5165\u3059\u308B\u3002\u305D\u3046\u3057\u306A\u3044\u3068\u3001\u300C\u5B9F\u884C\u300D\u30DC\u30BF\u30F3\u3092\u9023\u6253\u3057\u305F\u5834\u5408\u306A\u3069\u3001\n // loadDependencies() \u304C\u4E26\u5217\u5B9F\u884C\u3055\u308C\u308B\u3068\u304D\u306B\u6B63\u3057\u304F\u52D5\u4F5C\u3057\u306A\u3044\u3002\n this.dependencies = dependencies;\n return result;\n }\n catch (err) {\n // \u540C\u671F\u51E6\u7406\u3067\u306F\u7D20\u76F4\u306B\u4F8B\u5916\u3092\u6295\u3052\u308B\n this.logger.error('' + err);\n throw err;\n }\n }\n /**\n * \u30B3\u30FC\u30C9\u3092\u5358\u8A9E\u306B\u5206\u5272\u3059\u308B\n * @param code \u306A\u3067\u3057\u3053\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\n * @param line \u306A\u3067\u3057\u3053\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u884C\u756A\u53F7\n * @param filename\n * @param preCode\n * @returns \u30C8\u30FC\u30AF\u30F3\u306E\u30EA\u30B9\u30C8\n */\n rawtokenize(code, line, filename, preCode = '') {\n if (!code.startsWith(preCode)) {\n throw new Error('code\u306E\u5148\u982D\u306B\u306FpreCode\u3092\u542B\u3081\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n // \u540D\u524D\u7A7A\u9593\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u30EA\u30B9\u30C8\u306B\u81EA\u8EAB\u3092\u8FFD\u52A0\n const modName = NakoLexer.filenameToModName(filename);\n const modList = this.getModList();\n if (modList.indexOf(modName) < 0) {\n modList.unshift(modName);\n }\n // \u5168\u89D2\u534A\u89D2\u306E\u7D71\u4E00\u51E6\u7406\n const preprocessed = this.prepare.convert(code);\n const tokenizationSourceMapping = new SourceMappingOfTokenization(code.length, preprocessed);\n const indentationSyntaxSourceMapping = new SourceMappingOfIndentSyntax(code, [], []);\n const offsetToLineColumn = new OffsetToLineColumn(code);\n // \u30C8\u30FC\u30AF\u30F3\u5206\u5272\n let tokens;\n try {\n tokens = this.lexer.tokenize(preprocessed.map((v) => v.text).join(''), line, filename);\n }\n catch (err) {\n if (!(err instanceof InternalLexerError)) {\n throw err;\n }\n // \u30A8\u30E9\u30FC\u4F4D\u7F6E\u3092\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u4E0A\u306E\u4F4D\u7F6E\u306B\u5909\u63DB\u3057\u3066\u8FD4\u3059\n const dest = indentationSyntaxSourceMapping.map(tokenizationSourceMapping.map(err.preprocessedCodeStartOffset), tokenizationSourceMapping.map(err.preprocessedCodeEndOffset));\n const line = dest.startOffset === null ? err.line : offsetToLineColumn.map(dest.startOffset, false).line;\n const map = subtractSourceMapByPreCodeLength({ ...dest, line }, preCode);\n throw new NakoLexerError(err.msg, map.startOffset, map.endOffset, map.line, filename);\n }\n // DNCL ver2 (core #41)\n tokens = convertDNCL2(tokens);\n // DNCL ver1 (#1140)\n tokens = convertDNCL(tokens);\n // \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u3092\u5909\u63DB #596\n tokens = convertIndentSyntax(tokens);\n // \u30A4\u30F3\u30E9\u30A4\u30F3\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u5909\u63DB #1215\n tokens = convertInlineIndent(tokens);\n // \u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u4E0A\u306E\u4F4D\u7F6E\u306B\u5909\u63DB\n tokens = tokens.map((token) => {\n const dest = indentationSyntaxSourceMapping.map(tokenizationSourceMapping.map(token.preprocessedCodeOffset || 0), tokenizationSourceMapping.map((token.preprocessedCodeOffset || 0) + (token.preprocessedCodeLength || 0)));\n let line = token.line;\n let column = 0;\n if (token.type === 'eol' && dest.endOffset !== null) {\n // eol\u306Fnako_gen\u3067 `line = ${eolToken.line};` \u306B\u5909\u63DB\u3055\u308C\u308B\u305F\u3081\u3001\n // \u884C\u672B\u306Eeol\u306Eline\u306F\u6B21\u306E\u884C\u306E\u884C\u6570\u3092\u8868\u3059\u5FC5\u8981\u304C\u3042\u308B\u3002\n const out = offsetToLineColumn.map(dest.endOffset, false);\n line = out.line;\n column = out.column;\n }\n else if (dest.startOffset !== null) {\n const out = offsetToLineColumn.map(dest.startOffset, false);\n line = out.line;\n column = out.column;\n }\n return {\n ...token,\n ...subtractSourceMapByPreCodeLength({ line, column, startOffset: dest.startOffset, endOffset: dest.endOffset }, preCode),\n rawJosi: token.josi\n };\n });\n return tokens;\n }\n /**\n * \u5358\u8A9E\u306E\u5C5E\u6027\u3092\u69CB\u6587\u89E3\u6790\u306B\u5148\u7ACB\u3061\u88DC\u6B63\u3059\u308B\n * @param {Token[]} tokens \u30C8\u30FC\u30AF\u30F3\u306E\u30EA\u30B9\u30C8\n * @param {boolean} isFirst \u6700\u521D\u306E\u547C\u3073\u51FA\u3057\u304B\u3069\u3046\u304B\n * @param {string} filename\n * @returns \u30B3\u30FC\u30C9 (\u306A\u3067\u3057\u3053)\n */\n converttoken(tokens, isFirst, filename) {\n const tok = this.lexer.replaceTokens(tokens, isFirst, filename);\n return tok;\n }\n /**\n * \u74B0\u5883\u306E\u30EA\u30BB\u30C3\u30C8\n * {NakoResetOption|undefined}\n */\n reset(options = undefined) {\n if (!options || options.needToClearPlugin) {\n // (\u30E1\u30E2) #1245\n // \u901A\u5E38\u3001\u30EA\u30BB\u30C3\u30C8\u51E6\u7406\u3067\u306F\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u306E!\u30AF\u30EA\u30A2\u3092\u547C\u3076\u3002\n // \u3057\u304B\u3057\u3001\u30A8\u30C7\u30A3\u30BF\u3067\u306F\u30AF\u30EA\u30A2\u30A4\u30D9\u30F3\u30C8\u3092\u547C\u3076\u3068\u3001\u6642\u8A08\u306A\u3069\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304C\u6B62\u307E\u3063\u3066\u3057\u307E\u3046\n // \u305D\u306E\u305F\u3081\u3001\u4F8B\u5916\u7684\u306B\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30AF\u30EA\u30A2\u30A4\u30D9\u30F3\u30C8\u3092\u547C\u3070\u306A\u3044\n this.clearPlugins();\n }\n /**\n * \u306A\u3067\u3057\u3053\u306E\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092\u30B9\u30BF\u30C3\u30AF\u3067\u7BA1\u7406\n * __varslist[0] \u30D7\u30E9\u30B0\u30A4\u30F3\u9818\u57DF\n * __varslist[1] \u306A\u3067\u3057\u3053\u30B0\u30ED\u30FC\u30D0\u30EB\u9818\u57DF\n * __varslist[2] \u6700\u521D\u306E\u30ED\u30FC\u30AB\u30EB\u5909\u6570 ( == __vars }\n */\n this.__varslist = [this.__varslist[0], this.newVaiables(), this.newVaiables()];\n this.__v0 = this.__varslist[0]; // alias of __varslist[0]\n this.__v1 = this.__varslist[1]; // alias of __varslist[1]\n this.__vars = this.__varslist[2]; // alias of __varslist[2]\n this.__locals = this.newVaiables();\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u547D\u4EE4\u4EE5\u5916\u3092\u524A\u9664\u3059\u308B\u3002\n this.funclist = new Map();\n for (const name of this.__v0.keys()) {\n const original = this.pluginFunclist[name]; // record\n if (!original) {\n continue;\n }\n this.funclist.set(name, JSON.parse(JSON.stringify(original)));\n }\n this.lexer.setFuncList(this.funclist);\n this.moduleExport = new Map();\n this.lexer.setModuleExport(this.moduleExport);\n this.logger.clear();\n }\n /**\n * type\u304Ccode\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u5358\u8A9E\u306B\u5206\u5272\u3059\u308B\u305F\u3081\u306E\u51E6\u7406\n * @param {string} code\n * @param {number} line\n * @param {string} filename\n * @param {number | null} startOffset\n * @returns\n * @private\n */\n lexCodeToken(code, line, filename, startOffset) {\n // \u5358\u8A9E\u306B\u5206\u5272\n let tokens = this.rawtokenize(code, line, filename, '');\n // \u6587\u5B57\u5217\u5185\u4F4D\u7F6E\u304B\u3089\u30D5\u30A1\u30A4\u30EB\u5185\u4F4D\u7F6E\u3078\u5909\u63DB\n if (startOffset === null) {\n for (const token of tokens) {\n token.startOffset = undefined;\n token.endOffset = undefined;\n }\n }\n else {\n for (const token of tokens) {\n if (token.startOffset !== undefined) {\n token.startOffset += startOffset;\n }\n if (token.endOffset !== undefined) {\n token.endOffset += startOffset;\n }\n }\n }\n // convertToken\u3067\u6D88\u3055\u308C\u308B\u30B3\u30E1\u30F3\u30C8\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u6B8B\u3059\n const commentTokens = tokens.filter((t) => t.type === 'line_comment' || t.type === 'range_comment')\n .map((v) => ({ ...v })); // clone\n tokens = this.converttoken(tokens, false, filename);\n return { tokens, commentTokens };\n }\n /**\n * \u518D\u5E30\u7684\u306Brequire\u6587\u3092\u7F6E\u63DB\u3059\u308B\u3002\n * .js\u3067\u3042\u308C\u3070\u524A\u9664\u3057\u3001.nako3\u3067\u3042\u308C\u3070\u305D\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30C8\u30FC\u30AF\u30F3\u5217\u3067\u7F6E\u63DB\u3059\u308B\u3002\n * @param {TokenWithSourceMap[]} tokens\n * @param {Set<string>} [includeGuard]\n * @returns {Token[]} \u524A\u9664\u3055\u308C\u305F\u53D6\u308A\u8FBC\u307F\u6587\u306E\u30C8\u30FC\u30AF\u30F3\n */\n replaceRequireStatements(tokens, includeGuard = new Set()) {\n /** @type {TokenWithSourceMap[]} */\n const deletedTokens = [];\n for (const r of NakoCompiler.listRequireStatements(tokens).reverse()) {\n // C\u8A00\u8A9E\u306Einclude guard\u3068\u540C\u3058\u4ED5\u7D44\u307F\u3067\u7121\u9650\u30EB\u30FC\u30D7\u3092\u9632\u3050\u3002\n if (includeGuard.has(r.value)) {\n deletedTokens.push(...tokens.splice((r.start || 0), (r.end || 0) - (r.start || 0)));\n continue;\n }\n const filePath = Object.keys(this.dependencies).find((key) => this.dependencies[key].alias.has(r.value));\n if (filePath === undefined) {\n if (!r.firstToken) {\n throw new Error(`\u30D5\u30A1\u30A4\u30EB\u300E${r.value}\u300F\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002`);\n }\n throw new NakoLexerError(`\u30D5\u30A1\u30A4\u30EB\u300E${r.value}\u300F\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002`, r.firstToken.startOffset || 0, r.firstToken.endOffset || 0, r.firstToken.line, r.firstToken.file);\n }\n this.dependencies[filePath].addPluginFile();\n const children = cloneAsJSON(this.dependencies[filePath].tokens);\n includeGuard.add(r.value);\n deletedTokens.push(...this.replaceRequireStatements(children, includeGuard));\n deletedTokens.push(...tokens.splice(r.start || 0, (r.end || 0) - (r.start || 0), ...children));\n }\n return deletedTokens;\n }\n /**\n * replaceRequireStatements\u306E\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u7528\u306E\u5B9F\u88C5\u3002\n * @param {TokenWithSourceMap[]} tokens\n * @returns {TokenWithSourceMap[]} \u524A\u9664\u3055\u308C\u305F\u53D6\u308A\u8FBC\u307F\u6587\u306E\u30C8\u30FC\u30AF\u30F3\n */\n removeRequireStatements(tokens) {\n /** @type {TokenWithSourceMap[]} */\n const deletedTokens = [];\n for (const r of NakoCompiler.listRequireStatements(tokens).reverse()) {\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u547D\u4EE4\u306E\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u306E\u305F\u3081\u306B\u3001addPluginFile\u3092\u547C\u3093\u3067\u95A2\u6570\u306E\u30EA\u30B9\u30C8\u3092this.dependencies[filePath].funclist\u306B\u4FDD\u5B58\u3055\u305B\u308B\u3002\n const filePath = Object.keys(this.dependencies).find((key) => this.dependencies[key].alias.has(r.value));\n if (filePath !== undefined) {\n this.dependencies[filePath].addPluginFile();\n }\n // \u5168\u3066\u306E\u53D6\u308A\u8FBC\u307F\u6587\u3092\u524A\u9664\u3059\u308B\u3002\u305D\u3046\u3057\u306A\u3044\u3068\u30C8\u30FC\u30AF\u30F3\u5316\u306B\u6642\u9593\u304C\u304B\u304B\u308A\u3059\u304E\u308B\u3002\n deletedTokens.push(...tokens.splice(r.start || 0, (r.end || 0) - (r.start || 0)));\n }\n return deletedTokens;\n }\n /** \u5B57\u53E5\u89E3\u6790\u3092\u884C\u3046 */\n lex(code, filename = 'main.nako3', preCode = '', syntaxHighlighting = false) {\n // \u5358\u8A9E\u306B\u5206\u5272\n let tokens = this.rawtokenize(code, 0, filename, preCode);\n // require\u6587\u3092\u518D\u5E30\u7684\u306B\u7F6E\u63DB\u3059\u308B\n const requireStatementTokens = syntaxHighlighting ? this.removeRequireStatements(tokens) : this.replaceRequireStatements(tokens, undefined);\n for (const t of requireStatementTokens) {\n if (t.type === 'word' || t.type === 'not') {\n t.type = 'require';\n }\n }\n if (requireStatementTokens.length >= 3) {\n // modList \u3092\u66F4\u65B0\n for (let i = 0; i < requireStatementTokens.length; i += 3) {\n let modName = requireStatementTokens[i + 1].value;\n modName = NakoLexer.filenameToModName(modName);\n if (this.lexer.modList.indexOf(modName) < 0) {\n this.lexer.modList.push(modName);\n }\n }\n }\n // convertToken\u3067\u6D88\u3055\u308C\u308B\u30B3\u30E1\u30F3\u30C8\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u6B8B\u3059\n const commentTokens = tokens.filter((t) => t.type === 'line_comment' || t.type === 'range_comment')\n .map((v) => ({ ...v })); // clone\n tokens = this.converttoken(tokens, true, filename);\n for (let i = 0; i < tokens.length; i++) {\n if (tokens[i] && tokens[i].type === 'code') {\n const children = this.lexCodeToken(tokens[i].value, tokens[i].line, filename, tokens[i].startOffset || 0);\n commentTokens.push(...children.commentTokens);\n tokens.splice(i, 1, ...children.tokens);\n i--;\n }\n }\n this.logger.trace('--- lex ---\\n' + JSON.stringify(tokens, null, 2));\n return { commentTokens, tokens, requireTokens: requireStatementTokens };\n }\n /**\n * \u30B3\u30FC\u30C9\u3092\u30D1\u30FC\u30B9\u3057\u3066AST\u306B\u3059\u308B\n */\n parse(code, filename, preCode = '') {\n // \u95A2\u6570\u30EA\u30B9\u30C8\u3092\u5B57\u53E5\u89E3\u6790\u3068\u69CB\u6587\u89E3\u6790\u306B\u767B\u9332\n this.lexer.setFuncList(this.funclist);\n this.parser.setFuncList(this.funclist);\n // \u95A2\u6570\u30EA\u30B9\u30C8\u3092\u5B57\u53E5\u89E3\u6790\u3068\u69CB\u6587\u89E3\u6790\u306B\u767B\u9332\n this.lexer.setModuleExport(this.moduleExport);\n this.parser.setModuleExport(this.moduleExport);\n // \u5B57\u53E5\u89E3\u6790\u3092\u884C\u3046\n const lexerOutput = this.lex(code, filename, preCode);\n // \u69CB\u6587\u6728\u3092\u4F5C\u6210\n let ast;\n try {\n this.parser.genMode = 'sync'; // set default\n ast = this.parser.parse(lexerOutput.tokens, filename);\n }\n catch (err) {\n if (typeof err.startOffset !== 'number') {\n throw NakoSyntaxError.fromNode(err.message, lexerOutput.tokens[this.parser.getIndex()]);\n }\n throw err;\n }\n // \u4F7F\u7528\u3057\u305F\u30B7\u30B9\u30C6\u30E0\u95A2\u6570\u306E\u4E00\u89A7\u3092 this.usedFuns \u306B\u5165\u308C\u308B(\u30A8\u30C7\u30A3\u30BF\u306A\u3069\u3067\u5229\u7528\u3055\u308C\u308B)\n this.usedFuncs = this.parser.usedFuncs; // \u5168\u3066\u306E\u95A2\u6570\u547C\u3073\u51FA\u3057\n this.deleteUnNakoFuncs(); // \u30B7\u30B9\u30C6\u30E0\u95A2\u6570\u4EE5\u5916\u3092\u524A\u9664\n this.logger.trace('--- ast ---\\n' + JSON.stringify(ast, null, 2));\n return ast;\n }\n getUsedFuncs(ast) {\n const queue = [ast];\n this.usedFuncs = new Set();\n while (queue.length > 0) {\n const ast_ = queue.pop();\n if (ast_ !== null && ast_ !== undefined && ast_.block !== null && ast_.block !== undefined) {\n this.getUsedAndDefFuncs(queue, JSON.parse(JSON.stringify(ast_.block)));\n }\n }\n return this.deleteUnNakoFuncs();\n }\n getUsedAndDefFuncs(astQueue, blockQueue) {\n while (blockQueue.length > 0) {\n const block = blockQueue.pop();\n if (block !== null && block !== undefined) {\n this.getUsedAndDefFunc(block, astQueue, blockQueue);\n }\n }\n }\n getUsedAndDefFunc(block, astQueue, blockQueue) {\n if (['func', 'func_pointer'].includes(block.type) && block.name !== null && block.name !== undefined) {\n this.usedFuncs.add(block.name);\n }\n astQueue.push([block, block.block]);\n // eslint-disable-next-line prefer-spread\n blockQueue.push.apply(blockQueue, [block.value].concat(block.args));\n }\n deleteUnNakoFuncs() {\n for (const func of this.usedFuncs) {\n if (!this.commandlist.has(func)) {\n this.usedFuncs.delete(func);\n }\n }\n return this.usedFuncs;\n }\n /**\n * \u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066\u30E9\u30F3\u30BF\u30A4\u30E0\u7528\u306EJavaScript\u306E\u30B3\u30FC\u30C9\u3092\u8FD4\u3059\n * @param code \u30B3\u30FC\u30C9 (\u306A\u3067\u3057\u3053)\n * @param filename\n * @param isTest \u30C6\u30B9\u30C8\u304B\u3069\u3046\u304B\n * @param preCode\n */\n compile(code, filename, isTest = false, preCode = '') {\n const opt = newCompilerOptions();\n opt.testOnly = isTest;\n opt.preCode = preCode;\n const res = this.compileFromCode(code, filename, opt);\n return res.runtimeEnv;\n }\n /** parse & generate */\n compileFromCode(code, filename, options = undefined) {\n if (filename === '') {\n filename = 'main.nako3';\n }\n if (options === undefined) {\n options = newCompilerOptions();\n }\n try {\n if (options.resetEnv) {\n this.reset();\n }\n if (options.resetAll) {\n this.clearPlugins();\n }\n // onBeforeParse\n this.eventList.filter(o => o.eventName === 'beforeParse').map(e => e.callback(code));\n // parse\n const ast = this.parse(code, filename, options.preCode);\n // onBeforeGenerate\n this.eventList.filter(o => o.eventName === 'beforeGenerate').map(e => e.callback(ast));\n // generate\n const outCode = this.generateCode(ast, new NakoGenOptions(options.testOnly));\n // onAfterGenerate\n this.eventList.filter(o => o.eventName === 'afterGenerate').map(e => e.callback(outCode));\n return outCode;\n }\n catch (e) {\n this.logger.error(e);\n throw e;\n }\n }\n /**\n * \u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066JavaScript\u306E\u30B3\u30FC\u30C9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FD4\u3059\n * @param ast\n * @param opt \u30C6\u30B9\u30C8\u304B\u3069\u3046\u304B\n */\n generateCode(ast, opt) {\n // Select Code Generator #637\n const mode = ast.genMode || '';\n // normal mode\n if (mode === 'sync') {\n return generateJS(this, ast, opt);\n }\n // \u5EC3\u6B62\u306E\u975E\u540C\u671F\u30E2\u30FC\u30C9 #1164\n if (mode === '\u975E\u540C\u671F\u30E2\u30FC\u30C9') {\n this.logger.error('\u300E!\u975E\u540C\u671F\u30E2\u30FC\u30C9\u300F\u306F\u5EC3\u6B62\u3055\u308C\u307E\u3057\u305F\u3002[\u8A73\u7D30](https://github.com/kujirahand/nadesiko3/issues/1164)');\n }\n // \u305D\u306E\u4ED6\u306E\u30B3\u30FC\u30C9\u30B8\u30A7\u30CD\u30EC\u30FC\u30BF(PHP\u306A\u3069)\n const genObj = this.codeGenerateor[mode];\n if (!genObj) {\n throw new Error(`\u30B3\u30FC\u30C9\u30B8\u30A7\u30CD\u30EC\u30FC\u30BF\u306E\u300C${mode}\u300D\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002`);\n }\n return genObj.generate(this, ast, opt.isTest);\n }\n /** \u30B3\u30FC\u30C9\u30B8\u30A7\u30CD\u30EC\u30FC\u30BF\u3092\u8FFD\u52A0\u3059\u308B */\n addCodeGenerator(mode, obj) {\n this.codeGenerateor[mode] = obj;\n }\n /** (\u975E\u63A8\u5968)\n * @param code \u975E\u540C\u671F\u3067\u5B9F\u884C\u3059\u308B\n * @param fname\n * @param isReset\n * @param isTest \u30C6\u30B9\u30C8\u304B\u3069\u3046\u304B\u3002string\u306E\u5834\u5408\u306F1\u3064\u306E\u30C6\u30B9\u30C8\u306E\u307F\u3002\n * @param [preCode]\n * @deprecated \u4EE3\u308F\u308A\u306BrunAsync\u30E1\u30BD\u30C3\u30C9\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002(core #52)\n */\n async _run(code, fname, isReset, isTest, preCode = '') {\n const opts = newCompilerOptions({\n resetEnv: isReset,\n resetAll: isReset,\n testOnly: isTest,\n preCode\n });\n return this._runEx(code, fname, opts);\n }\n /** \u5404\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u30EA\u30BB\u30C3\u30C8\u3059\u308B */\n clearPlugins() {\n // \u4ED6\u306B\u5B9F\u884C\u3057\u3066\u3044\u308B\u300C\u306A\u3067\u3057\u3053\u300D\u304C\u3042\u308C\u3070\u30AF\u30EA\u30A2\u3059\u308B\n this.__globals.forEach((sys) => {\n // core #56\n sys.__setSysVar('__forceClose', true);\n sys.reset();\n });\n this.__globals = []; // clear\n }\n /**\n * \u74B0\u5883\u3092\u6307\u5B9A\u3057\u3066JavaScript\u306E\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3059\u308B\n * @param code JavaScript\u306E\u30B3\u30FC\u30C9\n * @param nakoGlobal \u5B9F\u884C\u74B0\u5883\n */\n evalJS(code, nakoGlobal) {\n this.__globalObj = nakoGlobal; // \u73FE\u5728\u306EnakoGlobal\u3092\u8A18\u9332\n this.__globalObj.lastJSCode = code;\n // \u5B9F\u884C\u524D\u306B\u74B0\u5883\u3092\u521D\u671F\u5316\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u3092\u5B9F\u884C(beforeRun)\n this.eventList.filter(o => o.eventName === 'beforeRun').map(e => e.callback(nakoGlobal));\n try {\n // eslint-disable-next-line no-new-func\n const f = new Function(nakoGlobal.lastJSCode);\n f.apply(nakoGlobal);\n }\n catch (err) {\n // \u306A\u3067\u3057\u3053\u30B3\u30FC\u30C9\u306E\u30A8\u30E9\u30FC\u306F\u6291\u6B62\u3057\u3066\u30ED\u30B0\u306B\u306E\u307F\u8A18\u9332\n nakoGlobal.numFailures++;\n this.getLogger().error(err);\n throw err;\n }\n // \u5B9F\u884C\u5F8C\u306B\u7D42\u4E86\u30A4\u30D9\u30F3\u30C8\u3092\u5B9F\u884C(finish)\n this.eventList.filter(o => o.eventName === 'finish').map(e => e.callback(nakoGlobal));\n }\n /**\n * \u540C\u671F\u7684\u306B\u306A\u3067\u3057\u3053\u306E\u30D7\u30ED\u30B0\u30E9\u30E0code\u3092\u5B9F\u884C\u3059\u308B\n * @param code \u306A\u3067\u3057\u3053\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\n * @param filename \u30D5\u30A1\u30A4\u30EB\u540D\n * @param options \u30AA\u30D7\u30B7\u30E7\u30F3\n * @returns \u5B9F\u884C\u306B\u5229\u7528\u3057\u305F\u30B0\u30ED\u30FC\u30D0\u30EB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n * @deprecated \u4EE3\u308F\u308A\u306BrunAsync\u30E1\u30BD\u30C3\u30C9\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002(core #52)\n */\n runSync(code, filename, options = undefined) {\n // \u30B3\u30F3\u30D1\u30A4\u30EB\n options = newCompilerOptions(options);\n const out = this.compileFromCode(code, filename, options);\n // \u5B9F\u884C\u524D\u306B\u74B0\u5883\u3092\u751F\u6210\n const nakoGlobal = this.getNakoGlobal(options, out.gen, filename);\n // \u5B9F\u884C\n this.evalJS(out.runtimeEnv, nakoGlobal);\n return nakoGlobal;\n }\n /**\n * \u975E\u540C\u671F\u306B\u306A\u3067\u3057\u3053\u306E\u30D7\u30ED\u30B0\u30E9\u30E0code\u3092\u5B9F\u884C\u3059\u308B\n * @param code \u306A\u3067\u3057\u3053\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\n * @param filename \u30D5\u30A1\u30A4\u30EB\u540D\n * @param options \u30AA\u30D7\u30B7\u30E7\u30F3\n * @returns \u5B9F\u884C\u306B\u5229\u7528\u3057\u305F\u30B0\u30ED\u30FC\u30D0\u30EB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n */\n async runAsync(code, filename, options = undefined) {\n // \u30B3\u30F3\u30D1\u30A4\u30EB\n options = newCompilerOptions(options);\n const compiledCode = this.compileFromCode(code, filename, options);\n // \u5B9F\u884C\u524D\u306B\u74B0\u5883\u3092\u751F\u6210\n const nakoGlobal = this.getNakoGlobal(options, compiledCode.gen, filename);\n // \u5B9F\u884C\n this.evalJS(compiledCode.runtimeEnv, nakoGlobal);\n return nakoGlobal;\n }\n getNakoGlobal(options, gen, filename) {\n // \u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u53C2\u7167\n let g = options.nakoGlobal;\n if (!g) {\n // \u7A7A\u306A\u3089\u3070\u524D\u56DE\u306E\u5024\u3092\u53C2\u7167(\u30EA\u30BB\u30C3\u30C8\u3059\u308B\u306A\u3089\u65B0\u898F\u3067\u4F5C\u6210\u3059\u308B)\n if (this.__globals.length > 0 && options.resetAll === false && options.resetEnv === false) {\n g = this.__globals[this.__globals.length - 1];\n }\n else {\n g = new NakoGlobal(this, gen, (this.__globals.length + 1));\n }\n // \u540D\u524D\u7A7A\u9593\u3092\u8A2D\u5B9A\n g.__varslist[0].set('\u540D\u524D\u7A7A\u9593', NakoLexer.filenameToModName(filename));\n }\n if (this.__globals.indexOf(g) < 0) {\n this.__globals.push(g);\n }\n return g;\n }\n /**\n * \u30A4\u30D9\u30F3\u30C8\u3092\u767B\u9332\u3059\u308B\n * @param eventName \u30A4\u30D9\u30F3\u30C8\u540D\n * @param callback \u30B3\u30FC\u30EB\u30D0\u30C3\u30AF\u95A2\u6570\n */\n addListener(eventName, callback) {\n this.eventList.push({ eventName, callback });\n }\n /**\n * \u30C6\u30B9\u30C8\u3092\u5B9F\u884C\u3059\u308B\n * @param code\n * @param fname\n * @param preCode\n * @param testOnly\n */\n test(code, fname, preCode = '', testOnly = false) {\n const options = newCompilerOptions();\n options.preCode = preCode;\n options.testOnly = testOnly;\n return this.runSync(code, fname, options);\n }\n /**\n * \u306A\u3067\u3057\u3053\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u5B9F\u884C\uFF08\u4ED6\u306B\u5B9F\u884C\u3057\u3066\u3044\u308B\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u306F\u305D\u306E\u307E\u307E\uFF09\n * @param code\n * @param fname\n * @param [preCode]\n * @deprecated \u4EE3\u308F\u308A\u306B runAsync \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002\n */\n run(code, fname = 'main.nako3', preCode = '') {\n const options = newCompilerOptions();\n options.preCode = preCode;\n return this.runSync(code, fname, options);\n }\n /**\n * JavaScript\u306E\u307F\u3067\u52D5\u304F\u30B3\u30FC\u30C9\u3092\u53D6\u5F97\u3059\u308B\u5834\u5408\n * @param code\n * @param filename\n * @param opt? \u30AA\u30D7\u30B7\u30E7\u30F3\n */\n compileStandalone(code, filename, options) {\n if (options === undefined) {\n options = new NakoGenOptions();\n }\n const ast = this.parse(code, filename);\n return this.generateCode(ast, options).standalone;\n }\n /**\n * \u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FFD\u52A0\n * @param po \u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n * @param persistent false\u306E\u3068\u304D\u3001\u6B21\u4EE5\u964D\u306E\u5B9F\u884C\u3067\u306F\u4F7F\u3048\u306A\u3044\n * @param fpath \u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\n */\n addPlugin(po, persistent = true, fpath = '') {\n // __v0\u3092\u53D6\u5F97\n const __v0 = this.__varslist[0];\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30E1\u30BF\u60C5\u5831\u3092\u30C1\u30A7\u30C3\u30AF (#1034) (#1647)\n let __pluginInfo = __v0.get('__pluginInfo');\n if (!__pluginInfo) {\n __pluginInfo = {};\n __v0.set('__pluginInfo', __pluginInfo);\n }\n // \u30D0\u30FC\u30B8\u30E7\u30F3\u30C1\u30A7\u30C3\u30AF\n let intVersion = 0;\n let pluginName = 'unknown';\n let metaValue = { pluginName: 'unknown', nakoVersionResult: true, nakoVersion: '0.0.0', path: '' };\n if (po.meta) {\n if (po.meta.value && typeof (po.meta) === 'object') {\n const meta = po.meta;\n metaValue = meta.value || { pluginName: 'unknown', nakoVersion: '0.0.0' };\n pluginName = metaValue.pluginName || 'unknown';\n // version check\n const nakoVersion = (metaValue.nakoVersion || '0.0.0') + '.0.0';\n const versions = nakoVersion.split('.').map((v) => parseInt(v));\n intVersion = versions[1] * 100 + versions[2];\n // fpath\n metaValue.path = fpath;\n }\n }\n // unknown \u306E\u5834\u5408\u306F\u3001\u95A2\u6570\u540D\u304B\u3089\u30D7\u30E9\u30B0\u30A4\u30F3\u540D\u3092\u81EA\u52D5\u751F\u6210\u3059\u308B\n if (pluginName === 'unknown') {\n pluginName = Object.keys(po).join('-');\n }\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u540D\u306E\u91CD\u8907\u3092\u78BA\u8A8D\n if (__pluginInfo[pluginName] !== undefined) {\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u540D\u304C\u91CD\u8907\u3057\u305F\u5834\u5408\u306F\u30D7\u30E9\u30B0\u30A4\u30F3\u3068\u3057\u3066\u767B\u9332\u3057\u306A\u3044\n return;\n }\n // Windows\u306E\u30D1\u30B9\u3084\u30D5\u30A1\u30A4\u30EB\u540D\u306B\u4F7F\u3048\u306A\u3044\u6587\u5B57\u5217\u304C\u3042\u308B\u3068\u3001JS\u30D5\u30A1\u30A4\u30EB\u66F8\u304D\u51FA\u3057\u3067\u30A8\u30E9\u30FC\u306B\u306A\u308B\u306E\u3067\u7F6E\u63DB\n const removeInvalidFilenameChars = (str) => {\n return str.replace(/[^a-zA-z0-9\\-_\\u3040-\\u309F\\u30A0-\\u30FF\\u4E00-\\u9FAF\\u3400-\\u4DBF\\uF900-\\uFAFF]/g, '_');\n };\n pluginName = removeInvalidFilenameChars(pluginName);\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u60C5\u5831\u3092\u8A18\u9332\n __pluginInfo[pluginName] = metaValue;\n // \u30D0\u30FC\u30B8\u30E7\u30F3\u30C1\u30A7\u30C3\u30AF\n if (PLUGIN_MIN_VERSION_INT > intVersion) {\n const keyStr = Object.keys(po).join(',');\n if (pluginName === 'unknown') {\n pluginName = keyStr.substring(0, 30) + '...';\n }\n if (pluginName !== '') {\n const errMsg = `\u306A\u3067\u3057\u3053\u30D7\u30E9\u30B0\u30A4\u30F3\u300E${pluginName}\u300F\u306F\u53E4\u3044\u5F62\u5F0F\u306A\u306E\u3067\u6B63\u3057\u304F\u52D5\u4F5C\u3057\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002` +\n `(\u30E9\u30F3\u30BF\u30A4\u30E0\u306E\u8981\u6C42: ${PLUGIN_MIN_VERSION_INT}/\u30D7\u30E9\u30B0\u30A4\u30F3: ${intVersion})`;\n console.warn(errMsg, 'see', 'https://github.com/kujirahand/nadesiko3/issues/1647');\n this.logger.warn(errMsg);\n metaValue.nakoVersionResult = false;\n }\n }\n // \u521D\u671F\u5316\u3068\u30AF\u30EA\u30A2\u3092\u5909\u63DB\u3059\u308B\n this.__module[pluginName] = po;\n this.pluginfiles[pluginName] = '*';\n // `\u521D\u671F\u5316`\u3068`\u30AF\u30EA\u30A2`\u3092\u30C1\u30A7\u30C3\u30AF\n if (typeof (po['\u521D\u671F\u5316']) === 'object') {\n const def = po['\u521D\u671F\u5316'];\n delete po['\u521D\u671F\u5316'];\n const initKey = `!${pluginName}:\u521D\u671F\u5316`;\n po[initKey] = def;\n }\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u5024\u3092\u3001\u306A\u3067\u3057\u3053\u30B7\u30B9\u30C6\u30E0\u5909\u6570(Map)\u306B\u30B3\u30D4\u30FC\n for (const key in po) {\n const v = po[key];\n this.funclist.set(key, v);\n if (persistent) {\n this.pluginFunclist[key] = JSON.parse(JSON.stringify(v));\n }\n if (v.type === 'func') {\n __v0.set(key, v.fn);\n if (v.asyncFn) { // asyncFn \u3092\u6B63\u3057\u304F\u5B9F\u884C\u3059\u308B\u305F\u3081\u306B pure \u306B\u5909\u66F4\u3059\u308B (core#142)\n v.pure = true;\n }\n }\n else if (v.type === 'const' || v.type === 'var') {\n // \u30E1\u30BF\u60C5\u5831\u3068\u3057\u3066\u306E const | var \u306F\u73FE\u5728\u5229\u7528\u3057\u3066\u3044\u306A\u3044\n // meta[key] = { readonly: v.type === 'const' }\n __v0.set(key, v.value);\n }\n else {\n console.error('[\u30D7\u30E9\u30B0\u30A4\u30F3\u8FFD\u52A0\u30A8\u30E9\u30FC]', v);\n throw new Error('\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8FFD\u52A0\u3067\u30A8\u30E9\u30FC\u3002');\n }\n // \u30B3\u30DE\u30F3\u30C9\u3092\u767B\u9332\u3059\u308B\u304B?\n if (key === '\u521D\u671F\u5316' || key.substring(0, 1) === '!') { // \u767B\u9332\u3057\u306A\u3044\u95A2\u6570\u540D\n continue;\n }\n this.commandlist.add(key);\n }\n }\n /**\n * \u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FFD\u52A0(\u30D6\u30E9\u30A6\u30B6\u5411\u3051)\n * @param objName \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D (\u4ECA\u5F8C\u30D7\u30E9\u30B0\u30A4\u30F3\u540D\u306F\u3001meta.value.pluginName\u306B\u6307\u5B9A\u3059\u308B)\n * @param po \u95A2\u6570\u30EA\u30B9\u30C8\n * @param persistent false\u306E\u3068\u304D\u3001\u6B21\u4EE5\u964D\u306E\u5B9F\u884C\u3067\u306F\u4F7F\u3048\u306A\u3044\n */\n addPluginObject(objName, po, persistent = true) {\n // meta\u30D7\u30ED\u30D1\u30C6\u30A3\u304C\u306A\u3051\u308C\u3070\u4E92\u63DB\u6027\u306E\u305F\u3081\u9069\u5F53\u306B\u8FFD\u52A0\n if (po.meta === undefined) {\n po.meta = { type: 'const', value: { pluginName: objName, nakoVersion: '0.0.0' } };\n }\n this.addPlugin(po, persistent);\n }\n /**\n * \u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8FFD\u52A0(Node.js\u5411\u3051)\n * @param objName \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D(\u305F\u3060\u3057\u3001v3.6.3\u4EE5\u964D\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u7121\u52B9\u306B\u306A\u308B)\n * @param fpath \u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\n * @param po \u767B\u9332\u3059\u308B\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n * @param persistent false\u306E\u3068\u304D\u3001\u6B21\u4EE5\u964D\u306E\u5B9F\u884C\u3067\u306F\u4F7F\u3048\u306A\u3044\n * @deprecated \u5229\u7528\u306F\u975E\u63A8\u5968\n */\n addPluginFile(_objName, fpath, po, persistent = true) {\n this.addPluginFromFile(fpath, po, persistent);\n }\n /**\n * \u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8FFD\u52A0(Node.js\u5411\u3051)\n * @param fpath \u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\n * @param po \u767B\u9332\u3059\u308B\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n * @param persistent false\u306E\u3068\u304D\u3001\u6B21\u4EE5\u964D\u306E\u5B9F\u884C\u3067\u306F\u4F7F\u3048\u306A\u3044\n */\n addPluginFromFile(fpath, po, persistent = true) {\n this.addPlugin(po, persistent, fpath);\n }\n /**\n * \u95A2\u6570\u3092\u8FFD\u52A0\u3059\u308B\n * @param {string} key \u95A2\u6570\u540D\n * @param {string[][]} josi \u52A9\u8A5E\n * @param {Function} fn \u95A2\u6570\n * @param {boolean} returnNone \u5024\u3092\u8FD4\u3059\u95A2\u6570\u306E\u5834\u5408\u306Ffalse\u3092\u6307\u5B9A\n * @param {boolean} asyncFn Promise\u3092\u8FD4\u3059\u95A2\u6570\u304B\u3092\u6307\u5B9A\n */\n addFunc(key, josi, fn, returnNone = true, asyncFn = false) {\n const funcObj = { josi, fn, type: 'func', return_none: returnNone, asyncFn, pure: true };\n this.funclist.set(key, funcObj);\n this.pluginFunclist[key] = cloneAsJSON(funcObj);\n this.__varslist[0].set(key, fn);\n }\n /** (\u975E\u63A8\u5968) \u4E92\u63DB\u6027\u306E\u305F\u3081 ... \u95A2\u6570\u3092\u8FFD\u52A0\u3059\u308B\n * @deprecated \u4EE3\u308F\u308A\u306BaddFunc\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\n */\n setFunc(key, josi, fn, returnNone = true, asyncFn = false) {\n this.addFunc(key, josi, fn, returnNone, asyncFn);\n }\n /**\n * \u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570\u3092\u53C2\u7167\u3059\u308B\n * @param key \u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570\u306E\u95A2\u6570\u540D\n * @returns \u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n */\n getFunc(key) {\n return this.funclist.get(key);\n }\n /** \u540C\u671F\u7684\u306B\u306A\u3067\u3057\u3053\u306E\u30D7\u30ED\u30B0\u30E9\u30E0code\u3092\u5B9F\u884C\u3059\u308B\n * @deprecated \u4EE3\u308F\u308A\u306BrunAsync\u30E1\u30BD\u30C3\u30C9\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002(core #52)\n */\n _runEx(code, filename, opts, preCode = '', nakoGlobal = undefined) {\n // \u30B3\u30F3\u30D1\u30A4\u30EB\n opts.preCode = preCode;\n if (nakoGlobal) {\n opts.nakoGlobal = nakoGlobal;\n }\n return this.runSync(code, filename, opts);\n }\n /** \u540C\u671F\u7684\u306B\u306A\u3067\u3057\u3053\u306E\u30D7\u30ED\u30B0\u30E9\u30E0code\u3092\u5B9F\u884C\u3059\u308B\n * @param code\n * @param fname\n * @param opts\n * @param [preCode]\n * @deprecated \u4EE3\u308F\u308A\u306BrunAsync\u30E1\u30BD\u30C3\u30C9\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002(core #52)\n */\n runEx(code, fname, opts, preCode = '') {\n return this._runEx(code, fname, opts, preCode);\n }\n /**\n * (\u975E\u63A8\u5968) \u306A\u3067\u3057\u3053\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u5B9F\u884C\uFF08\u4ED6\u306B\u5B9F\u884C\u3057\u3066\u3044\u308B\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3082\u30EA\u30BB\u30C3\u30C8\u3059\u308B)\n * @param code\n * @param fname\n * @param [preCode]\n */\n async runReset(code, fname = 'main.nako3', preCode = '') {\n const opts = newCompilerOptions({ resetAll: true, resetEnv: true });\n return this._runEx(code, fname, opts, preCode);\n }\n /**\n * \u65B0\u898F\u306E\u306A\u3067\u3057\u3053\u5909\u6570\u7BA1\u7406\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u751F\u6210\n * @returns \u5909\u6570\u7BA1\u7406\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\n */\n newVaiables(initVars) {\n return new Map(initVars);\n }\n}\n", "import { NakoIndentError } from './nako_errors.mjs';\nimport { NakoPrepare, checkNakoMode } from './nako_prepare.mjs';\n// \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\nconst INDENT_MODE_KEYWORDS = ['!\u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587', '!\u3053\u3053\u307E\u3067\u3060\u308B\u3044'];\n/**\n * \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u6307\u5B9A\u304C\u3042\u308C\u3070\u30B3\u30FC\u30C9\u3092\u5909\u63DB\u3059\u308B\n */\nfunction convert(code, filename = 'main.nako3') {\n // \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u306E\u9069\u7528\u304C\u5FC5\u8981\u304B\uFF1F\n if (checkNakoMode(code, INDENT_MODE_KEYWORDS)) {\n return convertForIndentMode(code, filename);\n }\n return { code, insertedLines: [], deletedLines: [] };\n}\n/**\n * \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u6307\u5B9A\u304C\u3042\u308B\u304B\u30C1\u30A7\u30C3\u30AF\u3059\u308B\n */\nfunction isIndentSyntaxEnabled(code) {\n return checkNakoMode(code, INDENT_MODE_KEYWORDS);\n}\n/** \u3042\u308A\u3048\u306A\u3044\u6539\u884C\u30DE\u30FC\u30AF\u3092\u5B9A\u7FA9 */\nconst defSpecialRetMark = '\uD83C\uDF77\uD83C\uDF77\u6539\u884C\uD83C\uDF79\u9ED0\u9ED1\u9F18\u9F36\u9F48\u25A8\uD83C\uDF7A\uD83C\uDF7A\uD83C\uDF76\uD83C\uDF76';\nlet SpecialRetMark = defSpecialRetMark;\n/** code\u4E2D\u306B\u3042\u308A\u3048\u306A\u3044\u6539\u884C\u30DE\u30FC\u30AF\u751F\u6210\u3057\u30E2\u30B8\u30E5\u30FC\u30EB\u5185\u306E\u5909\u6570SpecialRetMark\u306B\u8A2D\u5B9A */\nexport function checkSpecialRetMark(code) {\n SpecialRetMark = defSpecialRetMark;\n while (code.indexOf(SpecialRetMark) >= 0) {\n // \u9069\u5F53\u306A\u6587\u5B57\u3092\u8DB3\u3057\u3066\u30E6\u30CB\u30FC\u30AF\u306B\u3059\u308B(\u4E00\u5FDC\u6F22\u5B57\u9818\u57DF\u3067\u751F\u6210)\n const c = String.fromCodePoint(Math.floor(Math.random() * 40952) + 0x4E00);\n SpecialRetMark += c + c;\n }\n return SpecialRetMark;\n}\n/**\n * \u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u306E\u3042\u308B1\u884C\u306E\u4E2D\u306E\u30B3\u30E1\u30F3\u30C8\u3092\u5168\u3066\u53D6\u308A\u9664\u304F\u3002\n * \u4E8B\u524D\u306BreplaceRetMark\u306B\u3088\u3063\u3066\u6587\u5B57\u5217\u3084\u7BC4\u56F2\u30B3\u30E1\u30F3\u30C8\u5185\u306E\u6539\u884C\u6587\u5B57\u304C\u7F6E\u63DB\u3055\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002\n */\nexport function removeCommentsFromLine(src) {\n const prepare = NakoPrepare.getInstance(); // `\u203B`, `\uFF0F/`, `\uFF0F\uFF0A` \u3068\u3044\u3063\u305F\u30D1\u30BF\u30FC\u30F3\u5168\u3066\u306B\u5BFE\u5FDC\u3059\u308B\u305F\u3081\u306B\u5FC5\u8981\n const len = src.length;\n let result = '';\n let eos = '';\n let i = 0;\n let isComment = false;\n while (i < len) {\n const c = src.charAt(i);\n const ch2 = src.substring(i, 2);\n const cPrepared = prepare.convert1ch(c);\n const ch2Prepared = ch2.split('').map((c) => prepare.convert1ch(c)).join('');\n // eos\u304B?\n if (eos !== '') {\n // src\u306Ei\u6587\u5B57\u76EE\u4EE5\u964D\u304Ceos\u3067\u59CB\u307E\u308B\u306A\u3089\u6587\u5B57\u5217\u3092\u7D42\u4E86\u3001\u305D\u3046\u3067\u306A\u3051\u308C\u30701\u6587\u5B57\u9032\u3081\u308B\n if (eos === (eos.length === 1 ? cPrepared : ch2Prepared)) {\n if (!isComment) {\n result += src.substr(i, eos.length);\n }\n i += eos.length;\n isComment = false;\n eos = '';\n }\n else {\n if (!isComment) {\n result += c;\n }\n i++;\n }\n continue;\n }\n // \u6587\u5B57\u5217\u306E\u6539\u884C\b\u3082\u7121\u8996\u3059\u308B\n switch (cPrepared) {\n case '\"':\n case '\\'':\n eos = c;\n result += c;\n i++;\n continue;\n case '\u300C':\n eos = '\u300D';\n result += c;\n i++;\n continue;\n case '\u300E':\n eos = '\u300F';\n result += c;\n i++;\n continue;\n case '\u201C':\n eos = '\u201D';\n result += c;\n i++;\n continue;\n case '{':\n eos = '}';\n result += c;\n i++;\n continue;\n case '[':\n eos = ']';\n result += c;\n i++;\n continue;\n }\n switch (ch2) {\n case '\uD83C\uDF34':\n eos = '\uD83C\uDF34';\n result += ch2;\n i += 2;\n continue;\n case '\uD83C\uDF3F':\n eos = '\uD83C\uDF3F';\n result += ch2;\n i += 2;\n continue;\n }\n // \u884C\u30B3\u30E1\u30F3\u30C8\n if (cPrepared === '#') {\n eos = '\\n';\n isComment = true;\n i++;\n continue;\n }\n if (ch2Prepared === '//') {\n eos = '\\n';\n isComment = true;\n i += 2;\n continue;\n }\n // \u7BC4\u56F2\u30B3\u30E1\u30F3\u30C8\n if (ch2Prepared === '/*') {\n eos = '*/';\n isComment = true;\n i += 2;\n continue;\n }\n result += c;\n i++;\n }\n return result;\n}\n/** \u30A4\u30F3\u30C7\u30F3\u30C8\u30E2\u30FC\u30C9\u306E\u305F\u3081\u306E\u5909\u63DB\u51E6\u7406 */\nfunction convertForIndentMode(code, filename) {\n // returns => {{ code: string, insertedLines: number[], deletedLines: { lineNumber: number, len: number }[] }}\n const insertedLines = [];\n const deletedLines = [];\n const END = '\u3053\u3053\u307E\u3067\u2030';\n const code2 = replaceRetMark(code); // \u6587\u5B57\u5217\u306E\u4E2D\u306A\u3069\u306E\u6539\u884C\u3092\u7F6E\u63DB\n const lines = code2.split('\\n');\n const lines2 = [];\n const indentStack = [];\n let lastIndent = 0;\n // \u5143\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u306E\u4E2D\u306B\u7279\u6B8A\u6539\u884C\u30DE\u30FC\u30AF\u304C\u542B\u307E\u308C\u308B\u304B\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u542B\u307E\u308C\u308B\u306A\u3089\u3082\u3063\u3068\u8907\u96D1\u306A\u7279\u6B8A\u30DE\u30FC\u30AF\u3092\u52D5\u7684\u306B\u751F\u6210\n checkSpecialRetMark(code);\n let lineCount = -1;\n lines.forEach((line) => {\n lineCount += line.split(SpecialRetMark).length;\n // trim line\n // eslint-disable-next-line no-irregular-whitespace\n if (/^[ \u3000\u30FB\\t]*$/.test(line)) {\n deletedLines.push({ lineNumber: lines2.length, len: line.length });\n return;\n }\n // eslint-disable-next-line no-irregular-whitespace\n const lineTrimed = removeCommentsFromLine(line).replace(/^[ \u3000\u30FB\\t]+/, '').replace(/\\s+$/, '');\n if (lineTrimed === '') {\n lines2.push(line);\n return;\n }\n if (lineTrimed === '\u3053\u3053\u307E\u3067') {\n throw new NakoIndentError('\u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u304C\u6709\u52B9\u5316\u3055\u308C\u3066\u3044\u308B\u3068\u304D\u306B\u300E\u3053\u3053\u307E\u3067\u300F\u3092\u4F7F\u3046\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002', lineCount, filename);\n }\n // check indent\n const indent = countIndent(line);\n if (lastIndent === indent) {\n lines2.push(line);\n return;\n }\n // indent\n if (lastIndent < indent) {\n indentStack.push(lastIndent);\n lastIndent = indent;\n lines2.push(line);\n return;\n }\n // unindent\n if (lastIndent > indent) {\n // 5\u56DE\n // 3\u56DE\n // 1\u3092\u8868\u793A\n // |\n // |\n lastIndent = indent;\n while (indentStack.length > 0) {\n const n = indentStack.pop() || 0;\n if (n === indent) {\n if (lineTrimed.substring(0, 3) !== '\u9055\u3048\u3070') {\n insertedLines.push(lines2.length);\n lines2.push(makeIndent(n) + END);\n }\n lines2.push(line);\n return;\n }\n if (indent < n) {\n insertedLines.push(lines2.length);\n lines2.push(makeIndent(n) + END);\n continue;\n }\n }\n }\n });\n // \u6B8B\u308A\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u51E6\u7406\n while (indentStack.length > 0) {\n const n = indentStack.pop() || 0;\n insertedLines.push(lines2.length);\n lines2.push(makeIndent(n) + END);\n }\n // \u7279\u5225\u30DE\u30FC\u30AB\u30FC\u3092\u6539\u884C\u306B\u7F6E\u63DB\n const lines3 = [];\n for (let i = 0; i < lines2.length; i++) {\n if (lines2[i].includes(SpecialRetMark)) {\n const lines4 = lines2[i].split(SpecialRetMark);\n // \u7F6E\u63DB\u3055\u308C\u305F\u30DE\u30FC\u30AB\u30FC\u306E\u6570\u3060\u3051\u3001\u305D\u308C\u4EE5\u964D\u306E\u884C\u6570\u3092\u305A\u3089\u3059\u3002\n // unindent\u306B\u3088\u3063\u3066\u633F\u5165\u3055\u308C\u305F\u884C\u304CSpecialRetMark\u3092\u542B\u3080\u3053\u3068\u306F\u306A\u3044\u3002\n for (let j = 0; j < insertedLines.length; j++) {\n if (lines3.length < insertedLines[j]) {\n insertedLines[j] += lines4.length - 1;\n }\n }\n for (let j = 0; j < deletedLines.length; j++) {\n if (lines3.length < deletedLines[j].lineNumber) {\n deletedLines[j].lineNumber += lines4.length - 1;\n }\n }\n lines3.push(...lines4);\n }\n else {\n lines3.push(lines2[i]);\n }\n }\n return { code: lines3.join('\\n'), insertedLines, deletedLines };\n}\n/**\n * count\u5206\u3060\u3051\u5B57\u4E0B\u3052\u3059\u308B\n * @param {number} count\n */\nfunction makeIndent(count) {\n let s = '';\n for (let i = 0; i < count; i++) {\n s += ' ';\n }\n return s;\n}\n/**\n * \u30A4\u30F3\u30C7\u30F3\u30C8\u90E8\u5206\u3092\u53D6\u308A\u51FA\u3059\n */\nexport function getIndent(line) {\n // eslint-disable-next-line no-irregular-whitespace\n const m = /^([ \u3000\u30FB\\t]*)/.exec(removeCommentsFromLine(line));\n if (!m) {\n return '';\n }\n return m[1];\n}\n/**\n * \u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u500B\u6570\u3092\u6570\u3048\u308B\n */\nexport function countIndent(line) {\n let cnt = 0;\n for (let i = 0; i < line.length; i++) {\n const ch = line.charAt(i);\n if (ch === ' ') {\n cnt++;\n continue;\n }\n if (ch === '\u3000') {\n cnt += 2;\n continue;\n }\n if (ch === '\u30FB') {\n cnt += 2;\n continue;\n }\n if (ch === '\\t') {\n cnt += 4;\n continue;\n }\n break;\n }\n return cnt;\n}\nexport function replaceRetMark(src) {\n const prepare = NakoPrepare.getInstance(); // `\u203B`, `\uFF0F/`, `\uFF0F\uFF0A` \u3068\u3044\u3063\u305F\u30D1\u30BF\u30FC\u30F3\u5168\u3066\u306B\u5BFE\u5FDC\u3059\u308B\u305F\u3081\u306B\u5FC5\u8981\n const len = src.length;\n let result = '';\n let eos = '';\n let i = 0;\n while (i < len) {\n const c = src.charAt(i);\n const ch2 = src.substr(i, 2);\n const cPrepared = prepare.convert1ch(c);\n const ch2Prepared = ch2.split('').map((c) => prepare.convert1ch(c)).join('');\n // eos\u304B?\n if (eos !== '') {\n // src\u306Ei\u6587\u5B57\u76EE\u4EE5\u964D\u304Ceos\u3067\u59CB\u307E\u308B\u306A\u3089\u6587\u5B57\u5217\u3092\u7D42\u4E86\u3001\u305D\u3046\u3067\u306A\u3051\u308C\u30701\u6587\u5B57\u9032\u3081\u308B\n if (eos === (eos.length === 1 ? cPrepared : ch2Prepared)) {\n result += src.substr(i, eos.length);\n i += eos.length;\n eos = '';\n }\n else {\n if (c === '\\n') {\n result += SpecialRetMark;\n }\n else {\n result += c;\n }\n i++;\n }\n continue;\n }\n // \u6587\u5B57\u5217\u306E\u6539\u884C\b\u3082\u7121\u8996\u3059\u308B\n switch (cPrepared) {\n case '\"':\n case '\\'':\n eos = c;\n result += c;\n i++;\n continue;\n case '\u300C':\n eos = '\u300D';\n result += c;\n i++;\n continue;\n case '\u300E':\n eos = '\u300F';\n result += c;\n i++;\n continue;\n case '\u201C':\n eos = '\u201D';\n result += c;\n i++;\n continue;\n case '{':\n eos = '}';\n result += c;\n i++;\n continue;\n case '[':\n eos = ']';\n result += c;\n i++;\n continue;\n }\n switch (ch2) {\n case '\uD83C\uDF34':\n eos = '\uD83C\uDF34';\n result += ch2;\n i += 2;\n continue;\n case '\uD83C\uDF3F':\n eos = '\uD83C\uDF3F';\n result += ch2;\n i += 2;\n continue;\n }\n // \u884C\u30B3\u30E1\u30F3\u30C8\n if (cPrepared === '#') {\n eos = '\\n';\n result += c;\n i++;\n continue;\n }\n if (ch2Prepared === '//') {\n eos = '\\n';\n result += ch2;\n i += 2;\n continue;\n }\n // \u7BC4\u56F2\u30B3\u30E1\u30F3\u30C8\n if (ch2Prepared === '/*') {\n eos = '*/';\n result += ch2;\n i += 2;\n continue;\n }\n result += c;\n i++;\n }\n return result;\n}\n/**\n * \u30B3\u30FC\u30C9\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u69CB\u9020\u3092\u53D6\u5F97\u3059\u308B\u3002\n * \u7A7A\u767D\u884C\u3084\u8907\u6570\u884C\u306B\u307E\u305F\u304C\u308B\u69CB\u6587\u3092\u8003\u616E\u3059\u308B\u3002\n * \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u304C\u6709\u52B9\u5316\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u306B\u3082\u4F7F\u308F\u308C\u308B\u3002\n */\nexport function getBlockStructure(code) {\n const result = {\n lines: [], // \u5404\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u91CF\n pairs: [],\n parents: [], // \u5404\u884C\u306E\u89AA\u306E\u884C\n spaces: [] // \u5404\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u6587\u5B57\u5217\n };\n const lines = replaceRetMark(code).split('\\n');\n const stack = [];\n let lineCount = 0;\n let prev = countIndent(lines[0]);\n for (const line of lines) {\n const numLines = line.split(SpecialRetMark).length;\n const line2 = removeCommentsFromLine(line);\n // eslint-disable-next-line no-irregular-whitespace\n const current = (line2.replace(/^[ \u3000\u30FB\\t]+/, '') === '')\n ? prev\n : countIndent(line2);\n result.lines.push(...Array(numLines).fill(current));\n result.spaces.push(...Array(numLines).fill(getIndent(line2)));\n if (prev < current) {\n stack.push(lineCount - 1);\n }\n else if (prev > current) {\n const last = stack.pop();\n if (last !== undefined) {\n result.pairs.push([last, lineCount]);\n }\n }\n const parent = stack[stack.length - 1] !== undefined ? stack[stack.length - 1] : null;\n result.parents.push(...Array(numLines).fill(parent));\n prev = current;\n lineCount += numLines;\n }\n // \u30B9\u30BF\u30C3\u30AF\u304C\u4F59\u3063\u305F\u3089\u30B3\u30FC\u30C9\u306E\u672B\u5C3E\u3068\u30DA\u30A2\u306B\u3059\u308B\u3002\n for (const item of stack) {\n result.pairs.push([item, lineCount]);\n }\n return result;\n}\nexport default {\n convert,\n getBlockStructure,\n getIndent,\n countIndent,\n isIndentSyntaxEnabled\n};\n", "// @ts-nocheck\n/* eslint-disable no-template-curly-in-string */\n/** \u306A\u3067\u3057\u3053\u306Etoken\u306Etype\u3092scope\uFF08CSS\u306E\u30AF\u30E9\u30B9\u540D\uFF09\u306B\u5909\u63DB\u3059\u308B\u3002 */\nimport { OffsetToLineColumn } from '../core/src/nako_source_mapping.mjs';\nimport { NakoError } from '../core/src/nako_errors.mjs';\nimport NakoIndent from '../core/src/nako_indent.mjs';\nimport { NakoPrepare } from '../core/src/nako_prepare.mjs';\n// alias\nconst getBlockStructure = NakoIndent.getBlockStructure;\nconst getIndent = NakoIndent.getIndent;\nconst countIndent = NakoIndent.countIndent;\nconst isIndentSyntaxEnabled = NakoIndent.isIndentSyntaxEnabled;\n/**\n * \u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u3067\u306F\u4E00\u822C\u306B\u30C6\u30AD\u30B9\u30C8\u306E\u5404\u90E8\u5206\u306B 'comment.line' \u306E\u3088\u3046\u306A\u30E9\u30D9\u30EB\u3092\u4ED8\u3051\u3001\u5404\u30A8\u30C7\u30A3\u30BF\u30C6\u30FC\u30DE\u304C\u305D\u306E\u305D\u308C\u305E\u308C\u306E\u8272\u3092\u8A2D\u5B9A\u3059\u308B\u3002\n * ace editor \u3067\u306F\u4F8B\u3048\u3070 'comment.line' \u304C\u4ED8\u3044\u305F\u90E8\u5206\u306F\u30AF\u30E9\u30B9 .ace_comment.ace_line \u304C\u4ED8\u3044\u305FHTML\u30BF\u30B0\u3067\u56F2\u307E\u308C\u3001\u5404\u30C6\u30FC\u30DE\u306F\u305D\u308C\u306B\u5BFE\u5FDC\u3059\u308BCSS\u3092\u5B9F\u88C5\u3059\u308B\u3002\n * @returns TokenType\n */\nexport function getScope(token) {\n switch (token.type) {\n case 'line_comment': return 'comment.line';\n case 'range_comment': return 'comment.block';\n case 'def_test': return 'keyword.control';\n case 'def_func': return 'keyword.control';\n case 'func': return 'entity.name.function';\n case 'number': return 'constant.numeric';\n // \u72EC\u7ACB\u3057\u305F\u52A9\u8A5E\n case '\u3068\u306F':\n case '\u306A\u3089\u3070':\n case '\u3067\u306A\u3051\u308C\u3070':\n return 'keyword.control';\n // \u5236\u5FA1\u69CB\u6587\n case '\u3053\u3053\u304B\u3089':\n case '\u3053\u3053\u307E\u3067':\n case '\u3082\u3057':\n case '\u9055\u3048\u3070':\n case 'require':\n return 'keyword.control';\n // \u4E88\u7D04\u8A9E\n case '\u56DE':\n case '\u9593':\n case '\u7E70\u308A\u8FD4\u3059':\n case '\u53CD\u5FA9':\n case '\u629C\u3051\u308B':\n case '\u7D9A\u3051\u308B':\n case '\u623B\u308B':\n case '\u5148\u306B':\n case '\u6B21\u306B':\n case '\u4EE3\u5165':\n case '\u9010\u6B21\u5B9F\u884C':\n case '\u6761\u4EF6\u5206\u5C90':\n case '\u53D6\u8FBC':\n case '\u30A8\u30E9\u30FC\u76E3\u8996':\n case '\u30A8\u30E9\u30FC':\n case '\u5909\u6570':\n case '\u5B9F\u884C\u901F\u5EA6\u512A\u5148':\n return 'keyword.control';\n case '\u5B9A\u3081\u308B':\n case '\u5B9A\u6570':\n return 'support.constant';\n // \u6F14\u7B97\u5B50\n case 'shift_r0':\n case 'shift_r':\n case 'shift_l':\n case 'gteq':\n case 'lteq':\n case 'noteq':\n case 'eq':\n case 'not':\n case 'gt':\n case 'lt':\n case 'and':\n case 'or':\n case '@':\n case '+':\n case '-':\n case '**':\n case '*':\n case '\u00F7\u00F7':\n case '/':\n case '%':\n case '^':\n case '&':\n return 'keyword.operator';\n case 'string':\n case 'string_ex':\n return 'string.other';\n case 'word':\n if (['\u305D\u3046', '\u305D\u308C', '\u56DE\u6570', '\u5BFE\u8C61\u30AD\u30FC', '\u5BFE\u8C61'].includes(token.value)) {\n return 'variable.language';\n }\n else {\n return 'variable.other';\n }\n default:\n return 'markup.other';\n }\n}\n/**\n * @param {TokenWithSourceMap} compilerToken\n * @param {NakoCompiler} nako3\n * @param {string} value\n * @param {boolean} includesLastCharacter\n * @param {boolean} underlineJosi\n */\nexport function getEditorTokens(compilerToken, nako3, value, includesLastCharacter, underlineJosi) {\n const type = getScope(compilerToken);\n const docHTML = getDocumentationHTML(compilerToken, nako3);\n // \u52A9\u8A5E\u304C\u3042\u308C\u3070\u52A9\u8A5E\u306E\u90E8\u5206\u3092\u5206\u5272\u3059\u308B\u3002\n // \u6700\u5F8C\u306E\u6587\u5B57\u304C\u73FE\u5728\u306E\u884C\u306B\u542B\u307E\u308C\u306A\u3044\u3068\u304D\u306F\u52A9\u8A5E\u3092\u8868\u793A\u3057\u306A\u3044\u3002\u305D\u3046\u3057\u306A\u3044\u3068\u4F8B\u3048\u3070 `\u300C\u6587\u5B57\u5217\\n\u300D\u3092\u8868\u793A` \u306E\u300C\u5217\u300D\u306E\u90E8\u5206\u306B\u4E0B\u7DDA\u304C\u5F15\u304B\u308C\u3066\u3057\u307E\u3046\u3002\n if (compilerToken.rawJosi && value.length >= compilerToken.rawJosi.length && includesLastCharacter && underlineJosi) {\n return [\n { type, docHTML, value: value.slice(0, -compilerToken.rawJosi.length) },\n { type: type + '.markup.underline', docHTML, value: value.slice(-compilerToken.josi.length) }\n ];\n }\n return [\n { type, docHTML, value }\n ];\n}\n/**\n * `name` \u304C\u5B9A\u7FA9\u3055\u308C\u305F\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\u3092\u8FD4\u3059\u3002\n */\nexport function findPluginName(name, nako3) {\n for (const pluginName of Object.keys(nako3.__module)) {\n if (Object.keys(nako3.__module[pluginName]).includes(name)) {\n return pluginName;\n }\n }\n return null;\n}\n/**\n * i = 0, 1, 2, ... \u306B\u5BFE\u3057\u3066 'A', 'B', 'C', ... 'Z', 'AA', 'AB', ... \u3092\u8FD4\u3059\u3002\n */\nexport function createParameterName(i) {\n const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n return i.toString(26).split('').map((v) => alphabet[parseInt(v, 26)]).join('');\n}\n/**\n * \u30D1\u30E9\u30E1\u30FC\u30BF\u306E\u5B9A\u7FA9\u3092\u8868\u3059\u6587\u5B57\u5217\u3092\u751F\u6210\u3059\u308B\u3002\u4F8B\u3048\u3070 `[['\u3068', '\u306E'], ['\u3092']]` \u306B\u5BFE\u3057\u3066 `'\uFF08A\u3068|A\u306E\u3001B\u3092\uFF09'` \u3092\u8FD4\u3059\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u7121\u3044\u5834\u5408\u3001\u7A7A\u6587\u5B57\u5217\u3092\u8FD4\u3059\u3002\n */\nexport function createParameterDeclaration(josi) {\n const args = josi.map((union, i) => union.map((v) => `${createParameterName(i)}${v}`).join('|')).join('\u3001');\n if (args !== '') {\n return `\uFF08${args}\uFF09`;\n }\n else {\n return '';\n }\n}\n// https://stackoverflow.com/a/6234804\nexport function escapeHTML(t) {\n return t\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n/**\n * \u95A2\u6570\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u8FD4\u3059\u3002\n */\nexport function getDocumentationHTML(token, nako3) {\n const meta = (text) => `<span class=\"tooltip-plugin-name\">${escapeHTML(text)}</span>`;\n if (token.type === 'func') {\n const pluginName = findPluginName(token.value + '', nako3) || (token.meta && token.meta.file ? token.meta.file : null);\n const josi = (token.meta && token.meta.josi) ? createParameterDeclaration(token.meta.josi) : ''; // {\u95A2\u6570} \u306E\u3068\u304D token.meta.josi \u304C\u5B58\u5728\u3057\u306A\u3044\n if (pluginName) {\n return escapeHTML(josi + token.value) + meta(pluginName);\n }\n return escapeHTML(josi + token.value);\n }\n else if (token.type === 'word') {\n /** @type {string | null} */\n const pluginName = findPluginName(token.value + '', nako3) || (token.meta && token.meta.file ? token.meta.file : null);\n if (pluginName) {\n return escapeHTML(token.value + '') + meta(pluginName);\n }\n }\n return null;\n}\n/**\n * ace editor \u3067\u306F\u30A8\u30C7\u30A3\u30BF\u306E\u6587\u5B57\u5217\u306E\u5168\u3066\u306E\u90E8\u5206\u306B\u4F55\u3089\u304B\u306E `type` \u3092\u4ED8\u3051\u306A\u3051\u308C\u3070\u306A\u3089\u306A\u3044\u3002\n * \u306A\u3067\u3057\u3053\u306E\u30A8\u30C7\u30A3\u30BF\u3067\u306F 'markup.other' \u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u3068\u3057\u3066\u4F7F\u3046\u3053\u3068\u306B\u3057\u305F\u3002\n * @returns {EditorToken[]}\n */\nconst getDefaultTokens = (row, doc) => [{ type: 'markup.other', value: doc.getLine(row), docHTML: null }];\n/**\n * \u4E00\u6642\u7684\u306Blogger\u3092\u7121\u52B9\u5316\u3059\u308B\u3002\u305D\u3046\u3057\u306A\u3044\u3068\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u306E\u66F4\u65B0\u306E\u305F\u3073\u306Blogger\u3078\u30B3\u30F3\u30D1\u30A4\u30EB\u30A8\u30E9\u30FC\u3084\u8B66\u544A\u304C\u9001\u3089\u308C\u3066\u3001\u7D50\u679C\u306E\u30DC\u30C3\u30AF\u30B9\u306B\u884C\u304C\u8FFD\u52A0\u3055\u308C\u3066\u3057\u307E\u3046\u3002\n * @type {<T>(nako3: NakoCompiler, f: () => T) => T}\n */\nconst withoutLogger = (nako3, f) => {\n const logger = nako3.logger;\n try {\n nako3.replaceLogger();\n return f();\n }\n finally {\n nako3.logger = logger;\n }\n};\n/**\n * \u30D7\u30ED\u30B0\u30E9\u30E0\u3092lexer\u3067tokenize\u3057\u305F\u5F8C\u3001ace editor \u7528\u306E\u30C8\u30FC\u30AF\u30F3\u5217\u306B\u5909\u63DB\u3059\u308B\u3002\n * @param lines\n * @param nako3\n * @param underlineJosi\n */\nexport function tokenize(lines, nako3, underlineJosi) {\n const code = lines.join('\\n');\n // \u53D6\u308A\u8FBC\u307F\u6587\u3092\u542B\u3081\u3066\u3057\u307E\u3046\u3068\u4F9D\u5B58\u30D5\u30A1\u30A4\u30EB\u304C\u5927\u304D\u3044\u6642\u306B\u6642\u9593\u304C\u304B\u304B\u3063\u3066\u3057\u307E\u3046\u305F\u3081\u3001\n // \u53D6\u308A\u8FBC\u307F\u6587\u3092\u7121\u8996\u3057\u3066\u30C8\u30FC\u30AF\u30F3\u5316\u3057\u3066\u304B\u3089\u3001\u4F9D\u5B58\u30D5\u30A1\u30A4\u30EB\u3067\u5B9A\u7FA9\u3055\u308C\u305F\u95A2\u6570\u540D\u3068\u4E00\u81F4\u3059\u308B\u30C8\u30FC\u30AF\u30F3\u3092\u95A2\u6570\u306E\u30C8\u30FC\u30AF\u30F3\u3078\u5909\u63DB\u3059\u308B\u3002\n nako3.reset({ needToClearPlugin: false });\n const lexerOutput = withoutLogger(nako3, () => nako3.lex(code, 'main.nako3', undefined, true));\n lexerOutput.commentTokens = lexerOutput.commentTokens.filter((t) => t.file === 'main.nako3');\n lexerOutput.requireTokens = lexerOutput.requireTokens.filter((t) => t.file === 'main.nako3');\n lexerOutput.tokens = lexerOutput.tokens.filter((t) => t.file === 'main.nako3');\n // \u5916\u90E8\u30D5\u30A1\u30A4\u30EB\u3067\u5B9A\u7FA9\u3055\u308C\u305F\u95A2\u6570\u540D\u306B\u4E00\u81F4\u3059\u308B\u30C8\u30FC\u30AF\u30F3\u306Etype\u3092func\u306B\u5909\u66F4\u3059\u308B\u3002\n // \u53D6\u308A\u8FBC\u3093\u3067\u3044\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u3082\u53C2\u7167\u3055\u308C\u308B\u554F\u984C\u3084\u3001\u95A2\u6570\u540D\u306E\u91CD\u8907\u304C\u3042\u308B\u5834\u5408\u306B\u6B63\u3057\u304F\u306A\u3044\u60C5\u5831\u3092\u8868\u793A\u3059\u308B\u554F\u984C\u304C\u3042\u308B\u3002\n // eslint-disable-next-line no-lone-blocks\n {\n /** @type {Record<string, object>} */\n for (const [file, { funclist }] of Object.entries(nako3.dependencies)) {\n for (const token of lexerOutput.tokens) {\n if (token.type === 'word' && token.value !== '\u305D\u308C' && funclist[token.value]) {\n token.type = 'func';\n // meta.file \u306B\u5B9A\u7FA9\u5143\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6301\u305F\u305B\u308B\u3002\n token.meta = { ...funclist[token.value + ''], file };\n }\n }\n }\n }\n // eol\u3001eof\u3001\u9577\u3055\u304C1\u672A\u6E80\u306E\u30C8\u30FC\u30AF\u30F3\u3001\u4F4D\u7F6E\u3092\u7279\u5B9A\u3067\u304D\u306A\u3044\u30C8\u30FC\u30AF\u30F3\u3092\u6D88\u3059\n /** @type {(TokenWithSourceMap & { startOffset: number, endOffset: number })[]} */\n // @ts-ignore\n const tokens = [...lexerOutput.tokens, ...lexerOutput.commentTokens, ...lexerOutput.requireTokens].filter((t) => t.type !== 'eol' && t.type !== 'eof' &&\n typeof t.startOffset === 'number' && typeof t.endOffset === 'number' &&\n t.startOffset < t.endOffset);\n // startOffset\u3067\u30BD\u30FC\u30C8\u3059\u308B\n tokens.sort((a, b) => (a.startOffset || 0) - (b.startOffset || 0));\n // \u5404\u884C\u306B\u3064\u3044\u3066\u3001\u4F59\u308B\u6587\u5B57\u306E\u7121\u3044\u3088\u3046\u306B\u30A8\u30C7\u30A3\u30BF\u306E\u30C8\u30FC\u30AF\u30F3\u306B\u5909\u63DB\u3059\u308B\u3002\n // \u8907\u6570\u306E\u30C8\u30FC\u30AF\u30F3\u304C\u91CD\u306A\u308B\u3053\u3068\u306F\u306A\u3044\u3068\u4EEE\u5B9A\u3059\u308B\u3002\n let lineStartOffset = 0;\n let tokenIndex = 0;\n // \u5B9F\u969B\u306B\u5FC5\u8981\u306A\u30D7\u30ED\u30D1\u30C6\u30A3\u306Ftype, value\u3060\u3051\u3067\u3001doc\u306F\u72EC\u81EA\u306B\u8FFD\u52A0\u3057\u305F\u3002\n /** @type {EditorToken[][]} */\n const editorTokens = []; // \u5404\u884C\u306E\u30A8\u30C7\u30A3\u30BF\u306E\u30C8\u30FC\u30AF\u30F3\n for (let i = 0; i < lines.length; i++) {\n editorTokens.push([]);\n const lineEndOffset = lineStartOffset + lines[i].length;\n let offset = lineStartOffset;\n // \u73FE\u5728\u306E\u884C\u306B\u304B\u304B\u3063\u3066\u3044\u308B\u30C8\u30FC\u30AF\u30F3\u307E\u3067\u98DB\u3070\u3059\n while (tokenIndex < tokens.length &&\n tokens[tokenIndex].endOffset <= lineStartOffset) {\n tokenIndex++;\n }\n // \u884C\u5168\u4F53\u3092\u5B8C\u5168\u306B\u307E\u305F\u304C\u3063\u3066\u3044\u308B\u30C8\u30FC\u30AF\u30F3\u304C\u5B58\u5728\u3059\u308B\u5834\u5408\n if (tokenIndex < tokens.length &&\n tokens[tokenIndex].startOffset <= lineStartOffset &&\n tokens[tokenIndex].endOffset >= lineEndOffset) {\n editorTokens[i].push(...getEditorTokens(tokens[tokenIndex], nako3, lines[i], tokens[tokenIndex].endOffset <= lineEndOffset, underlineJosi));\n }\n else {\n // \u884C\u982D\u3092\u307E\u305F\u304C\u3063\u3066\u3044\u308B\u30C8\u30FC\u30AF\u30F3\u304C\u5B58\u5728\u3059\u308B\u5834\u5408\n if (tokenIndex < tokens.length &&\n tokens[tokenIndex].startOffset <= lineStartOffset) {\n editorTokens[i].push(...getEditorTokens(tokens[tokenIndex], nako3, code.slice(offset, tokens[tokenIndex].endOffset), true, underlineJosi));\n offset = tokens[tokenIndex].endOffset;\n tokenIndex++;\n }\n // \u884C\u982D\u3082\u884C\u672B\u3082\u307E\u305F\u304C\u3063\u3066\u3044\u306A\u3044\u30C8\u30FC\u30AF\u30F3\u3092\u51E6\u7406\u3059\u308B\n while (tokenIndex < tokens.length &&\n tokens[tokenIndex].endOffset < lineEndOffset) {\n // \u3053\u306E\u30C8\u30FC\u30AF\u30F3\u3068\u76F4\u524D\u306E\u30C8\u30FC\u30AF\u30F3\u306E\u9593\u306B\u9699\u9593\u304C\u3042\u308B\u306A\u3089\u3001\u57CB\u3081\u308B\n if (offset < tokens[tokenIndex].startOffset) {\n editorTokens[i].push({\n type: 'markup.other',\n docHTML: null,\n value: code.slice(offset, tokens[tokenIndex].startOffset)\n });\n offset = tokens[tokenIndex].startOffset;\n }\n // \u73FE\u5728\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u4F7F\u3046\n editorTokens[i].push(...getEditorTokens(tokens[tokenIndex], nako3, code.slice(offset, tokens[tokenIndex].endOffset), true, underlineJosi));\n offset = tokens[tokenIndex].endOffset;\n tokenIndex++;\n }\n // \u884C\u672B\u3092\u307E\u305F\u304C\u3063\u3066\u3044\u308B\u30C8\u30FC\u30AF\u30F3\u304C\u5B58\u5728\u3059\u308B\u5834\u5408\n if (tokenIndex < tokens.length &&\n tokens[tokenIndex].startOffset < lineEndOffset) {\n // \u30C8\u30FC\u30AF\u30F3\u306E\u524D\u306E\u9699\u9593\n if (offset < tokens[tokenIndex].startOffset) {\n editorTokens[i].push({\n type: 'markup.other',\n docHTML: null,\n value: code.slice(offset, tokens[tokenIndex].startOffset)\n });\n offset = tokens[tokenIndex].startOffset;\n }\n // \u30C8\u30FC\u30AF\u30F3\u3092\u4F7F\u3046\n editorTokens[i].push(...getEditorTokens(tokens[tokenIndex], nako3, code.slice(tokens[tokenIndex].startOffset, lineEndOffset), tokens[tokenIndex].endOffset <= lineEndOffset, underlineJosi));\n }\n else {\n editorTokens[i].push({\n type: 'markup.other',\n docHTML: null,\n value: code.slice(offset, lineEndOffset)\n });\n }\n }\n lineStartOffset += lines[i].length + 1;\n }\n return { editorTokens, lexerOutput };\n}\n/**\n * \u30A8\u30C7\u30A3\u30BF\u4E0A\u306B\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u6CE2\u7DDA\u3068gutter\u306E\u8D64\u3044\u30DE\u30FC\u30AF\u3068\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3092\u8A2D\u5B9A\u3059\u308B\u305F\u3081\u306E\u30AF\u30E9\u30B9\u3002\n */\nexport class EditorMarkers {\n /**\n * @param {any} session\n * @param {AceDocument} doc\n * @param {TypeofAceRange} AceRange\n * @param {boolean} disable\n */\n constructor(session, doc, AceRange, disable) {\n this.session = session;\n this.doc = doc;\n this.AceRange = AceRange;\n /** @type {any[]} */\n this.markers = [];\n this.hasAnnotations = false;\n this.disable = disable;\n }\n /**\n * @param {number} startLine\n * @param {number | null} startColumn\n * @param {number | null} endLine\n * @param {number | null} endColumn\n * @param {(row: number) => string} getLine\n * @returns {[number, number, number, number]}\n */\n static fromNullable(startLine, startColumn, endLine, endColumn, getLine) {\n if (startColumn === null) {\n startColumn = 0;\n }\n if (endLine === null) {\n endLine = startLine;\n }\n if (endColumn === null) {\n endColumn = getLine(endLine).length;\n }\n // \u6700\u4F4E\u3067\u30821\u6587\u5B57\u5206\u306E\u9577\u3055\u3092\u3068\u308B\n if (startLine === endLine && startColumn === endColumn) {\n endColumn++;\n }\n return [startLine, startColumn, endLine, endColumn];\n }\n /**\n * @param {string} code @param {number} startOffset @param {number} endOffset\n * @returns {[number, number, number, number]}\n */\n static fromOffset(code, startOffset, endOffset) {\n const offsetToLineColumn = new OffsetToLineColumn(code);\n const start = offsetToLineColumn.map(startOffset, false);\n const end = offsetToLineColumn.map(endOffset, false);\n return [start.line, start.column, end.line, end.column];\n }\n /**\n * @param {string} code\n * @param {{ line?: number, startOffset?: number | null, endOffset?: number | null, message: string }} error\n * @param {(row: number) => string} getLine\n * @returns {[number, number, number, number]}\n */\n static fromError(code, error, getLine) {\n if (typeof error.startOffset === 'number' && typeof error.endOffset === 'number') {\n // \u5B8C\u5168\u306A\u4F4D\u7F6E\u3092\u53D6\u5F97\u3067\u304D\u308B\u5834\u5408\n return this.fromOffset(code, error.startOffset, error.endOffset);\n }\n else if (typeof error.line === 'number') {\n // \u884C\u5168\u4F53\u306E\u5834\u5408\n return this.fromNullable(error.line, null, null, null, getLine);\n }\n else {\n // \u4F4D\u7F6E\u304C\u4E0D\u660E\u306A\u5834\u5408\n return this.fromNullable(0, null, null, null, getLine);\n }\n }\n /**\n * @param {number} startLine\n * @param {number | null} startColumn\n * @param {number | null} endLine\n * @param {number | null} endColumn\n * @param {string} message\n * @param {'warn' | 'error'} type\n */\n add(startLine, startColumn, endLine, endColumn, message, type) {\n if (this.disable) {\n return;\n }\n const range = new this.AceRange(...EditorMarkers.fromNullable(startLine, startColumn, endLine, endColumn, (row) => this.doc.getLine(row)));\n this.markers.push(this.session.addMarker(range, 'marker-' + (type === 'warn' ? 'yellow' : 'red'), 'text', false));\n // type\u306F 'error' | 'warning' | 'info'\n this.session.setAnnotations([{ row: startLine, column: startColumn, text: message, type: type === 'warn' ? 'warning' : 'error' }]);\n this.hasAnnotations = true;\n }\n /**\n * @param {string} code\n * @param {{ line?: number, startOffset?: number | null, endOffset?: number | null, message: string }} error\n * @param {'warn' | 'error'} type\n */\n addByError(code, error, type) {\n this.add(...EditorMarkers.fromError(code, error, (row) => this.doc.getLine(row)), error.message, type);\n }\n /**\n * \u5168\u3066\u306E\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u524A\u9664\u3059\u308B\u3002\n */\n clear() {\n for (const marker of this.markers) {\n this.session.removeMarker(marker);\n }\n this.markers.length = 0;\n if (this.hasAnnotations) {\n this.session.clearAnnotations();\n this.hasAnnotations = false;\n }\n }\n}\n/**\n * ace editor \u306EBackgroundTokenizer\u3092\u4E0A\u66F8\u304D\u3057\u3066\u3001\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u3092\u81EA\u7531\u306B\u8868\u793A\u3059\u308B\u305F\u3081\u306E\u30AF\u30E9\u30B9\u3002\n * ace editor \u3067\u306F\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u306E\u305F\u3081\u306B\u6B63\u898F\u8868\u73FE\u30D9\u30FC\u30B9\u306EBackgroundTokenizer\u30AF\u30E9\u30B9\u3092\u7528\u610F\u3057\u5B9A\u671F\u7684\u306B\u30C8\u30FC\u30AF\u30F3\u5316\u3092\n * \u884C\u3063\u3066\u3044\u308B\u304C\u3001\u6B63\u898F\u8868\u73FE\u3067\u306F\u306A\u304F\u306A\u3067\u3057\u3053\u306E\u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u51FA\u529B\u3092\u4F7F\u3046\u305F\u3081\u306B\u306F\u305D\u308C\u3092\u4E0A\u66F8\u304D\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002\n */\nexport class BackgroundTokenizer {\n /**\n * @param {AceDocument} doc\n * @param {NakoCompiler} nako3\n * @param {(firstRow: number, lastRow: number, ms: number) => void} onTokenUpdate\n * @param {(code: string, err: Error) => void} onCompileError\n * @param {boolean} underlineJosi\n */\n constructor(doc, nako3, onTokenUpdate, onCompileError, underlineJosi) {\n this.onUpdate = onTokenUpdate;\n this.doc = doc;\n this.dirty = true;\n this.nako3 = nako3;\n this.onCompileError = onCompileError;\n this.underlineJosi = underlineJosi;\n // \u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u3067\u4F7F\u3046\u305F\u3081\u306B\u3001\u76F4\u8FD1\u306Etokenize\u306E\u7D50\u679C\u3092\u4FDD\u5B58\u3057\u3066\u304A\u304F\n /** @type {ReturnType<NakoCompiler['lex']> | null} */\n this.lastLexerOutput = null;\n // \u5404\u884C\u306E\u30D1\u30FC\u30B9\u7D50\u679C\u3002\n // type\u306Fscope\u306E\u3053\u3068\u3002\u914D\u5217\u306E\u5168\u8981\u7D20\u306Evalue\u3092\u7D50\u5408\u3057\u305F\u6587\u5B57\u5217\u304C\u305D\u306E\u884C\u306E\u6587\u5B57\u5217\u3068\u7B49\u3057\u304F\u306A\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002\n /** @type {EditorToken[][]} */\n this.lines = this.doc.getAllLines().map((line) => [{ type: 'markup.other', value: line, docHTML: null }]);\n // this.lines \u306F\u5916\u90E8\u304B\u3089\u52DD\u624B\u306B\u7DE8\u96C6\u3055\u308C\u3066\u3057\u307E\u3046\u305F\u3081\u3001\u30B3\u30D4\u30FC\u3092\u6301\u3064\n /** @type {{ code: string, lines: string } | null} */\n this.cache = null;\n this.deleted = false;\n /** @public */\n this.enabled = true;\n const update = () => {\n if (this.deleted) {\n return;\n }\n if (this.dirty && this.enabled) {\n const startTime = Date.now();\n this.dirty = false;\n const code = this.doc.getAllLines().join('\\n');\n try {\n const startTime = Date.now();\n const out = tokenize(this.doc.getAllLines(), nako3, this.underlineJosi);\n this.lastLexerOutput = out.lexerOutput;\n this.lines = out.editorTokens;\n this.cache = { code, lines: JSON.stringify(this.lines) };\n // \u30D5\u30A1\u30A4\u30EB\u5168\u4F53\u306E\u66F4\u65B0\u3092\u901A\u77E5\u3059\u308B\u3002\n onTokenUpdate(0, this.doc.getLength() - 1, Date.now() - startTime);\n }\n catch (e) {\n onCompileError(code, e);\n }\n // tokenize\u306B\u6642\u9593\u304C\u304B\u304B\u308B\u5834\u5408\u3001\u6587\u5B57\u3092\u5165\u529B\u3067\u304D\u308B\u3088\u3046\u306B\u6B21\u56DE\u306E\u5B9F\u884C\u3092\u9045\u304F\u3059\u308B\u3002\n setTimeout(update, Math.max(100, Math.min(5000, (Date.now() - startTime) * 5)));\n }\n else {\n setTimeout(update, 100);\n }\n };\n // \u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u304C\u8FD4\u308B\u524D\u306B\u30B3\u30FC\u30EB\u30D0\u30C3\u30AF\u3092\u547C\u3076\u306E\u306F\u30D0\u30B0\u306E\u5143\u306B\u306A\u308B\u305F\u3081\u4E00\u77AC\u5F85\u3064\u3002\n // \u305F\u3068\u3048\u3070 `const a = new BackgroundTokenizer(..., () => { /* a\u3092\u4F7F\u3063\u305F\u51E6\u7406 */ }, ...)` \u304CReferenceError\u306B\u306A\u308B\u3002\n setTimeout(() => { update(); }, 0);\n }\n dispose() {\n this.deleted = true;\n }\n /**\n * \u30C6\u30AD\u30B9\u30C8\u306B\u5909\u66F4\u304C\u3042\u3063\u305F\u3068\u304D\u306B\u547C\u3070\u308C\u308B\u3002IME\u5165\u529B\u4E2D\u306B\u306F\u547C\u3070\u308C\u306A\u3044\u3002\n * @param {{ action: string, start: { row: number, column: number }, end: { row: number, column: number }, lines: string[] }} delta\n */\n $updateOnChange(delta) {\n this.dirty = true;\n const startRow = delta.start.row;\n const endRow = delta.end.row;\n if (startRow === endRow) { // 1\u884C\u306E\u7DE8\u96C6\n if (delta.action === 'insert' && this.lines[startRow]) { // \u884C\u5185\u306B\u6587\u5B57\u5217\u3092\u633F\u5165\n const columnStart = delta.start.column;\n // updateOnChange\u306FIME\u5165\u529B\u4E2D\u306B\u306F\u547C\u3070\u308C\u306A\u3044\u3002composition_placeholder \u3092\u6D88\u3055\u306A\u3044\u3068IME\u78BA\u5B9A\u5F8C\u306E\u8868\u793A\u304C\u305A\u308C\u308B\u3002\n const oldTokens = this.lines[startRow]\n .filter((v) => v.type !== 'composition_placeholder');\n /** @type {EditorToken[]} */\n const newTokens = [];\n let i = 0;\n let offset = 0;\n // columnStart\u3088\u308A\u5DE6\u306E\u30C8\u30FC\u30AF\u30F3\u306F\u305D\u306E\u307E\u307E\u4FDD\u6301\u3059\u308B\n while (i < oldTokens.length && offset + oldTokens[i].value.length <= columnStart) {\n newTokens.push(oldTokens[i]);\n offset += oldTokens[i].value.length;\n i++;\n }\n // columnStart\u306B\u91CD\u306A\u3063\u3066\u3044\u308B\u30C8\u30FC\u30AF\u30F3\u304C\u3042\u308C\u3070\u30012\u3064\u306B\u5206\u5272\u3059\u308B\n if (i < oldTokens.length && offset < columnStart) {\n newTokens.push({ type: oldTokens[i].type, value: oldTokens[i].value.slice(0, columnStart - offset), docHTML: null });\n newTokens.push({ type: 'markup.other', value: delta.lines[0], docHTML: null });\n newTokens.push({ type: oldTokens[i].type, value: oldTokens[i].value.slice(columnStart - offset), docHTML: null });\n i++;\n }\n else {\n newTokens.push({ type: 'markup.other', value: delta.lines[0], docHTML: null });\n }\n // columnStart\u3088\u308A\u53F3\u306E\u30C8\u30FC\u30AF\u30F3\u3082\u305D\u306E\u307E\u307E\u4FDD\u6301\u3059\u308B\n while (i < oldTokens.length) {\n newTokens.push(oldTokens[i]);\n i++;\n }\n this.lines[startRow] = newTokens;\n }\n else {\n this.lines[startRow] = getDefaultTokens(startRow, this.doc);\n }\n }\n else if (delta.action === 'remove') { // \u7BC4\u56F2\u524A\u9664\n this.lines.splice(startRow, endRow - startRow + 1, getDefaultTokens(startRow, this.doc));\n }\n else { // \u884C\u306E\u633F\u5165\n this.lines.splice(startRow, 1, ...Array(endRow - startRow + 1).fill(null).map((_, i) => getDefaultTokens(i + startRow, this.doc)));\n }\n }\n /**\n * tokenizer\u306E\u51FA\u529B\u3092\u8FD4\u3059\u3002\u6587\u5B57\u5165\u529B\u3057\u305F\u3068\u304D\u306B\u547C\u3070\u308C\u308B\u3002\n * @param {number} row\n */\n getTokens(row) {\n // IME\u5165\u529B\u4E2D\u306Fthis.lines[row]\u306B\u81EA\u52D5\u7684\u306Bnull\u304C\u8A2D\u5B9A\u3055\u308C\u308B\u3002\u305D\u306E\u5834\u5408\u65B0\u3057\u304F\u884C\u306E\u30C8\u30FC\u30AF\u30F3\u5217\u3092\u751F\u6210\u3057\u3066\u8FD4\u3055\u306A\u3051\u308C\u3070\u306A\u3089\u306A\u3044\u3002\n // \u8FD4\u3057\u305F\u914D\u5217\u306B\u306F\u81EA\u52D5\u7684\u306BIME\u306E\u5165\u529B\u7528\u306E\u30C6\u30AD\u30B9\u30C8\u30DC\u30C3\u30AF\u30B9\u3067\u3042\u308Bcomposition_placeholder\u304C\u633F\u5165\u3055\u308C\u308B\u3002\n if (!this.lines[row]) {\n let ok = false;\n if (this.enabled) {\n // tokenize\u306F\u975E\u5E38\u306B\u9045\u3044\u305F\u3081\u3001\u30AD\u30E3\u30C3\u30B7\u30E5\u3092\u4F7F\u3048\u308B\u306A\u3089\u305D\u308C\u3092\u4F7F\u3046\u3002\n const code = this.doc.getAllLines().join('\\n');\n if (this.cache !== null && this.cache.code === code) {\n ok = true;\n }\n else {\n try {\n const lines = tokenize(this.doc.getAllLines(), this.nako3, this.underlineJosi);\n this.cache = { code, lines: JSON.stringify(lines.editorTokens) };\n ok = true;\n }\n catch (e) {\n if (!(e instanceof NakoError)) {\n console.error(e);\n }\n }\n }\n }\n if (ok && this.cache !== null) {\n this.lines[row] = JSON.parse(this.cache.lines)[row];\n }\n else {\n this.lines[row] = getDefaultTokens(row, this.doc);\n }\n }\n return this.lines[row];\n }\n // ace\u5074\u304B\u3089\u547C\u3070\u308C\u308B\u304C\u7121\u8996\u3059\u308B\u30E1\u30BD\u30C3\u30C9\n // @ts-ignore\n start(startRow) { }\n // @ts-ignore\n fireUpdateEvent(firstRow, lastRow) { }\n // @ts-ignore\n setDocument(doc) { }\n scheduleStart() { }\n // @ts-ignore\n setTokenizer(tokenizer) { }\n stop() { }\n // @ts-ignore\n getState(row) { return 'start'; }\n}\n/**\n * \u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u4EE5\u5916\u306E\u30A8\u30C7\u30A3\u30BF\u306E\u6319\u52D5\u306E\u5B9A\u7FA9\u3002\n */\nexport class LanguageFeatures {\n /**\n * @param {TypeofAceRange} AceRange\n * @param {NakoCompiler} nako3\n */\n constructor(AceRange, nako3) {\n this.AceRange = AceRange;\n this.nako3 = nako3;\n }\n /**\n * Ctrl + / \u306E\u52D5\u4F5C\u306E\u5B9A\u7FA9\u3002\n * @param {string} state\n * @param {Session} session\n * @param {number} startRow\n * @param {number} endRow\n */\n static toggleCommentLines(state, { doc }, startRow, endRow) {\n const prepare = NakoPrepare.getInstance();\n /**\n * @param {string} line\n * @returns {{ type: 'blank' | 'code' } | { type: 'comment', start: number, len: number }}\n */\n const parseLine = (line) => {\n // \u5148\u982D\u306E\u7A7A\u767D\u3092\u6D88\u3059\n const indent = getIndent(line);\n if (indent === line) {\n return { type: 'blank' };\n }\n line = line.substring(indent.length);\n // \u5148\u982D\u304C\u30B3\u30E1\u30F3\u30C8\u306E\u958B\u59CB\u6587\u5B57\u304B\u3069\u3046\u304B\u78BA\u8A8D\u3059\u308B\n const ch2 = line.substring(0, 2).split('').map((c) => prepare.convert1ch(c)).join('');\n if (ch2.substring(0, 1) === '#') {\n return { type: 'comment', start: indent.length, len: 1 + (line.charAt(1) === ' ' ? 1 : 0) };\n }\n if (ch2 === '//') {\n return { type: 'comment', start: indent.length, len: 2 + (line.charAt(2) === ' ' ? 1 : 0) };\n }\n return { type: 'code' };\n };\n /** @type {number[]} */\n const rows = [];\n for (let i = startRow; i <= endRow; i++) {\n rows.push(i);\n }\n // \u5168\u3066\u306E\u884C\u304C\u7A7A\u767D\u884C\u306A\u3089\u30B3\u30E1\u30F3\u30C8\u30A2\u30A6\u30C8\u3001\u5168\u3066\u306E\u884C\u304C\u884C\u30B3\u30E1\u30F3\u30C8\u3067\u59CB\u307E\u308B\u304B\u7A7A\u767D\u884C\u306A\u3089\u30A2\u30F3\u30B3\u30E1\u30F3\u30C8\u3001\u305D\u3046\u3067\u306A\u3051\u308C\u3070\u30B3\u30E1\u30F3\u30C8\u30A2\u30A6\u30C8\u3002\n if (!rows.every((row) => parseLine(doc.getLine(row)).type === 'blank') &&\n rows.every((row) => parseLine(doc.getLine(row)).type !== 'code')) {\n // \u30A2\u30F3\u30B3\u30E1\u30F3\u30C8\n for (const row of rows) {\n // \u884C\u30B3\u30E1\u30F3\u30C8\u3067\u59CB\u307E\u308B\u884C\u306A\u3089\u30A2\u30F3\u30B3\u30E1\u30F3\u30C8\u3059\u308B\u3002\n // \u884C\u30B3\u30E1\u30F3\u30C8\u306E\u76F4\u5F8C\u306B\u30B9\u30DA\u30FC\u30B9\u304C\u3042\u308B\u306A\u3089\u3001\u305D\u308C\u30821\u6587\u5B57\u3060\u3051\u524A\u9664\u3059\u308B\u3002\n const line = parseLine(doc.getLine(row));\n if (line.type === 'comment') {\n doc.removeInLine(row, line.start, line.start + line.len);\n }\n }\n }\n else {\n // \u6700\u3082\u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u4F4E\u3044\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u6570\u3092\u6570\u3048\u308B\n const minIndent = Math.min(...rows.map((row) => countIndent(doc.getLine(row))));\n // \u30B3\u30E1\u30F3\u30C8\u30A2\u30A6\u30C8\u3059\u308B\n for (const row of rows) {\n const line = doc.getLine(row);\n let column = line.length;\n for (let i = 0; i < line.length; i++) {\n if (countIndent(line.slice(0, i)) >= minIndent) {\n column = i;\n break;\n }\n }\n doc.insertInLine({ row, column }, '// ');\n }\n }\n }\n /**\n * \u6587\u5B57\u3092\u5165\u529B\u3059\u308B\u305F\u3073\u306B\u547C\u3070\u308C\u308B\u3002true\u3092\u8FD4\u3059\u3068autoOutdent\u304C\u547C\u3070\u308C\u308B\u3002\n * @param {string} state\n * @param {string} line\n * @param {string} input\n * @returns {boolean}\n */\n static checkOutdent(state, line, input) {\n // \u7279\u5B9A\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u306E\u5165\u529B\u304C\u7D42\u308F\u3063\u305F\u30BF\u30A4\u30DF\u30F3\u30B0\u3067\u30A4\u30F3\u30C7\u30F3\u30C8\u3092\u81EA\u52D5\u4FEE\u6B63\u3059\u308B\u3002\n // '\u9055\u3048\u3070'\u306EautoOutdent\u306F\u300C\u3082\u3057\u300D\u3068\u300C\u6761\u4EF6\u5206\u5C90\u300D\u306E\u3069\u3061\u3089\u306E\u3082\u306E\u304B\u898B\u5206\u3051\u304C\u4ED8\u304B\u306A\u3044\u305F\u3081\u8AE6\u3081\u308B\u3002\n // \u300C\u3053\u3053|\u307E\u300D\uFF08\u7E26\u7DDA\u304C\u30AB\u30FC\u30BD\u30EB\uFF09\u306E\u72B6\u614B\u3067\u300C\u3067\u300D\u3092\u6253\u3064\u3068true\u306B\u306A\u3063\u3066\u3057\u307E\u3046\u554F\u984C\u304C\u3042\u308B\u304C\u3001\u4FEE\u6B63\u3059\u308B\u306B\u306F\u5F15\u6570\u304C\u8DB3\u308A\u306A\u3044\u3002\n // eslint-disable-next-line no-irregular-whitespace\n return /^[ \u3000\u30FB\\t]*\u3053\u3053\u307E\u3067$/.test(line + input);\n }\n /**\n * checkOutdent\u304Ctrue\u3092\u8FD4\u3057\u305F\u3068\u304D\u306B\u547C\u3070\u308C\u308B\u3002\n * @param {string} state\n * @param {Session} session\n * @param {number} row\n * @returns {void}\n */\n autoOutdent(state, { doc }, row) {\n // 1\u884C\u76EE\u306A\u3089\u4F55\u3082\u3057\u306A\u3044\n if (row === 0) {\n return;\n }\n const prevLine = doc.getLine(row - 1);\n let indent;\n if (LanguageFeatures.isBlockStart(prevLine)) {\n // 1\u3064\u524D\u306E\u884C\u304C\u300C\u301C\u306A\u3089\u3070\u300D\u306A\u3069\u306E\u30D6\u30ED\u30C3\u30AF\u958B\u59CB\u884C\u306A\u3089\u3001\u305D\u306E\u884C\u306B\u5408\u308F\u305B\u308B\u3002\n indent = getIndent(prevLine);\n }\n else {\n // \u305D\u3046\u3067\u306A\u3051\u308C\u3070\u30011\u3064\u524D\u306E\u884C\u306E\u30A4\u30F3\u30C7\u30F3\u30C8\u304B\u30891\u6BB5\u968Eoutdent\u3057\u305F\u4F4D\u7F6E\u306B\u5408\u308F\u305B\u308B\u3002\n const s = this.getBlockStructure(doc.getAllLines().join('\\n'));\n const parent = s.parents[row];\n indent = parent !== null ? s.spaces[parent] : '';\n }\n // \u7F6E\u63DB\u3059\u308B\n const oldIndent = getIndent(doc.getLine(row));\n doc.replace(new this.AceRange(row, 0, row, oldIndent.length), indent);\n }\n /**\n * \u30A8\u30F3\u30BF\u30FC\u30AD\u30FC\u3092\u62BC\u3057\u3066\u884C\u304C\u8FFD\u52A0\u3055\u308C\u305F\u3068\u304D\u306B\u633F\u5165\u3059\u308B\u6587\u5B57\u5217\u3092\u6307\u5B9A\u3059\u308B\u3002\n * @param {string} state\n * @param {string} line \u6539\u884C\u524D\u306B\u30AB\u30FC\u30BD\u30EB\u304C\u3042\u3063\u305F\u884C\u306E\u6587\u5B57\u5217\n * @param {string} tab \u30BF\u30D6\u6587\u5B57\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F \" \"\uFF09\n */\n static getNextLineIndent(state, line, tab) {\n // \u25CF\u3067\u59CB\u307E\u308B\u304B\u3001\u7279\u5B9A\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u3067\u7D42\u308F\u308B\u5834\u5408\u306B\u30DE\u30C3\u30C1\u3059\u308B\u3002\n if (this.isBlockStart(line)) {\n return getIndent(line) + tab;\n }\n return getIndent(line);\n }\n /** @param {string} line */\n static isBlockStart(line) {\n // eslint-disable-next-line no-irregular-whitespace\n return /^[ \u3000\u30FB\\t]*\u25CF|(\u306A\u3089\u3070|\u306A\u3051\u308C\u3070|\u3053\u3053\u304B\u3089|\u6761\u4EF6\u5206\u5C90|\u9055\u3048\u3070|\u56DE|\u7E70\u308A\u8FD4(\u3059|\u3057)|\u306E\u9593|\u53CD\u5FA9|\u3068\u306F|\u306B\u306F|\u30A8\u30E9\u30FC\u76E3\u8996|\u30A8\u30E9\u30FC\u306A\u3089\u3070|\u5B9F\u884C\u901F\u5EA6\u512A\u5148)\u3001?\\s*$/.test(line);\n }\n /**\n * \u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\n * @param {number} row\n * @param {string} prefix getCompletionPrefix\u306E\u51FA\u529B\n * @param {NakoCompiler} nako3\n * @param {BackgroundTokenizer} backgroundTokenizer\n */\n static getCompletionItems(row, prefix, nako3, backgroundTokenizer) {\n /**\n * key\u306Fcaption\u3002meta\u306F\u5019\u88DC\u306E\u6A2A\u306B\u8584\u304F\u8868\u793A\u3055\u308C\u308B\u30C6\u30AD\u30B9\u30C8\u3002\n * @type {Map<string, { value: string, meta: Set<string>, score: number }>}\n */\n const result = new Map();\n /** \u5F15\u6570\u306E\u30EA\u30B9\u30C8\u3092\u542B\u307E\u306A\u3044\u3001\u95A2\u6570\u540D\u3060\u3051\u306E\u30EA\u30B9\u30C8 @type {Set<string>} */\n const values = new Set();\n /**\n * \u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u306E\u9805\u76EE\u3092\u8FFD\u52A0\u3059\u308B\u3002\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u306A\u3089\u30DE\u30FC\u30B8\u3059\u308B\u3002\n * @param {string} caption @param {string} value @param {string} meta\n */\n const addItem = (caption, value, meta) => {\n const item = result.get(caption);\n if (item) {\n item.meta.add(meta);\n }\n else {\n // \u65E5\u672C\u8A9E\u306E\u6587\u5B57\u6570\u306F\u82F1\u8A9E\u3088\u308A\u305A\u3063\u3068\u591A\u3044\u305F\u3081\u3001\u305F\u3060\u4E00\u81F4\u3059\u308B\u6587\u5B57\u6570\u3092\u6570\u3048\u308B\u3060\u3051\u3067\u5341\u5206\u3002\n const score = prefix.split('').filter((c) => value.includes(c)).length;\n result.set(caption, { value, meta: new Set([meta]), score });\n values.add(value);\n }\n };\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u95A2\u6570\n for (const name of Object.keys(nako3.__varslist[0])) {\n if (name.startsWith('!')) { // \u300C!PluginBrowser:\u521D\u671F\u5316\u300D\u306A\u3069\u3092\u9664\u5916\n continue;\n }\n const f = nako3.funclist[name];\n if (typeof f !== 'object' || f === null) {\n continue;\n }\n const pluginName = findPluginName(name, nako3) || '\u30D7\u30E9\u30B0\u30A4\u30F3';\n if (f.type === 'func') {\n addItem(createParameterDeclaration(f.josi) + name, name, pluginName);\n }\n else {\n addItem(name, name, pluginName);\n }\n }\n // \u4F9D\u5B58\u30D5\u30A1\u30A4\u30EB\u304C\u5B9A\u7FA9\u3057\u305F\u95A2\u6570\u540D\n for (const [file, { funclist }] of Object.entries(nako3.dependencies)) {\n for (const [name, f] of Object.entries(funclist)) {\n const josi = (f && f.type === 'func') ? createParameterDeclaration(f.josi) : '';\n addItem(josi + name, name, file);\n }\n }\n // \u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u5185\u306B\u5B58\u5728\u3059\u308B\u540D\u524D\n if (backgroundTokenizer.lastLexerOutput !== null) {\n for (const token of backgroundTokenizer.lastLexerOutput.tokens) {\n const name = token.value + '';\n // \u540C\u3058\u884C\u306E\u30C8\u30FC\u30AF\u30F3\u306E\u5834\u5408\u3001\u81EA\u5206\u81EA\u8EAB\u306B\u30DE\u30C3\u30C1\u3057\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u9AD8\u3044\u305F\u3081\u9664\u5916\u3059\u308B\u3002\n // \u3059\u3067\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3082\u3001\u5B9A\u7FA9\u3067\u306F\u306A\u304F\u53C2\u7167\u306E\u53EF\u80FD\u6027\u304C\u9AD8\u3044\u305F\u3081\u9664\u5916\u3059\u308B\u3002\n if (token.line === row || values.has(name)) {\n continue;\n }\n if (token.type === 'word') {\n addItem(name, name, '\u5909\u6570');\n }\n else if (token.type === 'func') {\n const f = nako3.funclist[name];\n const josi = (f && f.type === 'func') ? createParameterDeclaration(f.josi) : '';\n addItem(josi + name, name, '\u95A2\u6570');\n }\n }\n }\n return Array.from(result.entries()).map(([caption, data]) => ({ caption, ...data, meta: Array.from(data.meta).join(', ') }));\n }\n /**\n * \u30B9\u30CB\u30DA\u30C3\u30C8\n */\n /** @param {string} text */\n static getSnippets(text) {\n // \u30A4\u30F3\u30C7\u30F3\u30C8\u69CB\u6587\u304C\u6709\u52B9\u5316\u3055\u308C\u3066\u3044\u308B\u306A\u3089\u300C\u3053\u3053\u307E\u3067\u300D\u3092\u6D88\u3059\n const indentSyntax = isIndentSyntaxEnabled(text);\n /** @param {string} en @param {string} jp @param {string} snippet */\n const item = (en, jp, snippet) => indentSyntax\n ? { caption: en, meta: `\\u21E5 ${jp}`, score: 1, snippet: snippet.replace(/\\t*\u3053\u3053\u307E\u3067(\\n|$)/g, '').replace(/\\t/g, ' ') }\n : { caption: en, meta: `\\u21E5 ${jp}`, score: 1, snippet: snippet.replace(/\\t/g, ' ') };\n return [\n item('if', '\u3082\u3057\u301C\u306A\u3089\u3070', '\u3082\u3057${1:1=1}\u306A\u3089\u3070\\n\\t${2:1\u3092\u8868\u793A}\\n\u9055\u3048\u3070\\n\\t${3:2\u3092\u8868\u793A}\\n\u3053\u3053\u307E\u3067\\n'),\n item('times', '\u301C\u56DE', '${1:3}\u56DE\\n\\t${2:1\u3092\u8868\u793A}\\n\u3053\u3053\u307E\u3067\\n'),\n item('for', '\u7E70\u308A\u8FD4\u3059', '${1:N}\u3067${2:1}\u304B\u3089${3:3}\u307E\u3067\u7E70\u308A\u8FD4\u3059\\n\\t${4:N\u3092\u8868\u793A}\\n\u3053\u3053\u307E\u3067\\n'),\n item('while', '\u301C\u306E\u9593', '${1:N<2\u306E\u9593}\\n\\tN=N+1\\n\u3053\u3053\u307E\u3067\\n'),\n item('foreach', '\u301C\u3092\u53CD\u5FA9', '${1:[1,2,3]}\u3092\u53CD\u5FA9\\n\\t${2:\u5BFE\u8C61\u3092\u8868\u793A}\\n\u3053\u3053\u307E\u3067\\n'),\n item('switch', '\u301C\u3067\u6761\u4EF6\u5206\u5C90', '${1:N}\u3067\u6761\u4EF6\u5206\u5C90\\n\\t${2:1}\u306A\u3089\u3070\\n\\t\\t${3:1\u3092\u8868\u793A}\\n\\t\u3053\u3053\u307E\u3067\\n\\t${4:2}\u306A\u3089\u3070\\n\\t\\t${5:2\u3092\u8868\u793A}\\n\\t\u3053\u3053\u307E\u3067\\n\\t\u9055\u3048\u3070\\n\\t\\t${6:3\u3092\u8868\u793A}\\n\\t\u3053\u3053\u307E\u3067\\n\u3053\u3053\u307E\u3067\\n'),\n item('function', '\u25CF\u301C\u3068\u306F', '\u25CF\uFF08${1:A\u3068B\u3092}\uFF09${2:\u8DB3\u3059}\u3068\u306F\\n\\t${3:A+B\u3092\u623B\u3059}\\n\u3053\u3053\u307E\u3067\\n'),\n item('test', '\u25CF\u30C6\u30B9\u30C8:\u301C\u3068\u306F', '\u25CF\u30C6\u30B9\u30C8:${2:\u8DB3\u3059}\u3068\u306F\\n\\t1\u30682\u3092\u8DB3\u3059\\n\\t\u305D\u308C\u30683\u304CASSERT\u7B49\u3057\u3044\\n\u3053\u3053\u307E\u3067\\n'),\n item('try', '\u30A8\u30E9\u30FC\u76E3\u8996', '\u30A8\u30E9\u30FC\u76E3\u8996\\n\\t${1:1\u306E\u30A8\u30E9\u30FC\u767A\u751F}\\n\u30A8\u30E9\u30FC\u306A\u3089\u3070\\n\\t${2:2\u3092\u8868\u793A}\\n\u3053\u3053\u307E\u3067\\n')\n ];\n }\n /**\n * @param {string} line\n * @param {NakoCompiler} nako3\n */\n static getCompletionPrefix(line, nako3) {\n /** @type {ReturnType<NakoCompiler['lex']>[\"tokens\"] | null} */\n let tokens = null;\n // \u3072\u3089\u304C\u306A\u3068\u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8\u3068\u30AB\u30BF\u30AB\u30CA\u3068\u6F22\u5B57\u306E\u307F\u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u3059\u308B\u3002\n if (line.length === 0 || !/[\u3041-\u3093a-zA-Z\u30A1-\u30F6\u30FC\\u3005\\u4E00-\\u9FCF]/.test(line[line.length - 1])) {\n return '';\n }\n // \u73FE\u5728\u306E\u884C\u306E\u30AB\u30FC\u30BD\u30EB\u3088\u308A\u524D\u306E\u90E8\u5206\u3092lexer\u306B\u304B\u3051\u308B\u3002\u901F\u5EA6\u3092\u512A\u5148\u3057\u30661\u884C\u3060\u3051\u51E6\u7406\u3059\u308B\u3002\n try {\n nako3.reset();\n tokens = withoutLogger(nako3, () => nako3.lex(line, 'completion.nako3', undefined, true)).tokens\n .filter((t) => t.type !== 'eol' && t.type !== 'eof');\n }\n catch (e) {\n if (!(e instanceof NakoError)) {\n console.error(e);\n }\n }\n if (tokens === null || tokens.length === 0 || !tokens[tokens.length - 1].value) {\n return '';\n }\n const prefix = tokens[tokens.length - 1].value + '';\n // \u5358\u8A9E\u306E\u5148\u982D\u304C\u3072\u3089\u304C\u306A\u3067\u306F\u306A\u304F\u672B\u5C3E\u304C\u3072\u3089\u304C\u306A\u306E\u3068\u304D\u3001\u52A9\u8A5E\u3092\u6253\u3063\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u9AD8\u3044\u305F\u3081\u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u3057\u306A\u3044\u3002\n if (/[\u3041-\u3093]/.test(prefix[prefix.length - 1]) && !/[\u3041-\u3093]/.test(prefix[0])) {\n return '';\n }\n // \u6700\u5F8C\u306E\u30C8\u30FC\u30AF\u30F3\u306E\u5024\u3092\u3001\u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u3067\u65E2\u306B\u5165\u529B\u3057\u305F\u90E8\u5206\u3068\u3059\u308B\u3002\n return prefix;\n }\n /**\n * \u6587\u5B57\u3092\u6253\u3064\u305F\u3073\u306B\u5404\u884C\u306B\u3064\u3044\u3066\u3053\u306E\u95A2\u6570\u304C\u547C\u3070\u308C\u308B\u3002'start'\u3092\u8FD4\u3057\u305F\u884C\u306Ffold\u53EF\u80FD\u306A\u7BC4\u56F2\u306E\u5148\u982D\u306E\u884C\u306B\u306A\u308B\u3002\n * @param {Session} session\n * @param {string} foldStyle\n * @param {number} row\n * @returns {'start' | ''}\n */\n getFoldWidget({ doc }, foldStyle, row) {\n // \u901F\u5EA6\u304C\u91CD\u8981\u306A\u305F\u3081\u6B63\u898F\u8868\u73FE\u3067\u30DE\u30C3\u30C1\u3059\u308B\u3002\n return LanguageFeatures.isBlockStart(doc.getLine(row)) ? 'start' : '';\n }\n /**\n * getFoldWidget\u304C'start'\u3092\u8FD4\u3057\u305F\u884C\u306B\u8A2D\u7F6E\u3055\u308C\u308Bfold\u7528\u306E\u30DC\u30BF\u30F3\u304C\u62BC\u3055\u308C\u305F\u3068\u304D\u306B\u547C\u3070\u308C\u308B\u3002\n * @param {Session} session\n * @param {string} foldStyle\n * @param {number} row\n * @returns {AceRange | null} fold\u3059\u308B\u7BC4\u56F2\n */\n getFoldWidgetRange({ doc }, foldStyle, row) {\n const pair = this.getBlockStructure(doc.getAllLines().join('\\n')).pairs.find((v) => v[0] === row);\n if (pair !== undefined) {\n return new this.AceRange(pair[0], doc.getLine(pair[0]).length, pair[1] - 1, doc.getLine(pair[1] - 1).length);\n }\n return null;\n }\n /**\n * @param {AceDocument} doc\n * @returns {CodeLens[]}\n */\n static getCodeLens(doc) {\n const results = [];\n for (const [row, line] of Array.from(doc.getAllLines().entries())) {\n // eslint-disable-next-line no-irregular-whitespace\n const matches = /^[ \u3000\u30FB\\t]*\u25CF\u30C6\u30B9\u30C8:(.+?)(?:\u3068\u306F|$)/.exec(line);\n if (matches !== null) {\n results.push({\n start: { row },\n command: { title: '\u30C6\u30B9\u30C8\u3092\u5B9F\u884C', id: 'runTest', arguments: [matches[1]] }\n });\n }\n }\n return results;\n }\n /**\n * @param {string} code\n * @returns {ReturnType<getBlockStructure>}\n * @private\n */\n getBlockStructure(code) {\n // \u30AD\u30E3\u30C3\u30B7\u30E5\n if (!this.blockStructure || this.blockStructure.code !== code) {\n // @ts-ignore\n this.blockStructure = { code, data: getBlockStructure(code) };\n }\n return this.blockStructure.data;\n }\n}\n/**\n * \u8907\u6570\u30D5\u30A1\u30A4\u30EB\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u306E\u6700\u4F4E\u9650\u306EAPI\u3092\u63D0\u4F9B\u3059\u308B\u3002\n * @typedef {{ content: string, cursor: { range: AceRange, reversed: boolean }, scroll: { top: number, left: number }, undoManger: any }} EditorTabState\n */\nclass EditorTabs {\n /**\n * @param {AceEditor} editor\n * @param {TypeofAceRange} AceRange\n * @param {any} UndoManager\n */\n constructor(editor, AceRange, UndoManager) {\n this.editor = editor;\n this.AceRange = AceRange;\n this.UndoManager = UndoManager;\n }\n /** @param {string} content @returns {EditorTabState} */\n newTab(content) {\n return {\n content,\n cursor: { range: new this.AceRange(0, 0, 0, 0), reversed: false },\n scroll: { left: 0, top: 0 },\n undoManger: new this.UndoManager()\n };\n }\n /** @returns {EditorTabState} */\n getTab() {\n return {\n content: this.editor.getValue(),\n cursor: { range: this.editor.session.selection.getRange(), reversed: this.editor.session.selection.isBackwards() },\n scroll: { left: this.editor.session.getScrollLeft(), top: this.editor.session.getScrollTop() },\n undoManger: this.editor.session.getUndoManager()\n };\n }\n /** @param {EditorTabState} state */\n setTab(state) {\n this.editor.setValue(state.content);\n this.editor.session.selection.setRange(state.cursor.range, state.cursor.reversed);\n this.editor.session.setScrollLeft(state.scroll.left);\n this.editor.session.setScrollTop(state.scroll.top);\n this.editor.session.setUndoManager(state.undoManger);\n }\n}\nclass Options {\n /** Save Options */\n static save(editor) {\n try {\n /** @type {any} */\n const obj = {};\n for (const key of ['syntaxHighlighting', 'keyboardHandler', 'theme', 'fontSize', 'wrap', 'useSoftTabs', 'tabSize', 'showInvisibles', 'enableLiveAutocompletion', 'indentedSoftWrap', 'underlineJosi']) {\n obj[key] = editor.getOption(key);\n }\n localStorage.setItem('nako3EditorOptions', JSON.stringify(obj));\n }\n catch (e) {\n // JSON.stringify \u306E\u30A8\u30E9\u30FC\u3001localStorage\u306E\u30A8\u30E9\u30FC\u306A\u3069\n console.error(e);\n return null;\n }\n }\n /** @param {AceEditor} editor */\n static load(editor) {\n try {\n if (!window.localStorage) {\n return null;\n }\n const text = window.localStorage.getItem('nako3EditorOptions');\n if (text === null) {\n return null;\n }\n const json = JSON.parse(text);\n if (['ace/keyboard/vscode', 'ace/keyboard/emacs', 'ace/keyboard/sublime', 'ace/keyboard/vim'].includes(json.keyboardHandler)) {\n editor.setOption('keyboardHandler', json.keyboardHandler);\n }\n if (['ace/theme/xcode', 'ace/theme/monokai'].includes(json.theme)) {\n editor.setOption('theme', json.theme);\n }\n if (typeof json.fontSize === 'number') {\n editor.setOption('fontSize', Math.min(48, Math.max(6, json.fontSize)));\n }\n for (const key of ['syntaxHighlighting', 'wrap', 'useSoftTabs', 'showInvisibles', 'enableLiveAutocompletion', 'indentedSoftWrap', 'underlineJosi']) {\n if (typeof json[key] === 'boolean') {\n editor.setOption(key, json[key]);\n }\n }\n if (typeof json.tabSize === 'number') {\n editor.setOption('tabSize', Math.min(16, Math.max(0, json.tabSize)));\n }\n }\n catch (e) {\n // JSON\u306E\u30D1\u30FC\u30B9\u30A8\u30E9\u30FC\u3001localStorage\u306E\u30A8\u30E9\u30FC\u306A\u3069\n console.error(e);\n return null;\n }\n }\n /** OptionPanel\u30AF\u30E9\u30B9\u3092\u306A\u3067\u3057\u3053\u7528\u306B\u66F8\u304D\u63DB\u3048\u308B\u3002 */\n static initPanel(OptionPanel, editor) {\n const panel = new OptionPanel(editor); // editor\u306F\u30A8\u30E9\u30FC\u304C\u98DB\u3070\u306A\u3051\u308C\u3070\u4F55\u3067\u3082\u826F\u3044\n // \u30DA\u30FC\u30B8\u5185\u3067\u4E00\u5EA6\u3060\u3051\u547C\u3076\n if (this.done) {\n return;\n }\n this.done = true;\n // render\u30E1\u30BD\u30C3\u30C9\u3092\u547C\u3076\u3068renderOptionGroup\u306BoptionGroups.Main\u3001optionGroups.More \u304C\u9806\u306B\u6E21\u3055\u308C\u308B\u3053\u3068\u3092\u5229\u7528\u3057\u3066\u3001optionGroups\u3092\u66F8\u304D\u63DB\u3048\u308B\u3002\n let isMain = true;\n panel.renderOptionGroup = (group) => {\n if (isMain) { // Main\n for (const key of Object.keys(group)) {\n delete group[key];\n }\n // \u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u3067\u3082\u898B\u308C\u308B\u3088\u3046\u306B\u3001\u6587\u5B57\u6570\u306F\u6700\u5C0F\u9650\u306B\u3059\u308B\n group['\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8'] = {\n path: 'syntaxHighlighting'\n };\n group['\u30AD\u30FC\u30D0\u30A4\u30F3\u30C9'] = {\n path: 'keyboardHandler',\n type: 'select',\n items: [\n { caption: 'VSCode', value: 'ace/keyboard/vscode' },\n { caption: 'Emacs', value: 'ace/keyboard/emacs' },\n { caption: 'Sublime', value: 'ace/keyboard/sublime' },\n { caption: 'Vim', value: 'ace/keyboard/vim' }\n ]\n };\n group['\u30AB\u30E9\u30FC\u30C6\u30FC\u30DE'] = {\n path: 'theme',\n type: 'select',\n items: [\n { caption: '\u30E9\u30A4\u30C8', value: 'ace/theme/xcode' },\n { caption: '\u30C0\u30FC\u30AF', value: 'ace/theme/monokai' }\n ]\n };\n group['\u6587\u5B57\u30B5\u30A4\u30BA'] = {\n path: 'fontSize',\n type: 'number',\n defaultValue: 16\n };\n group['\u884C\u306E\u6298\u308A\u8FD4\u3057'] = {\n path: 'wrap',\n type: 'select',\n items: [\n { caption: '\u306A\u3057', value: 'off' },\n { caption: '\u3042\u308A', value: 'free' }\n ]\n };\n group['\u30BD\u30D5\u30C8\u30BF\u30D6'] = [{\n path: 'useSoftTabs'\n }, {\n ariaLabel: 'Tab Size',\n path: 'tabSize',\n type: 'number',\n values: [2, 3, 4, 8, 16]\n }];\n group['\u7A7A\u767D\u6587\u5B57\u3092\u8868\u793A'] = {\n path: 'showInvisibles'\n };\n group['\u5E38\u306B\u81EA\u52D5\u88DC\u5B8C'] = {\n path: 'enableLiveAutocompletion'\n };\n group['\u6298\u308A\u8FD4\u3057\u305F\u884C\u3092\u30A4\u30F3\u30C7\u30F3\u30C8'] = {\n path: 'indentedSoftWrap'\n };\n group['\u52A9\u8A5E\u306B\u4E0B\u7DDA\u3092\u5F15\u304F'] = {\n path: 'underlineJosi'\n };\n isMain = false;\n }\n else { // More\n for (const key of Object.keys(group)) {\n delete group[key];\n }\n }\n };\n panel.render();\n // \u8A2D\u5B9A\u30E1\u30CB\u30E5\u30FC\u306F ace/ext/settings_menu.js \u306E showSettingsMenu \u95A2\u6570\u306B\u3088\u3063\u3066\u958B\u304B\u308C\u308B\u3002\n // showSettingsMenu \u95A2\u6570\u306F new OptionPanel(editor).render() \u3067\u65B0\u3057\u3044\u8A2D\u5B9A\u30D1\u30CD\u30EB\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3059\u308B\u305F\u3081\u3001\n // render\u30E1\u30BD\u30C3\u30C9\u3092\u4E0A\u66F8\u304D\u3059\u308B\u3053\u3068\u3067\u3001\u751F\u6210\u3055\u308C\u305F\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u308B\u3002\n const render = OptionPanel.prototype.render;\n OptionPanel.prototype.render = function (...args) {\n render.apply(this, ...args); // \u5143\u306E\u51E6\u7406\n // OptionPanel.setOption() \u3067\u767A\u706B\u3055\u308C\u308B setOption \u30A4\u30D9\u30F3\u30C8\u3092\u30AD\u30E3\u30C3\u30C1\u3059\u308B\n this.on('setOption', () => {\n console.log('\u8A2D\u5B9A\u3092\u4FDD\u5B58\u3057\u307E\u3057\u305F\u3002');\n Options.save(this.editor);\n });\n };\n }\n}\n/**\n * ace/ext/language_tools \u306E\u8A2D\u5B9A\u304C\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u3067\u4FDD\u6301\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u3053\u3061\u3089\u5074\u3067\u3082\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u3067\u7BA1\u7406\u3057\u306A\u3044\u3068\u3001\u30A8\u30C7\u30A3\u30BF\u304C\u8907\u6570\u3042\u308B\u3068\u304D\u306B\u6B63\u3057\u304F\u52D5\u304B\u306A\u3044\u3002\n * - caption\u306F\u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u306E\u5019\u88DC\u3068\u3057\u3066\u8868\u793A\u3055\u308C\u308B\u30C6\u30AD\u30B9\u30C8\n * - meta\u306Fcaption\u306E\u30C6\u30AD\u30B9\u30C8\u306E\u53F3\u306B\u8584\u304F\u8868\u793A\u3055\u308C\u308B\u30C6\u30AD\u30B9\u30C8\n * - docHTML\u306F\u305D\u306E\u66F4\u306B\u53F3\u306B\u72EC\u7ACB\u3057\u305F\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u8868\u793A\u3055\u308C\u308BHTML\u306B\u3088\u308B\u8AAC\u660E\n * - value\u306F\u6C7A\u5B9A\u3057\u305F\u3068\u304D\u306B\u5B9F\u969B\u306B\u633F\u5165\u3055\u308C\u308B\u6587\u5B57\u5217\u3002\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\u3092\u914D\u7F6E\u3059\u308B\u306A\u3089\u4EE3\u308F\u308A\u306Bsnippet\u306B\u5024\u3092\u8A2D\u5B9A\u3059\u308B\u3002\n *\n * @typedef {{\n * getCompletions(\n * editor: any,\n * session: Session,\n * pos: { row: number, column: number },\n * prefix: any,\n * callback: (\n * a: null,\n * b: { meta: string, caption: string, value?: string, score: number, docHTML?: string, snippet?: string }[]\n * ) => void\n * ): void\n * getDocTooltip?(item: any): void\n * }} Completer\n * @type {Completer[]}\n */\nconst completers = [];\nlet editorIdCounter = 0;\n/**\n * \u6307\u5B9A\u3057\u305Fid\u306EHTML\u8981\u7D20\u3092\u306A\u3067\u3057\u3053\u8A00\u8A9E\u306E\u30A8\u30C7\u30A3\u30BF\u306B\u3059\u308B\u3002\n *\n * - ace editor \u304C\u30B0\u30ED\u30FC\u30D0\u30EB\u306B\u8AAD\u307F\u8FBC\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002\n * - wnako3_editor.css \u3092\u8AAD\u307F\u8FBC\u3080\u5FC5\u8981\u304C\u3042\u308B\u3002\n * - readonly \u306B\u3059\u308B\u306B\u306F data-nako3-readonly=\"true\" \u3092\u8A2D\u5B9A\u3059\u308B\u3002\n * - \u30A8\u30E9\u30FC\u4F4D\u7F6E\u306E\u8868\u793A\u3092\u7121\u52B9\u5316\u3059\u308B\u306B\u306F data-nako3-disable-marker=\"true\" \u3092\u8A2D\u5B9A\u3059\u308B\u3002\n * - \u7E26\u65B9\u5411\u306B\u30EA\u30B5\u30A4\u30BA\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F nako3-resizable=\"true\" \u3092\u8A2D\u5B9A\u3059\u308B\u3002\n * - \u30C7\u30D0\u30A4\u30B9\u304C\u9045\u3044\u3068\u304D\u306B\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u3092\u7121\u52B9\u5316\u3059\u308B\u6A5F\u80FD\u3092\u5207\u308B\u306B\u306F nako3-force-syntax-highlighting=\"true\" \u3092\u8A2D\u5B9A\u3059\u308B\u3002\n *\n * @param {string | Element} idOrElement HTML\u8981\u7D20\n * @param {import('./wnako3')} nako3\n * @param {any} ace\n */\nexport function setupEditor(idOrElement, nako3, ace) {\n /** @type {AceEditor} */\n const editor = ace.edit(idOrElement);\n const element = typeof idOrElement === 'string' ? document.getElementById(idOrElement) : idOrElement;\n if (element === null) {\n throw new Error(`[wnako3_editor] id\u304C ${idOrElement} \u306EHTML\u8981\u7D20\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`);\n }\n /** @type {TypeofAceRange} */\n const AceRange = ace.require('ace/range').Range;\n const editorMarkers = new EditorMarkers(editor.session, editor.session.bgTokenizer.doc, AceRange, !!element.dataset.nako3DisableMarker);\n if (element.classList.contains('nako3_ace_mounted')) {\n // \u540C\u3058\u30A8\u30C7\u30A3\u30BF\u3092\u8AA4\u3063\u3066\u8907\u6570\u56DE\u521D\u671F\u5316\u3059\u308B\u3068\u3001ace editor \u306E\u6319\u52D5\u3092\u66F8\u304D\u63DB\u3048\u3066\u3044\u308B\u305B\u3044\u3067\n // \u610F\u56F3\u3057\u306A\u3044\u52D5\u4F5C\u3092\u3057\u305F\u305F\u3081\u3001\u3059\u3067\u306B\u30A8\u30C7\u30A3\u30BF\u3068\u3057\u3066\u4F7F\u308F\u308C\u3066\u3044\u306A\u3044\u3053\u3068\u3092\u78BA\u8A8D\u3059\u308B\u3002\n throw new Error('\u306A\u3067\u3057\u3053\u8A00\u8A9E\u306E\u30A8\u30C7\u30A3\u30BF\u306E\u521D\u671F\u5316\u51E6\u7406\u3092\u540C\u4E00\u306EHTML\u8981\u7D20\u306B\u5BFE\u3057\u3066\u8907\u6570\u56DE\u9069\u7528\u3057\u307E\u3057\u305F\u3002');\n }\n // lang=\"ja\" \u304C\u3042\u308B\u3068\u8868\u793A\u304C\u305A\u308C\u308B\u554F\u984C\u306E\u4FEE\u6B63 #839\n element.setAttribute('lang', 'en');\n // \u4EE5\u524D\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306Fnako3_editor\u3092html\u306B\u76F4\u63A5\u4ED8\u3051\u3066\u3044\u305F\u305F\u3081\u3001\u4E92\u63DB\u6027\u306E\u305F\u3081nako3_editor\u3068\u306F\u5225\u306E\u30AF\u30E9\u30B9\u540D\u3092\u4F7F\u7528\u3059\u308B\u3002\n element.classList.add('nako3_ace_mounted');\n element.classList.add('nako3_editor'); // CSS\u306E\u305F\u3081\n const readonly = element.dataset.nako3Readonly;\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!readonly) {\n element.classList.add('readonly');\n editor.setReadOnly(true);\n }\n editor.setFontSize(16);\n /** @param {Session} session */\n const resetEditorTokens = (session) => {\n // \u4E00\u65E6\u30C6\u30AD\u30B9\u30C8\u5168\u4F53\u3092\u6D88\u3057\u3066\u304B\u3089\u3001\u5143\u306B\u623B\u3059\n /** @type {AceDocument} */\n const doc = session.doc;\n const lines = doc.getAllLines();\n const range = session.selection.getRange();\n doc.removeFullLines(0, doc.getLength());\n doc.insert({ row: 0, column: 0 }, lines.join('\\n'));\n session.selection.setRange(range, false);\n };\n ace.require('ace/config').defineOptions(editor.constructor.prototype, 'editor', {\n syntaxHighlighting: {\n /** @type {(this: AceEditor, value: boolean) => void} */\n set: function (value) {\n this.session.bgTokenizer.enabled = value;\n resetEditorTokens(this.session);\n },\n initialValue: true\n },\n underlineJosi: {\n /** @type {(this: AceEditor, value: boolean) => void} */\n set: function (value) {\n this.session.bgTokenizer.underlineJosi = value;\n resetEditorTokens(this.session);\n },\n initialValue: true\n }\n });\n editor.setOptions({\n wrap: 'free',\n indentedSoftWrap: false,\n showPrintMargin: false\n });\n ace.require('ace/keybindings/vscode');\n editor.setKeyboardHandler('ace/keyboard/vscode');\n // \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u30DB\u30D0\u30FC\n const Tooltip = ace.require('ace/tooltip').Tooltip;\n const tooltip = new Tooltip(editor.container);\n const event = ace.require('ace/lib/event');\n event.addListener(editor.renderer.content, 'mouseout', () => {\n // \u30DE\u30A6\u30B9\u30AB\u30FC\u30BD\u30EB\u304C\u30A8\u30C7\u30A3\u30BF\u306E\u5916\u306B\u51FA\u305F\u3089\u3001tooltip\u3092\u96A0\u3059\n tooltip.hide();\n });\n editor.on('mousemove', (e) => {\n // \u30DE\u30A6\u30B9\u30AB\u30FC\u30BD\u30EB\u304C\u30C8\u30FC\u30AF\u30F3\u306B\u91CD\u306A\u3063\u305F\u3068\u304D\u306Btooltip\u3092\u8868\u793A\u3059\u308B\u3002\u30E2\u30D0\u30A4\u30EB\u7AEF\u672B\u306E\u5834\u5408\u306F\u30C8\u30FC\u30AF\u30F3\u306B\u30AB\u30FC\u30BD\u30EB\u304C\u5F53\u305F\u3063\u305F\u3068\u304D\u306B\u8868\u793A\u3055\u308C\u308B\u3002\n const pos = e.getDocumentPosition();\n // getTokenAt\u306Fcolumn\u304C\u884C\u672B\u3088\u308A\u5927\u304D\u3044\u3068\u304D\u884C\u672B\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u8FD4\u3057\u3066\u3057\u307E\u3046\u3002\n if (pos.column >= e.editor.session.getLine(pos.row).length) {\n tooltip.hide();\n return;\n }\n // getTokenAt\u306F\u5B9F\u969B\u3088\u308A\u30821\u6587\u5B57\u53F3\u306E\u30C8\u30FC\u30AF\u30F3\u3092\u53D6\u5F97\u3057\u3066\u3057\u307E\u3046\u305F\u3081\u3001column\u306B1\u3092\u8DB3\u3057\u3066\u3044\u308B\u3002\n /** @type {EditorToken} */\n const token = e.editor.session.getTokenAt(pos.row, pos.column + 1);\n if (token === null || !token.docHTML) {\n // \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304C\u5B58\u5728\u3057\u306A\u3044\u30C8\u30FC\u30AF\u30F3\u306A\u3089tooltip\u3092\u8868\u793A\u3057\u306A\u3044\n tooltip.hide();\n return;\n }\n tooltip.setHtml(token.docHTML);\n tooltip.show(null, e.clientX, e.clientY);\n });\n editor.session.on('change', () => {\n // \u30E2\u30D0\u30A4\u30EB\u7AEF\u672B\u3067\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304C\u5B58\u5728\u3059\u308B\u30C8\u30FC\u30AF\u30F3\u3092\u7DE8\u96C6\u3059\u308B\u3068\u304D\u306B\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u304C\u6D88\u3048\u306A\u3044\u554F\u984C\u3092\u89E3\u6D88\u3059\u308B\u305F\u3081\u306B\u3001\u6587\u5B57\u3092\u6253\u3063\u305F\u3089tooltip\u3092\u96A0\u3059\u3002\n tooltip.hide();\n // \u6587\u5B57\u5165\u529B\u3057\u305F\u3089\u30DE\u30FC\u30AB\u30FC\u3092\u6D88\u3059\n editorMarkers.clear();\n });\n editor.on('guttermousedown', (e) => {\n const target = e.domEvent.target;\n if (target.className.indexOf('ace_gutter-cell') === -1) {\n return;\n }\n if (!editor.isFocused()) {\n return;\n }\n const row = e.getDocumentPosition().row;\n const editorId = e.editor.editorId || 0;\n if (target.className.indexOf('ace_breakpoint') === -1) {\n e.editor.session.setBreakpoint(row);\n window.postMessage({ action: 'breakpoint:on', row, editorId });\n }\n else {\n e.editor.session.clearBreakpoint(row);\n window.postMessage({ action: 'breakpoint:off', row, editorId });\n }\n // console.log('BREAKPOINT=', row, 'editorId=', editorId)\n e.stop();\n });\n const forceSyntaxHighlighting = !!element.dataset.nako3ForceSyntaxHighlighting;\n let isFirstTime = true;\n const oldBgTokenizer = editor.session.bgTokenizer;\n const backgroundTokenizer = new BackgroundTokenizer(editor.session.bgTokenizer.doc, nako3, (firstRow, lastRow, ms) => {\n oldBgTokenizer._signal('update', { data: { first: firstRow, last: lastRow } });\n // \u51E6\u7406\u304C\u9045\u3044\u5834\u5408\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u3092\u7121\u52B9\u5316\u3059\u308B\u3002\n if (ms > 220 && editor.getOption('syntaxHighlighting') && !readonly && !forceSyntaxHighlighting && isFirstTime) {\n isFirstTime = false;\n slowSpeedMessage.classList.add('visible');\n editor.setOption('syntaxHighlighting', false);\n setTimeout(() => {\n slowSpeedMessage.classList.remove('visible');\n }, 13000);\n }\n }, (code, err) => { editorMarkers.addByError(code, err, 'error'); }, \n /** @type {boolean} */ (editor.getOption('underlineJosi')));\n // \u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u3092\u6709\u52B9\u5316\u3059\u308B\n editor.setOptions({\n enableBasicAutocompletion: true,\n enableSnippets: true,\n enableLiveAutocompletion: true\n });\n const editorId = editorIdCounter++;\n editor.wnako3EditorId = editorId;\n // \u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u306Ecompleter\u3092\u8A2D\u5B9A\u3059\u308B\n completers.push({\n getCompletions(editor, session, pos, prefix, callback) {\n if (editor.wnako3EditorId !== editorId) {\n callback(null, []);\n }\n else {\n const items = LanguageFeatures.getCompletionItems(pos.row, prefix, nako3, backgroundTokenizer);\n // \u5B8C\u5168\u306B\u4E00\u81F4\u3059\u308B\u5019\u88DC\u304C\u3042\u308C\u3070\u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u3057\u306A\u3044\u3002\uFF08Ace\u30A8\u30C7\u30A3\u30BF\u3067\u306E\u6319\u52D5\u304C\u5FAE\u5999\u306A\u305F\u3081\u3002\uFF09\n if (items.some((v) => v.value === prefix)) {\n callback(null, []);\n return;\n }\n callback(null, items);\n }\n }\n }, { getCompletions(editor, session, pos, prefix, callback) { callback(null, (editor.wnako3EditorId !== editorId) ? [] : LanguageFeatures.getSnippets(editor.session.doc.getAllLines().join('\\n'))); } });\n ace.require('ace/ext/language_tools').setCompleters(completers);\n // \u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\u306E\u5358\u8A9E\u306E\u533A\u5207\u308A\u304C\u65E5\u672C\u8A9E\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u30E1\u30BD\u30C3\u30C9\u3092\u4E0A\u66F8\u304D\u3057\u3066\u5BFE\u5FDC\u3055\u305B\u308B\u3002\n // \u6587\u5B57\u3092\u5165\u529B\u3059\u308B\u305F\u3073\u306B\u547C\u3070\u308C\u3001''\u4EE5\u5916\u3092\u8FD4\u3059\u3068\u305D\u306E\u6587\u5B57\u5217\u3092\u3082\u3068\u306B\u3057\u3066autocompletion\u304C\u59CB\u307E\u308B\u3002\n ace.require('ace/autocomplete/util').getCompletionPrefix = (/** @type {AceEditor} */ editor) => {\n const pos = editor.getCursorPosition();\n return LanguageFeatures.getCompletionPrefix(editor.session.doc.getLine(pos.row).slice(0, pos.column), nako3);\n };\n // \u30A8\u30C7\u30A3\u30BF\u306E\u6319\u52D5\u306E\u8A2D\u5B9A\n const languageFeatures = new LanguageFeatures(AceRange, nako3);\n const oop = ace.require('ace/lib/oop');\n const TextMode = ace.require('ace/mode/text').Mode;\n const Mode = function () {\n this.HighlightRules = new TextMode().HighlightRules;\n this.foldingRules = {\n getFoldWidget: languageFeatures.getFoldWidget.bind(languageFeatures),\n getFoldWidgetRange: languageFeatures.getFoldWidgetRange.bind(languageFeatures)\n };\n };\n oop.inherits(Mode, TextMode);\n Mode.prototype.toggleCommentLines = LanguageFeatures.toggleCommentLines.bind(LanguageFeatures);\n Mode.prototype.getNextLineIndent = LanguageFeatures.getNextLineIndent.bind(LanguageFeatures);\n Mode.prototype.checkOutdent = LanguageFeatures.checkOutdent.bind(LanguageFeatures);\n Mode.prototype.autoOutdent = languageFeatures.autoOutdent.bind(languageFeatures);\n editor.session.setMode(new Mode());\n // tokenizer \uFF08\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\uFF09\u306E\u4E0A\u66F8\u304D\n editor.session.bgTokenizer.stop();\n editor.session.bgTokenizer = backgroundTokenizer;\n editor.setTheme('ace/theme/xcode');\n // \u8A2D\u5B9A\u30E1\u30CB\u30E5\u30FC\u306E\u4E0A\u66F8\u304D\n // \u306A\u3067\u3057\u3053\u7528\u306B\u4E0A\u66F8\u304D\u3057\u305F\u8A2D\u5B9A\u306E\u524A\u9664\u3084\u30C6\u30AD\u30B9\u30C8\u306E\u548C\u8A33\u3092\u3059\u308B\u3002\n Options.load(editor);\n const OptionPanel = ace.require('ace/ext/options').OptionPanel;\n Options.initPanel(OptionPanel, editor);\n // \u53F3\u4E0B\u306E\u30DC\u30BF\u30F3\u5168\u4F53\u3092\u56F2\u3080div\n const buttonContainer = document.createElement('div');\n buttonContainer.classList.add('button-container');\n editor.container.appendChild(buttonContainer);\n // \u9045\u3044\u7AEF\u672B\u3078\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u30DC\u30BF\u30F3\n const slowSpeedMessage = document.createElement('span');\n slowSpeedMessage.classList.add('slow-speed-message');\n slowSpeedMessage.innerHTML = '<span>\u30A8\u30C7\u30A3\u30BF\u306E|\u5FDC\u7B54\u901F\u5EA6\u304C|\u4F4E\u4E0B\u3057\u305F\u305F\u3081|\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9|\u30CF\u30A4\u30E9\u30A4\u30C8\u3092|\u7121\u52B9\u5316|\u3057\u307E\u3057\u305F\u3002</span>'.replace(/\\|/g, '</span><span>');\n buttonContainer.appendChild(slowSpeedMessage);\n // \u30C6\u30B9\u30C8\u306E\u5B9A\u7FA9\u306E\u4E0A\u306B\u300C\u30C6\u30B9\u30C8\u3092\u5B9F\u884C\u300D\u30DC\u30BF\u30F3\u3092\u8868\u793A\u3059\u308B\n /** @type {{ name: 'test', callback: (testName: string | undefined) => void }[]} */\n const codeLensListeners = [];\n try {\n const CodeLens = ace.require('ace/ext/code_lens');\n editor.setOption('enableCodeLens', true);\n editor.commands.addCommand({\n name: 'runTest',\n exec: (/** @type {AceEditor} */ editor, /** @type {any[]} */ args) => {\n codeLensListeners\n .filter((v) => v.name === 'test')\n .forEach((f) => f.callback(args[0]));\n }\n });\n CodeLens.registerCodeLensProvider(editor, {\n provideCodeLenses: (/** @type {Session} */ session, /** @type {(_: null, arr: CodeLens[]) => void} */ callback) => {\n callback(null, codeLensListeners.some((v) => v.name === 'test') ? LanguageFeatures.getCodeLens(session.doc) : []);\n }\n });\n }\n catch (e) {\n console.error(e); // ext/code_lens \u306Escript\u30BF\u30B0\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u306A\u3069\u3002\n }\n // \u300C\u5168\u753B\u9762\u300D\u30DC\u30BF\u30F3\n const exitFullscreen = () => {\n editor.container.classList.remove('fullscreen');\n editor.renderer.setScrollMargin(0, 0, 0, 0); // margin\u3092\u5143\u306B\u623B\u3059\n };\n const fullscreenButton = document.createElement('span');\n fullscreenButton.classList.add('editor-button');\n fullscreenButton.innerText = '\u5168\u753B\u9762';\n fullscreenButton.addEventListener('click', (e) => {\n if (editor.container.classList.contains('fullscreen')) {\n exitFullscreen();\n }\n else {\n editor.container.classList.add('fullscreen');\n editor.renderer.setScrollMargin(20, 20, 0, 0); // \u4E0A\u4E0B\u306B\u5C11\u3057\u9699\u9593\u3092\u958B\u3051\u308B\n }\n e.preventDefault();\n });\n buttonContainer.appendChild(fullscreenButton);\n // \u300C\u8A2D\u5B9A\u300D\u30DC\u30BF\u30F3\n const settingsButton = document.createElement('span');\n settingsButton.classList.add('editor-button');\n settingsButton.innerText = '\u8A2D\u5B9A';\n settingsButton.addEventListener('click', (e) => {\n exitFullscreen();\n editor.execCommand('showSettingsMenu');\n e.preventDefault();\n });\n buttonContainer.appendChild(settingsButton);\n // \u8907\u6570\u30D5\u30A1\u30A4\u30EB\u306E\u5207\u308A\u66FF\u3048\n const UndoManager = ace.require('ace/undomanager').UndoManager;\n const editorTabs = new EditorTabs(editor, AceRange, UndoManager);\n // \u30EA\u30B5\u30A4\u30BA\u53EF\u80FD\u306B\u3059\u308B\n const resizable = element.dataset.nako3Resizable;\n if (resizable) {\n new MutationObserver(() => { editor.resize(); }).observe(editor.container, { attributes: true });\n editor.renderer.setScrollMargin(4, 0, 4, 0);\n editor.container.classList.add('resizable');\n }\n const retokenize = () => { backgroundTokenizer.dirty = true; };\n /**\n * \u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u5B9F\u884C\u3057\u3066\u3001\u30A8\u30E9\u30FC\u304C\u3042\u308C\u3070\u30A8\u30C7\u30A3\u30BF\u4E0A\u306B\u6CE2\u7DDA\u3092\u8868\u793A\u3059\u308B\u3002\u51FA\u529B\u306FoutputContainer\u306B\u8868\u793A\u3059\u308B\u3002\n * method\u304C'test'\u306E\u3068\u304D\u3001testName\u3092\u6307\u5B9A\u3059\u308B\u30681\u3064\u306E\u30C6\u30B9\u30C8\u3060\u3051\u5B9F\u884C\u3067\u304D\u308B\u3002\n */\n const run = (opts) => {\n const code = editor.getValue();\n const preCode = opts.preCode || ''; // \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u524D\u306B\u81EA\u52D5\u7684\u306B\u633F\u5165\u3055\u308C\u308B\u30B3\u30FC\u30C9\n // logger\u3092\u65B0\u3057\u3044\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u306B\u7F6E\u304D\u63DB\u3048\u308B\u3002\u305D\u3046\u3057\u306A\u3044\u3068\u3069\u306E\u30A8\u30C7\u30A3\u30BF\u3067\u8D77\u304D\u305F\u30A8\u30E9\u30FC\uFF08\u3084\u8B66\u544A\u3084\u51FA\u529B\uFF09\u306A\u306E\u304B\u304C\u5206\u304B\u3089\u306A\u3044\u3002\n const logger = nako3.replaceLogger();\n if (opts.outputContainer) {\n const c = opts.outputContainer;\n logger.addListener('info', ({ html }) => {\n if (!c) {\n console.log(html);\n }\n c.style.display = 'block';\n c.innerHTML += html;\n });\n opts.outputContainer.classList.add('nako3-output-container');\n }\n let filename = opts.file || 'main.nako3';\n // \u8B66\u544A\u3068\u30A8\u30E9\u30FC\u3092\u30A8\u30C7\u30A3\u30BF\u4E0A\u306B\u8868\u793A\u3059\u308B\u3002\n logger.addListener('info', ({ position, noColor, level }) => {\n if (position && (position.file === filename && (level === 'warn' || level === 'error'))) {\n editorMarkers.addByError(code, { ...position, message: noColor }, level);\n }\n });\n // \u4F9D\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3080\u3002\n const promise = nako3.loadDependencies(preCode + code, filename, preCode, opts.localFiles || {})\n .then(async () => {\n // \u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u5B9F\u884C\u3059\u308B\u3002\n if (!filename) {\n filename = 'main.nako3';\n }\n if (opts.method === 'test') {\n return nako3.test(preCode + code, filename, preCode, opts.testName);\n }\n else if (opts.method === 'compile') {\n return nako3.compile(preCode + code, filename, false, preCode);\n }\n else {\n const opt = { resetEnv: true, resetAll: true, preCode };\n return await nako3.runAsync(preCode + code, filename, opt);\n }\n })\n .catch((err) => {\n // \u30A8\u30E9\u30FC\u306Flogger\u306B\u9001\u3089\u308C\u308B\u305F\u3081\u4F55\u3082\u3057\u306A\u304F\u3066\u826F\u3044\n // \u3057\u304B\u3057\u5FF5\u306E\u305F\u3081 console.error \u3067\u51FA\u529B\n console.error('[wnako3_editor]', err, nako3.__globalObj);\n })\n .then(async (res) => {\n // \u8AAD\u307F\u8FBC\u3093\u3060\u4F9D\u5B58\u30D5\u30A1\u30A4\u30EB\u306E\u60C5\u5831\u3092\u4F7F\u3063\u3066\u518D\u5EA6\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u3059\u308B\u3002\n retokenize();\n // \u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30CF\u30A4\u30E9\u30A4\u30C8\u304C\u7D42\u308F\u308B\u306E\u3092\u5F85\u3064\n while (backgroundTokenizer.dirty) {\n await new Promise((resolve) => setTimeout(resolve, 0));\n }\n return res;\n })\n .catch((err) => {\n console.error('[wnako3_editor::run::promise::catch]', err);\n });\n return { promise, logger, code };\n };\n return { editor, editorMarkers, editorTabs, retokenize, run, codeLensListeners };\n}\nexport default {\n tokenize,\n setupEditor,\n LanguageFeatures,\n EditorMarkers,\n BackgroundTokenizer\n};\n", "// \u5B9F\u969B\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u5B9A\u7FA9 (\u81EA\u52D5\u751F\u6210\u3055\u308C\u308B\u306E\u3067\u4EE5\u4E0B\u3092\u7DE8\u96C6\u3057\u306A\u3044)\nconst nakoVersion = {\n version: '3.6.14',\n major: 3,\n minor: 6,\n patch: 14\n};\nexport default nakoVersion;\n", "// @ts-nocheck\nexport default {\n // @\u8272\u5B9A\u6570\n '\u6C34\u8272': { type: 'const', value: 'aqua' }, // @\u307F\u305A\u3044\u308D\n '\u7D2B\u8272': { type: 'const', value: 'fuchsia' }, // @\u3080\u3089\u3055\u304D\u3044\u308D\n '\u7DD1\u8272': { type: 'const', value: 'lime' }, // @\u307F\u3069\u308A\u3044\u308D\n '\u9752\u8272': { type: 'const', value: 'blue' }, // @\u3042\u304A\u3044\u308D\n '\u8D64\u8272': { type: 'const', value: 'red' }, // @\u3042\u304B\u3044\u308D\n '\u9EC4\u8272': { type: 'const', value: 'yellow' }, // @\u304D\u3044\u308D\n '\u9ED2\u8272': { type: 'const', value: 'black' }, // @\u304F\u308D\u3044\u308D\n '\u767D\u8272': { type: 'const', value: 'white' }, // @\u3057\u308D\u3044\u308D\n '\u8336\u8272': { type: 'const', value: 'maroon' }, // @\u3061\u3083\u3044\u308D\n '\u7070\u8272': { type: 'const', value: 'gray' }, // @\u306F\u3044\u3044\u308D\n '\u91D1\u8272': { type: 'const', value: 'gold' }, // @\u304D\u3093\u3044\u308D\n '\u9EC4\u91D1\u8272': { type: 'const', value: 'gold' }, // @\u3053\u304C\u306D\u3044\u308D\n '\u9280\u8272': { type: 'const', value: 'silver' }, // @\u304E\u3093\u3044\u308D\n '\u767D\u91D1\u8272': { type: 'const', value: 'silver' }, // @\u3057\u308D\u304C\u306D\u3044\u308D\n '\u30AA\u30EA\u30FC\u30D6\u8272': { type: 'const', value: 'olive' }, // @\u304A\u308A\u30FC\u3076\u3044\u308D\n '\u30D9\u30FC\u30B8\u30E5\u8272': { type: 'const', value: 'beige' }, // @\u3079\u30FC\u3058\u3085\u3044\u308D\n '\u30A2\u30EA\u30B9\u30D6\u30EB\u30FC\u8272': { type: 'const', value: 'aliceblue' }, // @\u3042\u308A\u3059\u3076\u308B\u30FC\u3044\u308D\n 'RGB': {\n type: 'func',\n josi: [['\u3068'], ['\u3068'], ['\u3067', '\u306E']],\n pure: true,\n fn: function (r, g, b) {\n const z2 = (v) => {\n const v2 = '00' + v.toString(16);\n return v2.substr(v2.length - 2, 2);\n };\n return '#' + z2(r) + z2(g) + z2(b);\n },\n return_none: false\n },\n '\u8272\u6DF7': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (a) {\n const z2 = (v) => {\n const v2 = '00' + v.toString(16);\n return v2.substr(v2.length - 2, 2);\n };\n if (!a) {\n throw new Error('\u300E\u8272\u6DF7\u305C\u308B\u300F\u306E\u5F15\u6570\u306B\u306F\u914D\u5217\u3092\u6307\u5B9A\u3057\u307E\u3059');\n }\n if (a.length < 3) {\n throw new Error('\u300E\u8272\u6DF7\u305C\u308B\u300F\u306E\u5F15\u6570\u306B\u306F[RR,GG,BB]\u5F62\u5F0F\u306E\u914D\u5217\u3092\u6307\u5B9A\u3057\u307E\u3059');\n }\n return '#' + z2(a[0]) + z2(a[1]) + z2(a[2]);\n },\n return_none: false\n }\n};\n", "export default {\n // @\u30B7\u30B9\u30C6\u30E0\n 'WNAKO\u30D0\u30FC\u30B8\u30E7\u30F3': { type: 'const', value: '?' }, // @WNAKO\u3070\u30FC\u3058\u3087\u3093\n '\u7D42': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n // v3.3.74\u4EE5\u964D plguin_system.mjs\u3068\u6319\u52D5\u304C\u540C\u3058\u306B\u306A\u3063\u305F\n // \u30C7\u30D0\u30C3\u30B0\u30E2\u30FC\u30C9\u3067\u306A\u3051\u308C\u3070\u4F8B\u5916\u3092\u6295\u3052\u308B\u3053\u3068\u3067\u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u7D42\u4E86\u3055\u305B\u308B\n if (sys && sys.__v0) {\n sys.__setSysVar('__forceClose', true);\n if (!sys.__getSysVar('__useDebug')) {\n throw new Error('__\u7D42\u308F\u308B__');\n }\n }\n else {\n throw new Error('__\u7D42\u308F\u308B__');\n }\n },\n return_none: true\n },\n 'OS\u53D6\u5F97': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n const ua = window.navigator.userAgent.toLowerCase();\n if (ua.indexOf('windows') !== -1) {\n return 'windows';\n }\n if (ua.indexOf('android') !== -1) {\n return 'android';\n }\n if (ua.indexOf('iphone') !== -1) {\n return 'iphone';\n }\n if (ua.indexOf('ipad') !== -1) {\n return 'ipad';\n }\n if (ua.indexOf('mac os x') !== -1) {\n return 'darwin';\n }\n if (ua.indexOf('macintosh') !== -1) {\n return 'darwin';\n }\n if (ua.indexOf('cros') !== -1) {\n return 'chromeos';\n }\n if (ua.indexOf('ubuntu') !== -1) {\n return 'ubuntu';\n }\n if (ua.indexOf('linux') !== -1) {\n return 'linux';\n }\n return 'unknown';\n }\n }\n};\n", "// @ts-nocheck\nexport default {\n // @\u30C0\u30A4\u30A2\u30ED\u30B0\n '\u8A00': {\n type: 'func',\n josi: [['\u3068', '\u3092']],\n pure: true,\n fn: function (s) {\n window.alert(s);\n },\n return_none: true\n },\n '\u30C0\u30A4\u30A2\u30ED\u30B0\u30AD\u30E3\u30F3\u30BB\u30EB\u5024': { type: 'var', value: '' }, // @\u3060\u3044\u3042\u308D\u3050\u304D\u3083\u3093\u305B\u308B\u3061\n '\u5C0B': {\n type: 'func',\n josi: [['\u3068', '\u3092']],\n pure: true,\n fn: function (s, sys) {\n const r = window.prompt(s);\n if (r === null) {\n return sys.__getSysVar('\u30C0\u30A4\u30A2\u30ED\u30B0\u30AD\u30E3\u30F3\u30BB\u30EB\u5024');\n }\n if (/^[-+]?[0-9]+(\\.[0-9]+)?$/.test(r)) {\n return parseFloat(r);\n }\n if (/^[-+\uFF0D\uFF0B]?[0-9\uFF10-\uFF19]+([.\uFF0E][0-9\uFF10-\uFF19]+)?$/.test(r)) {\n return parseFloat(r.replace(/[\uFF0D\uFF0B\uFF10-\uFF19\uFF0E]/g, c => {\n return String.fromCharCode(c.charCodeAt(0) - 0xFEE0);\n }));\n }\n return r;\n }\n },\n '\u6587\u5B57\u5C0B': {\n type: 'func',\n josi: [['\u3068', '\u3092']],\n pure: true,\n fn: function (s, sys) {\n const r = window.prompt(s);\n if (r === null) {\n return sys.__getSysVar('\u30C0\u30A4\u30A2\u30ED\u30B0\u30AD\u30E3\u30F3\u30BB\u30EB\u5024');\n }\n return r;\n }\n },\n '\u4E8C\u629E': {\n type: 'func',\n josi: [['\u3067', '\u306E', '\u3068', '\u3092']],\n pure: true,\n fn: function (s) {\n return window.confirm(s);\n }\n }\n};\n", "// @ts-nocheck\nexport default {\n // @\u30D6\u30E9\u30A6\u30B6\u64CD\u4F5C\n '\u30D6\u30E9\u30A6\u30B6\u79FB\u52D5': {\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (url, sys) {\n window.location.href = url;\n }\n },\n '\u30D6\u30E9\u30A6\u30B6\u623B': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n window.history.back(-1);\n }\n },\n '\u30D6\u30E9\u30A6\u30B6URL': { type: 'const', value: '' } // @N\u3076\u3089\u3046\u3056URL\n};\n", "export default {\n // @HTTP\u3068AJAX\n 'HTTP\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089', '\u3092']],\n pure: true,\n asyncFn: true,\n fn: async function (url, sys) {\n return sys.__exec('AJAX\u30C6\u30AD\u30B9\u30C8\u53D6\u5F97', [url, sys]);\n }\n },\n 'AJAX\u53D7\u4FE1': {\n type: 'func',\n josi: [['\u304B\u3089', '\u3092']],\n pure: true,\n asyncFn: true,\n fn: async function (url, sys) {\n return sys.__exec('AJAX\u30C6\u30AD\u30B9\u30C8\u53D6\u5F97', [url, sys]);\n }\n },\n 'AJAX\u53D7\u4FE1\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u304B\u3089', '\u3092']],\n pure: true,\n fn: function (callback, url, sys) {\n sys.__exec('AJAX\u9001\u4FE1\u6642', [callback, url, sys]);\n },\n return_none: true\n },\n 'AJAX\u9001\u4FE1': {\n type: 'func',\n josi: [['\u307E\u3067', '\u3078', '\u306B']],\n pure: true,\n asyncFn: true,\n fn: async function (url, sys) {\n return sys.__exec('AJAX\u30C6\u30AD\u30B9\u30C8\u53D6\u5F97', [url, sys]);\n }\n },\n 'AJAX\u9001\u4FE1\u6642': {\n type: 'func',\n josi: [['\u306E'], ['\u307E\u3067', '\u3078', '\u306B']],\n pure: true,\n fn: function (callback, url, sys) {\n let options = sys.__getSysVar('AJAX\u30AA\u30D7\u30B7\u30E7\u30F3');\n if (options === '') {\n options = { method: 'GET' };\n }\n fetch(url, options).then(res => {\n // \u3082\u3057301\u3067\u3042\u308C\u3070\u81EA\u52D5\u3067\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3059\u308B\u305F\u3081,200\u3060\u3051\u3092\u30C1\u30A7\u30C3\u30AF\u3059\u308C\u3070\u826F\u3044\n if (res.status !== 200) {\n return sys.__getSysVar('AJAX:ONERROR')(res.status);\n }\n return res.text();\n }).then(text => {\n sys.__setSysVar('\u5BFE\u8C61', text);\n callback(text, sys);\n }).catch(err => {\n sys.__getSysVar('AJAX:ONERROR')(err);\n });\n },\n return_none: true\n },\n 'AJAX\u30AA\u30D7\u30B7\u30E7\u30F3': { type: 'const', value: '' }, // @AJAX\u304A\u3077\u3057\u3087\u3093\n 'AJAX\u30AA\u30D7\u30B7\u30E7\u30F3\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u3078', '\u3068']],\n pure: true,\n fn: function (option, sys) {\n sys.__setSysVar('AJAX\u30AA\u30D7\u30B7\u30E7\u30F3', option);\n },\n return_none: true\n },\n 'AJAX\u30AA\u30D7\u30B7\u30E7\u30F3POST\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u3092', '\u3067']],\n pure: true,\n fn: function (params, sys) {\n const bodyData = sys.__exec('POST\u30C7\u30FC\u30BF\u751F\u6210', [params, sys]);\n const options = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n body: bodyData\n };\n sys.__setSysVar('AJAX\u30AA\u30D7\u30B7\u30E7\u30F3', options);\n },\n return_none: true\n },\n 'AJAX\u5931\u6557\u6642': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (callback, sys) {\n sys.__setSysVar('AJAX:ONERROR', callback);\n }\n },\n 'AJAX\u30C6\u30AD\u30B9\u30C8\u53D6\u5F97': {\n type: 'func',\n josi: [['\u304B\u3089', '\u3092']],\n pure: true,\n asyncFn: true,\n fn: async function (url, sys) {\n let options = sys.__getSysVar('AJAX\u30AA\u30D7\u30B7\u30E7\u30F3');\n if (options === '') {\n options = { method: 'GET' };\n }\n const res = await fetch(url, options);\n const txt = await res.text();\n return txt;\n },\n return_none: false\n },\n 'AJAX_JSON\u53D6\u5F97': {\n type: 'func',\n josi: [['\u304B\u3089']],\n pure: true,\n asyncFn: true,\n fn: async function (url, sys) {\n let options = sys.__getSysVar('AJAX\u30AA\u30D7\u30B7\u30E7\u30F3');\n if (options === '') {\n options = { method: 'GET' };\n }\n const res = await fetch(url, options);\n const txt = await res.json();\n return txt;\n },\n return_none: false\n },\n 'AJAX\u30D0\u30A4\u30CA\u30EA\u53D6\u5F97': {\n type: 'func',\n josi: [['\u304B\u3089']],\n pure: true,\n asyncFn: true,\n fn: async function (url, sys) {\n let options = sys.__getSysVar('AJAX\u30AA\u30D7\u30B7\u30E7\u30F3');\n if (options === '') {\n options = { method: 'GET' };\n }\n const res = await fetch(url, options);\n const bin = await res.blob();\n return bin;\n },\n return_none: false\n },\n // @GET\u3068POST\n 'GET\u9001\u4FE1\u6642': {\n type: 'func',\n josi: [['\u306E'], ['\u307E\u3067', '\u3078', '\u306B']],\n pure: true,\n fn: function (callback, url, sys) {\n sys.__exec('AJAX\u9001\u4FE1\u6642', [callback, url, sys]);\n },\n return_none: true\n },\n 'POST\u9001\u4FE1\u6642': {\n type: 'func',\n josi: [['\u306E'], ['\u307E\u3067', '\u3078', '\u306B'], ['\u3092']],\n pure: true,\n fn: function (callback, url, params, sys) {\n const bodyData = sys.__exec('POST\u30C7\u30FC\u30BF\u751F\u6210', [params, sys]);\n const options = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n body: bodyData\n };\n fetch(url, options).then(res => {\n return res.text();\n }).then(text => {\n sys.__setSysVar('\u5BFE\u8C61', text);\n callback(text);\n }).catch(err => {\n sys.__getSysVar('AJAX:ONERROR')(err);\n });\n }\n },\n 'POST\u30D5\u30A9\u30FC\u30E0\u9001\u4FE1\u6642': {\n type: 'func',\n josi: [['\u306E'], ['\u307E\u3067', '\u3078', '\u306B'], ['\u3092']],\n pure: true,\n fn: function (callback, url, params, sys) {\n const fd = new FormData();\n for (const key in params) {\n fd.set(key, params[key]);\n }\n const options = {\n method: 'POST',\n body: fd\n };\n fetch(url, options).then(res => {\n return res.text();\n }).then(text => {\n sys.__setSysVar('\u5BFE\u8C61', text);\n callback(text);\n }).catch(err => {\n sys.__getSysVar('AJAX:ONERROR')(err);\n });\n }\n },\n 'POST\u30C7\u30FC\u30BF\u751F\u6210': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (params, sys) {\n const flist = [];\n for (const key in params) {\n const v = params[key];\n const kv = encodeURIComponent(key) + '=' + encodeURIComponent(v);\n flist.push(kv);\n }\n return flist.join('&');\n }\n },\n 'POST\u9001\u4FE1': {\n type: 'func',\n josi: [['\u307E\u3067', '\u3078', '\u306B'], ['\u3092']],\n pure: true,\n asyncFn: true,\n fn: function (url, params, sys) {\n return new Promise((resolve, reject) => {\n const bodyData = sys.__exec('POST\u30C7\u30FC\u30BF\u751F\u6210', [params, sys]);\n const options = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n body: bodyData\n };\n fetch(url, options).then(res => {\n return res.text();\n }).then(text => {\n resolve(text);\n }).catch(err => {\n reject(err.message);\n });\n });\n }\n },\n 'POST\u30D5\u30A9\u30FC\u30E0\u9001\u4FE1': {\n type: 'func',\n josi: [['\u307E\u3067', '\u3078', '\u306B'], ['\u3092']],\n pure: true,\n asyncFn: true,\n fn: function (url, params, sys) {\n return new Promise((resolve, reject) => {\n const fd = new FormData();\n for (const key in params) {\n fd.set(key, params[key]);\n }\n const options = {\n method: 'POST',\n body: fd\n };\n fetch(url, options).then(res => {\n return res.text();\n }).then(text => {\n resolve(text);\n }).catch(err => {\n reject(err.message);\n });\n });\n }\n },\n // @HTTP\u3068AJAX(\u4FDD\u8A3C)\n 'AJAX\u4FDD\u969C\u9001\u4FE1': {\n type: 'func',\n josi: [['\u307E\u3067', '\u3078', '\u306B']],\n pure: true,\n fn: function (url, sys) {\n let options = sys.__getSysVar('AJAX\u30AA\u30D7\u30B7\u30E7\u30F3');\n if (options === '') {\n options = { method: 'GET' };\n }\n return fetch(url, options);\n },\n return_none: false\n },\n 'HTTP\u4FDD\u969C\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089', '\u3092']],\n pure: true,\n fn: function (url, sys) {\n return sys.__exec('AJAX\u4FDD\u969C\u9001\u4FE1', [url, sys]);\n },\n return_none: false\n },\n 'POST\u4FDD\u969C\u9001\u4FE1': {\n type: 'func',\n josi: [['\u307E\u3067', '\u3078', '\u306B'], ['\u3092']],\n pure: true,\n fn: function (url, params, sys) {\n const bodyData = sys.__exec('POST\u30C7\u30FC\u30BF\u751F\u6210', [params, sys]);\n const options = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n body: bodyData\n };\n return fetch(url, options);\n },\n return_none: false\n },\n 'POST\u30D5\u30A9\u30FC\u30E0\u4FDD\u969C\u9001\u4FE1': {\n type: 'func',\n josi: [['\u307E\u3067', '\u3078', '\u306B'], ['\u3092']],\n pure: true,\n fn: function (url, params, sys) {\n const fd = new FormData();\n for (const key in params) {\n fd.set(key, params[key]);\n }\n const options = {\n method: 'POST',\n body: fd\n };\n return fetch(url, options);\n },\n return_none: false\n },\n 'AJAX\u5185\u5BB9\u53D6\u5F97': {\n type: 'func',\n josi: [['\u304B\u3089'], ['\u3067']],\n pure: true,\n fn: function (res, type, sys) {\n type = type.toString().toUpperCase();\n if (type === 'TEXT' || type === '\u30C6\u30AD\u30B9\u30C8') {\n return res.text();\n }\n else if (type === 'JSON') {\n return res.json();\n }\n else if (type === 'BLOB') {\n return res.blob();\n }\n else if (type === 'ARRAY' || type === '\u914D\u5217') {\n return res.arrayBuffer();\n }\n else if (type === 'BODY' || type === '\u672C\u4F53') {\n return res.body;\n }\n return res.body();\n },\n return_none: false\n },\n // @Blob\n 'BLOB\u4F5C\u6210': {\n type: 'func',\n josi: [['\u3092', '\u304B\u3089'], ['\u3067']],\n pure: true,\n fn: function (data, options) {\n if (!(data instanceof Array)) {\n data = [data];\n }\n return new Blob(data, options);\n }\n },\n // @HTTP\u3068AJAX(\u975E\u63A8\u5968)\n 'AJAX\u9010\u6B21\u9001\u4FE1': {\n type: 'func',\n josi: [['\u307E\u3067', '\u3078', '\u306B']],\n pure: true,\n fn: function (url, sys) {\n if (!sys.resolve) {\n throw new Error('\u300EAJAX\u9010\u6B21\u9001\u4FE1\u300F\u306F\u300E\u9010\u6B21\u5B9F\u884C\u300F\u69CB\u6587\u5185\u3067\u5229\u7528\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n sys.resolveCount++;\n const resolve = sys.resolve;\n const reject = sys.reject;\n let options = sys.__getSysVar('AJAX\u30AA\u30D7\u30B7\u30E7\u30F3');\n if (options === '') {\n options = { method: 'GET' };\n }\n fetch(url, options).then(res => {\n return res.text();\n }).then(text => {\n sys.__setSysVar('\u5BFE\u8C61', text);\n resolve();\n }).catch(err => {\n reject(err.message);\n });\n },\n return_none: true\n },\n 'HTTP\u9010\u6B21\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089', '\u3092']],\n pure: true,\n fn: function (url, sys) {\n if (!sys.resolve) {\n throw new Error('\u300EHTTP\u9010\u6B21\u53D6\u5F97\u300F\u306F\u300E\u9010\u6B21\u5B9F\u884C\u300F\u69CB\u6587\u5185\u3067\u5229\u7528\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n sys.__exec('AJAX\u9010\u6B21\u9001\u4FE1', [url, sys]);\n },\n return_none: true\n },\n 'POST\u9010\u6B21\u9001\u4FE1': {\n type: 'func',\n josi: [['\u307E\u3067', '\u3078', '\u306B'], ['\u3092']],\n pure: true,\n fn: function (url, params, sys) {\n if (!sys.resolve) {\n throw new Error('\u300EPOST\u9001\u4FE1\u300F\u306F\u300E\u9010\u6B21\u5B9F\u884C\u300F\u69CB\u6587\u5185\u3067\u5229\u7528\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n sys.resolveCount++;\n const resolve = sys.resolve;\n const reject = sys.reject;\n const bodyData = sys.__exec('POST\u30C7\u30FC\u30BF\u751F\u6210', [params, sys]);\n const options = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n body: bodyData\n };\n fetch(url, options).then(res => {\n return res.text();\n }).then(text => {\n sys.__setSysVar('\u5BFE\u8C61', text);\n resolve(text);\n }).catch(err => {\n reject(err.message);\n });\n },\n return_none: true\n },\n 'POST\u30D5\u30A9\u30FC\u30E0\u9010\u6B21\u9001\u4FE1': {\n type: 'func',\n josi: [['\u307E\u3067', '\u3078', '\u306B'], ['\u3092']],\n pure: true,\n fn: function (url, params, sys) {\n if (!sys.resolve) {\n throw new Error('\u300EPOST\u30D5\u30A9\u30FC\u30E0\u9010\u6B21\u9001\u4FE1\u300F\u306F\u300E\u9010\u6B21\u5B9F\u884C\u300F\u69CB\u6587\u5185\u3067\u5229\u7528\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002');\n }\n sys.resolveCount++;\n const resolve = sys.resolve;\n const reject = sys.reject;\n const fd = new FormData();\n for (const key in params) {\n fd.set(key, params[key]);\n }\n const options = {\n method: 'POST',\n body: fd\n };\n fetch(url, options).then(res => {\n return res.text();\n }).then(text => {\n sys.__setSysVar('\u5BFE\u8C61', text);\n resolve(text);\n }).catch(err => {\n reject(err.message);\n });\n },\n return_none: true\n }\n};\n", "// @ts-nocheck\nexport default {\n // @DOM\u64CD\u4F5C\n 'DOCUMENT': { type: 'const', value: '' }, // @DOCUMENT\n 'WINDOW': { type: 'const', value: '' }, // @WINDOW\n 'NAVIGATOR': { type: 'const', value: '' }, // @NAVIGATOR\n 'DOM\u8981\u7D20ID\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (id) {\n return document.getElementById(id);\n }\n },\n 'DOM\u8981\u7D20\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (q) {\n if (typeof q === 'string') {\n return document.querySelector(q);\n }\n return q;\n }\n },\n 'DOM\u8981\u7D20\u5168\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (q) {\n return Array.from(document.querySelectorAll(q));\n }\n },\n '\u30BF\u30B0\u4E00\u89A7\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (tag) {\n return Array.from(document.getElementsByTagName(tag));\n }\n },\n 'DOM\u5B50\u8981\u7D20\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E'], ['\u3092']],\n pure: true,\n fn: function (pa, q, sys) {\n pa = sys.__query(pa, 'DOM\u5B50\u8981\u7D20\u53D6\u5F97', true);\n if (!pa.querySelector) {\n throw new Error('\u300EDOM\u5B50\u8981\u7D20\u53D6\u5F97\u300F\u3067\u89AA\u8981\u7D20\u304CDOM\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002');\n }\n return pa.querySelector(q);\n }\n },\n 'DOM\u5B50\u8981\u7D20\u5168\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E'], ['\u3092']],\n pure: true,\n fn: function (pa, q, sys) {\n pa = sys.__query(pa, 'DOM\u5B50\u8981\u7D20\u5168\u53D6\u5F97', true);\n if (!pa.querySelectorAll) {\n throw new Error('\u300EDOM\u5B50\u8981\u7D20\u5168\u53D6\u5F97\u300F\u3067\u89AA\u8981\u7D20\u304CDOM\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002');\n }\n return Array.from(pa.querySelectorAll(q));\n }\n },\n 'DOM\u30A4\u30D9\u30F3\u30C8\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306E'], ['\u306B', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (dom, event, funcStr, sys) {\n dom = sys.__query(dom, 'DOM\u30A4\u30D9\u30F3\u30C8\u8A2D\u5B9A', false);\n dom[event] = sys.__findVar(funcStr, null);\n },\n return_none: true\n },\n 'DOM\u30C6\u30AD\u30B9\u30C8\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u306E', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (dom, text, sys) {\n dom = sys.__query(dom, 'DOM\u30C6\u30AD\u30B9\u30C8\u8A2D\u5B9A', false);\n const tag = dom.tagName.toUpperCase();\n if (tag === 'INPUT' || tag === 'TEXTAREA') {\n dom.value = text;\n }\n else if (tag === 'SELECT') {\n for (let i = 0; i < dom.options.length; i++) {\n const v = dom.options[i].value;\n if (String(v) === text) {\n dom.selectedIndex = i;\n break;\n }\n }\n }\n else {\n dom.innerHTML = text;\n }\n },\n return_none: true\n },\n 'DOM\u30C6\u30AD\u30B9\u30C8\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (dom, sys) {\n dom = sys.__query(dom, 'DOM\u30C6\u30AD\u30B9\u30C8\u53D6\u5F97', true);\n if (!dom) {\n return '';\n }\n const tag = dom.tagName.toUpperCase();\n // input or textarea\n if (tag === 'INPUT' || tag === 'TEXTAREA') {\n return dom.value;\n }\n // select\n if (tag === 'SELECT') {\n const idx = dom.selectedIndex;\n if (idx < 0) {\n return null;\n }\n return dom.options[idx].value;\n }\n return dom.innerHTML;\n }\n },\n 'DOM_HTML\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u306E', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (dom, text, sys) {\n dom = sys.__query(dom, 'DOM_HTML\u8A2D\u5B9A', false);\n dom.innerHTML = text;\n },\n return_none: true\n },\n 'DOM_HTML\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (dom, sys) {\n dom = sys.__query(dom, 'DOM_HTML\u53D6\u5F97', true);\n if (!dom) {\n return '';\n }\n return dom.innerHTML;\n }\n },\n '\u30C6\u30AD\u30B9\u30C8\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u306E', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (dom, v, sys) {\n return sys.__exec('DOM\u30C6\u30AD\u30B9\u30C8\u8A2D\u5B9A', [dom, v, sys]);\n }\n },\n '\u30C6\u30AD\u30B9\u30C8\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (dom, sys) {\n return sys.__exec('DOM\u30C6\u30AD\u30B9\u30C8\u53D6\u5F97', [dom, sys]);\n }\n },\n 'HTML\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u306E', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (dom, v, sys) {\n return sys.__exec('DOM_HTML\u8A2D\u5B9A', [dom, v, sys]);\n }\n },\n 'HTML\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (dom, sys) {\n return sys.__exec('DOM_HTML\u53D6\u5F97', [dom, sys]);\n }\n },\n 'DOM\u5C5E\u6027\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306E'], ['\u306B', '\u3078'], ['\u3092']],\n uses: ['DOM\u548C\u5C5E\u6027'],\n pure: true,\n fn: function (dom, s, v, sys) {\n dom = sys.__query(dom, 'DOM\u5C5E\u6027\u8A2D\u5B9A', false);\n const wa = sys.__getSysVar('DOM\u548C\u5C5E\u6027');\n if (wa[s]) {\n s = wa[s];\n }\n // dom\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u78BA\u8A8D\u3057\u3066\u5B58\u5728\u3059\u308C\u3070\u305D\u306E\u5024\u3092\u8A2D\u5B9A\u3059\u308B #1392\n if (s in dom) {\n dom[s] = v;\n }\n else {\n dom.setAttribute(s, v);\n }\n },\n return_none: true\n },\n 'DOM\u5C5E\u6027\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089'], ['\u3092']],\n uses: ['DOM\u548C\u5C5E\u6027'],\n pure: true,\n fn: function (dom, s, sys) {\n dom = sys.__query(dom, 'DOM\u5C5E\u6027\u53D6\u5F97', true);\n if (!dom) {\n return '';\n }\n const wa = sys.__getSysVar('DOM\u548C\u5C5E\u6027');\n if (wa[s]) {\n s = wa[s];\n }\n // dom\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u78BA\u8A8D\u3057\u3066\u5B58\u5728\u3059\u308C\u3070\u305D\u306E\u5024\u3092\u53D6\u5F97\u3059\u308B #1392\n if (s in dom) {\n return dom[s];\n }\n return dom.getAttribute(s);\n }\n },\n 'DOM\u548C\u5C5E\u6027': {\n type: 'const',\n value: {\n '\u5E45': 'width',\n '\u9AD8\u3055': 'height',\n '\u9AD8': 'height',\n '\u30BF\u30A4\u30D7': 'type',\n '\u30C7\u30FC\u30BF': 'data',\n '\u540D\u524D': 'name',\n 'ID': 'id',\n '\u8AAD\u53D6\u5C02\u7528': 'readOnly',\n '\u8AAD\u307F\u53D6\u308A\u5C02\u7528': 'readOnly',\n '\u7121\u52B9\u5316': 'disabled'\n }\n },\n 'DOM\u548C\u30B9\u30BF\u30A4\u30EB': {\n type: 'const',\n value: {\n '\u5E45': 'width',\n '\u9AD8\u3055': 'height',\n '\u9AD8': 'height',\n '\u80CC\u666F\u8272': 'background-color',\n '\u8272': 'color',\n '\u30DE\u30FC\u30B8\u30F3': 'margin',\n '\u4F59\u767D': 'padding',\n '\u6587\u5B57\u30B5\u30A4\u30BA': 'font-size',\n '\u884C\u63C3\u3048': 'text-align',\n '\u5DE6': 'left',\n '\u53F3': 'right',\n '\u4E2D\u592E': 'center',\n '\u30DC\u30FC\u30C0\u30FC': 'border',\n '\u30DC\u30C3\u30AF\u30B9\u8868\u793A': 'display',\n '\u306A\u3057': 'none',\n '\u30D6\u30ED\u30C3\u30AF': 'block',\n '\u8868\u793A\u4F4D\u7F6E': 'float',\n '\u91CD\u306A\u308A': 'z-index',\n '\u8AAD\u53D6\u5C02\u7528': 'readOnly',\n '\u8AAD\u307F\u53D6\u308A\u5C02\u7528': 'readOnly',\n 'readonly': 'readOnly'\n }\n },\n 'DOM\u30B9\u30BF\u30A4\u30EB\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306E'], ['\u306B', '\u3078'], ['\u3092']],\n uses: ['DOM\u548C\u30B9\u30BF\u30A4\u30EB'],\n pure: true,\n fn: function (dom, s, v, sys) {\n dom = sys.__query(dom, 'DOM\u30B9\u30BF\u30A4\u30EB\u8A2D\u5B9A', false);\n const wa = sys.__getSysVar('DOM\u548C\u30B9\u30BF\u30A4\u30EB');\n if (wa[s] !== undefined) {\n s = wa[s];\n }\n if (wa[v] !== undefined) {\n v = wa[v];\n }\n dom.style[s] = v;\n },\n return_none: true\n },\n 'DOM\u30B9\u30BF\u30A4\u30EB\u4E00\u62EC\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u3078'], ['\u3092']],\n uses: ['DOM\u548C\u30B9\u30BF\u30A4\u30EB'],\n pure: true,\n fn: function (dom, values, sys) {\n dom = sys.__query(dom, 'DOM\u30B9\u30BF\u30A4\u30EB\u4E00\u62EC\u8A2D\u5B9A', false);\n if (dom instanceof window.HTMLElement) {\n dom = [dom];\n }\n const wa = sys.__getSysVar('DOM\u548C\u30B9\u30BF\u30A4\u30EB');\n // \u5217\u6319\u3057\u305FDOM\u4E00\u89A7\u3092\u5168\u3066\u30B9\u30BF\u30A4\u30EB\u5909\u66F4\u3059\u308B\n for (let i = 0; i < dom.length; i++) {\n const e = dom[i];\n for (const key in values) {\n let s = key;\n let v = values[key];\n if (wa[s] !== undefined) {\n s = wa[s];\n }\n if (wa[v] !== undefined) {\n v = wa[v];\n }\n e.style[s] = v;\n }\n }\n },\n return_none: true\n },\n 'DOM\u30B9\u30BF\u30A4\u30EB\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E'], ['\u3092']],\n uses: ['DOM\u548C\u30B9\u30BF\u30A4\u30EB'],\n pure: true,\n fn: function (dom, style, sys) {\n dom = sys.__query(dom, 'DOM\u30B9\u30BF\u30A4\u30EB\u53D6\u5F97', true);\n if (!dom) {\n return '';\n }\n const wa = sys.__getSysVar('DOM\u548C\u30B9\u30BF\u30A4\u30EB');\n if (wa[style]) {\n style = wa[style];\n }\n return dom.style[style];\n }\n },\n 'DOM\u30B9\u30BF\u30A4\u30EB\u4E00\u62EC\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E'], ['\u3092']],\n uses: ['DOM\u548C\u30B9\u30BF\u30A4\u30EB'],\n pure: true,\n fn: function (dom, style, sys) {\n const res = {};\n dom = sys.__query(dom, 'DOM\u30B9\u30BF\u30A4\u30EB\u4E00\u62EC\u53D6\u5F97', true);\n if (!dom) {\n return res;\n }\n if (style instanceof String) {\n style = [style];\n }\n const wa = sys.__getSysVar('DOM\u548C\u30B9\u30BF\u30A4\u30EB');\n if (style instanceof Array) {\n style.forEach((key) => {\n if (wa[key]) {\n key = wa[key];\n }\n res[key] = dom.style[key];\n });\n return res;\n }\n if (style instanceof Object) {\n for (let key in style) {\n if (wa[key]) {\n key = wa[key];\n }\n res[key] = dom.style[key];\n }\n return res;\n }\n return dom.style[style];\n }\n },\n 'DOM\u8981\u7D20\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (tag) {\n return document.createElement(tag);\n }\n },\n 'DOM\u5B50\u8981\u7D20\u8FFD\u52A0': {\n type: 'func',\n josi: [['\u306B', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (pa, el, sys) {\n pa = sys.__query(pa, 'DOM\u5B50\u8981\u7D20\u8FFD\u52A0', false);\n el = sys.__query(el, 'DOM\u5B50\u8981\u7D20\u8FFD\u52A0', false);\n pa.appendChild(el);\n }\n },\n 'DOM\u5B50\u8981\u7D20\u524A\u9664': {\n type: 'func',\n josi: [['\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (pa, el, sys) {\n pa = sys.__query(pa, 'DOM\u5B50\u8981\u7D20\u524A\u9664', false);\n el = sys.__query(el, 'DOM\u5B50\u8981\u7D20\u524A\u9664', false);\n pa.removeChild(el);\n }\n },\n '\u6CE8\u76EE': {\n type: 'func',\n josi: [['\u3092', '\u3078', '\u306B']],\n pure: true,\n fn: function (dom, sys) {\n dom = sys.__query(dom, '\u6CE8\u76EE', true);\n if (dom && dom.focus) {\n dom.focus();\n }\n },\n return_none: true\n }\n};\n", "// @ts-nocheck\nexport default {\n // @DOM\u64CD\u4F5C\u3068\u30A4\u30D9\u30F3\u30C8\n '\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8': { type: 'const', value: '' }, // @\u305F\u3044\u3057\u3087\u3046\u3044\u3079\u3093\u3068\n 'DOM\u30A4\u30D9\u30F3\u30C8\u8FFD\u52A0': {\n type: 'func',\n josi: [['\u306E'], ['\u306B', '\u3078'], ['\u3092']],\n pure: true,\n fn: function (dom, event, funcStr, sys) {\n sys.__addEvent(dom, event, funcStr, null);\n },\n return_none: true\n },\n 'DOM\u30A4\u30D9\u30F3\u30C8\u524A\u9664': {\n type: 'func',\n josi: [['\u306E'], ['\u304B\u3089'], ['\u3092']],\n pure: true,\n fn: function (dom, event, funcStr, sys) {\n sys.__removeEvent(dom, event, funcStr);\n },\n return_none: true\n },\n 'DOM\u30A4\u30D9\u30F3\u30C8\u767A\u706B\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u306E'], ['\u304C']],\n pure: true,\n fn: function (callback, dom, event, sys) {\n sys.__addEvent(dom, event, callback, null);\n },\n return_none: true\n },\n 'DOM\u30A4\u30D9\u30F3\u30C8\u51E6\u7406\u505C\u6B62': {\n type: 'func',\n josi: [['\u3092', '\u306E']],\n pure: true,\n fn: function (event, sys) {\n event.preventDefault();\n },\n return_none: true\n },\n '\u30AF\u30EA\u30C3\u30AF\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'click', func, null);\n },\n return_none: true\n },\n '\u8AAD\u8FBC\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'load', func, null);\n },\n return_none: true\n },\n '\u30D5\u30A9\u30FC\u30E0\u9001\u4FE1\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'submit', func, null);\n },\n return_none: true\n },\n '\u62BC\u30AD\u30FC': { type: 'const', value: '' }, // @\u304A\u3055\u308C\u305F\u304D\u30FC\n '\u30AD\u30FC\u62BC\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'keydown', func, sys.__keyHandler);\n },\n return_none: true\n },\n '\u30AD\u30FC\u96E2\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'keyup', func, sys.__keyHandler);\n },\n return_none: true\n },\n '\u30AD\u30FC\u30BF\u30A4\u30D4\u30F3\u30B0\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'keypress', func, sys.__keyHandler);\n },\n return_none: true\n },\n '\u30DE\u30A6\u30B9X': { type: 'const', value: 0 }, // @\u307E\u3046\u3059X\n '\u30DE\u30A6\u30B9Y': { type: 'const', value: 0 }, // @\u307E\u3046\u3059Y\n '\u30DE\u30A6\u30B9\u62BC\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'mousedown', func, sys.__mouseHandler);\n },\n return_none: true\n },\n '\u30DE\u30A6\u30B9\u79FB\u52D5\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'mousemove', func, sys.__mouseHandler);\n },\n return_none: true\n },\n '\u30DE\u30A6\u30B9\u96E2\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'mouseup', func, sys.__mouseHandler);\n },\n return_none: true\n },\n '\u30BF\u30C3\u30C1X': { type: 'const', value: 0 }, // @\u305F\u3063\u3061X\n '\u30BF\u30C3\u30C1Y': { type: 'const', value: 0 }, // @\u305F\u3063\u3061Y\n '\u30BF\u30C3\u30C1\u914D\u5217': { type: 'const', value: [] }, // @\u305F\u3063\u3061\u306F\u3044\u308C\u3064\n '\u30BF\u30C3\u30C1\u30A4\u30D9\u30F3\u30C8\u8A08\u7B97': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (e, sys) {\n return sys.__touchHandler(e, sys);\n }\n },\n '\u30BF\u30C3\u30C1\u958B\u59CB\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'touchstart', func, sys.__touchHandler);\n },\n return_none: true\n },\n '\u30BF\u30C3\u30C1\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'touchmove', func, sys.__touchHandler);\n },\n return_none: true\n },\n '\u30BF\u30C3\u30C1\u7D42\u4E86\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'touchend', func, sys.__touchHandler);\n },\n return_none: true\n },\n '\u30BF\u30C3\u30C1\u30AD\u30E3\u30F3\u30BB\u30EB\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3092', '\u306E']],\n pure: true,\n fn: function (func, dom, sys) {\n sys.__addEvent(dom, 'touchcancel', func, sys.__touchHandler);\n },\n return_none: true\n },\n '\u753B\u9762\u66F4\u65B0\u6642\u5B9F\u884C': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (func, sys) {\n func = sys.__findVar(func, null); // \u6587\u5B57\u5217\u6307\u5B9A\u306A\u3089\u95A2\u6570\u306B\u5909\u63DB\n if (!func) {\n throw new Error('\u300E\u753B\u9762\u66F4\u65B0\u6642\u5B9F\u884C\u300F\u3067\u95A2\u6570\u306E\u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002');\n }\n sys.__requestAnimationFrameLastId = window.requestAnimationFrame(func);\n return sys.__requestAnimationFrameLastId;\n }\n },\n '\u753B\u9762\u66F4\u65B0\u51E6\u7406\u53D6\u6D88': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (id, sys) {\n window.cancelAnimationFrame(id);\n if (sys.__requestAnimationFrameLastId === id) {\n sys.__requestAnimationFrameLastId = 0;\n }\n },\n return_none: true\n }\n};\n", "export default {\n // @DOM\u90E8\u54C1\u64CD\u4F5C\n 'DOM\u89AA\u8981\u7D20': { type: 'const', value: '' }, // @DOM\u304A\u3084\u3088\u3046\u305D\n 'DOM\u90E8\u54C1\u500B\u6570': { type: 'const', value: 0 }, // @DOM\u305B\u3044\u305B\u3044\u3053\u3059\u3046\n 'DOM\u90E8\u54C1\u30AA\u30D7\u30B7\u30E7\u30F3': { type: 'const', value: { '\u81EA\u52D5\u6539\u884C': false, '\u30C6\u30FC\u30D6\u30EB\u30D8\u30C3\u30C0': true, '\u30C6\u30FC\u30D6\u30EB\u80CC\u666F\u8272': ['#AA4040', '#ffffff', '#fff0f0'] } }, // @DOM\u3076\u3072\u3093\u304A\u3077\u3057\u3087\u3093\n 'DOM\u89AA\u8981\u7D20\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (el, sys) {\n if (typeof el === 'string') {\n el = document.querySelector(el) || document.getElementById(el);\n }\n sys.__setSysVar('DOM\u89AA\u8981\u7D20', el);\n return el;\n }\n },\n 'DOM\u89AA\u90E8\u54C1\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (el, sys) {\n return sys.__exec('DOM\u89AA\u8981\u7D20\u8A2D\u5B9A', [el, sys]);\n }\n },\n 'DOM\u30B9\u30AD\u30F3': { type: 'const', value: '' }, // @DOM\u3059\u304D\u3093\n 'DOM\u30B9\u30AD\u30F3\u8F9E\u66F8': { type: 'const', value: {} }, // @DOM\u3059\u304D\u3093\u3058\u3057\u3087\n 'DOM\u30B9\u30AD\u30F3\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u3092', '\u306B', '\u306E']],\n pure: true,\n fn: function (skin, sys) {\n sys.__setSysVar('DOM\u30B9\u30AD\u30F3', skin);\n },\n return_none: true\n },\n 'DOM\u90E8\u54C1\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (elm, sys) {\n const parent = sys.__getSysVar('DOM\u89AA\u8981\u7D20');\n const btn = (typeof (elm) === 'string') ? document.createElement(elm) : elm;\n btn.id = 'nadesi-dom-' + sys.__getSysVar('DOM\u90E8\u54C1\u500B\u6570');\n // \u30B9\u30AD\u30F3\u9069\u7528\n const func = sys.__getSysVar('DOM\u30B9\u30AD\u30F3\u8F9E\u66F8')[sys.__getSysVar('DOM\u30B9\u30AD\u30F3')];\n if (typeof (func) === 'function') {\n func(elm, btn, sys);\n }\n // DOM\u8FFD\u52A0\n parent.appendChild(btn);\n sys.__setSysVar('DOM\u90E8\u54C1\u500B\u6570', sys.__getSysVar('DOM\u90E8\u54C1\u500B\u6570', 0) + 1);\n // \u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u9069\u7528\n const opt = sys.__getSysVar('DOM\u90E8\u54C1\u30AA\u30D7\u30B7\u30E7\u30F3');\n if (opt['\u81EA\u52D5\u6539\u884C']) {\n parent.appendChild(document.createElement('br'));\n }\n return btn;\n }\n },\n '\u30DC\u30BF\u30F3\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (label, sys) {\n const btn = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['button', sys]);\n btn.innerHTML = label;\n return btn;\n }\n },\n '\u30A8\u30C7\u30A3\u30BF\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (text, sys) {\n const inp = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['input', sys]);\n inp.type = 'text';\n inp.value = text;\n return inp;\n }\n },\n '\u30C6\u30AD\u30B9\u30C8\u30A8\u30EA\u30A2\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (text, sys) {\n const te = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['textarea', sys]);\n te.value = text;\n return te;\n }\n },\n '\u30E9\u30D9\u30EB\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (text, sys) {\n const lbl = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['span', sys]);\n lbl.innerHTML = text;\n return lbl;\n }\n },\n '\u30AD\u30E3\u30F3\u30D0\u30B9\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (size, sys) {\n const cv = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['canvas', sys]);\n cv.width = size[0];\n cv.height = size[1];\n cv.style.width = size[0];\n cv.style.height = size[1];\n // \u63CF\u753B\u4E2D\u30AD\u30E3\u30F3\u30D0\u30B9\u3092\u79FB\u52D5\u3059\u308B\n sys.__exec('\u63CF\u753B\u958B\u59CB', [cv, sys]);\n return cv;\n }\n },\n '\u753B\u50CF\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (url, sys) {\n const img = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['img', sys]);\n img.src = url;\n return img;\n }\n },\n '\u6539\u884C\u4F5C\u6210': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const br = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['br', sys]);\n return br;\n }\n },\n '\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (text, sys) {\n // \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u306F\u3001<span><input><label></span>\u3067\u6210\u308A\u7ACB\u3064\u3088\u3046\u306B\u69CB\u7BC9\n const span = document.createElement('span');\n const inp = document.createElement('input');\n inp.type = 'checkbox';\n inp.id = 'nadesi-dom-' + sys.__getSysVar('DOM\u90E8\u54C1\u500B\u6570', 0);\n sys.__setSysVar('DOM\u90E8\u54C1\u500B\u6570', sys.__getSysVar('DOM\u90E8\u54C1\u500B\u6570', 0) + 1);\n const label = document.createElement('label');\n label.innerHTML = text;\n label.htmlFor = inp.id;\n span.appendChild(inp);\n span.appendChild(label);\n // \u89AA\u90E8\u54C1\u306B\u8FFD\u52A0\n sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', [span, sys]);\n return inp;\n }\n },\n '\u30BB\u30EC\u30AF\u30C8\u30DC\u30C3\u30AF\u30B9\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (options, sys) {\n const dom = document.createElement('select');\n for (let i = 0; i < options.length; i++) {\n const item = document.createElement('option');\n item.value = options[i];\n item.appendChild(document.createTextNode(options[i]));\n dom.appendChild(item);\n }\n // \u89AA\u90E8\u54C1\u306B\u8FFD\u52A0\n sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', [dom, sys]);\n return dom;\n }\n },\n '\u30BB\u30EC\u30AF\u30C8\u30DC\u30C3\u30AF\u30B9\u30A2\u30A4\u30C6\u30E0\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u3092'], ['\u3078', '\u306B']],\n pure: true,\n fn: function (options, dom, sys) {\n if (typeof dom === 'string') {\n dom = document.querySelector(dom);\n }\n // \u65E2\u5B58\u306Eoptions\u3092\u30AF\u30EA\u30A2\n dom.options.length = 0;\n // \u30A2\u30A4\u30C6\u30E0\u3092\u8FFD\u52A0\n for (let i = 0; i < options.length; i++) {\n const item = document.createElement('option');\n item.value = options[i];\n item.appendChild(document.createTextNode(options[i]));\n dom.appendChild(item);\n }\n },\n return_none: true\n },\n '\u8272\u9078\u629E\u30DC\u30C3\u30AF\u30B9\u4F5C\u6210': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const inp = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['input', sys]);\n inp.type = 'color';\n return inp;\n }\n },\n '\u65E5\u4ED8\u9078\u629E\u30DC\u30C3\u30AF\u30B9\u4F5C\u6210': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const inp = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['input', sys]);\n inp.type = 'date';\n return inp;\n }\n },\n '\u30D1\u30B9\u30EF\u30FC\u30C9\u5165\u529B\u30A8\u30C7\u30A3\u30BF\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E', '\u3067']],\n pure: true,\n fn: function (s, sys) {\n const inp = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['input', sys]);\n inp.type = 'password';\n inp.value = s;\n return inp;\n }\n },\n '\u5024\u6307\u5B9A\u30D0\u30FC\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E', '\u3067']],\n pure: true,\n fn: function (range, sys) {\n if (!(range instanceof Array) || range.length < 2) {\n range = [0, 100, 50];\n }\n if (range.length <= 2) { // 3\u3064\u76EE\u3092\u7701\u7565\u3057\u305F\u3068\u304D\n range.push(Math.floor((range[1] - range[0]) / 2));\n }\n const inp = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['input', sys]);\n inp.type = 'range';\n inp.min = range[0];\n inp.max = range[1];\n inp.value = range[2];\n return inp;\n }\n },\n '\u9001\u4FE1\u30DC\u30BF\u30F3\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (label, sys) {\n const inp = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['input', sys]);\n inp.type = 'submit';\n inp.value = label;\n return inp;\n }\n },\n '\u30D5\u30A9\u30FC\u30E0\u4F5C\u6210': {\n type: 'func',\n josi: [['\u3067', '\u306E'], ['\u3092']],\n pure: true,\n fn: function (obj, s, sys) {\n const frm = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['form', sys]);\n // \u53EF\u80FD\u306A\u3089form\u306Bobj\u306E\u5024\u3092\u79FB\u3057\u66FF\u3048\u308B\n if (obj instanceof Object) {\n for (const key in obj) {\n if (frm[key]) {\n frm[key] = obj[key];\n }\n }\n }\n // \u5165\u529B\u9805\u76EE\u3092table\u3067\u4F5C\u308B\n const rows = s.split('\\n');\n const table = document.createElement('table');\n for (const rowIndex in rows) {\n let row = '' + (rows[rowIndex]);\n if (row === '') {\n continue;\n }\n if (row.indexOf('=') < 0) {\n row += '=';\n }\n const cols = row.split('=');\n const key = cols[0];\n const val = cols[1];\n // key\n const th = document.createElement('th');\n th.innerHTML = sys.__tohtmlQ(key);\n // val\n const td = document.createElement('td');\n if (val.substring(0, 2) === '?(') {\n // select box\n const it = val.substring(2) + ')';\n const ita = it.split(')');\n const its = ita[0];\n const def = ita[1];\n const items = its.split('|');\n const select = document.createElement('select');\n select.name = key;\n for (const it of items) {\n const option = document.createElement('option');\n option.value = it;\n option.text = it;\n select.appendChild(option);\n }\n const idx = items.indexOf(def);\n if (idx >= 0) {\n select.selectedIndex = idx;\n }\n td.appendChild(select);\n }\n else {\n // input element\n const inp = document.createElement('input');\n td.appendChild(inp);\n inp.id = 'nako3form_' + key;\n if (val === '?\u9001\u4FE1' || val === '?submit') {\n inp.type = 'submit';\n inp.value = val.substring(1);\n if (key !== '') {\n inp.name = key;\n }\n }\n else if (val.substring(0, 2) === '?c') {\n inp.type = 'color';\n inp.value = val.substring(2);\n inp.name = key;\n }\n else {\n inp.type = 'text';\n inp.value = val;\n inp.name = key;\n }\n }\n const tr = document.createElement('tr');\n tr.appendChild(th);\n tr.appendChild(td);\n table.appendChild(tr);\n }\n frm.appendChild(table);\n return frm;\n }\n },\n '\u30D5\u30A9\u30FC\u30E0\u5165\u529B\u4E00\u62EC\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (dom) {\n if (typeof (dom) === 'string') {\n dom = document.querySelector(dom);\n }\n const res = {};\n const getChildren = (pa) => {\n if (!pa || !pa.childNodes) {\n return;\n }\n for (let i = 0; i < pa.childNodes.length; i++) {\n const el = pa.childNodes[i];\n if (!el.tagName) {\n return;\n }\n const tag = el.tagName.toLowerCase();\n if (tag === 'input') {\n if (el.type === 'checkbox') {\n res[el.name] = el.checked ? el.value : '';\n continue;\n }\n res[el.name] = el.value;\n continue;\n }\n else if (tag === 'textarea') {\n res[el.name] = el.value;\n }\n else if (tag === 'select') {\n if (el.selectedIndex >= 0) {\n res[el.name] = el.options[el.selectedIndex].value;\n }\n else {\n res[el.name] = '';\n }\n }\n getChildren(el);\n }\n };\n getChildren(dom);\n return res;\n }\n },\n '\u30C6\u30FC\u30D6\u30EB\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (aa, sys) {\n if (typeof (aa) === 'string') {\n const rr = [];\n const rows = aa.split('\\n');\n for (const row of rows) {\n rr.push(row.split(','));\n }\n aa = rr;\n }\n const domOption = sys.__getSysVar('DOM\u90E8\u54C1\u30AA\u30D7\u30B7\u30E7\u30F3');\n const bgColor = JSON.parse(JSON.stringify(domOption['\u30C6\u30FC\u30D6\u30EB\u80CC\u666F\u8272'])); // \u8907\u88FD\u3057\u3066\u4F7F\u3046\n const hasHeader = domOption['\u30C6\u30FC\u30D6\u30EB\u30D8\u30C3\u30C0'];\n for (let i = 0; i < 3; i++) {\n bgColor.push('');\n }\n const bgHead = bgColor.shift();\n const table = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['table', sys]);\n for (let i = 0; i < aa.length; i++) {\n const rowNo = i;\n const row = aa[rowNo];\n const tr = document.createElement('tr');\n for (let col of row) {\n col = '' + col;\n const td = document.createElement((rowNo === 0 && hasHeader) ? 'th' : 'td');\n td.innerHTML = sys.__tohtml(col);\n // \u8272\u6307\u5B9A\n if (bgHead !== '') {\n const no = hasHeader ? rowNo : rowNo + 1;\n td.style.backgroundColor = (no === 0) ? bgHead : bgColor[no % 2];\n td.style.color = (no === 0) ? 'white' : 'black';\n }\n if (col.match(/^(\\+|-)?\\d+(\\.\\d+)?$/)) { // number?\n td.style.textAlign = 'right';\n }\n tr.appendChild(td);\n }\n table.appendChild(tr);\n }\n return table;\n }\n },\n '\u30D8\u30C3\u30C0\u7121\u30C6\u30FC\u30D6\u30EB\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (aa, sys) {\n const domOption = sys.__getSysVar('DOM\u90E8\u54C1\u30AA\u30D7\u30B7\u30E7\u30F3');\n domOption['\u30C6\u30FC\u30D6\u30EB\u30D8\u30C3\u30C0'] = false;\n return sys.__exec('\u30C6\u30FC\u30D6\u30EB\u4F5C\u6210', [aa, sys]);\n }\n },\n '\u30C6\u30FC\u30D6\u30EB\u30BB\u30EB\u5909\u66F4': {\n type: 'func',\n josi: [['\u306E'], ['\u3092'], ['\u306B', '\u3078']],\n pure: true,\n fn: function (t, cell, v, sys) {\n if (typeof (t) === 'string') {\n t = document.querySelector(t);\n }\n if (typeof (cell) === 'string') {\n cell = cell.split(',');\n }\n if (cell.length !== 2) {\n throw new Error('\u300E\u30C6\u30FC\u30D6\u30EB\u30BB\u30EB\u5909\u66F4\u300F\u306E\u5F15\u6570\u300C\u3092\u300D\u306F[\u884C,\u5217]\u306E\u5F62\u5F0F\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002');\n }\n const row = cell[0];\n const col = cell[1];\n // table\u306Edom\u306E\u4E0B\u306B\u3042\u308Btr\u3092\u5F97\u308B\n const cn = t.childNodes;\n console.log(\"@@@v1:\", cn);\n const domTR = cn[row] ? cn[row] : null;\n if (!domTR) {\n return;\n }\n const domCell = domTR[col];\n if (domCell) {\n domCell.innerHTML = v;\n }\n },\n return_none: true\n },\n '\u30DE\u30FC\u30E1\u30A4\u30C9\u4F5C\u6210': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n asyncFn: true,\n fn: async function (src, sys) {\n console.log('aaa');\n const div = sys.__exec('DOM\u90E8\u54C1\u4F5C\u6210', ['div', sys]);\n div.classList.add('mermaid');\n div.innerHTML = src;\n // \u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u8AAD\u307F\u8FBC\u3080\n if (typeof sys.__v0.WINDOW.mermaid === 'undefined') {\n console.log('try to load mermaid');\n await sys.__loadScript('https://cdn.jsdelivr.net/npm/mermaid@10.5.0/dist/mermaid.min.js');\n console.log('loaded mermaid');\n }\n await sys.__v0.WINDOW.mermaid.run();\n return div;\n }\n }\n};\n", "// @ts-nocheck\nexport default {\n // @HTML\u64CD\u4F5C\n 'HTML\u5909\u63DB': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (text) {\n return String(text)\n .replace(/&/g, '&')\n .replace(/>/g, '>')\n .replace(/</g, '<');\n }\n },\n // @\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\n '\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n asyncFn: true,\n fn: async function (text) {\n // Clipboard API\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u308B\u304B\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n return;\n }\n // Clipboard API\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u306A\u3044\u5834\u5408\n const tmp = document.createElement('div');\n const pre = document.createElement('pre');\n pre.style.webkitUserSelect = 'auto';\n pre.style.userSelect = 'auto';\n tmp.appendChild(pre).textContent = text;\n // \u753B\u9762\u5916\u3078\u8868\u793A\u3059\u308B\n tmp.style.position = 'fixed';\n tmp.right = '200%';\n document.body.appendChild(tmp);\n document.getSelection().selectAllChildren(tmp);\n document.execCommand('copy');\n document.body.removeChild(tmp);\n },\n return_none: true\n },\n '\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u53D6\u5F97\u6642': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (f, sys) {\n // Clipboard API\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u308B\u304B\n if (navigator.clipboard) {\n if (typeof (f) === 'string') {\n f = sys.__findFunc(f, '\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u53D6\u5F97\u6642');\n }\n const pm = navigator.clipboard.readText();\n pm.then(text => {\n sys.__setSysVar('\u5BFE\u8C61', text);\n f(sys);\n });\n }\n else {\n throw new Error('Clipbard API\u304C\u5229\u7528\u3067\u304D\u307E\u305B\u3093\u3002');\n }\n }\n },\n '\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u53D6\u5F97': {\n type: 'func',\n josi: [],\n pure: true,\n asyncFn: true,\n fn: async function (sys) {\n // Clipboard API\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u308B\u304B\n if (navigator.clipboard) {\n const result = await navigator.clipboard.readText();\n return result;\n }\n else {\n throw new Error('Clipbard API\u304C\u5229\u7528\u3067\u304D\u307E\u305B\u3093\u3002');\n }\n }\n }\n};\n", "// @ts-nocheck\nexport default {\n // @\u30ED\u30FC\u30AB\u30EB\u30B9\u30C8\u30EC\u30FC\u30B8\n '\u4FDD\u5B58': {\n type: 'func',\n josi: [['\u3092'], ['\u306B', '\u3078']],\n pure: true,\n fn: function (v, key, sys) {\n sys.__exec('\u30ED\u30FC\u30AB\u30EB\u30B9\u30C8\u30EC\u30FC\u30B8\u4FDD\u5B58', [v, key, sys]);\n },\n return_none: true\n },\n '\u958B': {\n type: 'func',\n josi: [['\u3092', '\u304B\u3089', '\u306E']],\n pure: true,\n fn: function (key, sys) {\n return sys.__exec('\u30ED\u30FC\u30AB\u30EB\u30B9\u30C8\u30EC\u30FC\u30B8\u8AAD', [key, sys]);\n },\n return_none: false\n },\n '\u8AAD': {\n type: 'func',\n josi: [['\u3092', '\u304B\u3089', '\u306E']],\n pure: true,\n fn: function (key, sys) {\n return sys.__exec('\u30ED\u30FC\u30AB\u30EB\u30B9\u30C8\u30EC\u30FC\u30B8\u8AAD', [key, sys]);\n },\n return_none: false\n },\n '\u5B58\u5728': {\n type: 'func',\n josi: [['\u304C']],\n pure: true,\n fn: function (key) {\n const s = window.localStorage.getItem(key);\n return (s !== null);\n },\n return_none: false\n },\n '\u30ED\u30FC\u30AB\u30EB\u30B9\u30C8\u30EC\u30FC\u30B8\u4FDD\u5B58': {\n type: 'func',\n josi: [['\u3092'], ['\u306B', '\u3078']],\n pure: true,\n fn: function (v, key, sys) {\n let body = v;\n if (sys.__getSysVar('\u4FDD\u5B58\u30AA\u30D7\u30B7\u30E7\u30F3')) {\n if ((sys.__getSysVar('\u4FDD\u5B58\u30AA\u30D7\u30B7\u30E7\u30F3').indexOf('json') >= 0)) {\n body = JSON.stringify(body);\n }\n else if (sys.__getSysVar('\u4FDD\u5B58\u30AA\u30D7\u30B7\u30E7\u30F3') === 'raw') {\n // \u306A\u306B\u3082\u3057\u306A\u3044\n }\n }\n window.localStorage[key] = body;\n },\n return_none: true\n },\n '\u30ED\u30FC\u30AB\u30EB\u30B9\u30C8\u30EC\u30FC\u30B8\u8AAD': {\n type: 'func',\n josi: [['\u3092', '\u304B\u3089', '\u306E']],\n pure: true,\n fn: function (key, sys) {\n const v = window.localStorage[key];\n if (sys.__getSysVar('\u4FDD\u5B58\u30AA\u30D7\u30B7\u30E7\u30F3') && (sys.__getSysVar('\u4FDD\u5B58\u30AA\u30D7\u30B7\u30E7\u30F3').indexOf('json') >= 0)) {\n try {\n return JSON.parse(v);\n }\n catch (e) {\n console.log('\u30ED\u30FC\u30AB\u30EB\u30B9\u30C8\u30EC\u30FC\u30B8\u300E' + key + '\u300F\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557');\n }\n }\n return v;\n },\n return_none: false\n },\n '\u30ED\u30FC\u30AB\u30EB\u30B9\u30C8\u30EC\u30FC\u30B8\u30AD\u30FC\u5217\u6319': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const keys = [];\n for (const key in window.localStorage) {\n keys.push(key);\n }\n return keys;\n },\n return_none: false\n },\n '\u30ED\u30FC\u30AB\u30EB\u30B9\u30C8\u30EC\u30FC\u30B8\u30AD\u30FC\u524A\u9664': {\n type: 'func',\n josi: [['\u3092', '\u306E']],\n pure: true,\n fn: function (key) {\n window.localStorage.removeItem(key);\n },\n return_none: true\n },\n '\u30ED\u30FC\u30AB\u30EB\u30B9\u30C8\u30EC\u30FC\u30B8\u5168\u524A\u9664': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n window.localStorage.clear();\n },\n return_none: true\n },\n '\u30ED\u30FC\u30AB\u30EB\u30B9\u30C8\u30EC\u30FC\u30B8\u6709\u52B9\u78BA\u8A8D': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function () {\n return (typeof window.localStorage !== 'undefined');\n },\n return_none: false\n },\n '\u4FDD\u5B58\u30AA\u30D7\u30B7\u30E7\u30F3': { type: 'const', value: 'json' }, // @ \u307B\u305E\u3093\u304A\u3077\u3057\u3087\u3093\n '\u4FDD\u5B58\u30AA\u30D7\u30B7\u30E7\u30F3\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (v, sys) {\n v = v.toUpperCase(v);\n sys.__setSysVar('\u4FDD\u5B58\u30AA\u30D7\u30B7\u30E7\u30F3', v);\n },\n return_none: true\n }\n};\n", "/* eslint-disable quote-props */\nconst errMsgCanvasInit = '\u63CF\u753B\u3092\u884C\u3046\u305F\u3081\u306B\u306F\u3001HTML\u5185\u306Bcanvas\u3092\u914D\u7F6E\u3057\u3001id\u3092\u632F\u3063\u3066\u300E\u63CF\u753B\u958B\u59CB\u300F\u547D\u4EE4\u306B\u6307\u5B9A\u3057\u307E\u3059\u3002';\nexport default {\n // @\u63CF\u753B\n '\u63CF\u753B\u958B\u59CB': {\n type: 'func',\n josi: [['\u306E', '\u3078', '\u3067']],\n pure: true,\n fn: function (cv, sys) {\n if (typeof cv === 'string') {\n cv = document.querySelector(cv) || document.getElementById(cv);\n }\n if (!cv) {\n throw new Error('\u300E\u63CF\u753B\u958B\u59CB\u300F\u3067Canvas\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002');\n }\n sys.__canvas = cv;\n sys.__ctx = cv.getContext('2d');\n sys.__fillStyle = 'black';\n sys.__strokeStyle = 'black';\n sys.__setSysVar('\u63CF\u753B\u4E2D\u30AD\u30E3\u30F3\u30D0\u30B9', cv);\n sys.__setSysVar('\u63CF\u753B\u4E2D\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8', sys.__ctx);\n },\n return_none: true\n },\n '\u63CF\u753B\u4E2D\u30AD\u30E3\u30F3\u30D0\u30B9': { type: 'const', value: null }, // @ \u3073\u3087\u3046\u304C\u3061\u3085\u3046\u304D\u3083\u3093\u3070\u3059\n '\u63CF\u753B\u4E2D\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8': { type: 'const', value: null }, // @ \u3073\u3087\u3046\u304C\u3061\u3085\u3046\u3053\u3093\u3066\u304D\u3059\u3068\n '\u30AD\u30E3\u30F3\u30D0\u30B9\u72B6\u614B\u4FDD\u5B58': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__ctx.save();\n },\n return_none: true\n },\n '\u30AD\u30E3\u30F3\u30D0\u30B9\u72B6\u614B\u5FA9\u5143': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__ctx.restore();\n },\n return_none: true\n },\n '\u7DDA\u8272\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (v, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__strokeStyle = v;\n if (v !== '') {\n sys.__ctx.strokeStyle = v;\n }\n },\n return_none: true\n },\n '\u5857\u8272\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (v, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__fillStyle = v;\n if (v !== '') {\n sys.__ctx.fillStyle = v;\n }\n },\n return_none: true\n },\n '\u7DDA\u63CF\u753B': {\n type: 'func',\n josi: [['\u304B\u3089'], ['\u3078', '\u307E\u3067']],\n pure: true,\n fn: function (a, b, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__ctx.beginPath();\n sys.__ctx.moveTo(a[0], a[1]);\n sys.__ctx.lineTo(b[0], b[1]);\n sys.__ctx.stroke();\n },\n return_none: true\n },\n '\u7DDA\u592A\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (v, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__ctx.lineWidth = v;\n },\n return_none: true\n },\n '\u56DB\u89D2\u63CF\u753B': {\n type: 'func',\n josi: [['\u306E', '\u3078', '\u306B']],\n pure: true,\n fn: function (b, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n if (sys.__fillStyle === '' && sys.__strokeStyle === '') {\n return;\n }\n sys.__ctx.beginPath();\n sys.__ctx.rect(b[0], b[1], b[2], b[3]);\n if (sys.__fillStyle !== '') {\n sys.__ctx.fill();\n }\n if (sys.__strokeStyle !== '') {\n sys.__ctx.stroke();\n }\n },\n return_none: true\n },\n '\u5168\u63CF\u753B\u30AF\u30EA\u30A2': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__ctx.clearRect(0, 0, sys.__canvas.width, sys.__canvas.height);\n },\n return_none: true\n },\n '\u63CF\u753B\u30AF\u30EA\u30A2': {\n type: 'func',\n josi: [['\u306E', '\u3078', '\u306B']],\n pure: true,\n fn: function (b, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n if (!(b instanceof Array)) {\n b = [];\n }\n if (b.length === 0) {\n b = [0, 0, sys.__canvas.width, sys.__canvas.height];\n }\n else if (b.length <= 2) {\n b.unshift(0);\n b.unshift(0);\n }\n sys.__ctx.clearRect(b[0], b[1], b[2], b[3]);\n },\n return_none: true\n },\n '\u5186\u63CF\u753B': {\n type: 'func',\n josi: [['\u3078', '\u306B'], ['\u306E']],\n pure: true,\n fn: function (xy, r, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n if (sys.__fillStyle === '' && sys.__strokeStyle === '') {\n return;\n }\n sys.__ctx.beginPath();\n sys.__ctx.arc(xy[0], xy[1], r, 0, 2 * Math.PI, false);\n if (sys.__fillStyle !== '') {\n sys.__ctx.fill();\n }\n if (sys.__strokeStyle !== '') {\n sys.__ctx.stroke();\n }\n },\n return_none: true\n },\n '\u6955\u5186\u63CF\u753B': {\n type: 'func',\n josi: [['\u3078', '\u306B', '\u306E']],\n pure: true,\n fn: function (args, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n if (!args) {\n throw new Error('\u6955\u5186\u63CF\u753B\u306E\u5F15\u6570\u914D\u5217\u304C\u7121\u52B9\u3067\u3059');\n }\n if (args.length < 4) {\n throw new Error('\u6955\u5186\u63CF\u753B\u306E\u5F15\u6570\u914D\u5217\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059');\n }\n if (args.length < 7) {\n if (!args[4]) {\n args[4] = 0;\n }\n if (!args[5]) {\n args[5] = 0;\n }\n if (!args[6]) {\n args[6] = Math.PI * 2;\n }\n if (!args[7]) {\n args[7] = true;\n }\n }\n if (sys.__fillStyle === '' && sys.__strokeStyle === '') {\n return;\n }\n sys.__ctx.beginPath();\n sys.__ctx.ellipse(...args);\n if (sys.__fillStyle !== '') {\n sys.__ctx.fill();\n }\n if (sys.__strokeStyle !== '') {\n sys.__ctx.stroke();\n }\n },\n return_none: true\n },\n '\u591A\u89D2\u5F62\u63CF\u753B': {\n type: 'func',\n josi: [['\u3067', '\u306E', '\u3092']],\n pure: true,\n fn: function (a, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n if (sys.__fillStyle === '' && sys.__strokeStyle === '') {\n return;\n }\n sys.__ctx.beginPath();\n const p = a[0];\n sys.__ctx.moveTo(p[0], p[1]);\n for (let i = 1; i < a.length; i++) {\n const t = a[i];\n sys.__ctx.lineTo(t[0], t[1]);\n }\n sys.__ctx.lineTo(p[0], p[1]);\n if (sys.__fillStyle !== '') {\n sys.__ctx.fill();\n }\n if (sys.__strokeStyle !== '') {\n sys.__ctx.stroke();\n }\n },\n return_none: true\n },\n '\u753B\u50CF\u8AAD': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (url, sys) {\n const img = new window.Image();\n img.src = url;\n img.crossOrigin = 'Anonymous';\n return img;\n }\n },\n '\u753B\u50CF\u8AAD\u5F85': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n asyncFn: true,\n fn: function (url) {\n return new Promise((resolve, reject) => {\n const img = new window.Image();\n img.src = url;\n img.crossOrigin = 'Anonymous';\n img.onload = () => { resolve(img); };\n img.onerror = () => {\n reject(new Error(`\u300E\u753B\u50CF\u8AAD\u5F85\u300F\u3067\u8AAD\u8FBC\u307F\u30A8\u30E9\u30FC\u3002URL=\u300E${url}\u300F`));\n };\n });\n }\n },\n '\u753B\u50CF\u9010\u6B21\u8AAD': {\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (url, sys) {\n if (sys.resolve === undefined) {\n throw new Error('\u300E\u753B\u50CF\u9010\u6B21\u8AAD\u300F\u306F\u300E\u9010\u6B21\u5B9F\u884C\u300F\u69CB\u6587\u3067\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002');\n }\n sys.resolveCount++;\n const img = new window.Image();\n img.src = url;\n img.crossOrigin = 'Anonymous';\n img.onload = () => {\n sys.__setSysVar('\u5BFE\u8C61', img);\n sys.resolve();\n };\n img.onerror = () => {\n sys.__setSysVar('\u5BFE\u8C61', '');\n sys.reject();\n };\n return img;\n }\n },\n '\u753B\u50CF\u8AAD\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u306E', '\u3092']],\n pure: true,\n fn: function (f, url, sys) {\n // \u95A2\u6570\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u5F97\u308B\n const func = sys.__findVar(f, null); // \u6587\u5B57\u5217\u6307\u5B9A\u306A\u3089\u95A2\u6570\u306B\u5909\u63DB\n // \u753B\u50CF\u3092\u8AAD\u3080\n const img = new window.Image();\n img.src = url;\n img.crossOrigin = 'Anonymous';\n img.onload = () => {\n sys.__setSysVar('\u5BFE\u8C61', img);\n func(sys);\n };\n img.onerror = () => {\n sys.__setSysVar('\u5BFE\u8C61', '');\n func(sys);\n };\n },\n return_none: true\n },\n '\u753B\u50CF\u63CF\u753B': {\n type: 'func',\n josi: [['\u306E', '\u3092'], ['\u3078', '\u306B']],\n pure: true,\n fn: function (img, xy, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n const drawFunc = (im, ctx) => {\n if (xy.length === 2) {\n ctx.drawImage(im, xy[0], xy[1]);\n }\n else if (xy.length === 4) {\n ctx.drawImage(im, xy[0], xy[1], xy[2], xy[3]);\n }\n else if (xy.length === 8) {\n ctx.drawImage(im, xy[0], xy[1], xy[2], xy[3], xy[4], xy[5], xy[6], xy[7]);\n }\n else {\n throw new Error('\u300E\u753B\u50CF\u63CF\u753B\u300F\u306E\u7B2C\u4E8C\u5F15\u6570\u306E\u914D\u5217\u8981\u7D20\u306F2,4,8\u500B\u306E\u3044\u305A\u308C\u304B\u3067\u3059\u3002');\n }\n };\n if (typeof img === 'string') {\n const image = new window.Image();\n image.src = img;\n image.crossOrigin = 'Anonymous';\n image.onload = () => {\n drawFunc(image, sys.__ctx);\n };\n return image;\n }\n else {\n drawFunc(img, sys.__ctx);\n return img;\n }\n },\n return_none: false\n },\n '\u753B\u50CF\u90E8\u5206\u63CF\u753B': {\n type: 'func',\n josi: [['\u306E'], ['\u3092', '\u304B\u3089'], ['\u3078', '\u306B']],\n pure: true,\n fn: function (img, sxy, dxy, sys) {\n const errArgLen = '\u300E\u753B\u50CF\u90E8\u5206\u63CF\u753B\u300F\u306B\u4F7F\u3048\u308B\u5F15\u6570\u306F\u753B\u50CF\u3068\u3001\u63CF\u753B\u3059\u308B\u5EA7\u6A19\u30782\u3064\u304B\u3001' +\n '\u63CF\u753B\u3059\u308B\u5EA7\u6A19\u3068\u305D\u306E\u4F4D\u7F6E\u306E4\u3064\u304B\u3001\u4F7F\u7528\u3059\u308B\u5EA7\u6A19\u3068\u4F7F\u7528\u3059\u308B\u4F4D\u7F6E\u3068\u63CF\u753B\u3059\u308B\u5EA7\u6A19\u3068\u5927\u304D\u3055\u306E8\u3064\u3060\u3051\u3067\u3059\u3002';\n if (img && sxy) {\n if (!Array.isArray(sxy) && Array.isArray(img)) { // \u9006\u306B\u306A\u3063\u3066\u3044\u308C\u3070\u5165\u308C\u66FF\u3048\u308B\n // eslint-disable-next-line no-proto\n if (typeof sxy === 'string' || String(sxy.__proto__) === '[object HTMLImageElement]') {\n const sw = img;\n img = sxy;\n sxy = sw;\n }\n }\n }\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n const drawFunc = (im, ctx) => {\n if (!dxy) {\n if (!sxy) {\n ctx.drawImage(im);\n }\n else if (sxy.length >= 2) { // \u3082\u3057sxy\u304C\u3042\u308B\u306E\u306Bdxy\u304C\u306A\u304B\u3063\u305F\u3089dxy\u3092\u4EE3\u308F\u308A\u306B\u3059\u308B\n dxy = sxy;\n sxy = undefined;\n }\n }\n if (dxy.length === 2) {\n ctx.drawImage(im, dxy[0], dxy[1]);\n }\n else if (dxy.length === 4) {\n if (!sxy) {\n ctx.drawImage(im, dxy[0], dxy[1], dxy[2], dxy[3]);\n }\n else if (sxy.length === 4) {\n ctx.drawImage(im, sxy[0], sxy[1], sxy[2], sxy[3], dxy[0], dxy[1], dxy[2], dxy[3]);\n }\n else {\n throw new Error(errArgLen);\n }\n }\n else {\n throw new Error(errArgLen);\n }\n };\n if (typeof img === 'string') {\n const image = new window.Image();\n image.src = img;\n image.crossOrigin = 'Anonymous';\n image.onload = () => {\n drawFunc(image, sys.__ctx);\n };\n return image;\n }\n else {\n drawFunc(img, sys.__ctx);\n return img;\n }\n },\n return_none: false\n },\n '\u63CF\u753B\u30D5\u30A9\u30F3\u30C8\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u3092', '\u306E', '\u3067', '\u306B']],\n pure: true,\n fn: function (n, sys) {\n // \u6570\u5024\u3060\u3051\u306A\u3089\u30D5\u30A9\u30F3\u30C8\u30B5\u30A4\u30BA\u306E\u307F\u306E\u6307\u5B9A\n if (typeof n === 'number') {\n n = n + 'px sans-serif';\n }\n // \u30D4\u30AF\u30BB\u30EB\u6570\u306E\u307F\u306E\u6307\u5B9A\u306A\u3089\u9069\u5F53\u306B\u30D5\u30A9\u30F3\u30C8\u3092\u8DB3\u3059\n if (/^[0-9]+(px|em)$/.test(n)) {\n n = n + ' sans-serif';\n }\n sys.__ctx.font = n;\n },\n return_none: true\n },\n '\u6587\u5B57\u63CF\u753B': {\n type: 'func',\n josi: [['\u3078', '\u306B'], ['\u306E', '\u3092']],\n pure: true,\n fn: function (xy, s, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__ctx.fillText(s, xy[0], xy[1]);\n },\n return_none: true\n },\n '\u6587\u5B57\u63CF\u753B\u5E45\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (s, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n return sys.__ctx.measureText(s);\n },\n return_none: false\n },\n '\u63CF\u753B\u8D77\u70B9\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u3078', '\u306B']],\n pure: true,\n fn: function (xy, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__ctx.translate(xy[0], xy[1]);\n },\n return_none: true\n },\n '\u63CF\u753B\u56DE\u8EE2': {\n type: 'func',\n josi: [['\u3060\u3051', '\u306B', '\u3078']],\n pure: true,\n fn: function (a, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__ctx.rotate(a * Math.PI / 180);\n },\n return_none: true\n },\n '\u63CF\u753B\u62E1\u5927': {\n type: 'func',\n josi: [['\u3060\u3051', '\u306B', '\u3078']],\n pure: true,\n fn: function (xy, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__ctx.scale(xy[0], xy[1]);\n },\n return_none: true\n },\n '\u63CF\u753B\u5909\u63DB\u30DE\u30C8\u30EA\u30AF\u30B9\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u3060\u3051', '\u306B', '\u3078']],\n pure: true,\n fn: function (a, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__ctx.setTransform(a[0], a[1], a[2], a[3], a[4], a[5], a[6]);\n },\n return_none: true\n },\n '\u63CF\u753B\u5909\u63DB\u30DE\u30C8\u30EA\u30AF\u30B9\u8FFD\u52A0': {\n type: 'func',\n josi: [['\u3060\u3051', '\u306B', '\u3078']],\n pure: true,\n fn: function (a, sys) {\n if (!sys.__ctx) {\n throw new Error(errMsgCanvasInit);\n }\n sys.__ctx.transform(a[0], a[1], a[2], a[3], a[4], a[5], a[6]);\n },\n return_none: true\n },\n '\u63CF\u753B\u30C7\u30FC\u30BFURL\u5909\u63DB': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const cv = sys.__getSysVar('\u63CF\u753B\u4E2D\u30AD\u30E3\u30F3\u30D0\u30B9');\n const url = cv.toDataURL('image/png');\n return url;\n }\n },\n '\u63CF\u753B\u30C7\u30FC\u30BFBLOB\u5909\u63DB': {\n type: 'func',\n josi: [],\n pure: true,\n asyncFn: true,\n fn: function (sys) {\n return new Promise((resolve, reject) => {\n const cv = sys.__getSysVar('\u63CF\u753B\u4E2D\u30AD\u30E3\u30F3\u30D0\u30B9');\n cv.toBlob((result) => { resolve(result); }, 'image/png');\n });\n }\n },\n '\u63CF\u753B\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u4F5C\u6210': {\n type: 'func',\n josi: [['\u3078', '\u306B']],\n pure: true,\n fn: function (dom, sys) {\n if (typeof dom === 'string') {\n dom = document.querySelector(dom);\n }\n if (!dom) {\n throw new Error('\u300E\u63CF\u753B\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30EA\u30F3\u30AF\u4F5C\u6210\u300F\u3067DOM\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002');\n }\n const cv = sys.__getSysVar('\u63CF\u753B\u4E2D\u30AD\u30E3\u30F3\u30D0\u30B9');\n if (!cv) {\n throw new Error('\u300E\u63CF\u753B\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u300F\u3067\u63CF\u753B\u4E2D\u30AD\u30E3\u30F3\u30D0\u30B9\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002');\n }\n dom.href = cv.toDataURL('image/png');\n dom.download = 'canvas.png';\n },\n return_none: true\n },\n '\u63CF\u753B\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const cv = sys.__getSysVar('\u63CF\u753B\u4E2D\u30AD\u30E3\u30F3\u30D0\u30B9');\n if (!cv) {\n throw new Error('\u300E\u63CF\u753B\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u300F\u3067\u63CF\u753B\u4E2D\u30AD\u30E3\u30F3\u30D0\u30B9\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002');\n }\n const a = document.createElement('a');\n a.href = cv.toDataURL('image/png');\n a.download = 'canvas.png';\n a.click();\n return true;\n }\n }\n};\n", "// @ts-nocheck\nexport default {\n // @\u4F4D\u7F6E\u60C5\u5831\n '\u4F4D\u7F6E\u60C5\u5831\u53D6\u5F97\u6642': {\n type: 'func',\n josi: [['\u306E', '\u306B', '\u3078']],\n pure: true,\n fn: function (func, sys) {\n let cb = func;\n if (typeof cb === 'string') {\n cb = sys.__findVar(cb);\n }\n if (!('geolocation' in navigator)) {\n throw new Error('\u95A2\u6570\u300E\u4F4D\u7F6E\u60C5\u5831\u53D6\u5F97\u6642\u300F\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002');\n }\n navigator.geolocation.getCurrentPosition((position) => {\n sys.__setSysVar('\u5BFE\u8C61', [\n position.coords.latitude,\n position.coords.longitude\n ]);\n cb(position);\n });\n },\n return_none: true\n },\n '\u4F4D\u7F6E\u60C5\u5831\u76E3\u8996\u6642': {\n type: 'func',\n josi: [['\u306E', '\u306B', '\u3078']],\n pure: true,\n fn: function (func, sys) {\n let cb = func;\n if (typeof cb === 'string') {\n cb = sys.__findVar(cb);\n }\n if (!('geolocation' in navigator)) {\n throw new Error('\u95A2\u6570\u300E\u4F4D\u7F6E\u60C5\u5831\u76E3\u8996\u6642\u300F\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002');\n }\n return navigator.geolocation.watchPosition((position) => {\n sys.__setSysVar('\u5BFE\u8C61', [\n position.coords.latitude,\n position.coords.longitude\n ]);\n cb(position);\n });\n },\n return_none: false\n },\n '\u4F4D\u7F6E\u60C5\u5831\u76E3\u8996\u505C\u6B62': {\n type: 'func',\n josi: [['\u306E']],\n pure: true,\n fn: function (wid, sys) {\n navigator.geolocation.clearWatch(wid);\n },\n return_none: true\n }\n};\n", "// @ts-nocheck\nexport default {\n // @\u97F3\u58F0\u5408\u6210\n '\u8A71': {\n type: 'func',\n josi: [['\u3068', '\u3092', '\u306E']],\n pure: true,\n fn: function (s, sys) {\n const msg = sys.__exec('\u97F3\u58F0\u5408\u6210\u767A\u8A71\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u53D6\u5F97', [s, sys]);\n window.speechSynthesis.speak(msg);\n console.log('#\u8A71\u3059:', s);\n return s;\n }\n },\n '\u8A71\u7D42': {\n type: 'func',\n josi: [['\u3068', '\u3092', '\u306E']],\n pure: true,\n asyncFn: true,\n fn: function (s, sys) {\n return new Promise((resolve, reject) => {\n try {\n const msg = sys.__exec('\u97F3\u58F0\u5408\u6210\u767A\u8A71\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u53D6\u5F97', [s, sys]);\n msg.onend = () => { resolve(); };\n window.speechSynthesis.speak(msg);\n console.log('#\u8A71\u3059:', s);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n },\n '\u8A71\u7D42\u6642': {\n type: 'func',\n josi: [['\u3067'], ['\u3068', '\u3092', '\u306E']],\n pure: true,\n fn: function (callback, s, sys) {\n const msg = sys.__exec('\u97F3\u58F0\u5408\u6210\u767A\u8A71\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u53D6\u5F97', [s, sys]);\n msg.onend = (e) => {\n console.log('#\u8A71\u7D42\u6642');\n sys.__setSysVar('\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8', e);\n callback(sys);\n };\n window.speechSynthesis.speak(msg);\n console.log('#\u8A71\u3059:', s);\n return s;\n }\n },\n '\u97F3\u58F0\u5408\u6210\u767A\u8A71\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u3067']],\n pure: true,\n fn: function (s, sys) {\n // \u8A71\u8005\u306E\u7279\u5B9A\n let voice = sys.__getSysVar('\u8A71:\u8A71\u8005');\n if (!voice) {\n voice = sys.__exec('\u8A71\u8005\u8A2D\u5B9A', ['ja', sys]);\n }\n // \u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u4F5C\u6210\n const msg = new SpeechSynthesisUtterance(s);\n msg.voice = voice;\n if (voice) {\n msg.lang = voice.lang;\n } // \u5FC5\u305A\u8A71\u8005\u306E\u7279\u5B9A\u306B\u6210\u529F\u3057\u3066\u3044\u308B\u8A33\u3067\u306F\u306A\u3044\n msg.rate = sys.__getSysVar('\u8A71\u8005\u901F\u5EA6');\n msg.pitch = sys.__getSysVar('\u8A71\u8005\u58F0\u9AD8');\n msg.volume = sys.__getSysVar('\u8A71\u8005\u97F3\u91CF');\n return msg;\n }\n },\n '\u8A71\u8005\u4E00\u89A7\u53D6\u5F97': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n // \u5BFE\u5FDC\u3057\u3066\u3044\u308B\uFF1F\n if (!('SpeechSynthesisUtterance' in window)) {\n throw new Error('\u97F3\u58F0\u5408\u6210API\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093');\n }\n return window.speechSynthesis.getVoices();\n }\n },\n '\u8A71\u8005\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (v, sys) {\n // \u5BFE\u5FDC\u3057\u3066\u3044\u308B\uFF1F\n if (!('SpeechSynthesisUtterance' in window)) {\n throw new Error('\u97F3\u58F0\u5408\u6210API\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093');\n }\n // \u6587\u5B57\u5217\u3067\u5024\u3092\u6307\u5B9A\n if (typeof v === 'string') {\n // \u8A71\u8005\u3092\u7279\u5B9A\u3059\u308B\n const voices = window.speechSynthesis.getVoices();\n for (const i of voices) {\n if (i.lang.indexOf(v) >= 0 || i.name === v) {\n const msg = new SpeechSynthesisUtterance();\n msg.voice = i;\n msg.lang = i.lang;\n sys.__setSysVar('\u8A71:\u8A71\u8005', i);\n console.log('#\u8A71\u8005:', i.name);\n return i;\n }\n }\n }\n // \u8A71\u8005\u4E00\u89A7\u53D6\u5F97\u3067\u5F97\u305F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u76F4\u63A5\u6307\u5B9A\u3057\u305F\u5834\u5408\n if (typeof v === 'object') {\n sys.__setSysVar('\u8A71:\u8A71\u8005', v);\n return v;\n }\n return undefined;\n }\n },\n '\u8A71\u8005\u901F\u5EA6': { type: 'const', value: 1.0 }, // @\u308F\u3057\u3083\u305D\u304F\u3069\n '\u8A71\u8005\u58F0\u9AD8': { type: 'const', value: 1.0 }, // @\u308F\u3057\u3083\u3053\u308F\u3060\u304B\n '\u8A71\u8005\u97F3\u91CF': { type: 'const', value: 1.0 }, // @\u308F\u3057\u3083\u3053\u304A\u3093\u308A\u3087\u3046\n '\u8A71\u8005\u8A73\u7D30\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u3067', '\u306B', '\u3078']],\n pure: true,\n fn: function (obj, sys) {\n const changeFunc = (key, v) => {\n if (key === '\u901F\u5EA6') {\n sys.__setSysVar('\u8A71\u8005\u901F\u5EA6', v);\n }\n if (key === '\u58F0\u9AD8' || key === '\u30D4\u30C3\u30C1') {\n sys.__setSysVar('\u8A71\u8005\u58F0\u9AD8', v);\n }\n if (key === '\u97F3\u91CF') {\n sys.__setSysVar('\u8A71\u8005\u97F3\u91CF', v);\n }\n };\n // \u4E00\u62EC\u5909\u66F4\n for (const key in obj) {\n const v = obj[key];\n changeFunc(key, v);\n }\n }\n }\n};\n", "// @ts-nocheck\nexport default {\n // @WebSocket\n 'WS\u63A5\u7D9A\u5B8C\u4E86\u6642': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (callback, sys) {\n sys.__setSysVar('WS:ONOPEN', callback);\n },\n return_none: true\n },\n 'WS\u53D7\u4FE1\u6642': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (callback, sys) {\n sys.__setSysVar('WS:ONMESSAGE', callback);\n },\n return_none: true\n },\n 'WS\u30A8\u30E9\u30FC\u767A\u751F\u6642': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (callback, sys) {\n sys.__setSysVar('WS:ONERROR', callback);\n },\n return_none: true\n },\n 'WS\u63A5\u7D9A': {\n type: 'func',\n josi: [['\u306B', '\u3078', '\u306E']],\n pure: true,\n fn: function (s, sys) {\n const ws = new WebSocket(s);\n ws.onopen = () => {\n const cbOpen = sys.__getSysVar('WS:ONOPEN');\n if (cbOpen) {\n cbOpen(sys);\n }\n };\n ws.onerror = (err) => {\n const cbError = sys.__getSysVar('WS:ONERROR');\n if (cbError) {\n cbError(err, sys);\n }\n console.log('WS\u30A8\u30E9\u30FC', err);\n };\n ws.onmessage = (e) => {\n sys.__setSysVar('\u5BFE\u8C61', e.data);\n const cbMsg = sys.__getSysVar('WS:ONMESSAGE');\n if (cbMsg) {\n cbMsg(sys);\n }\n };\n sys.__setSysVar('WS:SOCKET', ws);\n return ws;\n }\n },\n 'WS\u9001\u4FE1': {\n type: 'func',\n josi: [['\u3092', '\u3068']],\n pure: true,\n fn: function (s, sys) {\n const ws = sys.__getSysVar('WS:SOCKET');\n ws.send(s);\n }\n },\n 'WS\u5207\u65AD': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n const ws = sys.__getSysVar('WS:SOCKET');\n ws.close();\n }\n }\n};\n", "/* eslint-disable quote-props */\nexport default {\n // @\u30AA\u30FC\u30C7\u30A3\u30AA\n '\u30AA\u30FC\u30C7\u30A3\u30AA\u958B': {\n type: 'func',\n josi: [['\u3092', '\u306E']],\n pure: true,\n fn: function (url, sys) {\n const a = new Audio();\n a.src = url;\n return a;\n },\n return_none: false\n },\n '\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (obj, sys) {\n if (!obj) {\n throw new Error('\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F\u3059\u308B\u524D\u306B\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\u958B\u304F\u3067\u97F3\u58F0\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044');\n }\n obj.loop = false;\n obj.play();\n },\n return_none: true\n },\n '\u30AA\u30FC\u30C7\u30A3\u30AA\u30EB\u30FC\u30D7\u518D\u751F': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (obj, sys) {\n if (!obj) {\n throw new Error('\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F\u3059\u308B\u524D\u306B\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\u958B\u304F\u3067\u97F3\u58F0\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044');\n }\n obj.loop = true;\n obj.play();\n },\n return_none: true\n },\n '\u30AA\u30FC\u30C7\u30A3\u30AA\u505C\u6B62': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (obj, sys) {\n if (!obj) {\n throw new Error('\u30AA\u30FC\u30C7\u30A3\u30AA\u505C\u6B62\u3059\u308B\u524D\u306B\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\u958B\u304F\u3067\u97F3\u58F0\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044');\n }\n obj.pause();\n obj.currentTime = 0; // \u66AB\u5B9A\n // \u30AA\u30FC\u30C7\u30A3\u30AA\u505C\u6B62\u3067\u518D\u751F\u4F4D\u7F6E\u304C0\u306B\u623B\u3089\u306A\u3044\u554F\u984C(#715)\n setTimeout(() => {\n obj.currentTime = 0; // \u3057\u3063\u304B\u308A\u3068\u8A2D\u5B9A\n }, 10);\n },\n return_none: true\n },\n '\u30AA\u30FC\u30C7\u30A3\u30AA\u4E00\u6642\u505C\u6B62': {\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (obj, sys) {\n if (!obj) {\n throw new Error('\u30AA\u30FC\u30C7\u30A3\u30AA\u4E00\u6642\u505C\u6B62\u3059\u308B\u524D\u306B\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\u958B\u304F\u3067\u97F3\u58F0\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044');\n }\n obj.pause();\n },\n return_none: true\n },\n '\u30AA\u30FC\u30C7\u30A3\u30AA\u97F3\u91CF\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (obj, sys) {\n if (!obj) {\n throw new Error('\u30AA\u30FC\u30C7\u30A3\u30AA\u9577\u53D6\u5F97\u3059\u308B\u524D\u306B\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\u958B\u304F\u3067\u97F3\u58F0\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044');\n }\n return obj.volume;\n }\n },\n '\u30AA\u30FC\u30C7\u30A3\u30AA\u97F3\u91CF\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u3092'], ['\u306B', '\u3078']],\n pure: true,\n fn: function (obj, v, sys) {\n if (!obj) {\n throw new Error('\u30AA\u30FC\u30C7\u30A3\u30AA\u9577\u53D6\u5F97\u3059\u308B\u524D\u306B\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\u958B\u304F\u3067\u97F3\u58F0\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044');\n }\n obj.volume = v;\n },\n return_none: true\n },\n '\u30AA\u30FC\u30C7\u30A3\u30AA\u9577\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (obj, sys) {\n if (!obj) {\n throw new Error('\u30AA\u30FC\u30C7\u30A3\u30AA\u9577\u53D6\u5F97\u3059\u308B\u524D\u306B\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\u958B\u304F\u3067\u97F3\u58F0\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044');\n }\n return obj.duration;\n }\n },\n '\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F\u4F4D\u7F6E\u53D6\u5F97': {\n type: 'func',\n josi: [['\u306E', '\u304B\u3089']],\n pure: true,\n fn: function (obj, sys) {\n if (!obj) {\n throw new Error('\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F\u4F4D\u7F6E\u53D6\u5F97\u3059\u308B\u524D\u306B\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\u958B\u304F\u3067\u97F3\u58F0\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044');\n }\n return obj.currentTime;\n }\n },\n '\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F\u4F4D\u7F6E\u8A2D\u5B9A': {\n type: 'func',\n josi: [['\u3092'], ['\u306B', '\u3078']],\n pure: true,\n fn: function (obj, v, sys) {\n if (!obj) {\n throw new Error('\u30AA\u30FC\u30C7\u30A3\u30AA\u505C\u6B62\u3059\u308B\u524D\u306B\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\u958B\u304F\u3067\u97F3\u58F0\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044');\n }\n obj.currentTime = v;\n },\n return_none: true\n }\n};\n", "/**! \n * hotkeys-js v3.13.7 \n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies. \n * \n * Copyright (c) 2024 kenny wong <wowohoo@qq.com> \n * https://github.com/jaywcjlove/hotkeys-js.git \n * \n * @website: https://jaywcjlove.github.io/hotkeys-js\n \n * Licensed under the MIT license \n */\n\nconst isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false;\n\n// \u7ED1\u5B9A\u4E8B\u4EF6\nfunction addEvent(object, event, method, useCapture) {\n if (object.addEventListener) {\n object.addEventListener(event, method, useCapture);\n } else if (object.attachEvent) {\n object.attachEvent(\"on\".concat(event), method);\n }\n}\nfunction removeEvent(object, event, method, useCapture) {\n if (object.removeEventListener) {\n object.removeEventListener(event, method, useCapture);\n } else if (object.detachEvent) {\n object.detachEvent(\"on\".concat(event), method);\n }\n}\n\n// \u4FEE\u9970\u952E\u8F6C\u6362\u6210\u5BF9\u5E94\u7684\u952E\u7801\nfunction getMods(modifier, key) {\n const mods = key.slice(0, key.length - 1);\n for (let i = 0; i < mods.length; i++) mods[i] = modifier[mods[i].toLowerCase()];\n return mods;\n}\n\n// \u5904\u7406\u4F20\u7684key\u5B57\u7B26\u4E32\u8F6C\u6362\u6210\u6570\u7EC4\nfunction getKeys(key) {\n if (typeof key !== 'string') key = '';\n key = key.replace(/\\s/g, ''); // \u5339\u914D\u4EFB\u4F55\u7A7A\u767D\u5B57\u7B26,\u5305\u62EC\u7A7A\u683C\u3001\u5236\u8868\u7B26\u3001\u6362\u9875\u7B26\u7B49\u7B49\n const keys = key.split(','); // \u540C\u65F6\u8BBE\u7F6E\u591A\u4E2A\u5FEB\u6377\u952E\uFF0C\u4EE5','\u5206\u5272\n let index = keys.lastIndexOf('');\n\n // \u5FEB\u6377\u952E\u53EF\u80FD\u5305\u542B','\uFF0C\u9700\u7279\u6B8A\u5904\u7406\n for (; index >= 0;) {\n keys[index - 1] += ',';\n keys.splice(index, 1);\n index = keys.lastIndexOf('');\n }\n return keys;\n}\n\n// \u6BD4\u8F83\u4FEE\u9970\u952E\u7684\u6570\u7EC4\nfunction compareArray(a1, a2) {\n const arr1 = a1.length >= a2.length ? a1 : a2;\n const arr2 = a1.length >= a2.length ? a2 : a1;\n let isIndex = true;\n for (let i = 0; i < arr1.length; i++) {\n if (arr2.indexOf(arr1[i]) === -1) isIndex = false;\n }\n return isIndex;\n}\n\n// Special Keys\nconst _keyMap = {\n backspace: 8,\n '\u232B': 8,\n tab: 9,\n clear: 12,\n enter: 13,\n '\u21A9': 13,\n return: 13,\n esc: 27,\n escape: 27,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n del: 46,\n delete: 46,\n ins: 45,\n insert: 45,\n home: 36,\n end: 35,\n pageup: 33,\n pagedown: 34,\n capslock: 20,\n num_0: 96,\n num_1: 97,\n num_2: 98,\n num_3: 99,\n num_4: 100,\n num_5: 101,\n num_6: 102,\n num_7: 103,\n num_8: 104,\n num_9: 105,\n num_multiply: 106,\n num_add: 107,\n num_enter: 108,\n num_subtract: 109,\n num_decimal: 110,\n num_divide: 111,\n '\u21EA': 20,\n ',': 188,\n '.': 190,\n '/': 191,\n '`': 192,\n '-': isff ? 173 : 189,\n '=': isff ? 61 : 187,\n ';': isff ? 59 : 186,\n '\\'': 222,\n '[': 219,\n ']': 221,\n '\\\\': 220\n};\n\n// Modifier Keys\nconst _modifier = {\n // shiftKey\n '\u21E7': 16,\n shift: 16,\n // altKey\n '\u2325': 18,\n alt: 18,\n option: 18,\n // ctrlKey\n '\u2303': 17,\n ctrl: 17,\n control: 17,\n // metaKey\n '\u2318': 91,\n cmd: 91,\n command: 91\n};\nconst modifierMap = {\n 16: 'shiftKey',\n 18: 'altKey',\n 17: 'ctrlKey',\n 91: 'metaKey',\n shiftKey: 16,\n ctrlKey: 17,\n altKey: 18,\n metaKey: 91\n};\nconst _mods = {\n 16: false,\n 18: false,\n 17: false,\n 91: false\n};\nconst _handlers = {};\n\n// F1~F12 special key\nfor (let k = 1; k < 20; k++) {\n _keyMap[\"f\".concat(k)] = 111 + k;\n}\n\nlet _downKeys = []; // \u8BB0\u5F55\u6441\u4E0B\u7684\u7ED1\u5B9A\u952E\nlet winListendFocus = null; // window\u662F\u5426\u5DF2\u7ECF\u76D1\u542C\u4E86focus\u4E8B\u4EF6\nlet _scope = 'all'; // \u9ED8\u8BA4\u70ED\u952E\u8303\u56F4\nconst elementEventMap = new Map(); // \u5DF2\u7ED1\u5B9A\u4E8B\u4EF6\u7684\u8282\u70B9\u8BB0\u5F55\n\n// \u8FD4\u56DE\u952E\u7801\nconst code = x => _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\nconst getKey = x => Object.keys(_keyMap).find(k => _keyMap[k] === x);\nconst getModifier = x => Object.keys(_modifier).find(k => _modifier[k] === x);\n\n// \u8BBE\u7F6E\u83B7\u53D6\u5F53\u524D\u8303\u56F4\uFF08\u9ED8\u8BA4\u4E3A'\u6240\u6709'\uFF09\nfunction setScope(scope) {\n _scope = scope || 'all';\n}\n// \u83B7\u53D6\u5F53\u524D\u8303\u56F4\nfunction getScope() {\n return _scope || 'all';\n}\n// \u83B7\u53D6\u6441\u4E0B\u7ED1\u5B9A\u952E\u7684\u952E\u503C\nfunction getPressedKeyCodes() {\n return _downKeys.slice(0);\n}\nfunction getPressedKeyString() {\n return _downKeys.map(c => getKey(c) || getModifier(c) || String.fromCharCode(c));\n}\nfunction getAllKeyCodes() {\n const result = [];\n Object.keys(_handlers).forEach(k => {\n _handlers[k].forEach(_ref => {\n let {\n key,\n scope,\n mods,\n shortcut\n } = _ref;\n result.push({\n scope,\n shortcut,\n mods,\n keys: key.split('+').map(v => code(v))\n });\n });\n });\n return result;\n}\n\n// \u8868\u5355\u63A7\u4EF6\u63A7\u4EF6\u5224\u65AD \u8FD4\u56DE Boolean\n// hotkey is effective only when filter return true\nfunction filter(event) {\n const target = event.target || event.srcElement;\n const {\n tagName\n } = target;\n let flag = true;\n const isInput = tagName === 'INPUT' && !['checkbox', 'radio', 'range', 'button', 'file', 'reset', 'submit', 'color'].includes(target.type);\n // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n if (target.isContentEditable || (isInput || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {\n flag = false;\n }\n return flag;\n}\n\n// \u5224\u65AD\u6441\u4E0B\u7684\u952E\u662F\u5426\u4E3A\u67D0\u4E2A\u952E\uFF0C\u8FD4\u56DEtrue\u6216\u8005false\nfunction isPressed(keyCode) {\n if (typeof keyCode === 'string') {\n keyCode = code(keyCode); // \u8F6C\u6362\u6210\u952E\u7801\n }\n return _downKeys.indexOf(keyCode) !== -1;\n}\n\n// \u5FAA\u73AF\u5220\u9664handlers\u4E2D\u7684\u6240\u6709 scope(\u8303\u56F4)\nfunction deleteScope(scope, newScope) {\n let handlers;\n let i;\n\n // \u6CA1\u6709\u6307\u5B9Ascope\uFF0C\u83B7\u53D6scope\n if (!scope) scope = getScope();\n for (const key in _handlers) {\n if (Object.prototype.hasOwnProperty.call(_handlers, key)) {\n handlers = _handlers[key];\n for (i = 0; i < handlers.length;) {\n if (handlers[i].scope === scope) {\n const deleteItems = handlers.splice(i, 1);\n deleteItems.forEach(_ref2 => {\n let {\n element\n } = _ref2;\n return removeKeyEvent(element);\n });\n } else {\n i++;\n }\n }\n }\n }\n\n // \u5982\u679Cscope\u88AB\u5220\u9664\uFF0C\u5C06scope\u91CD\u7F6E\u4E3Aall\n if (getScope() === scope) setScope(newScope || 'all');\n}\n\n// \u6E05\u9664\u4FEE\u9970\u952E\nfunction clearModifier(event) {\n let key = event.keyCode || event.which || event.charCode;\n const i = _downKeys.indexOf(key);\n\n // \u4ECE\u5217\u8868\u4E2D\u6E05\u9664\u6309\u538B\u8FC7\u7684\u952E\n if (i >= 0) {\n _downKeys.splice(i, 1);\n }\n // \u7279\u6B8A\u5904\u7406 cmmand \u952E\uFF0C\u5728 cmmand \u7EC4\u5408\u5FEB\u6377\u952E keyup \u53EA\u6267\u884C\u4E00\u6B21\u7684\u95EE\u9898\n if (event.key && event.key.toLowerCase() === 'meta') {\n _downKeys.splice(0, _downKeys.length);\n }\n\n // \u4FEE\u9970\u952E shiftKey altKey ctrlKey (command||metaKey) \u6E05\u9664\n if (key === 93 || key === 224) key = 91;\n if (key in _mods) {\n _mods[key] = false;\n\n // \u5C06\u4FEE\u9970\u952E\u91CD\u7F6E\u4E3Afalse\n for (const k in _modifier) if (_modifier[k] === key) hotkeys[k] = false;\n }\n}\nfunction unbind(keysInfo) {\n // unbind(), unbind all keys\n if (typeof keysInfo === 'undefined') {\n Object.keys(_handlers).forEach(key => {\n Array.isArray(_handlers[key]) && _handlers[key].forEach(info => eachUnbind(info));\n delete _handlers[key];\n });\n removeKeyEvent(null);\n } else if (Array.isArray(keysInfo)) {\n // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])\n keysInfo.forEach(info => {\n if (info.key) eachUnbind(info);\n });\n } else if (typeof keysInfo === 'object') {\n // support like unbind({key: 'ctrl+a, ctrl+b', scope:'abc'})\n if (keysInfo.key) eachUnbind(keysInfo);\n } else if (typeof keysInfo === 'string') {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n // support old method\n // eslint-disable-line\n let [scope, method] = args;\n if (typeof scope === 'function') {\n method = scope;\n scope = '';\n }\n eachUnbind({\n key: keysInfo,\n scope,\n method,\n splitKey: '+'\n });\n }\n}\n\n// \u89E3\u9664\u7ED1\u5B9A\u67D0\u4E2A\u8303\u56F4\u7684\u5FEB\u6377\u952E\nconst eachUnbind = _ref3 => {\n let {\n key,\n scope,\n method,\n splitKey = '+'\n } = _ref3;\n const multipleKeys = getKeys(key);\n multipleKeys.forEach(originKey => {\n const unbindKeys = originKey.split(splitKey);\n const len = unbindKeys.length;\n const lastKey = unbindKeys[len - 1];\n const keyCode = lastKey === '*' ? '*' : code(lastKey);\n if (!_handlers[keyCode]) return;\n // \u5224\u65AD\u662F\u5426\u4F20\u5165\u8303\u56F4\uFF0C\u6CA1\u6709\u5C31\u83B7\u53D6\u8303\u56F4\n if (!scope) scope = getScope();\n const mods = len > 1 ? getMods(_modifier, unbindKeys) : [];\n const unbindElements = [];\n _handlers[keyCode] = _handlers[keyCode].filter(record => {\n // \u901A\u8FC7\u51FD\u6570\u5224\u65AD\uFF0C\u662F\u5426\u89E3\u9664\u7ED1\u5B9A\uFF0C\u51FD\u6570\u76F8\u7B49\u76F4\u63A5\u8FD4\u56DE\n const isMatchingMethod = method ? record.method === method : true;\n const isUnbind = isMatchingMethod && record.scope === scope && compareArray(record.mods, mods);\n if (isUnbind) unbindElements.push(record.element);\n return !isUnbind;\n });\n unbindElements.forEach(element => removeKeyEvent(element));\n });\n};\n\n// \u5BF9\u76D1\u542C\u5BF9\u5E94\u5FEB\u6377\u952E\u7684\u56DE\u8C03\u51FD\u6570\u8FDB\u884C\u5904\u7406\nfunction eventHandler(event, handler, scope, element) {\n if (handler.element !== element) {\n return;\n }\n let modifiersMatch;\n\n // \u770B\u5B83\u662F\u5426\u5728\u5F53\u524D\u8303\u56F4\n if (handler.scope === scope || handler.scope === 'all') {\n // \u68C0\u67E5\u662F\u5426\u5339\u914D\u4FEE\u9970\u7B26\uFF08\u5982\u679C\u6709\u8FD4\u56DEtrue\uFF09\n modifiersMatch = handler.mods.length > 0;\n for (const y in _mods) {\n if (Object.prototype.hasOwnProperty.call(_mods, y)) {\n if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {\n modifiersMatch = false;\n }\n }\n }\n\n // \u8C03\u7528\u5904\u7406\u7A0B\u5E8F\uFF0C\u5982\u679C\u662F\u4FEE\u9970\u952E\u4E0D\u505A\u5904\u7406\n if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {\n handler.keys = [];\n handler.keys = handler.keys.concat(_downKeys);\n if (handler.method(event, handler) === false) {\n if (event.preventDefault) event.preventDefault();else event.returnValue = false;\n if (event.stopPropagation) event.stopPropagation();\n if (event.cancelBubble) event.cancelBubble = true;\n }\n }\n }\n}\n\n// \u5904\u7406keydown\u4E8B\u4EF6\nfunction dispatch(event, element) {\n const asterisk = _handlers['*'];\n let key = event.keyCode || event.which || event.charCode;\n\n // \u8868\u5355\u63A7\u4EF6\u8FC7\u6EE4 \u9ED8\u8BA4\u8868\u5355\u63A7\u4EF6\u4E0D\u89E6\u53D1\u5FEB\u6377\u952E\n if (!hotkeys.filter.call(this, event)) return;\n\n // Gecko(Firefox)\u7684command\u952E\u503C224\uFF0C\u5728Webkit(Chrome)\u4E2D\u4FDD\u6301\u4E00\u81F4\n // Webkit\u5DE6\u53F3 command \u952E\u503C\u4E0D\u4E00\u6837\n if (key === 93 || key === 224) key = 91;\n\n /**\n * Collect bound keys\n * If an Input Method Editor is processing key input and the event is keydown, return 229.\n * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229\n * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n */\n if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);\n /**\n * Jest test cases are required.\n * ===============================\n */\n ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(keyName => {\n const keyNum = modifierMap[keyName];\n if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {\n _downKeys.push(keyNum);\n } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {\n _downKeys.splice(_downKeys.indexOf(keyNum), 1);\n } else if (keyName === 'metaKey' && event[keyName] && _downKeys.length === 3) {\n /**\n * Fix if Command is pressed:\n * ===============================\n */\n if (!(event.ctrlKey || event.shiftKey || event.altKey)) {\n _downKeys = _downKeys.slice(_downKeys.indexOf(keyNum));\n }\n }\n });\n /**\n * -------------------------------\n */\n\n if (key in _mods) {\n _mods[key] = true;\n\n // \u5C06\u7279\u6B8A\u5B57\u7B26\u7684key\u6CE8\u518C\u5230 hotkeys \u4E0A\n for (const k in _modifier) {\n if (_modifier[k] === key) hotkeys[k] = true;\n }\n if (!asterisk) return;\n }\n\n // \u5C06 modifierMap \u91CC\u9762\u7684\u4FEE\u9970\u952E\u7ED1\u5B9A\u5230 event \u4E2D\n for (const e in _mods) {\n if (Object.prototype.hasOwnProperty.call(_mods, e)) {\n _mods[e] = event[modifierMap[e]];\n }\n }\n /**\n * https://github.com/jaywcjlove/hotkeys/pull/129\n * This solves the issue in Firefox on Windows where hotkeys corresponding to special characters would not trigger.\n * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type \u03BC.\n * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate\n */\n if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {\n if (_downKeys.indexOf(17) === -1) {\n _downKeys.push(17);\n }\n if (_downKeys.indexOf(18) === -1) {\n _downKeys.push(18);\n }\n _mods[17] = true;\n _mods[18] = true;\n }\n\n // \u83B7\u53D6\u8303\u56F4 \u9ED8\u8BA4\u4E3A `all`\n const scope = getScope();\n // \u5BF9\u4EFB\u4F55\u5FEB\u6377\u952E\u90FD\u9700\u8981\u505A\u7684\u5904\u7406\n if (asterisk) {\n for (let i = 0; i < asterisk.length; i++) {\n if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {\n eventHandler(event, asterisk[i], scope, element);\n }\n }\n }\n // key \u4E0D\u5728 _handlers \u4E2D\u8FD4\u56DE\n if (!(key in _handlers)) return;\n const handlerKey = _handlers[key];\n const keyLen = handlerKey.length;\n for (let i = 0; i < keyLen; i++) {\n if (event.type === 'keydown' && handlerKey[i].keydown || event.type === 'keyup' && handlerKey[i].keyup) {\n if (handlerKey[i].key) {\n const record = handlerKey[i];\n const {\n splitKey\n } = record;\n const keyShortcut = record.key.split(splitKey);\n const _downKeysCurrent = []; // \u8BB0\u5F55\u5F53\u524D\u6309\u952E\u952E\u503C\n for (let a = 0; a < keyShortcut.length; a++) {\n _downKeysCurrent.push(code(keyShortcut[a]));\n }\n if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {\n // \u627E\u5230\u5904\u7406\u5185\u5BB9\n eventHandler(event, record, scope, element);\n }\n }\n }\n }\n}\nfunction hotkeys(key, option, method) {\n _downKeys = [];\n const keys = getKeys(key); // \u9700\u8981\u5904\u7406\u7684\u5FEB\u6377\u952E\u5217\u8868\n let mods = [];\n let scope = 'all'; // scope\u9ED8\u8BA4\u4E3Aall\uFF0C\u6240\u6709\u8303\u56F4\u90FD\u6709\u6548\n let element = document; // \u5FEB\u6377\u952E\u4E8B\u4EF6\u7ED1\u5B9A\u8282\u70B9\n let i = 0;\n let keyup = false;\n let keydown = true;\n let splitKey = '+';\n let capture = false;\n let single = false; // \u5355\u4E2Acallback\n\n // \u5BF9\u4E3A\u8BBE\u5B9A\u8303\u56F4\u7684\u5224\u65AD\n if (method === undefined && typeof option === 'function') {\n method = option;\n }\n if (Object.prototype.toString.call(option) === '[object Object]') {\n if (option.scope) scope = option.scope; // eslint-disable-line\n if (option.element) element = option.element; // eslint-disable-line\n if (option.keyup) keyup = option.keyup; // eslint-disable-line\n if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line\n if (option.capture !== undefined) capture = option.capture; // eslint-disable-line\n if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line\n if (option.single === true) single = true; // eslint-disable-line\n }\n if (typeof option === 'string') scope = option;\n\n // \u5982\u679C\u53EA\u5141\u8BB8\u5355\u4E2Acallback\uFF0C\u5148unbind\n if (single) unbind(key, scope);\n\n // \u5BF9\u4E8E\u6BCF\u4E2A\u5FEB\u6377\u952E\u8FDB\u884C\u5904\u7406\n for (; i < keys.length; i++) {\n key = keys[i].split(splitKey); // \u6309\u952E\u5217\u8868\n mods = [];\n\n // \u5982\u679C\u662F\u7EC4\u5408\u5FEB\u6377\u952E\u53D6\u5F97\u7EC4\u5408\u5FEB\u6377\u952E\n if (key.length > 1) mods = getMods(_modifier, key);\n\n // \u5C06\u975E\u4FEE\u9970\u952E\u8F6C\u5316\u4E3A\u952E\u7801\n key = key[key.length - 1];\n key = key === '*' ? '*' : code(key); // *\u8868\u793A\u5339\u914D\u6240\u6709\u5FEB\u6377\u952E\n\n // \u5224\u65ADkey\u662F\u5426\u5728_handlers\u4E2D\uFF0C\u4E0D\u5728\u5C31\u8D4B\u4E00\u4E2A\u7A7A\u6570\u7EC4\n if (!(key in _handlers)) _handlers[key] = [];\n _handlers[key].push({\n keyup,\n keydown,\n scope,\n mods,\n shortcut: keys[i],\n method,\n key: keys[i],\n splitKey,\n element\n });\n }\n // \u5728\u5168\u5C40document\u4E0A\u8BBE\u7F6E\u5FEB\u6377\u952E\n if (typeof element !== 'undefined' && window) {\n if (!elementEventMap.has(element)) {\n const keydownListener = function () {\n let event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.event;\n return dispatch(event, element);\n };\n const keyupListenr = function () {\n let event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.event;\n dispatch(event, element);\n clearModifier(event);\n };\n elementEventMap.set(element, {\n keydownListener,\n keyupListenr,\n capture\n });\n addEvent(element, 'keydown', keydownListener, capture);\n addEvent(element, 'keyup', keyupListenr, capture);\n }\n if (!winListendFocus) {\n const listener = () => {\n _downKeys = [];\n };\n winListendFocus = {\n listener,\n capture\n };\n addEvent(window, 'focus', listener, capture);\n }\n }\n}\nfunction trigger(shortcut) {\n let scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all';\n Object.keys(_handlers).forEach(key => {\n const dataList = _handlers[key].filter(item => item.scope === scope && item.shortcut === shortcut);\n dataList.forEach(data => {\n if (data && data.method) {\n data.method();\n }\n });\n });\n}\n\n// \u9500\u6BC1\u4E8B\u4EF6,unbind\u4E4B\u540E\u5224\u65ADelement\u4E0A\u662F\u5426\u8FD8\u6709\u952E\u76D8\u5FEB\u6377\u952E\uFF0C\u5982\u679C\u6CA1\u6709\u79FB\u9664\u76D1\u542C\nfunction removeKeyEvent(element) {\n const values = Object.values(_handlers).flat();\n const findindex = values.findIndex(_ref4 => {\n let {\n element: el\n } = _ref4;\n return el === element;\n });\n if (findindex < 0) {\n const {\n keydownListener,\n keyupListenr,\n capture\n } = elementEventMap.get(element) || {};\n if (keydownListener && keyupListenr) {\n removeEvent(element, 'keyup', keyupListenr, capture);\n removeEvent(element, 'keydown', keydownListener, capture);\n elementEventMap.delete(element);\n }\n }\n if (values.length <= 0 || elementEventMap.size <= 0) {\n // \u79FB\u9664\u6240\u6709\u7684\u5143\u7D20\u4E0A\u7684\u76D1\u542C\n const eventKeys = Object.keys(elementEventMap);\n eventKeys.forEach(el => {\n const {\n keydownListener,\n keyupListenr,\n capture\n } = elementEventMap.get(el) || {};\n if (keydownListener && keyupListenr) {\n removeEvent(el, 'keyup', keyupListenr, capture);\n removeEvent(el, 'keydown', keydownListener, capture);\n elementEventMap.delete(el);\n }\n });\n // \u6E05\u7A7A elementEventMap\n elementEventMap.clear();\n // \u6E05\u7A7A _handlers\n Object.keys(_handlers).forEach(key => delete _handlers[key]);\n // \u79FB\u9664window\u4E0A\u7684focus\u76D1\u542C\n if (winListendFocus) {\n const {\n listener,\n capture\n } = winListendFocus;\n removeEvent(window, 'focus', listener, capture);\n winListendFocus = null;\n }\n }\n}\nconst _api = {\n getPressedKeyString,\n setScope,\n getScope,\n deleteScope,\n getPressedKeyCodes,\n getAllKeyCodes,\n isPressed,\n filter,\n trigger,\n unbind,\n keyMap: _keyMap,\n modifier: _modifier,\n modifierMap\n};\nfor (const a in _api) {\n if (Object.prototype.hasOwnProperty.call(_api, a)) {\n hotkeys[a] = _api[a];\n }\n}\nif (typeof window !== 'undefined') {\n const _hotkeys = window.hotkeys;\n hotkeys.noConflict = deep => {\n if (deep && window.hotkeys === hotkeys) {\n window.hotkeys = _hotkeys;\n }\n return hotkeys;\n };\n window.hotkeys = hotkeys;\n}\n\nexport { hotkeys as default };\n", "// @ts-nocheck\nimport hotkeys from 'hotkeys-js';\nexport default {\n // @\u30DB\u30C3\u30C8\u30AD\u30FC\n '\u30DB\u30C3\u30C8\u30AD\u30FC\u767B\u9332': {\n type: 'func',\n josi: [['\u306B', '\u3067'], ['\u3092']],\n pure: true,\n fn: function (key, fname, sys) {\n hotkeys(key, function (event, handler) {\n event.preventDefault();\n const f = sys.__findFunc(fname);\n f(sys);\n });\n }\n },\n '\u30DB\u30C3\u30C8\u30AD\u30FC\u89E3\u9664': {\n type: 'func',\n josi: [['\u3092', '\u306E']],\n pure: true,\n fn: function (key) {\n hotkeys.unbind(key);\n }\n }\n};\n", "export default {\n // @\u30B0\u30E9\u30D5\u63CF\u753B_CHARTJS\n '\u30B0\u30E9\u30D5\u63CF\u753B': {\n type: 'func',\n josi: [['\u3092', '\u3067', '\u306E']],\n asyncFn: true,\n fn: async function (data, sys) {\n // Chart.js\u304C\u4F7F\u3048\u308B\u304B\u30C1\u30A7\u30C3\u30AF\n const win = sys.__getSysVar('WINDOW');\n if (typeof win === 'undefined') {\n throw new Error('\u300E\u30B0\u30E9\u30D5\u63CF\u753B\u300F\u306E\u30A8\u30E9\u30FC\u3002\u30D6\u30E9\u30A6\u30B6\u3067\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002');\n }\n // Chart.js\u304C\u306A\u3044\u306E\u3067\u81EA\u52D5\u7684\u306B\u53D6\u308A\u8FBC\u3080\n if (typeof win.Chart === 'undefined') {\n console.log('try to load chart.js');\n await sys.__loadScript('https://cdn.jsdelivr.net/npm/chart.js@4.4.0');\n console.log('loaded chart.js');\n }\n if (typeof win.Chart === 'undefined') {\n throw new Error('\u300E\u30B0\u30E9\u30D5\u63CF\u753B\u300F\u306E\u30A8\u30E9\u30FC\u3002Chart.js\u3092\u53D6\u308A\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002');\n }\n const Chart = win.Chart;\n // Canvas\u304C\u6709\u52B9\uFF1F\n if (!sys.__canvas) {\n throw new Error('\u300E\u30B0\u30E9\u30D5\u63CF\u753B\u300F\u306E\u30A8\u30E9\u30FC\u3002\u300E\u63CF\u753B\u958B\u59CB\u300F\u547D\u4EE4\u3067\u63CF\u753B\u5148\u306ECanvas\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 ');\n }\n // \u65E5\u672C\u8A9E\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u5909\u63DB\n if (data['\u30BF\u30A4\u30D7']) {\n data.type = data['\u30BF\u30A4\u30D7'];\n }\n if (data['\u30C7\u30FC\u30BF']) {\n data.data = data['\u30C7\u30FC\u30BF'];\n }\n if (data['\u30AA\u30D7\u30B7\u30E7\u30F3']) {\n data.options = data['\u30AA\u30D7\u30B7\u30E7\u30F3'];\n }\n if (sys.__chartjs) {\n sys.__chartjs.destroy();\n }\n // eslint-disable-next-line no-undef\n const chart = new Chart(sys.__canvas, data);\n sys.__chartjs = chart;\n return chart;\n }\n },\n '\u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3': { type: 'const', value: {} }, // @\u3050\u3089\u3075\u304A\u3077\u3057\u3087\u3093\n '\u7DDA\u30B0\u30E9\u30D5\u63CF\u753B': {\n type: 'func',\n josi: [['\u3092', '\u3067', '\u306E']],\n asyncFn: true,\n fn: async function (data, sys) {\n data = sys.__exec('\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62', ['line', data, sys]);\n const d = {\n type: 'line',\n data,\n options: sys.__getSysVar('\u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3')\n };\n return sys.__exec('\u30B0\u30E9\u30D5\u63CF\u753B', [d, sys]);\n }\n },\n '\u68D2\u30B0\u30E9\u30D5\u63CF\u753B': {\n type: 'func',\n josi: [['\u3092', '\u3067', '\u306E']],\n asyncFn: true,\n fn: async function (data, sys) {\n // \u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5DEE\u5206\u4F5C\u6210\n const gopt = Object.assign({}, sys.__getSysVar('\u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3'), { 'indexAxis': 'x' });\n data = sys.__exec('\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62', ['bar', data, sys]);\n const d = {\n type: 'bar',\n data,\n options: gopt\n };\n return sys.__exec('\u30B0\u30E9\u30D5\u63CF\u753B', [d, sys]);\n }\n },\n '\u6A2A\u68D2\u30B0\u30E9\u30D5\u63CF\u753B': {\n type: 'func',\n josi: [['\u3092', '\u3067', '\u306E']],\n pure: true,\n asyncFn: true,\n fn: async function (data, sys) {\n // \u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5DEE\u5206\u4F5C\u6210\n const gopt = Object.assign({}, sys.__getSysVar('\u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3'), { 'indexAxis': 'y' });\n data = sys.__exec('\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62', ['bar', data, sys]);\n const d = {\n type: 'bar', // horizontalBar\n data,\n options: gopt\n };\n return sys.__exec('\u30B0\u30E9\u30D5\u63CF\u753B', [d, sys]);\n }\n },\n '\u7A4D\u4E0A\u68D2\u30B0\u30E9\u30D5\u63CF\u753B': {\n type: 'func',\n josi: [['\u3092', '\u3067', '\u306E']],\n asyncFn: true,\n fn: async function (data, sys) {\n // \u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5DEE\u5206\u4F5C\u6210\n const gopt = Object.assign({}, sys.__getSysVar('\u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3'), {\n 'indexAxis': 'x',\n 'scales': {\n x: { stacked: true },\n y: { stacked: true }\n }\n });\n data = sys.__exec('\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62', ['bar', data, sys]);\n const d = {\n type: 'bar',\n data,\n options: gopt\n };\n return sys.__exec('\u30B0\u30E9\u30D5\u63CF\u753B', [d, sys]);\n }\n },\n '\u7A4D\u4E0A\u6A2A\u68D2\u30B0\u30E9\u30D5\u63CF\u753B': {\n type: 'func',\n josi: [['\u3092', '\u3067', '\u306E']],\n asyncFn: true,\n fn: async function (data, sys) {\n // \u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5DEE\u5206\u4F5C\u6210\n const gopt = Object.assign({}, sys.__getSysVar('\u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3'), {\n 'indexAxis': 'y',\n 'scales': {\n x: { stacked: true },\n y: { stacked: true }\n }\n });\n data = sys.__exec('\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62', ['bar', data, sys]);\n const d = {\n type: 'bar',\n data,\n options: gopt\n };\n return sys.__exec('\u30B0\u30E9\u30D5\u63CF\u753B', [d, sys]);\n }\n },\n '\u6563\u5E03\u56F3\u63CF\u753B': {\n type: 'func',\n josi: [['\u3092', '\u3067', '\u306E']],\n asyncFn: true,\n fn: async function (data, sys) {\n // \u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5DEE\u5206\u4F5C\u6210\n const gopt = Object.assign({}, sys.__getSysVar('\u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3'), {});\n data = sys.__exec('\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62', ['scatter', data, sys]);\n const d = {\n type: 'scatter',\n data,\n options: gopt\n };\n return sys.__exec('\u30B0\u30E9\u30D5\u63CF\u753B', [d, sys]);\n }\n },\n '\u5186\u30B0\u30E9\u30D5\u63CF\u753B': {\n type: 'func',\n josi: [['\u3092', '\u3067', '\u306E']],\n asyncFn: true,\n fn: async function (data, sys) {\n data = sys.__exec('\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62', ['pie', data, sys]);\n const d = {\n type: 'pie',\n data,\n options: sys.__getSysVar('\u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3')\n };\n return sys.__exec('\u30B0\u30E9\u30D5\u63CF\u753B', [d, sys]);\n }\n },\n '\u30C9\u30FC\u30CA\u30C4\u30B0\u30E9\u30D5\u63CF\u753B': {\n type: 'func',\n josi: [['\u3092', '\u3067', '\u306E']],\n asyncFn: true,\n fn: async function (data, sys) {\n data = sys.__exec('\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62', ['pie', data, sys]);\n const d = {\n type: 'doughnut',\n data,\n options: sys.__getSysVar('\u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3')\n };\n return sys.__exec('\u30B0\u30E9\u30D5\u63CF\u753B', [d, sys]);\n }\n },\n '\u30DD\u30FC\u30E9\u30FC\u30B0\u30E9\u30D5\u63CF\u753B': {\n type: 'func',\n josi: [['\u3092', '\u3067', '\u306E']],\n asyncFn: true,\n fn: async function (data, sys) {\n data = sys.__exec('\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62', ['pie', data, sys]);\n const d = {\n type: 'polarArea',\n data,\n options: sys.__getSysVar('\u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3')\n };\n return sys.__exec('\u30B0\u30E9\u30D5\u63CF\u753B', [d, sys]);\n }\n },\n '\u30EC\u30FC\u30C0\u30FC\u30B0\u30E9\u30D5\u63CF\u753B': {\n type: 'func',\n josi: [['\u3092', '\u3067', '\u306E']],\n asyncFn: true,\n fn: async function (data, sys) {\n data = sys.__exec('\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62', ['bar', data, sys]);\n const d = {\n type: 'radar',\n data,\n options: sys.__getSysVar('\u30B0\u30E9\u30D5\u30AA\u30D7\u30B7\u30E7\u30F3')\n };\n return sys.__exec('\u30B0\u30E9\u30D5\u63CF\u753B', [d, sys]);\n }\n },\n '\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62': {\n type: 'func',\n josi: [['\u306E'], ['\u3092']],\n fn: function (t, dataOrg, sys) {\n // \u30C7\u30FC\u30BF\u3092\u7834\u58CA\u7684\u306B\u5909\u66F4\u3057\u3066\u3057\u307E\u3046\u306E\u3067\u6700\u521D\u306B\u30C7\u30FC\u30BF\u3092\u30B3\u30D4\u30FC (#1416)\n const data = JSON.parse(JSON.stringify(dataOrg));\n const bgcolorList = [\n 'rgba(255, 99, 132, 0.2)',\n 'rgba(54, 162, 235, 0.2)',\n 'rgba(255, 206, 86, 0.2)',\n 'rgba(75, 192, 192, 0.2)',\n 'rgba(153, 102, 255, 0.2)',\n 'rgba(255, 159, 64, 0.2)'\n ];\n const fgcolorList = [\n 'rgba(255, 99, 132, 1)',\n 'rgba(54, 162, 235, 1)',\n 'rgba(255, 206, 86, 1)',\n 'rgba(75, 192, 192, 1)',\n 'rgba(153, 102, 255, 1)',\n 'rgba(255, 159, 64, 1)'\n ];\n const res = {};\n const bgcolors = [];\n const fgcolors = [];\n res.labels = [];\n // \u914D\u5217\u304B\u3069\u3046\u304B\n if (data instanceof Array) {\n // \u4E8C\u6B21\u5143\u30C7\u30FC\u30BF\u306E\u3068\u304D\n if (data[0] instanceof Array) {\n if (t === 'pie') { // \u5186\u30B0\u30E9\u30D5\u306E\u6642\u3060\u3051\u6574\u5F62\u65B9\u6CD5\u304C\u7570\u306A\u308B\n const o = {};\n o.data = [];\n res.datasets = [o];\n for (let i = 0; i < data.length; i++) {\n res.labels.push(data[i][0]); // label\n o.data.push(data[i][1]); // value\n bgcolors.push(bgcolorList[i % 6]);\n fgcolors.push(fgcolorList[i % 6]);\n }\n o.backgroundColor = bgcolors;\n o.borderColor = fgcolors;\n return res;\n }\n // \u5DE6\u5074\u306E\u30E9\u30D9\u30EB\u306E\u51E6\u7406\n // [1,0]\u304C\u6587\u5B57\u5217\u306A\u3089\u30E9\u30D9\u30EB\u3042\u308A\n if (typeof (data[1][0]) === 'string') {\n for (let i = 1; i < data.length; i++) {\n res.labels.push(data[i][0]); // \u5DE6\u30E9\u30D9\u30EB\u3092\u8FFD\u52A0\n data[i] = data[i].slice(1); // \u5DE6\u30E9\u30D9\u30EB\u9664\u53BB\n }\n data[0] = data[0].slice(1); // \u30D8\u30C3\u30C0\u884C\u3082\u5DE6\u30E9\u30D9\u30EB\u3092\u524A\u9664\n }\n else {\n // \u5DE6\u5074\u30E9\u30D9\u30EB\u306A\u3044\u5834\u5408 - \u30C0\u30DF\u30FC\u306E\u30E9\u30D9\u30EB\u3092\u8FFD\u52A0\n for (let i = 1; i < data.length; i++) {\n res.labels.push(i);\n }\n }\n res.datasets = [];\n for (let i = 0; i < data[0].length; i++) {\n const o = {};\n res.datasets.push(o);\n o.label = data[0][i];\n o.backgroundColor = bgcolorList[i % 6];\n o.borderColor = fgcolorList[i % 6];\n o.data = [];\n for (let j = 1; j < data.length; j++) {\n o.data.push(data[j][i]);\n }\n }\n return res;\n }\n // \u4E00\u6B21\u5143\u30C7\u30FC\u30BF\u306E\u3068\u304D\n // \u30E9\u30D9\u30EB\u3092\u4F5C\u6210\n for (let i = 0; i < data.length; i++) {\n res.labels.push(i + 1);\n bgcolors.push(bgcolorList[i % 6]);\n fgcolors.push(fgcolorList[i % 6]);\n }\n const o1 = {};\n res.datasets = [o1];\n o1.label = '\u30C7\u30FC\u30BF';\n o1.data = data;\n o1.backgroundColor = bgcolors;\n o1.borderColor = fgcolors;\n return res;\n }\n if (data instanceof Object) {\n return data;\n }\n // \u30C7\u30FC\u30BF\u304C1\u3064\u3060\u3051\u306E\u3068\u304D\n return sys.__exec('\u4E8C\u6B21\u5143\u30B0\u30E9\u30D5\u30C7\u30FC\u30BF\u5909\u5F62', [[data], sys]);\n }\n }\n};\n", "export default {\n // @\u30CF\u30C3\u30B7\u30E5\u95A2\u6570\n '\u30CF\u30C3\u30B7\u30E5\u5024\u8A08\u7B97\u6642': {\n type: 'func',\n josi: [['\u3078'], ['\u3092'], ['\u3067']],\n pure: true,\n fn: function (func, s, alg, sys) {\n func = sys.__findVar(func, null); // \u6587\u5B57\u5217\u6307\u5B9A\u306A\u3089\u95A2\u6570\u306B\u5909\u63DB\n // convert\n const buffer = new TextEncoder().encode(s);\n crypto.subtle.digest(alg, buffer).then(function (hash) {\n const codes = [];\n const view = new DataView(hash);\n for (let i = 0; i < view.byteLength; i += 4) {\n const v = view.getUint32(i);\n const h = v.toString(16);\n const pad = '00' + h;\n codes.push(pad.substr(pad.length - 2, 2));\n }\n const res = sys.__setSysVar('\u5BFE\u8C61', codes.join(''));\n func(res);\n });\n },\n return_none: true\n }\n};\n", "// plugin_browser\n// @ts-nocheck\nimport PartBrowserColor from './plugin_browser_color.mjs';\nimport PartBrowserSystem from './plugin_browser_system.mjs';\nimport PartBrowserDialog from './plugin_browser_dialog.mjs';\nimport PartBrowserLocation from './plugin_browser_location.mjs';\nimport PartBrowserAjax from './plugin_browser_ajax.mjs';\nimport PartBrowserDomBasic from './plugin_browser_dom_basic.mjs';\nimport PartBrowserDomEvent from './plugin_browser_dom_event.mjs';\nimport PartBrowserDomParts from './plugin_browser_dom_parts.mjs';\nimport PartBrowserHtml from './plugin_browser_html.mjs';\nimport PartBrowserStorage from './plugin_browser_storage.mjs';\nimport PartBrowserCanvas from './plugin_browser_canvas.mjs';\nimport PartBrowserGeolocation from './plugin_browser_geolocation.mjs';\nimport PartBrowserSpeech from './plugin_browser_speech.mjs';\nimport PartBrowserWebsocket from './plugin_browser_websocket.mjs';\nimport PartBrowserAudio from './plugin_browser_audio.mjs';\nimport PartBrowserHotkey from './plugin_browser_hotkey.mjs';\nimport PartBrowserChart from './plugin_browser_chart.mjs';\nimport PartBrowserCrypto from './plugin_browser_crypto.mjs';\nconst BrowserParts = [\n PartBrowserColor,\n PartBrowserSystem,\n PartBrowserDialog,\n PartBrowserLocation,\n PartBrowserAjax,\n PartBrowserDomBasic,\n PartBrowserDomEvent,\n PartBrowserDomParts,\n PartBrowserHtml,\n PartBrowserStorage,\n PartBrowserCanvas,\n PartBrowserGeolocation,\n PartBrowserSpeech,\n PartBrowserWebsocket,\n PartBrowserAudio,\n PartBrowserHotkey,\n PartBrowserChart,\n PartBrowserCrypto\n];\nconst PluginBrowser = {\n 'meta': {\n type: 'const',\n value: {\n pluginName: 'plugin_browser', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\n description: '\u30D6\u30E9\u30A6\u30B6\u7528\u306E\u30D7\u30E9\u30B0\u30A4\u30F3', // \u8AAC\u660E\n pluginVersion: '3.6.0', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\n nakoRuntime: ['wnako'], // \u5BFE\u8C61\u30E9\u30F3\u30BF\u30A4\u30E0\n nakoVersion: '3.6.0' // \u8981\u6C42\u306A\u3067\u3057\u3053\u30D0\u30FC\u30B8\u30E7\u30F3\n }\n },\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n /* eslint no-global-assign: 0 */\n const doc = (typeof document === 'undefined') ? { 'body': {} } : document;\n const win = (typeof window === 'undefined') ? { 'location': { 'href': 'http://localhost/' } } : window;\n const nav = (typeof navigator === 'undefined') ? {} : navigator;\n const loc = (typeof win.location === 'undefined') ? { 'href': 'http://localhost/' } : win.location;\n // \u5B9A\u6570\u3092\u521D\u671F\u5316\n sys.__setSysVar('AJAX:ONERROR', (err) => { console.log(err); });\n // \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u521D\u671F\u5316\n sys.__setSysVar('DOCUMENT', doc);\n sys.__setSysVar('WINDOW', win);\n sys.__setSysVar('NAVIGATOR', nav);\n sys.__setSysVar('DOM\u89AA\u8981\u7D20', doc.body);\n sys.__setSysVar('\u30D6\u30E9\u30A6\u30B6URL', loc.href);\n // \u4FBF\u5229\u306A\u30E1\u30BD\u30C3\u30C9\u3092\u5B9A\u7FA9\n sys.__tohtml = (text) => {\n return ('' + text)\n .replace(/&/g, '&')\n .replace(/>/g, '>')\n .replace(/</g, '<');\n };\n sys.__tohtmlQ = (text) => {\n return sys.__tohtml(text)\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n };\n // \u300C!\u30AF\u30EA\u30A2\u300D\u3067DOM\u30A4\u30D9\u30F3\u30C8\u3092\u524A\u9664\u3059\u308B\u305F\u3081\n sys.__dom_events = []; // [{}, {}, {} ...]\n // DOM\u8FFD\u52A0\u30A4\u30D9\u30F3\u30C8\n sys.__addEvent = (dom, event, func, setHandler) => {\n // dom\n if (typeof (dom) === 'string') {\n dom = doc.querySelector(dom);\n if (!dom) {\n throw new Error('DOM\u30A4\u30D9\u30F3\u30C8\u304C\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002\u8981\u7D20\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002');\n }\n }\n // func\n if (typeof (func) === 'string') {\n func = sys.__findVar(func, null);\n if (!func) {\n throw new Error('DOM\u30A4\u30D9\u30F3\u30C8\u304C\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002\u95A2\u6570\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002');\n }\n }\n // make wrapper func\n const wrapperFunc = (e) => {\n sys.__setSysVar('\u5BFE\u8C61', e.target);\n sys.__setSysVar('\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8', e);\n // \u8FFD\u52A0\u30C7\u30FC\u30BF\u304C\u5F97\u3089\u308C\u308B\u5834\u5408\n if (setHandler) {\n setHandler(e, sys);\n }\n if (sys.__genMode === '\u975E\u540C\u671F\u30E2\u30FC\u30C9') {\n sys.newenv = true;\n }\n return func(e, sys);\n };\n // add\n sys.__dom_events.push({ dom, event, func: wrapperFunc, rawFunc: func });\n dom.addEventListener(event, wrapperFunc);\n };\n // \u30AD\u30FC\u30A4\u30D9\u30F3\u30C8\u30CF\u30F3\u30C9\u30E9\n sys.__keyHandler = (e, sys) => {\n sys.__setSysVar('\u62BC\u30AD\u30FC', e.key);\n };\n // \u30DE\u30A6\u30B9\u30A4\u30D9\u30F3\u30C8\u30CF\u30F3\u30C9\u30E9\n sys.__mouseHandler = (e, sys) => {\n const box = e.target.getBoundingClientRect();\n sys.__setSysVar('\u30DE\u30A6\u30B9X', e.clientX - box.left);\n sys.__setSysVar('\u30DE\u30A6\u30B9Y', e.clientY - box.top);\n };\n // \u30BF\u30C3\u30C1\u30A4\u30D9\u30F3\u30C8\u30CF\u30F3\u30C9\u30E9\n sys.__touchHandler = (e, sys) => {\n const box = e.target.getBoundingClientRect();\n const touches = e.changedTouches;\n if (touches.length <= 0) {\n return;\n }\n const ts = [];\n for (let i = 0; i < touches.length; i++) {\n const t = touches[i];\n const tx = t.clientX - box.left;\n const ty = t.clientY - box.top;\n if (i === 0) {\n sys.__setSysVar('\u30BF\u30C3\u30C1X', tx);\n sys.__setSysVar('\u30BF\u30C3\u30C1Y', ty);\n }\n ts.push([tx, ty]);\n }\n sys.__setSysVar('\u30BF\u30C3\u30C1\u914D\u5217', ts);\n return ts;\n };\n // DOM\u30A4\u30D9\u30F3\u30C8\u524A\u9664 (\u63A2\u3057\u3066\u524A\u9664)\n sys.__removeEvent = (dom, event, func) => {\n // dom\n if (typeof (dom) === 'string') {\n dom = doc.querySelector(dom);\n if (!dom) {\n throw new Error('DOM\u30A4\u30D9\u30F3\u30C8\u304C\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3002\u8981\u7D20\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002');\n }\n }\n // func\n if (typeof (func) === 'string') {\n func = sys.__findVar(func, null);\n if (!func) {\n throw new Error('DOM\u30A4\u30D9\u30F3\u30C8\u304C\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3002\u95A2\u6570\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002');\n }\n }\n // find\n for (let i = 0; i < sys.__dom_events.length; i++) {\n const e = sys.__dom_events[i];\n if (e.dom === dom && e.event === event && e.rawFunc === func) {\n e.dom.removeEventListener(e.event, e.func);\n sys.__dom_events.splice(i, 1);\n break;\n }\n }\n };\n // requestAnimationFrame \u306E\u305F\u3081\u306Eid\n sys.__requestAnimationFrameLastId = 0;\n // DOM\u30A4\u30D9\u30F3\u30C8\u5168\u30AF\u30EA\u30A2\n sys.__removeAllDomEvent = () => {\n sys.__dom_events.forEach(e => {\n e.dom.removeEventListener(e.event, e.func);\n });\n sys.__dom_events = [];\n // requestAnimationFrame\n if (sys.__requestAnimationFrameLastId > 0) {\n win.cancelAnimationFrame(sys.__requestAnimationFrameLastId);\n sys.__requestAnimationFrameLastId = 0;\n }\n };\n // DOM\u53D6\u5F97\u306E\u305F\u3081\u306B\u4F7F\u3046\n sys.__query = (dom, commandName, isGetFunc) => {\n const elm = (typeof dom === 'string') ? document.querySelector(dom) : dom;\n if (!elm) {\n if (isGetFunc) {\n // \u53D6\u5F97\u30A4\u30D9\u30F3\u30C8\u3067\u306F\u30B3\u30F3\u30BD\u30FC\u30EB\u306B\u30D2\u30F3\u30C8\u3092\u51FA\u3059\n console.warn(`[\u30D2\u30F3\u30C8](${sys.__getSysVar('__line')})\u300E${commandName}\u300F\u3067DOM\u53D6\u5F97\u306B\u5931\u6557\u3057\u3066\u3044\u307E\u3059\u3002DOM=`, dom);\n }\n else {\n // \u8A2D\u5B9A\u30A4\u30D9\u30F3\u30C8\u3067\u306F\u5B9F\u884C\u6642\u30A8\u30E9\u30FC\u306B\u3059\u308B\n const desc = (typeof dom === 'string') ? dom : String(dom);\n throw new Error(`\u300E${commandName}\u300F\u3067\u30AF\u30A8\u30EA\u300E${desc}\u300F\u3067DOM\u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002`);\n }\n }\n return elm;\n };\n // \u52D5\u7684\u306BJS\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u53D6\u308A\u8FBC\u3080\n sys.__loadScript = (url) => {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = url;\n script.onload = resolve;\n script.onerror = () => {\n reject(new Error(`Failed to load script at url: ${url}`));\n };\n document.getElementsByTagName('head')[0].appendChild(script);\n });\n };\n }\n },\n '!\u30AF\u30EA\u30A2': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n // chart.js\u3092\u7834\u68C4\n if (sys.__chartjs) {\n sys.__chartjs.destroy();\n }\n // \u5168DOM\u30A4\u30D9\u30F3\u30C8\u3092\u30AF\u30EA\u30A2\n sys.__removeAllDomEvent();\n }\n }\n};\nBrowserParts.forEach((a) => {\n const b = {};\n Object.assign(b, a);\n // \u5404\u30E2\u30B8\u30E5\u30FC\u30EB\u3067\u306E\u521D\u671F\u5316\u51E6\u7406\u306F\u8A8D\u3081\u306A\u3044\n if (typeof b['\u521D\u671F\u5316'] !== 'undefined') {\n delete b['\u521D\u671F\u5316'];\n }\n Object.assign(PluginBrowser, b);\n});\nexport default PluginBrowser;\n", "// wnako3mod - nadesiko for web browser\n// - wnako3 \u304B\u3089 wnako3mod \u3092\u53D6\u308A\u8FBC\u3080\u3002\n// - \u3053\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u3057\u3066\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u53D6\u308A\u8FBC\u307F\u53EF\u80FD\u3002\nimport { NakoCompiler } from '../core/src/nako3.mjs';\nimport { NakoImportError } from '../core/src/nako_errors.mjs';\nimport { setupEditor } from './wnako3_editor.mjs';\nimport nakoVersion from './nako_version.mjs';\nimport PluginBrowser from './plugin_browser.mjs';\nconst NAKO_SCRIPT_RE = /^(\u306A\u3067\u3057\u3053|nako|nadesiko)3?$/;\nexport class WebNakoCompiler extends NakoCompiler {\n constructor() {\n super({ useBasicPlugin: true });\n this.version = nakoVersion.version;\n this.wnakoVersion = nakoVersion;\n this.localFiles = {};\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u8FFD\u52A0\n this.addPluginObject('PluginBrowser', PluginBrowser);\n // \u5FC5\u8981\u306A\u5B9A\u6570\u3092\u8A2D\u5B9A\n this.addListener('beforeRun', (g) => {\n // \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u8A2D\u5B9A\n g.__varslist[0].set('\u30CA\u30C7\u30B7\u30B3\u7A2E\u985E', 'wnako3');\n g.__varslist[0].set('\u30CA\u30C7\u30B7\u30B3\u30D0\u30FC\u30B8\u30E7\u30F3', nakoVersion.version);\n g.__varslist[0].set('WNAKO\u30D0\u30FC\u30B8\u30E7\u30F3', nakoVersion.version);\n });\n }\n /**\n * \u30D6\u30E9\u30A6\u30B6\u3067type=\"\u306A\u3067\u3057\u3053\"\u3068\u3044\u3046\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5F97\u3066\u5B9F\u884C\u3059\u308B\n */\n async runNakoScript() {\n // \u30B9\u30AF\u30EA\u30D7\u30C8\u30BF\u30B0\u306E\u4E2D\u8EAB\u3092\u5F97\u308B\n let nakoScriptCount = 0;\n const scripts = document.querySelectorAll('script');\n for (let i = 0; i < scripts.length; i++) {\n const script = scripts[i];\n if (script.type.match(NAKO_SCRIPT_RE)) {\n nakoScriptCount++;\n // URL\u304B\u3089\u30B9\u30AF\u30EA\u30D7\u30C8\u540D\u3092\u898B\u3064\u3051\u308B\n const url = (typeof (window.location) === 'object') ? window.location.href : 'url_unknown';\n const fname = `${url}#script${nakoScriptCount}.nako3`;\n const code = script.text;\n // \u4F9D\u5B58\u3059\u308B\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u30ED\u30FC\u30C9\n await this.loadDependencies(code, fname);\n // \u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u5B9F\u884C\n await this.runAsync(script.text, fname);\n }\n }\n if (nakoScriptCount > 1) {\n console.log('\u5B9F\u884C\u3057\u305F\u306A\u3067\u3057\u3053\u306E\u500B\u6570=', nakoScriptCount);\n }\n }\n /** \u53D6\u308A\u8FBC\u3080\u6587\u3092\u5B9F\u884C\u3059\u308B */\n async loadDependencies(code, filename, preCode = '', localFiles = {}) {\n this.localFiles = localFiles || {};\n return this._loadDependencies(code, filename, preCode, this.getLoaderTool());\n }\n /**\n * type=\u306A\u3067\u3057\u3053 \u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u81EA\u52D5\u5B9F\u884C\u3059\u308B\u3079\u304D\u304B\u3069\u3046\u304B\u3092\u8FD4\u3059\n * @returns type=\u306A\u3067\u3057\u3053 \u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u81EA\u52D5\u5B9F\u884C\u3059\u308B\u3079\u304D\u304B\u3069\u3046\u304B\n */\n checkScriptTagParam() {\n const scripts = document.querySelectorAll('script');\n for (let i = 0; i < scripts.length; i++) {\n const script = scripts[i];\n const src = script.src || '';\n if (src.indexOf('wnako3.js?run') >= 0 ||\n src.indexOf('wnako3.js&run') >= 0) {\n return true;\n }\n }\n return false;\n }\n /**\n * \u6307\u5B9A\u3057\u305Fid\u306EHTML\u8981\u7D20\u3092\u306A\u3067\u3057\u3053\u8A00\u8A9E\u306E\u30A8\u30C7\u30A3\u30BF\u306B\u3059\u308B\u3002\n * @param {string | Element} idOrElement HTML\u8981\u7D20\n * @see {setupEditor}\n */\n setupEditor(idOrElement) {\n return setupEditor(idOrElement, this, window.ace);\n }\n /** \u306A\u3067\u3057\u30533\u306E\u300E\u53D6\u308A\u8FBC\u3080\u300F\u547D\u4EE4\u306E\u305F\u3081\u306E\u8AAD\u307F\u8FBC\u307F\u30C4\u30FC\u30EB */\n getLoaderTool() {\n const tool = { readJs: this.readJs, readNako3: this.readNako3, resolvePath: this.resolvePath };\n return tool;\n }\n /** JS\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8AAD\u307F\u8FBC\u307F */\n readJs(filePath, token) {\n if (this.localFiles && this.localFiles[filePath]) {\n return {\n task: (async () => () => {\n // eslint-disable-next-line no-new-func\n Function(this.localFiles[filePath])();\n return {};\n })()\n };\n }\n return {\n task: (async () => {\n // \u3082\u3057\u52D5\u7684\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u308C\u3070\u52D5\u7684\u30A4\u30F3\u30DD\u30FC\u30C8\u3092\u8A66\u3059\n const basename = ('/' + filePath).split('/').pop() || '?';\n /*\n try {\n const obj = await import(filePath)\n this.addPluginObject(basename, obj)\n return {}\n } catch (e) { }\n */\n // WebPack\u306E\u95A2\u4FC2\u3067\u52D5\u7684\u30A4\u30F3\u30DD\u30FC\u30C8\u304C\u5931\u6557\u3059\u308B\u306E\u3067\u3001\u30C6\u30AD\u30B9\u30C8\u3068\u3057\u3066JS\u30BD\u30FC\u30B9\u3092\u53D6\u308A\u51FA\u3057\u3066\u51E6\u7406\u3059\u308B\n // JavaScript\u3092\u30C6\u30AD\u30B9\u30C8\u3068\u3057\u3066\u53D6\u5F97\n const res = await fetch(filePath);\n if (!res.ok) {\n throw new NakoImportError(`\u30D5\u30A1\u30A4\u30EB\u300E${filePath}\u300F\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${res.status} ${res.statusText}`, token.file, token.line);\n }\n let jstext = await res.text();\n // ESModule\u3063\u307D\u3051\u308C\u3070 `default export`\u3092\u7F6E\u304D\u63DB\u3048\u308B\n const r = Math.floor(Math.random() * 1000000);\n const exportName = `exportObject${r}`;\n if (jstext.includes('default export')) {\n jstext = jstext.replace('default export', `;let ${exportName} = `);\n jstext += `\\n;navigator.nako3.addPluginObject('${basename}', ${exportName});\\n`;\n }\n // addPluginObject\u304C\u5B58\u5728\u3059\u308B\n if (!jstext.includes('navigator.nako3.addPluginObject')) {\n throw new NakoImportError(`\u30D5\u30A1\u30A4\u30EB ${filePath} \u306E\u4E2D\u306B\u6587\u5B57\u5217 \"navigator.nako3.addPluginObject\" \u304C\u5B58\u5728\u3057\u307E\u305B\u3093\u3002\u73FE\u5728\u3001\u30D6\u30E9\u30A6\u30B6\u7248\u306E\u306A\u3067\u3057\u3053\u8A00\u8A9Ev3\u306F\u81EA\u52D5\u767B\u9332\u3059\u308B\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u307F\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u3002`, token.file, token.line);\n }\n const gNavigator = navigator;\n const gSelf = gNavigator.nako3;\n // text\u306E\u4F8B: `navigator.nako3.addPluginObject('PluginRequireTest', { requiretest: { type: 'var', value: 100 } })`\n return () => {\n // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u81EA\u52D5\u767B\u9332\u306F navigator.nako3 \u3092\u53C2\u7167\u3059\u308B\u305F\u3081\u3001 navigator.nako3 \u3092\u4E00\u6642\u7684\u306B\u73FE\u5728\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u306B\u3059\u308B\u3002\n const globalNavigator = gNavigator;\n const globalNako3 = globalNavigator.nako3;\n globalNavigator.nako3 = gSelf;\n try {\n // eslint-disable-next-line no-new-func\n const f = Function(jstext);\n f.apply(gSelf.__globalObj);\n }\n catch (err) {\n throw new NakoImportError(`\u30D7\u30E9\u30B0\u30A4\u30F3 ${filePath} \u306E\u53D6\u308A\u8FBC\u307F\u306B\u5931\u6557: ${err instanceof Error ? err.message : err + ''}`, token.file, token.line);\n }\n finally {\n globalNavigator.nako3 = globalNako3;\n }\n return {};\n };\n })()\n };\n }\n /** NAKO3\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8AAD\u307F\u8FBC\u307F */\n readNako3(filePath, token) {\n if (this.localFiles && this.localFiles[filePath]) { // \u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u3092\u4F7F\u3046\u5834\u5408\n return {\n task: (() => {\n return (new Promise((resolve, reject) => {\n const s = this.localFiles[filePath];\n resolve(s);\n }));\n })()\n };\n }\n return {\n task: (async () => {\n const res = await fetch(filePath);\n if (!res.ok) {\n throw new NakoImportError(`\u30D5\u30A1\u30A4\u30EB ${filePath} \u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${res.status} ${res.statusText}`, token.file, token.line);\n }\n return await res.text();\n })()\n };\n }\n /** \u8AAD\u307F\u8FBC\u307F\u3067\u30D1\u30B9\u3092\u89E3\u6C7A\u3059\u308B */\n resolvePath(name, token, fromFile) {\n let pathname = name;\n // http \u304B\u3089\u59CB\u307E\u3063\u3066\u3044\u308C\u3070\u89E3\u6C7A\u306F\u4E0D\u8981\n if (pathname.match(/^https?:\\/\\//)) { // \u30D5\u30EB\u30D1\u30B9\u306A\u3089\u89E3\u6C7A\u4E0D\u8981\n }\n else if (this.localFiles && this.localFiles[name]) {\n pathname = this.localFiles[name];\n }\n else {\n try {\n pathname = new URL(name).pathname;\n }\n catch (e) {\n // \u5358\u7D14\u306B\u30D1\u30B9\u306B\u5909\u63DB\u3067\u304D\u306A\u3051\u308C\u3070\u3001location.href\u3092\u53C2\u8003\u306B\u30D1\u30B9\u3092\u7D44\u307F\u7ACB\u3066\u308B\n try {\n let baseDir = dirname(fromFile);\n if (baseDir === '') {\n // https://2/3/4.html\n const a = window.location.href.split('/');\n baseDir = '/' + a.slice(3, a.length - 1).join('/');\n }\n pathname = resolveURL(baseDir, name);\n }\n catch (e) {\n throw new NakoImportError(`\u53D6\u308A\u8FBC\u307F\u6587\u306E\u5F15\u6570\u3067\u30D1\u30B9\u304C\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002https:// \u304B http:// \u3067\u59CB\u307E\u308B\u30A2\u30C9\u30EC\u30B9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\\n${e}`, token.file, token.line);\n }\n }\n }\n // \u62E1\u5F35\u5B50\u306B\u3088\u3063\u3066\u30D7\u30E9\u30B0\u30A4\u30F3\u30BF\u30A4\u30D7\u3092\u5206\u5C90\u3059\u308B\n const checkExt = (name, extlist) => {\n for (const ext of extlist) {\n if (name.endsWith(ext)) {\n return true;\n }\n if (name.endsWith(ext + '.txt')) {\n return true;\n } // '.mjs.txt' \u306B\u3082\u30DE\u30C3\u30C1\n }\n return false;\n };\n // URL\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u8003\u616E\u3059\u308B\n const aname = (pathname + '?').split('?')[0];\n // JS\u30D7\u30E9\u30B0\u30A4\u30F3 \u2192 (.js|.mjs)\n // NAKO3\u30D7\u30E9\u30B0\u30A4\u30F3 \u2192 (.nako3|.nako)\n if (checkExt(aname, ['.js', '.mjs'])) {\n return { filePath: pathname, type: 'js' };\n }\n if (checkExt(aname, ['.nako3', '.nako'])) {\n return { filePath: pathname, type: 'nako3' };\n }\n if (checkExt(pathname, ['.js', '.mjs'])) {\n return { filePath: pathname, type: 'js' };\n }\n if (checkExt(pathname, ['.nako3', '.nako'])) {\n return { filePath: pathname, type: 'nako3' };\n }\n // \u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50\u304C\u672A\u6307\u5B9A\u306E\u5834\u5408\n throw new NakoImportError(`\u30D5\u30A1\u30A4\u30EB\u300E${name}\u300F\u306F\u62E1\u5F35\u5B50\u304C(.nako3|.js|.js.txt|.mjs|.mjs.txt)\u4EE5\u5916\u306A\u306E\u3067\u53D6\u308A\u8FBC\u3081\u307E\u305B\u3093\u3002`, token.file, token.line);\n }\n}\nfunction dirname(s) {\n const a = s.split('/');\n if (a && a.length > 1) {\n return a.slice(0, a.length - 1).join('/');\n }\n return '';\n}\nfunction resolveURL(base, s) {\n const baseA = base.split('/');\n const sA = s.split('/');\n for (const p of sA) {\n if (p === '') {\n continue;\n }\n if (p === '.') {\n continue;\n }\n if (p === '..') {\n baseA.pop();\n continue;\n }\n baseA.push(p);\n }\n return baseA.join('/');\n}\n", "// wnako3 - nadesiko for web browser\nimport { WebNakoCompiler } from './wnako3mod.mjs'\n\n// \u30D6\u30E9\u30A6\u30B6\u304B\u3089\u53D6\u308A\u8FBC\u307E\u308C\u308B\u6642 navigator.nako3 \u306B\u306A\u3067\u3057\u3053\u3092\u767B\u9332\nif ((typeof navigator) === 'object' && !(navigator as any).exportWNako3) {\n const wnako3 = (navigator as any).nako3 = new WebNakoCompiler()\n window.addEventListener('DOMContentLoaded', (e) => {\n const isAutoRun = wnako3.checkScriptTagParam()\n if (isAutoRun) { wnako3.runNakoScript() }\n }, false)\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["opPriority", "RenbunJosi", "operatorList", "key", "NewEmptyToken", "type", "value", "indent", "line", "file", "NakoParserBase", "logger", "funclist", "moduleexport", "josiList", "t", "i", "name", "gnameSelf", "mod", "gname", "exportDefault", "funcObj", "item", "ttype", "a", "idx", "type", "types", "y", "tmpIndex", "rollback", "token", "r", "def", "NewEmptyToken", "node", "opts", "debugMode", "depth", "typeName", "debug", "subNode", "node2", "operator", "table", "left", "right", "NakoError", "tag", "msg", "file", "line", "positionJa", "NakoIndentError", "InternalLexerError", "preprocessedCodeStartOffset", "preprocessedCodeEndOffset", "NakoLexerError", "startOffset", "endOffset", "NakoSyntaxError", "_NakoSyntaxError", "first", "last", "NakoRuntimeError", "_NakoRuntimeError", "error", "lineNo", "matches", "NakoImportError", "reserved", "nako_reserved_words_default", "isIndentChars", "ch", "code", "josiList", "tararebaJosiList", "removeJosiList", "tararebaMap", "josi", "removeJosiMap", "josiListMono", "jo", "a", "b", "pat", "josiRE", "josiListExport", "kanakanji", "hira", "allHiragana", "wordHasIjoIka", "wordSpecial", "errorRead", "ch", "unitRE", "rules", "cbRangeComment", "parseNumber", "src", "cbString", "cbWordParser", "trimOkurigana", "s", "res", "josi", "numEOL", "i", "isTrimOkurigana", "j", "josiRE", "m", "ii", "removeJosiMap", "beginTag", "closeTag", "n", "NakoLexer", "_NakoLexer", "logger", "nako_reserved_words_default", "josiListExport", "listMap", "exportObj", "tokens", "isFirst", "filename", "eof", "funclist", "moduleexport", "i", "isFuncPointer", "readArgs", "args", "keys", "t", "varnames", "funcPointers", "result", "already", "arg", "josi", "prevToken", "nextToken", "modName", "t2", "kai", "rtype", "isMumei", "defToken", "funcName", "funcNameToken", "isExport", "attr", "dispName", "metaValue", "code", "list", "arr", "s", "end", "comment", "namespaceStack", "getLastType", "modSelf", "InternalLexerError", "space", "gname1", "gfo1", "mod", "gname", "gfo", "exportDefault", "fo", "tokenType", "ltype", "opPriority", "startOffset", "tararebaMap", "src", "indent", "c", "n", "isIndentChars", "line", "srcLength", "columnCurrent", "lineCurrent", "column", "isDefTest", "ia", "ok", "rule", "rules", "m", "rp", "e", "NakoLexerError", "offset", "srcOffset", "value", "um", "unitRE", "j", "josiRE", "removeJosiMap", "sep", "v", "a", "NakoParser", "NakoParserBase", "tokens", "filename", "NakoLexer", "b", "c", "NakoSyntaxError", "blocks", "line", "map", "n", "token", "words", "t", "w", "desc", "descFunc", "chA", "f", "no", "josiA", "arg", "ch", "eol", "report", "word", "NewEmptyToken", "c1", "nextToken", "cond", "RenbunJosi", "c2", "ver", "mode", "a", "type", "def", "isExport", "funcAttribute", "defArgs", "funcName", "block", "multiline", "asyncFn", "backupLocalvars", "fnName", "err", "tmpI", "naraba", "smap", "mosi", "trueBlock", "falseBlock", "tanbun", "optionNode", "val", "options", "name", "k", "tikuji", "firstValue", "args", "op", "opPriority", "v", "kara", "made", "value1", "list", "priority", "stack", "polish", "sTop", "tpop", "josi", "node", "ans", "y", "isClose", "si", "num", "bUntil", "errorForArguments", "flagDown", "loopDirection", "kurikaesu", "incdec", "vInc", "vTo", "vFrom", "target", "joukenbunki", "value", "isDefaultClause", "skippedKokomade", "cases", "condToken", "condBlock", "kokomade", "dainyu", "sadameru", "attrNode", "attr", "action", "cur", "r", "operatorList", "s", "msgDebug", "msg", "d0", "d1", "first", "last", "funcObj", "nullCount", "valueCount", "i", "popArg", "varname", "funcNode", "fname", "space", "isexport", "threw", "nameToken", "valueToken", "la", "lb", "wordToken", "vtype", "wordVar", "names", "ary", "tmpReadingCalc", "t1", "fCalc", "t2", "v2", "closeParent", "m", "o", "splitType", "tt", "meta", "ff", "funcPtr", "ast", "index", "isConst", "gname", "typeName", "firstToken", "v1", "kansi", "errBlock", "ReplaceHistory", "from", "to", "index", "ConvertResult", "text", "sourcePosition", "Replace", "code", "i", "item", "NakoPrepare", "_NakoPrepare", "ch", "c", "c2", "src", "flagStr", "flagStr2", "endOfStr", "res", "left", "str", "ch2", "c1", "checkNakoMode", "modeNames", "lines", "line", "topOfFunction", "endOfFunction", "topOfFunctionAsync", "NakoGenOptions", "isTest", "importFiles", "codeStandalone", "convEnv", "fname", "NakoGen", "_NakoGen", "com", "name", "varslist", "vlist", "i", "scope", "names", "node", "forceUpdate", "incLine", "lineNo", "lineNoStr", "lineDataJSON", "debugCode", "jsvalue", "a", "name3", "name2", "moduleName", "opt", "code", "nakoFuncCode", "value", "key", "f", "trim", "cleanGeneratedCode", "isAsync", "testCode", "po", "objName", "path", "josi", "fn", "ast", "NakoSyntaxError", "funcList", "registFunc", "blockList", "t", "meta", "initialNames", "result", "isExpression", "n", "position", "res", "lno", "dispName", "pv", "blocks", "b", "commentSrc", "mode", "isStrict", "funcName", "poolIndex", "msg", "id", "args", "file", "line", "fileNo", "msgNo", "args2", "arg", "argNo", "cmd", "cmdj", "performanceMonitorInjectAtStart", "performanceMonitorInjectAtEnd", "variableDeclarations", "indent", "pushStack", "popStack", "varsDeclared", "word", "errMsg", "callCheckFunc", "oldUsedAsyncFn", "block", "tof", "lineInfo", "nameFuncValue", "e", "val", "list", "idx", "codeInit", "codeArray", "arrayDefCode", "nodeName", "tmpVar", "initArrayCode", "tmpflag", "idLoop", "varI", "loopVarSetter", "varName", "varFrom", "varTo", "varTemp", "sorePrefex", "kara", "made", "temp", "flagDown", "inc", "loopKeyVar", "loopValueVar", "loopDataVar", "taisyoPrefex", "valueVar", "keySetter", "targetData", "varCount", "codeCount", "codeCounterSetter", "prev", "cond", "varId", "cases", "body", "cvalue", "cblock", "cvalueCode", "expr", "falseBlock", "_funcName", "_func", "opts", "nodeArgs", "argCode", "r", "func", "argsInfo", "argsOpts", "funcDef", "funcBegin", "funcEnd", "localVars", "v", "text", "noCheckFuncs", "argsCode", "argsA", "argStr", "funcCall", "sorePostfix", "funcBody", "right", "left", "OP_TBL", "op", "incValue", "varGetter", "varSetter", "varInitter", "vtype", "rf", "errBlock", "pluginCode", "initkey", "STANDALONE_CODE", "generateJS", "gen", "js", "jsInit", "funcID", "asyncMain", "syncMain", "codeImportFiles", "importNames", "ff", "initCode", "replaceTemplateCode", "template", "values", "pat", "spc", "lines", "str", "debugTokens", "tokens", "result", "i", "t", "ftype", "fvalue", "makeIndent", "n", "s", "lastTokenInfo", "NewEmptyToken", "newToken", "type", "value", "templateToken", "IS_DEBUG", "isSkipWord", "convertInlineIndent", "tokens", "lines", "splitTokens", "blockIndents", "checkICount", "jsonObjLevel", "jsonArrayLevel", "checkJsonSyntax", "line", "t", "i", "IsEmptyLine", "leftToken", "GetLeftTokens", "lineICount", "tFirst", "newToken", "tLast", "getLastTokenWithoutEOL", "result", "joinTokenLines", "debugTokens", "r", "len", "NewEmptyToken", "res", "delimiter", "kakko", "j", "ty", "INDENT_MODE_KEYWORDS", "convertIndentSyntax", "useIndentSynax", "NakoIndentError", "lastI", "curI", "blockIndentTopLast", "DNCL_KEYWORDS", "DNCL_SIMPLES", "convertDNCL", "tokens", "useDNCLmode", "lines", "splitTokens", "i", "line", "j", "t", "NewEmptyToken", "fi", "findTokens", "replaceAtohantei", "fi2", "nai", "ni", "sou", "nakumosi", "nakumosiTudukiStr", "nakumosiToken", "fu", "replaceAllElementV", "c", "a", "joinTokenLines", "eq", "begin", "end", "val", "times", "mul", "wo", "ga", "findTypeValue", "findA", "s", "flag", "f", "idx", "IS_DEBUG", "DNCL_ARRAY_INIT_COUNT", "DNCL2_KEYWORDS", "DNCL_SIMPLES", "convertDNCL2", "tokens", "useDNCL2mode", "lines", "splitTokens", "i", "line", "nai", "findTokens", "ni", "t", "sou", "nakumosi", "nakumosiTudukiStr", "nakumosiToken", "NewEmptyToken", "fu", "tokenEq", "varToken", "valToken", "newToken", "j", "c", "a", "joinTokenLines", "debugTokens", "typeValues", "fromIndex", "check", "pattern", "tv", "idx", "pat", "findTypeValue", "findA", "s", "flag", "f", "SourceMappingOfTokenization", "sourceCodeLength", "preprocessed", "i", "el", "preprocessedCodePosition", "SourceMappingOfIndentSyntax", "codeAfterProcessingIndentationSyntax", "linesInsertedByIndentationSyntax", "linesDeletedByIndentationSyntax", "offset", "line", "startOffset", "endOffset", "tokenLine", "insertedLine", "deletedLine", "OffsetToLineColumn", "code", "oneBasedLineNumber", "subtractSourceMapByPreCodeLength", "sourceMap", "preCode", "lines", "color", "colorNames", "escapeHTML", "convertColorTextFormat", "text", "noColor", "browserConsoleStyles", "consoleColor", "consoleFontWeight", "browserConsoleText", "_", "m1str", "m1", "htmlColor", "htmlFontWeight", "html", "NakoColors", "LogLevel", "_LogLevel", "levelStr", "level", "stringifyPosition", "p", "NakoLogger", "callback", "l", "message", "position", "NakoColors", "NakoError", "e", "pos", "error", "posStr", "NakoRuntimeError", "nodeConsole", "html", "browserConsole", "i", "makeData", "formats", "style", "data", "NakoGlobal", "compiler", "gen", "guid", "s", "name", "value", "code", "fname", "opts", "preCode", "tests", "text", "NakoColors", "pass", "numFailures", "t", "err", "clearName", "pname", "po", "coreVersion", "nako_core_version_default", "plugin_system_default", "name", "value", "defaultValue", "v", "nameStr", "def", "localVar", "scopeValue", "modList", "modName", "gname", "i", "parentFunc", "f", "func", "params", "f0", "s", "keta", "zeroS", "fmt", "dateStr", "timeStr", "t", "a", "constId", "cp", "msgNo", "msgArgs", "fileNo", "lineNo", "msg", "arg", "fileStr", "e", "sys", "b", "aa", "jsonA", "jsonB", "p", "c", "src", "args", "obj", "m", "code", "outLog", "out", "tf", "t1", "n", "r", "g", "z2", "v2", "ss", "mae", "usi", "str", "res", "cnt", "usiro", "subS", "j", "result", "chr", "zen1", "han1", "zen2", "han2", "c2", "n2", "re", "sa", "z", "checkerRE", "ufunc", "tmp", "idx", "old", "start", "last", "x", "y", "nn", "no", "ns", "ms", "row", "col", "cols", "rows", "keys", "k", "nr", "sum", "line", "key", "body", "resolve", "reject", "timerId", "err", "NakoRuntimeError", "d", "tm", "era", "gengo", "d2", "t2", "unit", "op", "sec", "rd", "opc", "addY", "addM", "addD", "curLine", "breakpoints", "forceLine", "vars", "fname", "text", "url", "kv", "u8a", "utf8str", "decodedUtf8str", "dec", "decodedArray", "plugin_math_default", "v", "y", "x", "XY", "sys", "a", "b", "min", "max", "base", "options", "parse", "txt", "delimiter", "options", "patToDelim", "reToDelim", "convType", "v", "res", "cells", "c", "m", "i", "s", "c1", "c2", "stringify", "ary", "eol", "valueConv", "genValueConverter", "r", "j", "genValueConverter", "delimiter", "s", "fQuot", "PluginCSV", "str", "options", "parse", "a", "stringify", "plugin_csv_default", "plugin_promise_default", "sys", "promise", "callback", "resolve", "reject", "result", "cbFunc", "reason", "err", "args", "plugin_test_default", "a", "b", "sys", "cloneAsJSON", "x", "PLUGIN_MIN_VERSION_INT", "newCompilerOptions", "initObj", "NakoCompiler", "_NakoCompiler", "options", "nako_core_version_default", "NakoLogger", "NakoPrepare", "NakoParser", "NakoLexer", "name", "plugin_system_default", "plugin_math_default", "plugin_promise_default", "plugin_test_default", "plugin_csv_default", "tokens", "requireStatements", "i", "filename", "m", "basename", "ext", "version", "NakoImportError", "code", "preCode", "tools", "dependencies", "compiler", "loadJS", "item", "tasks", "obj", "res", "pluginFuncs", "loadNako3", "content", "registerFile", "modName", "funclist", "moduleexport", "loadRec", "tagsResolvePath", "v", "result", "err", "line", "modList", "preprocessed", "tokenizationSourceMapping", "SourceMappingOfTokenization", "indentationSyntaxSourceMapping", "SourceMappingOfIndentSyntax", "offsetToLineColumn", "OffsetToLineColumn", "InternalLexerError", "dest", "map", "subtractSourceMapByPreCodeLength", "NakoLexerError", "convertDNCL2", "convertDNCL", "convertIndentSyntax", "convertInlineIndent", "token", "column", "out", "isFirst", "original", "startOffset", "commentTokens", "t", "includeGuard", "deletedTokens", "r", "filePath", "key", "children", "syntaxHighlighting", "requireStatementTokens", "lexerOutput", "ast", "NakoSyntaxError", "queue", "ast_", "astQueue", "blockQueue", "block", "func", "isTest", "opt", "o", "e", "outCode", "NakoGenOptions", "mode", "generateJS", "genObj", "fname", "isReset", "opts", "sys", "nakoGlobal", "compiledCode", "gen", "g", "NakoGlobal", "eventName", "callback", "testOnly", "po", "persistent", "fpath", "__v0", "__pluginInfo", "intVersion", "pluginName", "metaValue", "versions", "str", "keyStr", "errMsg", "def", "initKey", "objName", "_objName", "josi", "fn", "returnNone", "asyncFn", "funcObj", "initVars", "INDENT_MODE_KEYWORDS", "convert", "code", "filename", "checkNakoMode", "convertForIndentMode", "isIndentSyntaxEnabled", "defSpecialRetMark", "SpecialRetMark", "checkSpecialRetMark", "c", "removeCommentsFromLine", "src", "prepare", "NakoPrepare", "len", "result", "eos", "i", "isComment", "ch2", "cPrepared", "ch2Prepared", "insertedLines", "deletedLines", "END", "lines", "replaceRetMark", "lines2", "indentStack", "lastIndent", "lineCount", "line", "lineTrimed", "NakoIndentError", "indent", "countIndent", "n", "makeIndent", "lines3", "lines4", "j", "count", "s", "getIndent", "m", "cnt", "ch", "getBlockStructure", "stack", "prev", "numLines", "line2", "current", "last", "parent", "item", "nako_indent_default", "getBlockStructure", "nako_indent_default", "getIndent", "countIndent", "isIndentSyntaxEnabled", "getScope", "token", "getEditorTokens", "compilerToken", "nako3", "value", "includesLastCharacter", "underlineJosi", "type", "docHTML", "getDocumentationHTML", "findPluginName", "name", "pluginName", "createParameterName", "i", "alphabet", "v", "createParameterDeclaration", "josi", "args", "union", "escapeHTML", "meta", "text", "getDefaultTokens", "row", "doc", "withoutLogger", "f", "logger", "tokenize", "lines", "code", "lexerOutput", "t", "file", "funclist", "tokens", "b", "lineStartOffset", "tokenIndex", "editorTokens", "lineEndOffset", "offset", "EditorMarkers", "_EditorMarkers", "session", "AceRange", "disable", "startLine", "startColumn", "endLine", "endColumn", "getLine", "startOffset", "endOffset", "offsetToLineColumn", "OffsetToLineColumn", "start", "end", "error", "message", "range", "marker", "BackgroundTokenizer", "onTokenUpdate", "onCompileError", "line", "update", "startTime", "out", "e", "delta", "startRow", "endRow", "columnStart", "oldTokens", "newTokens", "_", "ok", "NakoError", "firstRow", "lastRow", "tokenizer", "LanguageFeatures", "_LanguageFeatures", "state", "prepare", "NakoPrepare", "parseLine", "indent", "ch2", "c", "rows", "minIndent", "column", "input", "prevLine", "s", "parent", "oldIndent", "tab", "prefix", "backgroundTokenizer", "result", "values", "addItem", "caption", "item", "score", "data", "indentSyntax", "en", "jp", "snippet", "foldStyle", "pair", "results", "matches", "EditorTabs", "editor", "UndoManager", "content", "Options", "_Options", "obj", "key", "json", "OptionPanel", "panel", "isMain", "group", "render", "completers", "editorIdCounter", "setupEditor", "idOrElement", "ace", "element", "editorMarkers", "readonly", "resetEditorTokens", "Tooltip", "tooltip", "pos", "target", "editorId", "forceSyntaxHighlighting", "isFirstTime", "oldBgTokenizer", "ms", "slowSpeedMessage", "err", "callback", "items", "languageFeatures", "oop", "TextMode", "Mode", "buttonContainer", "codeLensListeners", "CodeLens", "exitFullscreen", "fullscreenButton", "settingsButton", "editorTabs", "retokenize", "opts", "preCode", "html", "filename", "position", "noColor", "level", "opt", "res", "resolve", "nakoVersion", "nako_version_default", "plugin_browser_color_default", "r", "g", "b", "z2", "v", "v2", "a", "plugin_browser_system_default", "sys", "ua", "plugin_browser_dialog_default", "s", "sys", "r", "c", "plugin_browser_location_default", "url", "sys", "plugin_browser_ajax_default", "url", "sys", "callback", "options", "res", "text", "err", "option", "params", "bodyData", "fd", "key", "flist", "v", "kv", "resolve", "reject", "type", "data", "plugin_browser_dom_basic_default", "id", "q", "tag", "pa", "sys", "dom", "event", "funcStr", "text", "v", "idx", "s", "wa", "values", "e", "key", "style", "res", "el", "plugin_browser_dom_event_default", "dom", "event", "funcStr", "sys", "callback", "func", "e", "id", "plugin_browser_dom_parts_default", "el", "sys", "skin", "elm", "parent", "btn", "func", "label", "text", "inp", "te", "lbl", "size", "cv", "url", "img", "span", "options", "dom", "i", "item", "s", "range", "obj", "frm", "key", "rows", "table", "rowIndex", "row", "cols", "val", "th", "td", "ita", "its", "def", "items", "select", "it", "option", "idx", "tr", "res", "getChildren", "pa", "tag", "aa", "rr", "domOption", "bgColor", "hasHeader", "bgHead", "rowNo", "col", "no", "cell", "v", "cn", "domTR", "domCell", "src", "div", "plugin_browser_html_default", "text", "tmp", "pre", "f", "sys", "plugin_browser_storage_default", "v", "key", "sys", "body", "keys", "errMsgCanvasInit", "plugin_browser_canvas_default", "cv", "sys", "v", "a", "b", "xy", "r", "args", "p", "i", "t", "url", "img", "resolve", "reject", "f", "func", "drawFunc", "im", "ctx", "image", "sxy", "dxy", "errArgLen", "sw", "n", "s", "result", "dom", "plugin_browser_geolocation_default", "func", "sys", "cb", "position", "wid", "plugin_browser_speech_default", "s", "sys", "msg", "resolve", "reject", "err", "callback", "e", "voice", "v", "voices", "i", "obj", "changeFunc", "key", "plugin_browser_websocket_default", "callback", "sys", "s", "ws", "cbOpen", "err", "cbError", "e", "cbMsg", "plugin_browser_audio_default", "url", "sys", "a", "obj", "v", "isff", "addEvent", "object", "event", "method", "useCapture", "removeEvent", "getMods", "modifier", "key", "mods", "i", "getKeys", "keys", "index", "compareArray", "a1", "a2", "arr1", "arr2", "isIndex", "_keyMap", "_modifier", "modifierMap", "_mods", "_handlers", "k", "_downKeys", "winListendFocus", "_scope", "elementEventMap", "code", "x", "getKey", "getModifier", "setScope", "scope", "getScope", "getPressedKeyCodes", "getPressedKeyString", "c", "getAllKeyCodes", "result", "_ref", "shortcut", "v", "filter", "target", "tagName", "flag", "isInput", "isPressed", "keyCode", "deleteScope", "newScope", "handlers", "_ref2", "element", "removeKeyEvent", "clearModifier", "hotkeys", "unbind", "keysInfo", "info", "eachUnbind", "_len", "args", "_key", "_ref3", "splitKey", "originKey", "unbindKeys", "len", "lastKey", "unbindElements", "record", "isUnbind", "eventHandler", "handler", "modifiersMatch", "y", "dispatch", "asterisk", "keyName", "keyNum", "e", "handlerKey", "keyLen", "keyShortcut", "_downKeysCurrent", "a", "option", "keyup", "keydown", "capture", "single", "keydownListener", "keyupListenr", "listener", "trigger", "item", "data", "values", "_ref4", "el", "_api", "_hotkeys", "deep", "plugin_browser_hotkey_default", "key", "fname", "sys", "hotkeys", "event", "handler", "plugin_browser_chart_default", "data", "sys", "win", "Chart", "chart", "d", "gopt", "dataOrg", "bgcolorList", "fgcolorList", "res", "bgcolors", "fgcolors", "o", "i", "j", "o1", "plugin_browser_crypto_default", "func", "s", "alg", "sys", "buffer", "hash", "codes", "view", "i", "pad", "res", "BrowserParts", "plugin_browser_color_default", "plugin_browser_system_default", "plugin_browser_dialog_default", "plugin_browser_location_default", "plugin_browser_ajax_default", "plugin_browser_dom_basic_default", "plugin_browser_dom_event_default", "plugin_browser_dom_parts_default", "plugin_browser_html_default", "plugin_browser_storage_default", "plugin_browser_canvas_default", "plugin_browser_geolocation_default", "plugin_browser_speech_default", "plugin_browser_websocket_default", "plugin_browser_audio_default", "plugin_browser_hotkey_default", "plugin_browser_chart_default", "plugin_browser_crypto_default", "PluginBrowser", "sys", "doc", "win", "nav", "loc", "err", "text", "dom", "event", "func", "setHandler", "wrapperFunc", "e", "box", "touches", "ts", "i", "t", "tx", "ty", "commandName", "isGetFunc", "elm", "desc", "url", "resolve", "reject", "script", "a", "b", "plugin_browser_default", "NAKO_SCRIPT_RE", "WebNakoCompiler", "NakoCompiler", "nako_version_default", "plugin_browser_default", "g", "nakoScriptCount", "scripts", "i", "script", "fname", "code", "filename", "preCode", "localFiles", "src", "idOrElement", "setupEditor", "filePath", "token", "basename", "res", "NakoImportError", "jstext", "exportName", "gNavigator", "gSelf", "globalNavigator", "globalNako3", "err", "resolve", "reject", "s", "name", "fromFile", "pathname", "baseDir", "dirname", "resolveURL", "e", "checkExt", "extlist", "ext", "aname", "a", "base", "baseA", "sA", "p", "wnako3", "WebNakoCompiler"]
|
|
7
|
-
}
|