<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans">
	<id>https://notblog.vudrux.site/wiki/%E7%94%A8%E6%88%B7:DGCK81LNN/WhatLang?action=history&amp;feed=atom</id>
	<title>用户:DGCK81LNN/WhatLang - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://notblog.vudrux.site/wiki/%E7%94%A8%E6%88%B7:DGCK81LNN/WhatLang?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://notblog.vudrux.site/wiki/%E7%94%A8%E6%88%B7:DGCK81LNN/WhatLang?action=history"/>
	<updated>2026-08-06T16:50:29Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://notblog.vudrux.site/index.php?title=%E7%94%A8%E6%88%B7:DGCK81LNN/WhatLang&amp;diff=3041&amp;oldid=prev</id>
		<title>2026年7月14日 (二) 10:00 DGCK81LNN</title>
		<link rel="alternate" type="text/html" href="https://notblog.vudrux.site/index.php?title=%E7%94%A8%E6%88%B7:DGCK81LNN/WhatLang&amp;diff=3041&amp;oldid=prev"/>
		<updated>2026-07-14T10:00:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年7月14日 (二) 18:00的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;第1行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第1行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;…………&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WhatLang 的原始解释器，又称Koishi运行时，使用 TypeScript 编写，可作为[https://koishi.chat Koishi.js]的[https://www.npmjs.com/package/koishi-plugin-whatlang 插件]&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;安装。使用bot命令 &lt;/del&gt;{{&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LNNBot命令链接&lt;/del&gt;|whatlang}}，或直接发送以 &amp;lt;code&amp;gt;¿&amp;lt;/code&amp;gt; 开头的代码即可运行。Koishi运行时内置 &amp;lt;code&amp;gt;help@&amp;lt;/code&amp;gt; 帮助函数，可返回中文帮助信息。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WhatLang 的原始解释器，又称Koishi运行时，使用 TypeScript 编写，可作为[https://koishi.chat Koishi.js]的[https://www.npmjs.com/package/koishi-plugin-whatlang 插件]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;安装。使用bot指令 &lt;/ins&gt;{{&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LNNBot指令链接&lt;/ins&gt;|whatlang}}，或直接发送以 &amp;lt;code&amp;gt;¿&amp;lt;/code&amp;gt; 开头的代码即可运行。Koishi运行时内置 &amp;lt;code&amp;gt;help@&amp;lt;/code&amp;gt; 帮助函数，可返回中文帮助信息。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WhatLang 解释器核心发布为 npm 包 [https://www.npmjs.com/package/whatlang-interpreter whatlang-interpreter]，附带一个 Node.js 可执行程序 &amp;lt;code&amp;gt;what&amp;lt;/code&amp;gt; 可在命令行使用。命令行环境暂未实现标准输入读取和文件系统交互功能。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WhatLang 解释器核心发布为 npm 包 [https://www.npmjs.com/package/whatlang-interpreter whatlang-interpreter]，附带一个 Node.js 可执行程序 &amp;lt;code&amp;gt;what&amp;lt;/code&amp;gt; 可在命令行使用。命令行环境暂未实现标准输入读取和文件系统交互功能。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot;&gt;第6行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第7行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;DGCK81LNN 还开发了另一套运行时 WhatServer，内嵌在 Koishi 机器人的网页控制台中，处理所有路径以 &amp;lt;code&amp;gt;/what&amp;lt;/code&amp;gt; 开头的 HTTP 请求。它支持 WhatNoter 与 WhatCommands，但不支持大部分Koishi运行时特有函数。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;DGCK81LNN 还开发了另一套运行时 WhatServer，内嵌在 Koishi 机器人的网页控制台中，处理所有路径以 &amp;lt;code&amp;gt;/what&amp;lt;/code&amp;gt; 开头的 HTTP 请求。它支持 WhatNoter 与 WhatCommands，但不支持大部分Koishi运行时特有函数。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;预防计划重构新版 WhatLang，引入“拉丁-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1补充”区段的字符作为新命令，新增Map数据类型与局部变量，同时会带来多处不兼容语法变更。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;预防计划重构新版 WhatLang，引入“拉丁-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1补充”区段的字符作为新指令，新增Map数据类型与局部变量，同时会带来多处不兼容语法变更。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 运行机制 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 运行机制 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot;&gt;第12行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第13行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WhatLang 拥有四种值类型：字符串（String）、数字（Number）、数组（Array）、未定义（Undefined）。数字为64位浮点数，包含 NaN。字符串和数字是不可变的；数组可原地修改，长度动态，可存放混合类型数据。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WhatLang 拥有四种值类型：字符串（String）、数字（Number）、数组（Array）、未定义（Undefined）。数字为64位浮点数，包含 NaN。字符串和数字是不可变的；数组可原地修改，长度动态，可存放混合类型数据。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;虚拟机内部维护一层栈中栈结构，称为&#039;&#039;&#039;帧栈&#039;&#039;&#039;（Frame Stack）。帧栈最顶层的栈称为&#039;&#039;&#039;主栈&#039;&#039;&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;，绝大多数代码命令都针对主栈。新数据压入栈顶，读取、弹出也从栈顶操作。使用 &lt;/del&gt;&amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;命令创建或编辑数组时，该数组会被压入帧栈，临时成为当前主栈；执行 &lt;/del&gt;&amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; 后，数组从帧栈弹出，作为数组元素放回上一级栈。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;虚拟机内部维护一层栈中栈结构，称为&#039;&#039;&#039;帧栈&#039;&#039;&#039;（Frame Stack）。帧栈最顶层的栈称为&#039;&#039;&#039;主栈&#039;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;，绝大多数代码指令都针对主栈。新数据压入栈顶，读取、弹出也从栈顶操作。使用 &lt;/ins&gt;&amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;指令创建或编辑数组时，该数组会被压入帧栈，临时成为当前主栈；执行 &lt;/ins&gt;&amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; 后，数组从帧栈弹出，作为数组元素放回上一级栈。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;数组与栈互相转换时不会生成新对象；若复制数组引用后通过 &amp;lt;code&amp;gt;| ]&amp;lt;/code&amp;gt; 修改数组，所有引用该数组的位置都会同步变更。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;数组与栈互相转换时不会生成新对象；若复制数组引用后通过 &amp;lt;code&amp;gt;| ]&amp;lt;/code&amp;gt; 修改数组，所有引用该数组的位置都会同步变更。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l24&quot;&gt;第24行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第25行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 一次性弹出多个值时，描述顺序为从栈底到栈顶；&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 一次性弹出多个值时，描述顺序为从栈底到栈顶；&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 「返回某值」等价于将该值压入主栈；&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 「返回某值」等价于将该值压入主栈；&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 使用参数执行字符串函数：复制当前栈生成临时栈，将参数、函数字符串依次压入临时栈，执行 &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;调用命令；执行结果为临时栈栈顶值，若临时栈为空则为未定义；&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 使用参数执行字符串函数：复制当前栈生成临时栈，将参数、函数字符串依次压入临时栈，执行 &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;指令；执行结果为临时栈栈顶值，若临时栈为空则为未定义；&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 字符串可视为字符串数组：常规遍历单位为**字符**，部分操作单位为**编码单元**。编码单元依实现不同可为单字符或UTF-16码元；官方实现采用UTF-16码元，一个「字符」可对应单个BMP平面Unicode字符，或一对UTF-16代理对。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 字符串可视为字符串数组：常规遍历单位为**字符**，部分操作单位为**编码单元**。编码单元依实现不同可为单字符或UTF-16码元；官方实现采用UTF-16码元，一个「字符」可对应单个BMP平面Unicode字符，或一对UTF-16代理对。&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br/&amp;gt;&lt;/ins&gt;该区分至关重要：不同函数对含非BMP字符的字符串处理逻辑不同。例如 &amp;lt;code&amp;gt;len@&amp;lt;/code&amp;gt; 统计编码单元数量，&amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; 按字符遍历字符串；&amp;lt;code&amp;gt;arr@&amp;lt;/code&amp;gt; 将字符串拆分为字符数组，&amp;lt;code&amp;gt;&quot;&quot;split@&amp;lt;/code&amp;gt; 按编码单元分割字符串。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/del&gt;该区分至关重要：不同函数对含非BMP字符的字符串处理逻辑不同。例如 &amp;lt;code&amp;gt;len@&amp;lt;/code&amp;gt; 统计编码单元数量，&amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; 按字符遍历字符串；&amp;lt;code&amp;gt;arr@&amp;lt;/code&amp;gt; 将字符串拆分为字符数组，&amp;lt;code&amp;gt;&quot;&quot;split@&amp;lt;/code&amp;gt; 按编码单元分割字符串。&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;类型强制转换&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;类型强制转换&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l46&quot;&gt;第46行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第46行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;真值判定：除0、空字符串、未定义外均为真值；NaN、空数组均判定为真。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;真值判定：除0、空字符串、未定义外均为真值；NaN、空数组均判定为真。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;命令集 &lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;指令集 &lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{|class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{|class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;命令 &lt;/del&gt;!! 名称 !! 说明&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;指令 &lt;/ins&gt;!! 名称 !! 说明&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l339&quot;&gt;第339行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第339行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cat@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cat@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 弹出URL字符串，发起HTTP GET请求，返回响应文本；状态码异常/网络错误直接抛出异常。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 弹出URL字符串，发起HTTP GET请求，返回响应文本；状态码异常/网络错误直接抛出异常。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;命名来源LNNBot内置cat命令：传入URL则拉取网页，不传则读取下一条用户消息（逻辑近似pr&lt;/del&gt;@）。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;命名来源LNNBot内置cat指令：传入URL则拉取网页，不传则读取下一条用户消息（逻辑近似pr&lt;/ins&gt;@）。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;ca@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;ca@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l480&quot;&gt;第480行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第480行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== WhatCommands &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;自定义命令模块 &lt;/del&gt;====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== WhatCommands &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;自定义指令模块 &lt;/ins&gt;====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;允许使用WhatLang编写自定义命令；每条命令包含名称、执行代码、简短描述、详细帮助文档。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;允许使用WhatLang编写自定义指令；每条指令包含名称、执行代码、简短描述、详细帮助文档。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;三种调用方式：发送 &amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;¿¿命令名 &lt;/del&gt;参数&amp;lt;/code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;、调用机器人命令 &lt;/del&gt;&amp;lt;code&amp;gt;whatcmd&amp;lt;/code&amp;gt;、WhatLang内置 &amp;lt;code&amp;gt;cmd@&amp;lt;/code&amp;gt; 函数。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;三种调用方式：发送 &amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;¿¿指令名 &lt;/ins&gt;参数&amp;lt;/code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;、调用机器人指令 &lt;/ins&gt;&amp;lt;code&amp;gt;whatcmd&amp;lt;/code&amp;gt;、WhatLang内置 &amp;lt;code&amp;gt;cmd@&amp;lt;/code&amp;gt; 函数。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;命令接收单个字符串输入，存放于栈顶。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;指令接收单个字符串输入，存放于栈顶。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;示例：命令greet代码 &lt;/del&gt;&amp;lt;code&amp;gt;`Hello, `.`!`&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;示例：指令greet代码 &lt;/ins&gt;&amp;lt;code&amp;gt;`Hello, `.`!`&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;发送 &amp;lt;code&amp;gt;¿¿greet my friends&amp;lt;/code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;、执行机器人命令 &lt;/del&gt;&amp;lt;code&amp;gt;whatcmd greet my friends&amp;lt;/code&amp;gt;、运行代码 &amp;lt;code&amp;gt;&quot;my friends&quot; greet cmd@&amp;lt;/code&amp;gt; 均输出 &amp;lt;code&amp;gt;Hello, my friends!&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;发送 &amp;lt;code&amp;gt;¿¿greet my friends&amp;lt;/code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;、执行机器人指令 &lt;/ins&gt;&amp;lt;code&amp;gt;whatcmd greet my friends&amp;lt;/code&amp;gt;、运行代码 &amp;lt;code&amp;gt;&quot;my friends&quot; greet cmd@&amp;lt;/code&amp;gt; 均输出 &amp;lt;code&amp;gt;Hello, my friends!&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;使用 &amp;lt;code&amp;gt;cmd@&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;调用命令会返回执行结果，可作为退出状态码；¿¿前缀调用无法获取返回值。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;使用 &amp;lt;code&amp;gt;cmd@&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;调用指令会返回执行结果，可作为退出状态码；¿¿前缀调用无法获取返回值。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{|class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{|class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l493&quot;&gt;第493行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第493行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdset@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdset@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;依次弹出代码字符串、命令名称，绑定命令执行代码。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;依次弹出代码字符串、指令名称，绑定指令执行代码。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdall@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdall@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;返回全部已定义命令名称数组。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;返回全部已定义指令名称数组。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdsethelp@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdsethelp@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;依次弹出帮助文本、命令名，设置命令详细手册。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;依次弹出帮助文本、指令名，设置指令详细手册。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdseth@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdseth@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;依次弹出描述文本、命令名，设置命令简短介绍。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;依次弹出描述文本、指令名，设置指令简短介绍。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmddel@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmddel@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;弹出命令名称，删除该自定义命令。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;弹出指令名称，删除该自定义指令。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdget@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdget@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;弹出命令名称，返回命令代码，无该命令返回未定义。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;弹出指令名称，返回指令代码，无该指令返回未定义。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdgethelp@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdgethelp@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;弹出命令名称，返回命令详细手册文本，无则未定义。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;弹出指令名称，返回指令详细手册文本，无则未定义。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdgeth@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmdgeth@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;弹出命令名称，返回命令简短描述，无则未定义。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;弹出指令名称，返回指令简短描述，无则未定义。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmd@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cmd@&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;依次弹出输入参数字符串、命令名称，运行对应命令代码并返回执行结果。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;依次弹出输入参数字符串、指令名称，运行对应指令代码并返回执行结果。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;旧版本无命令时无返回值；新版本直接抛出异常。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;旧版本无指令时无返回值；新版本直接抛出异常。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>DGCK81LNN</name></author>
	</entry>
	<entry>
		<id>https://notblog.vudrux.site/index.php?title=%E7%94%A8%E6%88%B7:DGCK81LNN/WhatLang&amp;diff=3038&amp;oldid=prev</id>
		<title>DGCK81LNN：​wtf</title>
		<link rel="alternate" type="text/html" href="https://notblog.vudrux.site/index.php?title=%E7%94%A8%E6%88%B7:DGCK81LNN/WhatLang&amp;diff=3038&amp;oldid=prev"/>
		<updated>2026-06-30T11:35:07Z</updated>

		<summary type="html">&lt;p&gt;wtf&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
WhatLang 的原始解释器，又称Koishi运行时，使用 TypeScript 编写，可作为[https://koishi.chat Koishi.js]的[https://www.npmjs.com/package/koishi-plugin-whatlang 插件]安装。使用bot命令 {{LNNBot命令链接|whatlang}}，或直接发送以 &amp;lt;code&amp;gt;¿&amp;lt;/code&amp;gt; 开头的代码即可运行。Koishi运行时内置 &amp;lt;code&amp;gt;help@&amp;lt;/code&amp;gt; 帮助函数，可返回中文帮助信息。&lt;br /&gt;
&lt;br /&gt;
WhatLang 解释器核心发布为 npm 包 [https://www.npmjs.com/package/whatlang-interpreter whatlang-interpreter]，附带一个 Node.js 可执行程序 &amp;lt;code&amp;gt;what&amp;lt;/code&amp;gt; 可在命令行使用。命令行环境暂未实现标准输入读取和文件系统交互功能。&lt;br /&gt;
&lt;br /&gt;
DGCK81LNN 还开发了另一套运行时 WhatServer，内嵌在 Koishi 机器人的网页控制台中，处理所有路径以 &amp;lt;code&amp;gt;/what&amp;lt;/code&amp;gt; 开头的 HTTP 请求。它支持 WhatNoter 与 WhatCommands，但不支持大部分Koishi运行时特有函数。&lt;br /&gt;
&lt;br /&gt;
预防计划重构新版 WhatLang，引入“拉丁-1补充”区段的字符作为新命令，新增Map数据类型与局部变量，同时会带来多处不兼容语法变更。&lt;br /&gt;
&lt;br /&gt;
== 运行机制 ==&lt;br /&gt;
&lt;br /&gt;
WhatLang 拥有四种值类型：字符串（String）、数字（Number）、数组（Array）、未定义（Undefined）。数字为64位浮点数，包含 NaN。字符串和数字是不可变的；数组可原地修改，长度动态，可存放混合类型数据。&lt;br /&gt;
&lt;br /&gt;
虚拟机内部维护一层栈中栈结构，称为&amp;#039;&amp;#039;&amp;#039;帧栈&amp;#039;&amp;#039;&amp;#039;（Frame Stack）。帧栈最顶层的栈称为&amp;#039;&amp;#039;&amp;#039;主栈&amp;#039;&amp;#039;&amp;#039;，绝大多数代码命令都针对主栈。新数据压入栈顶，读取、弹出也从栈顶操作。使用 &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt; 命令创建或编辑数组时，该数组会被压入帧栈，临时成为当前主栈；执行 &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; 后，数组从帧栈弹出，作为数组元素放回上一级栈。&lt;br /&gt;
数组与栈互相转换时不会生成新对象；若复制数组引用后通过 &amp;lt;code&amp;gt;| ]&amp;lt;/code&amp;gt; 修改数组，所有引用该数组的位置都会同步变更。&lt;br /&gt;
&lt;br /&gt;
虚拟机同时内置字典，用于存储具名变量。&lt;br /&gt;
&lt;br /&gt;
部分运行时存在独立的「输出栈（Output Stack）」：每次打印内容都会压入输出栈。&amp;lt;code&amp;gt;send@&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;sends@&amp;lt;/code&amp;gt; 等函数可弹出输出栈内容并立即发送；程序结束时，输出栈内剩余内容会统一输出。&lt;br /&gt;
Koishi运行时的输出栈可存放文本片段、附件、消息回复引用；其他环境支持打印原始字节数据。&lt;br /&gt;
&lt;br /&gt;
本文档统一约定：&lt;br /&gt;
* 栈为空时执行弹出操作，返回未定义（Undefined）；&lt;br /&gt;
* 一次性弹出多个值时，描述顺序为从栈底到栈顶；&lt;br /&gt;
* 「返回某值」等价于将该值压入主栈；&lt;br /&gt;
* 使用参数执行字符串函数：复制当前栈生成临时栈，将参数、函数字符串依次压入临时栈，执行 &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; 调用命令；执行结果为临时栈栈顶值，若临时栈为空则为未定义；&lt;br /&gt;
* 字符串可视为字符串数组：常规遍历单位为**字符**，部分操作单位为**编码单元**。编码单元依实现不同可为单字符或UTF-16码元；官方实现采用UTF-16码元，一个「字符」可对应单个BMP平面Unicode字符，或一对UTF-16代理对。&lt;br /&gt;
  该区分至关重要：不同函数对含非BMP字符的字符串处理逻辑不同。例如 &amp;lt;code&amp;gt;len@&amp;lt;/code&amp;gt; 统计编码单元数量，&amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; 按字符遍历字符串；&amp;lt;code&amp;gt;arr@&amp;lt;/code&amp;gt; 将字符串拆分为字符数组，&amp;lt;code&amp;gt;&amp;quot;&amp;quot;split@&amp;lt;/code&amp;gt; 按编码单元分割字符串。&lt;br /&gt;
&lt;br /&gt;
;类型强制转换&lt;br /&gt;
&lt;br /&gt;
将任意值转为字符串（String）：按人类可读格式序列化；字符串自动添加引号并转义特殊字符；数字使用标准十进制输出；未定义转为 &amp;lt;code&amp;gt;undef&amp;lt;/code&amp;gt;；数组元素逗号分隔、方括号包裹；自 [https://github.com/DGCK81LNN/whatlang-interpreter/commit/5759ee099781cb7982e257f28ac95d54e3f1356b v0.4.0] 起，超长或深层嵌套数组会用省略号截断。&lt;br /&gt;
&lt;br /&gt;
将任意值强制转为数字（Number）规则如下：&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 输入值 !! 转换结果&lt;br /&gt;
|-&lt;br /&gt;
| 字符串 || 去除首尾空白后尝试解析为数字；支持二进制`0b`、八进制`0o`、十六进制`0x`前缀；支持科学计数法E/e（正负尾数、正负指数，正号可省略）；不支持千位分隔符；无法解析时返回NaN&lt;br /&gt;
|-&lt;br /&gt;
| 未定义 || NaN&lt;br /&gt;
|-&lt;br /&gt;
| 数组 || 空数组返回0；仅含单个元素时递归转换该元素为数字；其余情况返回NaN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
真值判定：除0、空字符串、未定义外均为真值；NaN、空数组均判定为真。&lt;br /&gt;
&lt;br /&gt;
== 命令集 ==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 命令 !! 名称 !! 说明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
| 数字零&lt;br /&gt;
| 压入数值0。&lt;br /&gt;
|-&lt;br /&gt;
| 1~9开头、后跟任意位0~9数字&lt;br /&gt;
| 正数字面量&lt;br /&gt;
| 压入对应数字。&lt;br /&gt;
|-&lt;br /&gt;
| ASCII字母开头，后跟任意ASCII字母、数字、下划线&lt;br /&gt;
| 标识符字面量&lt;br /&gt;
| 将标识符转为全小写字符串压入栈。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;#039;&amp;lt;/code&amp;gt; 后跟单个字符&lt;br /&gt;
| 字符字面量&lt;br /&gt;
| 将单个字符作为字符串压入栈。&lt;br /&gt;
[https://github.com/DGCK81LNN/whatlang-interpreter/commit/8663d565a51a8f7176ac5eb8ece3ac509be2167a v0.3.0] 之前仅支持单个UTF-16编码单元，无法输入非BMP字符。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; 包裹文本&lt;br /&gt;
| 引号字符串字面量&lt;br /&gt;
| 将包裹文本作为完整字符串压入栈。&lt;br /&gt;
换行 `\n`、制表符 `\t` 可转义；自 [https://github.com/DGCK81LNN/whatlang-interpreter/commit/e05c5d79abbbf59b6da719a8ca65daade085c7df v0.2.0] 新增 `\r` `\f` `\v`；单独反斜杠会让后一个字符原样输出。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;`&amp;lt;/code&amp;gt; 包裹文本&lt;br /&gt;
| 直接打印字面量&lt;br /&gt;
| 逻辑同双引号字符串，但不会压入栈，直接输出文本。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;&lt;br /&gt;
| 加法/拼接&lt;br /&gt;
| 弹出a、b两个栈顶值，执行合并运算：&lt;br /&gt;
* 双方均为数组/均为字符串：执行拼接；&lt;br /&gt;
* 一方为数组，另一方转为单元素数组后拼接；&lt;br /&gt;
* 一方为字符串，另一方强制转字符串后拼接；&lt;br /&gt;
* 任意一方为NaN/未定义，结果为NaN；&lt;br /&gt;
* 其余场景执行数值加法。&lt;br /&gt;
数组拼接功能于 [https://github.com/DGCK81LNN/whatlang-interpreter/commit/cd29132f598e289faec40bdad04d6975ed6957d6 v0.2.2] 加入，此前数组相加行为未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt;&lt;br /&gt;
| 四则运算&lt;br /&gt;
| 弹出a、b，统一转为数字，计算 `a 运算符 b` 并压入结果。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt;&lt;br /&gt;
| 比较&lt;br /&gt;
| 弹出a、b进行比较：宽松相等（等价JS `==`；数组仅同一引用才算相等）返回0；a大于b返回1；a小于b返回-1；无法比较返回NaN。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt;&lt;br /&gt;
| 逻辑非&lt;br /&gt;
| 弹出单个值；假值返回1，真值返回0。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt;&lt;br /&gt;
| 新建数组栈&lt;br /&gt;
| 开辟一层空栈，用于构建数组。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| 切换至数组栈&lt;br /&gt;
| 弹出栈顶值，若非数组则抛出错误；将该数组设为当前操作栈。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt;&lt;br /&gt;
| 关闭数组栈&lt;br /&gt;
| 将当前栈转为数组，退回上一级栈并把数组压入栈顶。&lt;br /&gt;
&amp;lt;code&amp;gt;[ ]&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;| ]&amp;lt;/code&amp;gt; 必须成对匹配。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt; 包裹文本（允许括号嵌套）&lt;br /&gt;
| 无转义字符串&lt;br /&gt;
| 直接提取括号内全部文本为字符串，不解析转义符。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&lt;br /&gt;
| 打印栈顶&lt;br /&gt;
| 输出栈顶元素，不弹出；栈空则输出 `undef`。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\&amp;lt;/code&amp;gt;&lt;br /&gt;
| 交换栈顶两位&lt;br /&gt;
| 交换栈最上方两个元素；栈元素不足2个则无操作。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
| 复制栈顶&lt;br /&gt;
| 复制栈顶元素压入栈；数组仅复制引用，不深拷贝；栈空无操作。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 下沉栈顶&lt;br /&gt;
| 弹出栈顶元素，插入栈底；栈空无操作。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt;&lt;br /&gt;
| 丢弃栈顶&lt;br /&gt;
| 弹出并丢弃栈顶值。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;&lt;br /&gt;
| 赋值具名变量&lt;br /&gt;
| 弹出字符串作为变量名，将剩余栈顶值赋予该变量；若无剩余值则赋值未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt;&lt;br /&gt;
| 读取具名变量&lt;br /&gt;
| 弹出字符串变量名；存在该变量则返回变量值；为内置函数名则返回「函数名@」；其余返回未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 函数调用/代码执行&lt;br /&gt;
| 弹出字符串：若是内置函数则直接调用；若是已定义变量，则将变量值作为代码执行（变量值必须为字符串）；其余情况直接将字符串作为代码运行。&lt;br /&gt;
未来版本计划限制变量名规则：仅允许小写ASCII字母开头，仅包含小写字母、数字、下划线；不符合规则的标识符会直接作为代码文本执行。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 打包数组&lt;br /&gt;
| 弹出n并转为整数；取出栈顶n个元素，打包为新数组压入栈。&lt;br /&gt;
n为0或负数时，保留栈底 |n| 个元素，其余打包为数组。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 展开序列&lt;br /&gt;
| 弹出数组/字符串，将内部所有元素依次压入栈；输入非数组、非字符串则报错。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt;&lt;br /&gt;
| 循环起始&lt;br /&gt;
| 弹出判断值；若为假，直接跳转到匹配的 &amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| 循环结束&lt;br /&gt;
| 弹出判断值；若为真，跳转回匹配的 &amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt;。&lt;br /&gt;
&amp;lt;code&amp;gt;{ }&amp;lt;/code&amp;gt; 必须成对匹配。&lt;br /&gt;
|-&lt;br /&gt;
| 连续多个 &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;&lt;br /&gt;
| 跳出循环/终止执行&lt;br /&gt;
| 跳出对应层数嵌套循环；!数量超过循环嵌套层数时，终止当前代码块：退出当前@调用、终止#迭代、或直接结束程序。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;&lt;br /&gt;
| 映射遍历&lt;br /&gt;
| 弹出函数字符串func；遍历栈顶数组/字符串的每一项item，以item为参数执行func；将所有执行结果打包为数组返回。&lt;br /&gt;
栈顶必须是数组或字符串，否则报错；[https://github.com/DGCK81LNN/whatlang-interpreter/commit/e05c5d79abbbf59b6da719a8ca65daade085c7df v0.2.0] 前不支持字符串遍历。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&lt;br /&gt;
| 读取序列下标&lt;br /&gt;
| 弹出下标n；取出栈顶数组/字符串对应下标元素。&lt;br /&gt;
n强制转为整数；栈顶非数组/字符串报错；字符串按下标取编码单元；负数下标从末尾倒数，-1代表最后一位；下标越界返回未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 修改序列下标&lt;br /&gt;
| 弹出n、value；修改栈顶数组下标n的元素为value。&lt;br /&gt;
n必须可转为整数或NaN；栈顶非数组报错；负数下标倒数；n等于数组长度/NaN时将value追加至数组末尾；其余越界下标不修改数组。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt;&lt;br /&gt;
| 删除数组下标元素&lt;br /&gt;
| 弹出下标n；删除栈顶数组对应下标元素。&lt;br /&gt;
n强制转为整数；栈顶非数组报错；负数下标倒数；下标越界无操作；被删除元素后方所有元素下标自动前移一位。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 内置函数 ==&lt;br /&gt;
&lt;br /&gt;
=== 核心通用函数 ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 函数 !! 说明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;num@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出一个值，强制转为数字并返回。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;str@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出一个值，强制转为字符串并返回。&lt;br /&gt;
[https://github.com/DGCK81LNN/whatlang-interpreter/commit/e05c5d79abbbf59b6da719a8ca65daade085c7df v0.2.0] 旧版本行为：字符串带引号转义；全单编码单元字符串数组直接拼接，空数组返回空串。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;repr@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出值，返回可复现该值的WhatLang代码字符串。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;arr@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出值：数组返回浅拷贝；字符串拆分为字符数组；其余类型报错。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pow@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出a、b转为数字，返回a的b次幂。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;band@&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;bor@&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;bxor@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出两值转为有符号32位整数，依次执行按位与、按位或、按位异或并返回结果。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bnot@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出值转为有符号32位整数，返回按位取反结果。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rand@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 返回0~1之间随机浮点数。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;randint@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出两个数字，返回区间内随机整数（向下取整）。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;flr@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出数字，向下取整返回整数。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;range@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出n转为数字，n必须小于4294967296；返回 [0, n) 整数数组，小数部分直接截断。n为负则报错。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;len@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 返回栈顶数组/字符串长度；字符串统计**编码单元**数量。&lt;br /&gt;
[https://github.com/DGCK81LNN/whatlang-interpreter/commit/e05c5d79abbbf59b6da719a8ca65daade085c7df v0.2.0] 旧版本统计字符数。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;split@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出字符串、分隔符；按分隔符分割字符串为字符串数组；分隔符为空则按编码单元拆分。&lt;br /&gt;
自 [https://github.com/DGCK81LNN/whatlang-interpreter/commit/cae889d00a70db3c532c2fefce2add7ad689bc53 v0.2.1]：分隔符为数组时视作正则表达式，匹配分组全部存入结果数组。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;join@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出分隔符字符串；将栈顶数组/字符串全部转为字符串，以分隔符拼接为单一字符串；栈顶非数组/字符串报错。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;reverse@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 将栈顶数组/字符串转为数组并反转元素顺序，返回浅拷贝。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;in@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出目标值；查找栈顶数组/字符串中首个匹配项下标，无匹配返回-1；栈顶非法类型报错。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;filter@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出函数字符串；遍历栈顶数组/字符串，执行函数筛选真值项，返回筛选后的新数组；栈顶非法类型报错。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;chr@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出数字/数字数组（Unicode码点），拼接为对应字符串；数值为负或超过1114111时报错。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ord@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出字符串，将每个字符/未配对代理对转为码点数字，返回数字数组。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;and@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出a、b；a为空串/0/未定义则返回a，否则返回b。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;or@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出a、b；a为空串/0/未定义则返回b，否则返回a。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nan@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 返回NaN。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;undef@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 返回未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;inf@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 返回正无穷。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ninf@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 返回负无穷。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eq@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出两值，严格相等（等价JS `===`）返回1，否则0。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stak@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 将当前主栈转为数组返回；会造成数组自包含。&lt;br /&gt;
名称含义：stack@ 去掉c（copy，不拷贝）。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stack@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 返回主栈的浅拷贝数组。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;try@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 逻辑同@调用；运行时报错则返回 [错误名, 错误信息]；无错误返回 [未定义, 未定义]。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;throw@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出字符串作为错误信息，抛出名为Error的运行时异常。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;match@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出待匹配字符串、正则表达式；执行JS正则匹配，返回匹配结果字符串数组，无匹配返回空数组。&lt;br /&gt;
待匹配值强制转字符串；表达式为数组时对应RegExp构造参数 [正则, 修饰符]；普通字符串直接作为正则模板；正则非法则报错。带g修饰符返回全部完整匹配；无g修饰符返回完整匹配+各分组捕获内容。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;repl@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出目标字符串、匹配模板、替换文本；全局替换所有匹配项并返回新字符串。匹配模板可为字面字符串或正则数组（同match@规则）；替换文本内美元符号为分组引用，如需输出$需写两个$$。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;time@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 返回当前系统时间戳（毫秒级纪元时间）。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;type@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出值，返回类型字符串：&amp;lt;code&amp;gt;&amp;quot;String&amp;quot;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;&amp;quot;Number&amp;quot;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;&amp;quot;Array&amp;quot;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;&amp;quot;Undefined&amp;quot;&amp;lt;/code&amp;gt;。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;b64@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出字节数字数组，返回Base64编码字符串。&lt;br /&gt;
[https://github.com/DGCK81LNN/whatlang-interpreter/commit/4a23a8a2cec1577c7ff6110c80c65a3d59430933 v0.3.3] 新增。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nb64@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出Base64字符串，解码为字节数字数组返回。&lt;br /&gt;
[https://github.com/DGCK81LNN/whatlang-interpreter/commit/4a23a8a2cec1577c7ff6110c80c65a3d59430933 v0.3.3] 新增。解码前自动过滤非法Base64字符，末尾补等号至长度为4的倍数。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;utf8@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出字符串，转为UTF-8字节数字数组返回。&lt;br /&gt;
[https://github.com/DGCK81LNN/whatlang-interpreter/commit/4a23a8a2cec1577c7ff6110c80c65a3d59430933 v0.3.3] 新增。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nutf8@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出UTF-8字节数字数组，解码为字符串返回。&lt;br /&gt;
[https://github.com/DGCK81LNN/whatlang-interpreter/commit/4a23a8a2cec1577c7ff6110c80c65a3d59430933 v0.3.3] 新增。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 通用扩展函数 ===&lt;br /&gt;
该组函数最初为Koishi运行时专属，现已在多数环境提供。&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 函数 !! 说明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;you@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 返回运行环境标识字符串。小石心格式：&amp;lt;code&amp;gt;&amp;quot;WhatLang/2024 Environment/messaging Framework/koishi Platform/平台标识 Id/机器人平台ID&amp;quot;&amp;lt;/code&amp;gt;。&lt;br /&gt;
可在插件配置「Framework」与「Platform」之间自定义品牌字段，规范格式为 &amp;lt;code&amp;gt;Brand/机器人名称&amp;lt;/code&amp;gt;。&lt;br /&gt;
2025年6月22日并入小石心插件：[https://github.com/DGCK81LNN/yufang-koishi-plugins/commit/279e74d166c8673a984ffd7ce0b64ac6c597f9bb]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pr@&amp;lt;/code&amp;gt;&lt;br /&gt;
| Koishi运行时：等待当前频道内同一用户下一条消息，超时返回未定义；用于交互式读取用户输入。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cat@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出URL字符串，发起HTTP GET请求，返回响应文本；状态码异常/网络错误直接抛出异常。&lt;br /&gt;
命名来源LNNBot内置cat命令：传入URL则拉取网页，不传则读取下一条用户消息（逻辑近似pr@）。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ca@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 逻辑同cat@，返回原始字节数字数组而非文本。&lt;br /&gt;
2025-05-14 在WhatServer以catb@上线，05-29更名ca@，含义：cat去掉text的t；2025-06-22接入Koishi运行时：[https://github.com/DGCK81LNN/yufang-koishi-plugins/commit/b63aebce036ad8339aad7d453593697a18d27ce0]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;fetch@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 依次弹出请求方法、URL、请求头、请求体，发起HTTP请求；返回数组 [状态码数字, 状态描述字符串, 二维数组请求头, 响应文本字符串]。&lt;br /&gt;
2025年6月3日新增。&lt;br /&gt;
方法、URL必须为字符串；请求头为二维字符串数组；请求体为字节数字数组或字符串；GET/HEAD请求体必须为未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;fech@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 逻辑同fetch@，响应体返回原始字节数组而非文本；名称含义fetch去掉t（text）。2025-06-03新增。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;reesc@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出字符串，转义所有JS正则元字符后返回。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sleep@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出数字n，阻塞n秒；取值范围0 ≤ n ≤ 2147483.647。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nout@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出并丢弃输出栈最后存入（栈顶）的一条内容。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nouts@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出整数n，删除输出栈顶部n条内容；n≤0时保留底部|n|条，其余全部清空；无穷值视为0。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;send@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出输出栈栈顶内容并立即发送；小石心返回发送消息的平台ID字符串数组。用于单条输出刷新。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sends@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出整数n，取出输出栈顶部n条内容批量发送；小石心返回消息ID数组。n≤0保留底部|n|条；无穷视为0。用于批量刷新输出栈。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ou@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出字节数字数组，直接打印原始二进制字节；小石心无此函数。2025-05-14 WhatServer以outb@上线，05-29更名ou@；命名类比ca/fech，out去掉t代表输出字节流。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Koishi运行时专属函数 ===&lt;br /&gt;
部分函数与机器人接收消息绑定；消息内容使用Koishi标准XML字符串格式。&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 函数 !! 说明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;help@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 帮助文档函数。弹出参数字符串，返回对应帮助主题文本；空串/未定义返回语言简介与help@使用教程。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;helpall@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 生成图片，打印几乎全部内置函数名称列表。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;propt@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出用户ID；等待当前频道指定用户的下一条消息并返回内容；参数为假值则接收全体用户消息，支持传入单个/多用户平台ID。超时返回未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;prompt@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出频道ID、回调函数；监听目标频道消息，每条消息传入详情数组执行回调；回调返回真值时停止监听并返回消息详情，超时返回未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;me@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 返回触发解释器的消息详情数组，字段定义：&lt;br /&gt;
* 下标0：消息XML文本字符串&lt;br /&gt;
* 下标1：消息平台ID字符串&lt;br /&gt;
* 下标2：发送者用户名&lt;br /&gt;
* 下标3：发送者平台用户ID&lt;br /&gt;
* 下标4：Koishi数据库用户ID（数字）&lt;br /&gt;
* 下标5：当前频道平台ID&lt;br /&gt;
* 下标6：被回复/引用消息ID，无则未定义&lt;br /&gt;
&lt;br /&gt;
该函数在WhatServer可用，但字段语义变更（尽量保持接口兼容）：&lt;br /&gt;
* 下标0：请求方法+URL，例 &amp;lt;code&amp;gt;GET /whatfoo/bar&amp;lt;/code&amp;gt;；URL编码字符自动解码&lt;br /&gt;
* 下标1：随机字符串&lt;br /&gt;
* 下标2、3：客户端IP地址&lt;br /&gt;
* 下标4：携带X-Lnnbot-Whatserver-Login-Token请求头时为数据库用户ID数字，否则未定义&lt;br /&gt;
* 下标5：固定字符串 &amp;lt;code&amp;gt;&amp;quot;__WHATSERVER__&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 下标6：未定义&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;outimg@&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;outaudio@&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;outvideo@&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;outfile@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出资源URL字符串，向输出栈写入对应类型附件。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;outquote@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出消息ID字符串，输出对应消息的回复引用卡片。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;outat@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出用户平台ID，输出@提及该用户。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;outimag@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出文本字符串，使用等宽字体渲染为图片存入输出栈。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;outksq@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出文本字符串，使用Kreative Square字体渲染图片输出；字体地址：[https://www.kreativekorp.com/software/fonts/ksquare/]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;outsvg@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出SVG描述数组，渲染矢量图存入输出栈；暂不支持动画。&lt;br /&gt;
数组规则：前两项为svg宽、高；后续每项为元素数组：首项元素类型字符串，第二项style样式，剩余参数随类型变化。&lt;br /&gt;
* &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;：路径标签，第三项为d路径数据；&lt;br /&gt;
* &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;：文字标签，第三项x、第四项y、第五项文本内容；&lt;br /&gt;
* &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;：图片标签，依次为x、y、宽、高、资源href地址。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;outhtml@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出HTML文本，渲染网页截图存入输出栈。&lt;br /&gt;
2025年10月3日新增：[https://github.com/DGCK81LNN/yufang-koishi-plugins/commit/6c98e706c38ca9c2adbc7645bd3ebcb04b7ca524]&lt;br /&gt;
当前不支持class=wikitable表格快捷语法，因渲染环境禁用JS；开发组正在修复该问题。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nsend@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出消息ID，撤回当前频道对应消息。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sendsto@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 依次弹出目标频道ID、整数n；逻辑同sends@，批量发送至指定频道，返回发送消息ID数组。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;findmsg@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出回调函数；遍历当前频道历史消息，每条传入详情数组执行回调；回调返回真值时停止遍历并返回该消息详情；遍历至消息上限无匹配则返回未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getmsg@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出消息ID，返回对应消息详情数组（同me@结构）。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;guildmem@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出群组ID，返回群成员二维数组，每项格式 [用户名, 平台用户ID]；机器人接收过该用户消息才会出现在列表中。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== WhatNoter 笔记存储模块 ====&lt;br /&gt;
基于Koishi数据库用户ID的简易持久化存储；每个用户ID独立拥有公开笔记、保护笔记、私有笔记。&lt;br /&gt;
无需用户真实存在即可读取对应ID的公开笔记；任意一条笔记创建后，同ID其余两类笔记自动初始化为空串；从未写入的ID读取笔记返回未定义。&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 函数 !! 说明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;notewc@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出数字用户ID、字符串文本，写入该用户公开笔记。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;notewd@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出字符串文本，写入调用者的保护笔记。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;notewe@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出字符串文本，写入调用者的私有笔记。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;noterc@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出数字用户ID，读取其公开笔记内容。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;noterd@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出数字用户ID，读取其保护笔记内容。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;notere@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 读取调用者私有笔记内容并返回。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== WhatCommands 自定义命令模块 ====&lt;br /&gt;
允许使用WhatLang编写自定义命令；每条命令包含名称、执行代码、简短描述、详细帮助文档。&lt;br /&gt;
三种调用方式：发送 &amp;lt;code&amp;gt;¿¿命令名 参数&amp;lt;/code&amp;gt;、调用机器人命令 &amp;lt;code&amp;gt;whatcmd&amp;lt;/code&amp;gt;、WhatLang内置 &amp;lt;code&amp;gt;cmd@&amp;lt;/code&amp;gt; 函数。&lt;br /&gt;
命令接收单个字符串输入，存放于栈顶。&lt;br /&gt;
示例：命令greet代码 &amp;lt;code&amp;gt;`Hello, `.`!`&amp;lt;/code&amp;gt;&lt;br /&gt;
发送 &amp;lt;code&amp;gt;¿¿greet my friends&amp;lt;/code&amp;gt;、执行机器人命令 &amp;lt;code&amp;gt;whatcmd greet my friends&amp;lt;/code&amp;gt;、运行代码 &amp;lt;code&amp;gt;&amp;quot;my friends&amp;quot; greet cmd@&amp;lt;/code&amp;gt; 均输出 &amp;lt;code&amp;gt;Hello, my friends!&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 &amp;lt;code&amp;gt;cmd@&amp;lt;/code&amp;gt; 调用命令会返回执行结果，可作为退出状态码；¿¿前缀调用无法获取返回值。&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 函数 !! 说明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cmdset@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 依次弹出代码字符串、命令名称，绑定命令执行代码。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cmdall@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 返回全部已定义命令名称数组。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cmdsethelp@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 依次弹出帮助文本、命令名，设置命令详细手册。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cmdseth@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 依次弹出描述文本、命令名，设置命令简短介绍。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cmddel@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出命令名称，删除该自定义命令。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cmdget@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出命令名称，返回命令代码，无该命令返回未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cmdgethelp@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出命令名称，返回命令详细手册文本，无则未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cmdgeth@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 弹出命令名称，返回命令简短描述，无则未定义。&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cmd@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 依次弹出输入参数字符串、命令名称，运行对应命令代码并返回执行结果。&lt;br /&gt;
旧版本无命令时无返回值；新版本直接抛出异常。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WhatServer 网页服务端专属函数 ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 函数 !! 说明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hset@&amp;lt;/code&amp;gt;&lt;br /&gt;
| 依次弹出响应头键、值字符串，设置HTTP响应头。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
除内置函数外，WhatServer预定义三个全局变量：&lt;br /&gt;
&amp;lt;code&amp;gt;reqh&amp;lt;/code&amp;gt;：请求头二维字符串数组；&lt;br /&gt;
&amp;lt;code&amp;gt;reqm&amp;lt;/code&amp;gt;：请求方法字符串；&lt;br /&gt;
&amp;lt;code&amp;gt;reqb&amp;lt;/code&amp;gt;：请求体，依请求方式与Content-Type分为字符串、字节数组、未定义三种类型。&lt;br /&gt;
&lt;br /&gt;
== 惯用写法与标准范式 ==&lt;br /&gt;
* 字面量赋值变量：&amp;lt;code&amp;gt;值 变量名 =_&amp;lt;/code&amp;gt;&lt;br /&gt;
** 末尾 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; 丢弃赋值后栈中残留的变量名，一般无保留必要。&lt;br /&gt;
** 自定义函数写法：用括号包裹代码作为字符串存入变量；函数可从栈顶读取参数、返回任意数量结果；调用格式 &amp;lt;code&amp;gt;函数名@&amp;lt;/code&amp;gt;&lt;br /&gt;
* 获取负一/任意负整数：&amp;lt;code&amp;gt;01-&amp;lt;/code&amp;gt;&lt;br /&gt;
* 超大浮点数（例3×10¹⁰⁰）：&amp;lt;code&amp;gt;(3e100)num@&amp;lt;/code&amp;gt;&lt;br /&gt;
** 用字符串承载数字字面量，再通过num@转为数值。&lt;br /&gt;
* If条件块：&amp;lt;code&amp;gt;条件 { 执行语句 !}&amp;lt;/code&amp;gt;&lt;br /&gt;
** 利用单次循环+末尾跳出实现分支。&lt;br /&gt;
* If-Else分支方案1（借助临时变量）：&amp;lt;code&amp;gt;条件 c={ 真分支 !} c^~{ 假分支 !}&amp;lt;/code&amp;gt;&lt;br /&gt;
* If-Else方案2（无变量）：&amp;lt;code&amp;gt;1{ 条件 { 真分支 !!} 假分支 !}&amp;lt;/code&amp;gt;&lt;br /&gt;
* If-Else方案3（数组映射）：&amp;lt;code&amp;gt;条件 ~[(真分支)(假分支)] \,_@&amp;lt;/code&amp;gt;&lt;br /&gt;
* 两值比较（返回真值代表条件成立）&lt;br /&gt;
** 宽松相等（a?b==0）：&amp;lt;code&amp;gt;?~&amp;lt;/code&amp;gt;&lt;br /&gt;
** a大于b（a?b==1）：&amp;lt;code&amp;gt;?1?~&amp;lt;/code&amp;gt;&lt;br /&gt;
** a小于b：&amp;lt;code&amp;gt;?(-1)?~&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;\?1?~&amp;lt;/code&amp;gt;&lt;br /&gt;
** 小于等于：&amp;lt;code&amp;gt;?1\?1?~&amp;lt;/code&amp;gt;&lt;br /&gt;
** 大于等于：&amp;lt;code&amp;gt;\?1\?1?~&amp;lt;/code&amp;gt;&lt;br /&gt;
** 删除末尾 &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; 可对结果取反。&lt;br /&gt;
** 通用比较模板：&amp;lt;code&amp;gt;?[相等结果 大于结果 小于结果] \,_&amp;lt;/code&amp;gt;，填入0/1自定义每种情况返回值；两值不可比较时视为相等。&lt;br /&gt;
*** 处理不可比较场景扩展模板：&amp;lt;code&amp;gt;?2+[不可比较返回 小于返回 相等返回 大于返回] \,_&amp;lt;/code&amp;gt;&lt;br /&gt;
* 向数组尾部追加元素（栈顶为数组）：&amp;lt;code&amp;gt;len@ 数值 ;&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;nan@ 数值 ;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 代码注释写法：&amp;lt;code&amp;gt;0{ 注释文本 }&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;(注释文本)_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 外部资源 ==&lt;br /&gt;
* [https://github.com/DGCK81LNN/whatlang-interpreter whatlang-interpreter]：DGCK81LNN维护的解释器核心分支，附带简易命令行运行时&lt;br /&gt;
** 同时发布至npm：[https://www.npmjs.com/package/whatlang-interpreter]&lt;br /&gt;
* [https://github.com/YufangProbably/koishi-plugins/tree/main/plugins/whatlang/src/ 原始解释器源码]（核心库+Koishi运行时）&lt;br /&gt;
* [https://github.com/DGCK81LNN/yufang-koishi-plugins/tree/main/plugins/whatlang DGCK81LNN 维护的Koishi运行时分支]&lt;br /&gt;
* [https://dgck81lnn.github.io/whatlang/ DGCK81LNN 网页版在线解释器]&lt;br /&gt;
** 旧版Babel转译网页端（已过时）：[http://哼.site/whatlang/]，兼容IE11、Safari5&lt;br /&gt;
* [https://yufangprobably.github.io/whatlang/ 余方网页版解释器]（内置语法高亮编辑器，存在部分bug）&lt;br /&gt;
* [https://gitee.com/DGCK81LNN/lnnbot-miniplugs/blob/master/plugins/common/-lnnbot-whatapi.js WhatServer 完整源码]&lt;br /&gt;
* [https://dgck81lnn.github.io/blog/pages/whatapi#1-whatserver WhatServer 中文文档]&lt;/div&gt;</summary>
		<author><name>DGCK81LNN</name></author>
	</entry>
</feed>