跳至內容

WhatLang

出自希顶维基
於 2025年10月18日 (六) 02:29 由 DGCK81LNN留言 | 貢獻 所做的修訂 代码示例
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)

WhatLang預防於 2024 年 6 月最初創造的一門基於棧的深奧編程語言(esolang),具有圖靈完備性,其解釋器使用 TypeScript 編寫。

機制

WhatLang 有字符串(String)、數字(Number,64 位浮點數,含 NaN)、數組(Array,可變長度,允許混合類型)與未定義(Undefined)四種值類型,除了使用先進先出的堆棧作為操作數據的基本工具外,也可以操作命名的變量。

WhatLang 代碼使用 ASCII 中數字、字母外的符號作為指令,每個指令都會執行對應的動作,包括棧操作(如\交換棧頂二值、:複製棧頂值、_丟棄棧頂值)、運算(+加法或字符串拼接、-*/%常規運算)、流程控制({}循環、!跳出)、數組操作(,;$讀寫刪除元素)等;而使用 @ 指令可以調用函數,內置函數提供了其他一些重要的功能(如num@/str@/arr@類型轉換、rand@隨機數、len@獲取序列長度等)。

應用

WhatLang 解釋器作為一個 Koishi.js 插件誕生,在 QQ 機器人環境下通過內置函數提供了消息操作、網絡請求、數據持久化存儲的接口。最初由預防的個人 QQ 機器人「高C」搭載,但該機器人未持續運行提供服務。LNNBot 搭載了 WhatLang 解釋器並藉此提供了文言文和道本語語言偏好下的特殊數字顯示格式按名稱搜索 Unicode 字符七曆轉換單人 wordle 小遊戲等多項功能。

代碼示例

Hello World 程序:

`Hello, World!`

計算當前北京時間星期幾及當前時間:

time@ 60000/ 480+: 60/:   (计算当前的Unix纪元分钟和小时数,加上8小时时区偏移)_
24/ flr@ 4+ 7%            (除以24向下取整得到天数;1970-01-01是周四,加4后模7得到星期几)_
"日一二三四五六"\,\_      (转换为对应汉字)_
"现在是星期"\+"的"+\      (在前后拼接文字)_
flr@ 24% ':++\            (将小时数取整后模24,拼接在文字后并添加冒号)_
flr@ 60% :9?1?{ '0\+ !} + (将分钟数取整后模60,若不大于9在前面补零,拼接到最后)_
.                         (输出)_

參見

外部鏈接