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.
Files changed (159) hide show
  1. package/batch/command.txt +472 -469
  2. package/batch/pickup_command.nako3 +1 -1
  3. package/core/.eslintrc.cjs +10 -3
  4. package/core/package-lock.json +1184 -645
  5. package/core/package.json +4 -5
  6. package/core/src/nako3.mjs +8 -6
  7. package/core/src/nako3.mts +19 -16
  8. package/core/src/nako_ast.mts +2 -3
  9. package/core/src/nako_core_version.mjs +2 -2
  10. package/core/src/nako_core_version.mts +2 -2
  11. package/core/src/nako_csv.mjs +1 -0
  12. package/core/src/nako_csv.mts +3 -2
  13. package/core/src/nako_from_dncl.mjs +1 -1
  14. package/core/src/nako_from_dncl.mts +1 -1
  15. package/core/src/nako_from_dncl2.mjs +1 -1
  16. package/core/src/nako_from_dncl2.mts +2 -2
  17. package/core/src/nako_gen.mjs +37 -35
  18. package/core/src/nako_gen.mts +70 -67
  19. package/core/src/nako_global.mjs +3 -2
  20. package/core/src/nako_global.mts +3 -2
  21. package/core/src/nako_lexer.mjs +3 -3
  22. package/core/src/nako_lexer.mts +3 -3
  23. package/core/src/nako_logger.mjs +1 -1
  24. package/core/src/nako_logger.mts +2 -2
  25. package/core/src/nako_parser3.mjs +67 -59
  26. package/core/src/nako_parser3.mts +96 -90
  27. package/core/src/nako_parser_base.mts +3 -3
  28. package/core/src/nako_prepare.mjs +1 -1
  29. package/core/src/nako_prepare.mts +1 -1
  30. package/core/src/nako_source_mapping.mts +0 -1
  31. package/core/src/nako_token.mts +8 -8
  32. package/core/src/nako_types.mts +1 -1
  33. package/core/src/plugin_api.mts +1 -1
  34. package/core/src/plugin_csv.mjs +1 -0
  35. package/core/src/plugin_csv.mts +2 -1
  36. package/core/src/plugin_math.mjs +2 -2
  37. package/core/src/plugin_math.mts +3 -3
  38. package/core/src/plugin_promise.mjs +1 -1
  39. package/core/src/plugin_promise.mts +1 -1
  40. package/core/src/plugin_system.mjs +117 -40
  41. package/core/src/plugin_system.mts +132 -58
  42. package/core/src/plugin_test.mjs +3 -1
  43. package/core/src/plugin_test.mts +3 -1
  44. package/core/test/basic_test.mjs +16 -0
  45. package/core/test/calc_test.mjs +7 -0
  46. package/core/test/plugin_system_test.mjs +33 -0
  47. package/doc/files.md +4 -4
  48. package/doc/plugins.md +1 -1
  49. package/package.json +9 -9
  50. package/release/_hash.txt +36 -121
  51. package/release/_script-tags.txt +16 -33
  52. package/release/command.json +1 -1
  53. package/release/command.json.js +1 -1
  54. package/release/command_cnako3.json +1 -1
  55. package/release/command_list.json +1 -1
  56. package/release/edit_main.js +3 -3
  57. package/release/edit_main.js.map +2 -2
  58. package/release/editor.js +3 -3
  59. package/release/plugin_markup.js +53 -53
  60. package/release/plugin_markup.js.map +3 -3
  61. package/release/plugin_weykturtle3d.js +1 -1
  62. package/release/plugin_weykturtle3d.js.map +4 -4
  63. package/release/version.js +3 -3
  64. package/release/version_main.js +3 -3
  65. package/release/version_main.js.map +2 -2
  66. package/release/wnako3.js +66 -66
  67. package/release/wnako3.js.map +3 -3
  68. package/release/wnako3webworker.js +58 -58
  69. package/release/wnako3webworker.js.map +3 -3
  70. package/src/browsers.txt +30 -20
  71. package/src/cnako3mod.mjs +19 -18
  72. package/src/cnako3mod.mts +17 -16
  73. package/src/deno_wrapper.mjs +6 -6
  74. package/src/deno_wrapper.mts +11 -11
  75. package/src/nako_version.mjs +2 -2
  76. package/src/nako_version.mts +2 -2
  77. package/src/plugin_browser.mjs +2 -2
  78. package/src/plugin_browser.mts +5 -5
  79. package/src/plugin_browser_ajax.mjs +2 -2
  80. package/src/plugin_browser_ajax.mts +2 -2
  81. package/src/plugin_browser_api.mts +0 -1
  82. package/src/plugin_browser_crypto.mjs +8 -8
  83. package/src/plugin_browser_crypto.mts +13 -13
  84. package/src/plugin_browser_dom_basic.mjs +3 -3
  85. package/src/plugin_browser_dom_basic.mts +5 -7
  86. package/src/plugin_browser_dom_event.mjs +1 -1
  87. package/src/plugin_browser_dom_event.mts +2 -1
  88. package/src/plugin_browser_dom_parts.mjs +33 -18
  89. package/src/plugin_browser_dom_parts.mts +60 -59
  90. package/src/plugin_browser_speech.mjs +1 -1
  91. package/src/plugin_browser_speech.mts +1 -1
  92. package/src/plugin_node.mjs +5 -3
  93. package/src/plugin_node.mts +6 -4
  94. package/src/plugin_weykturtle3d.mjs +38 -15
  95. package/src/plugin_weykturtle3d.mts +279 -240
  96. package/src/plugin_weykturtle3d_three.mjs +3 -0
  97. package/src/plugin_weykturtle3d_three.mts +214 -0
  98. package/src/plugin_weykturtle3d_threeutil.mjs +28 -0
  99. package/src/plugin_weykturtle3d_threeutil.mts +31 -0
  100. package/src/wnako3.mjs +1 -0
  101. package/src/wnako3.mts +1 -0
  102. package/src/wnako3mod.mjs +5 -2
  103. package/src/wnako3mod.mts +6 -3
  104. package/batch/command_nakopad.txt +0 -1177
  105. package/core/__report.txt +0 -617
  106. package/core/command/plugin_snako.mjs +0 -112
  107. package/core/command/snako.mjs +0 -108
  108. package/release/core_src_nako_josi_list_mjs.js +0 -3
  109. package/release/core_src_nako_josi_list_mjs.js.LICENSE.txt +0 -3
  110. package/release/core_src_nako_josi_list_mjs.js.map +0 -1
  111. package/release/core_src_nako_reserved_words_mjs.js +0 -3
  112. package/release/core_src_nako_reserved_words_mjs.js.LICENSE.txt +0 -3
  113. package/release/core_src_nako_reserved_words_mjs.js.map +0 -1
  114. package/release/editor/edit_main.js +0 -48
  115. package/release/editor/edit_main.js.map +0 -7
  116. package/release/editor/version_main.js +0 -44
  117. package/release/editor/version_main.js.map +0 -7
  118. package/release/editor.js.LICENSE.txt +0 -91
  119. package/release/editor.js.map +0 -1
  120. package/release/nako_gen_async.js +0 -2
  121. package/release/nako_gen_async.js.LICENSE.txt +0 -21
  122. package/release/nako_gen_async.js.map +0 -1
  123. package/release/plugin_caniuse.js.LICENSE.txt +0 -15
  124. package/release/plugin_datetime.js.LICENSE.txt +0 -21
  125. package/release/plugin_kansuji.js.LICENSE.txt +0 -3
  126. package/release/plugin_markup.js.LICENSE.txt +0 -15
  127. package/release/plugin_toml.js +0 -295
  128. package/release/plugin_toml.js.map +0 -7
  129. package/release/plugin_turtle.js.LICENSE.txt +0 -9
  130. package/release/plugin_webworker.js.LICENSE.txt +0 -3
  131. package/release/plugin_weykturtle3d.js.LICENSE.txt +0 -3
  132. package/release/src/plugin_caniuse.js +0 -2
  133. package/release/src/plugin_caniuse.js.map +0 -7
  134. package/release/src/plugin_datetime.js +0 -2
  135. package/release/src/plugin_datetime.js.map +0 -7
  136. package/release/src/plugin_kansuji.js +0 -2
  137. package/release/src/plugin_kansuji.js.map +0 -7
  138. package/release/src/plugin_keigo.js +0 -2
  139. package/release/src/plugin_keigo.js.map +0 -7
  140. package/release/src/plugin_markup.js +0 -64
  141. package/release/src/plugin_markup.js.map +0 -7
  142. package/release/src/plugin_three.js +0 -2
  143. package/release/src/plugin_three.js.map +0 -7
  144. package/release/src/plugin_turtle.js +0 -2
  145. package/release/src/plugin_turtle.js.map +0 -7
  146. package/release/src/plugin_webworker.js +0 -4
  147. package/release/src/plugin_webworker.js.map +0 -7
  148. package/release/src/plugin_weykturtle3d.js +0 -2
  149. package/release/src/plugin_weykturtle3d.js.map +0 -7
  150. package/release/src/wnako3.js +0 -482
  151. package/release/src/wnako3.js.map +0 -7
  152. package/release/src/wnako3webworker.js +0 -428
  153. package/release/src/wnako3webworker.js.map +0 -7
  154. package/release/stats.json +0 -1
  155. package/release/version.js.LICENSE.txt +0 -65
  156. package/release/version.js.map +0 -1
  157. package/release/wnako3.js.LICENSE.txt +0 -341
  158. package/release/wnako3webworker.js.LICENSE.txt +0 -209
  159. 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", "../../src/plugin_browser_color.mjs", "../../src/plugin_browser_ajax.mjs", "../../src/plugin_browser_html.mjs", "../../src/plugin_browser_websocket.mjs", "../../src/plugin_browser_in_worker.mjs", "../../src/plugin_worker.mjs", "../../src/wnako3webworker.mjs"],
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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&#039;');\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", "// @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 // @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 // @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, '&amp;')\n .replace(/>/g, '&gt;')\n .replace(/</g, '&lt;');\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 // @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", "// @ts-nocheck\n// plugin_browser_in_worker.js\nimport PartBrowserColor from './plugin_browser_color.mjs';\nimport PartBrowserAjax from './plugin_browser_ajax.mjs';\nimport PartBrowserHtml from './plugin_browser_html.mjs';\nimport PartBrowserWebsocket from './plugin_browser_websocket.mjs';\nconst BrowserParts = [\n PartBrowserColor,\n PartBrowserAjax,\n PartBrowserHtml,\n PartBrowserWebsocket\n];\nconst PluginBrowserInWorker = {\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n /* eslint no-global-assign: 0 */\n if (typeof self === 'undefined') {\n self = {};\n }\n if (typeof navigator === 'undefined') {\n navigator = {};\n }\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.__v0.SELF = self;\n sys.__v0.NAVIGATOR = navigator;\n }\n }\n};\nBrowserParts.forEach((a) => {\n const b = {};\n Object.assign(b, a);\n if (typeof b['\u521D\u671F\u5316'] !== 'undefined') {\n delete b['\u521D\u671F\u5316'];\n }\n Object.assign(PluginBrowserInWorker, b);\n});\nexport default PluginBrowserInWorker;\n", "// @ts-nocheck\nconst PluginWorker = {\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n sys.__v0.SELF = self || {}\n sys.__v0['\u4F9D\u983C\u4E3B'] = self || {}\n }\n },\n\n '\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8': { type: 'const', value: '' }, // @\u305F\u3044\u3057\u3087\u3046\u3044\u3079\u3093\u3068\n '\u53D7\u4FE1\u30C7\u30FC\u30BF': { type: 'const', value: '' }, // @\u305F\u3044\u3057\u3087\u3046\u3044\u3079\u3093\u3068\n 'SELF': { type: 'const', value: '' }, // @SELF\n '\u4F9D\u983C\u4E3B': { type: 'const', value: '' }, // @SELF\n\n 'NAKO\u30EF\u30FC\u30AB\u30FC\u30C7\u30FC\u30BF\u53D7\u4FE1\u6642': { // @\u7121\u540D\u95A2\u6570F\u3067\u306A\u3067\u3057\u3053v3\u30A8\u30F3\u30B8\u30F3\u306B\u5BFE\u3057\u3066\u30EF\u30FC\u30AB\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u3088\u308A\u30C7\u30FC\u30BF\u3092\u53D7\u4FE1\u3057\u305F\u6642\u306B\u5B9F\u884C\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u3092\u8A2D\u5B9A\u3002\u300E\u53D7\u4FE1\u30C7\u30FC\u30BF\u300F\u306B\u53D7\u4FE1\u3057\u305F\u30C7\u30FC\u30BFM\u3002\u300E\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8\u300F\u306B\u30A4\u30D9\u30F3\u30C8\u5F15\u6570\u3002 // @NAKO\u308F\u30FC\u304B\u30FC\u3067\u30FC\u305F\u3058\u3085\u3057\u3093\u3057\u305F\u3068\u304D\n type: 'func',\n josi: [['\u3067']],\n pure: false,\n fn: function (func, sys) {\n func = sys.__findVar(func, null) // \u6587\u5B57\u5217\u6307\u5B9A\u306A\u3089\u95A2\u6570\u306B\u5909\u63DB\n sys.__setSysVar('PluginWorker:ondata', (data, e) => {\n sys.__v0['\u53D7\u4FE1\u30C7\u30FC\u30BF'] = data\n sys.__v0['\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8'] = e\n return func(e, sys)\n })\n },\n return_none: true\n },\n '\u30EF\u30FC\u30AB\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u53D7\u4FE1\u6642': { // @\u7121\u540D\u95A2\u6570F\u3067self\u306B\u5BFE\u3057\u3066\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u53D7\u4FE1\u3057\u305F\u6642\u306B\u5B9F\u884C\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u3092\u8A2D\u5B9A\u3002\u300E\u53D7\u4FE1\u30C7\u30FC\u30BF\u300F\u306B\u53D7\u4FE1\u3057\u305F\u30C7\u30FC\u30BF\u3002\u300E\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8\u300F\u306B\u30A4\u30D9\u30F3\u30C8\u5F15\u6570\u3002 // @\u308F\u30FC\u304B\u30FC\u3081\u3063\u305B\u30FC\u3058\u3058\u3085\u3057\u3093\u3057\u305F\u3068\u304D\n type: 'func',\n josi: [['\u3067']],\n pure: false,\n fn: function (func, sys) {\n func = sys.__findVar(func, null) // \u6587\u5B57\u5217\u6307\u5B9A\u306A\u3089\u95A2\u6570\u306B\u5909\u63DB\n self.onmessage = (e) => {\n sys.__v0['\u53D7\u4FE1\u30C7\u30FC\u30BF'] = e.data\n sys.__v0['\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8'] = e\n return func(e, sys)\n }\n },\n return_none: true\n },\n 'NAKO\u30EF\u30FC\u30AB\u30FC\u30C7\u30FC\u30BF\u9001\u4FE1': { // @\u8D77\u52D5\u3082\u3068\u306B\u56FA\u6709\u306E\u5F62\u5F0F\u3067\u30C7\u30FC\u30BF\u3092\u9001\u4FE1\u3059\u308B\u3002 // @NAKO\u308F\u30FC\u304B\u30FC\u3067\u30FC\u305F\u3078\u3093\u3057\u3093\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (data, sys) {\n const msg = {\n type: 'data',\n data: data\n }\n postMessage(msg)\n },\n return_none: true\n },\n '\u30EF\u30FC\u30AB\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u9001\u4FE1': { // @\u8D77\u52D5\u3082\u3068\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u9001\u4FE1\u3059\u308B\u3002 // @\u308F\u30FC\u304B\u30FC\u3081\u3063\u305B\u30FC\u3058\u3078\u3093\u3057\u3093\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (msg, sys) {\n postMessage(msg)\n },\n return_none: true\n },\n '\u8868\u793A': { // @\u30E1\u30A4\u30F3\u30B9\u30EC\u30C3\u30C9\u306B\u56FA\u6709\u306E\u5F62\u5F0F\u3067\u8868\u793A\u30C7\u30FC\u30BF\u3092\u9001\u4FE1\u3059\u308B\u3002 // @\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (data, sys) {\n const msg = {\n type: 'output',\n data: data\n }\n postMessage(msg)\n },\n return_none: true\n },\n '\u7D42\u4E86': { // @\u30EF\u30FC\u30AB\u30FC\u3092\u7D42\u4E86\u3059\u308B\u3002 // @\u3057\u3085\u3046\u308A\u3087\u3046\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n close()\n },\n return_none: true\n }\n}\n\n// module.exports = PluginWorker\nexport default PluginWorker\n\n\n", "// nadesiko for web browser worker\n// wwnako3.js\nimport { NakoCompiler } from '../core/src/nako3.mjs'\nimport PluginBrowserInWorker from './plugin_browser_in_worker.mjs'\nimport PluginWorker from './plugin_worker.mjs'\n\nclass WebWorkerNakoCompiler extends NakoCompiler {\n constructor () {\n super()\n this.__setSysVar('\u30CA\u30C7\u30B7\u30B3\u7A2E\u985E', 'wwnako3')\n this.__setSysVar('PluginWorker:ondata', (data, event) => {\n throw new Error('\u300ENAKO\u30EF\u30FC\u30AB\u30FC\u30C7\u30FC\u30BF\u53D7\u4FE1\u6642\u300F\u304C\u547C\u3070\u308C\u3066\u3044\u307E\u305B\u3093\u3002')\n })\n }\n}\n\n// \u30D6\u30E9\u30A6\u30B6\u30EF\u30FC\u30AB\u30FC\u306A\u3089 navigator.nako3 \u306B\u306A\u3067\u3057\u3053\u3092\u767B\u9332\n// eslint-disable-next-line no-undef\nif (typeof (navigator) === 'object' && self && self instanceof WorkerGlobalScope) {\n /** @type {WebWorkerNakoCompiler} */\n const nako3Compiler = navigator.nako3 = new WebWorkerNakoCompiler()\n /** @type {WebWorkerNakoCompiler | import('./nako_global')} */\n let nako3Global = nako3Compiler\n \n nako3Compiler.addPluginObject('PluginBrowserInWorker', PluginBrowserInWorker)\n nako3Compiler.addPluginObject('PluginWorker', PluginWorker)\n\n nako3Compiler.getLogger().addListener('error', function (obj) {\n self.postMessage({\n type: 'error',\n data: obj\n })\n }, false)\n\n self.onmessage = (event) => {\n const data = event.data || { type: '', data: '' }\n const type = data.type || ''\n const value = data.data || ''\n switch (type) {\n case 'reset':\n nako3Compiler.reset()\n break\n case 'close':\n self.close()\n break\n case 'run':\n nako3Global = nako3Global.runEx(value, '_webworker.nako3', { resetEnv: false, resetLog: false })\n break\n case 'trans':\n value.forEach(o => {\n if (o.type === 'func') {\n nako3Compiler.nakoFuncList[o.name] = o.content.meta\n nako3Compiler.funclist[o.name] = o.content.func\n nako3Compiler.__varslist[1].set(o.name, () => {})\n } else if (o.type === 'val') {\n nako3Compiler.__varslist[2].set(o.name, o.content)\n } else if (o.type === 'env') {\n if (o.name === 'modlist') {\n for (const modInfo of o.content) {\n if (nako3Compiler.lexer.modList.indexOf(modInfo.name) < 0) {\n nako3Compiler.lexer.modList.push(modInfo.name)\n }\n if (modInfo.export != null && !nako3Compiler.moduleExport.hasOwnProperty(modInfo.name)) {\n nako3Compiler.moduleExport[modInfo.name] = modInfo.export\n }\n }\n } else if (o.name === 'constPools') {\n nako3Compiler.constPools = o.content\n } else if (o.name === 'constPoolsTemplate') {\n nako3Compiler.constPoolsTemplate = o.content\n } else if (o.name === 'chk') {\n nako3Compiler.chk = o.content\n }\n }\n })\n break\n case 'data':\n if (nako3Global.__getSysVar('PluginWorker:ondata')) {\n nako3Global.__getSysVar('PluginWorker:ondata').apply(nako3Global, [value, event])\n }\n break\n }\n }\n}\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", "i", "t", "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", "NakoLexer", "_NakoLexer", "logger", "nako_reserved_words_default", "josiListExport", "listMap", "exportObj", "tokens", "isFirst", "filename", "eof", "funclist", "moduleexport", "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", "end", "comment", "i", "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", "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", "s", "makeIndent", "lastTokenInfo", "NewEmptyToken", "newToken", "type", "value", "templateToken", "IS_DEBUG", "isSkipWord", "t", "convertInlineIndent", "tokens", "lines", "splitTokens", "blockIndents", "checkICount", "jsonObjLevel", "jsonArrayLevel", "checkJsonSyntax", "line", "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", "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", "t", "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", "i", "scopeValue", "modList", "modName", "gname", "parentFunc", "f", "func", "params", "f0", "s", "keta", "zeroS", "t", "fmt", "dateStr", "timeStr", "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", "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", "plugin_browser_color_default", "r", "g", "b", "z2", "v", "v2", "a", "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_html_default", "text", "tmp", "pre", "f", "sys", "plugin_browser_websocket_default", "callback", "sys", "s", "ws", "cbOpen", "err", "cbError", "e", "cbMsg", "BrowserParts", "plugin_browser_color_default", "plugin_browser_ajax_default", "plugin_browser_html_default", "plugin_browser_websocket_default", "PluginBrowserInWorker", "sys", "err", "a", "b", "plugin_browser_in_worker_default", "PluginWorker", "sys", "func", "data", "e", "msg", "plugin_worker_default", "WebWorkerNakoCompiler", "NakoCompiler", "data", "event", "nako3Compiler", "nako3Global", "plugin_browser_in_worker_default", "plugin_worker_default", "obj", "type", "value", "o", "modInfo"]
7
- }