网站首页 > 精选文章 正文
前两天看了一个中文编程的微头条。突然想起有个文言文编程。今天小编详细给大家介绍一下。废话不多说,直接上货。
安装
编译器
使用以下命令安装本编译器:
npm install -g @wenyan/cli
尝试运行内置的例子,例如:
wenyan examples/helloworld.wy -o helloworld.js
编辑器插件:
- 由antfu提供的适用于VSCode的插件
- 由voldikss提供的适用于Vim的插件
- 由absop提供的适用于Sublime Text的插件
在线 IDE
在线 IDE这东西是小编非常喜欢的一个东西了,强烈推荐给大家。做单元测试时是真的很香。文言文编程语言作为一个完整的编程语言项目,在线IDE也是必不可少的。
https://ide.wy-lang.org/
项目源码位置
截止小编发稿,本项目已经有16.7k Star了
https://github.com/wenyan-lang/wenyan/blob/master/README.zh-Hans.md
序
夫唐、虞之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬;
程式語言之多,繁若《天官》之星宿,奇勝《山經》之走獸。鼠、蟹、鑽、魚,或以速稱。蛇、象、駱、犀,各爭文采。
方知鬼之所以夜哭,天之所以雨粟。然以文言編程者 ,似所未有。此誠非文脈之所以傳,文心之所以保。
嗟予小子,遂有斯志。然則數寸之烏絲猶覆於頭,萬卷之素書未破於手;一身長羁于远邦,兩耳久旷于雅言。
然夫文章者吾之所宿好,程式者偶承時人之謬譽。故希孟不慚年少,莊生不望無涯。
乃作斯言。誠未能嘔瀝長吉之心血,亦庶幾免於義山之流沫。既成之後,復學干將鑄劍而自飼,越王嚐糞而當先。
自謂偶追《十書》之筆意,但恨少八家之淋漓。此子山所謂士衡抚掌而甘心,平子見陋而固宜。
然則雖實覆甕之質,尚存斧正之望;雖乏呂相之金,易字之渴蓋同。此亦開源之大義,吾輩之所以勉勵也。一笑。
Hello world
任何一门语言学习的学习的第一个程序就是我们的“Hello world”,接下来我们学习一下文言文Hello world怎么写。
文言:
吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
吾有一言。曰「「問天地好在。」」。書之。
云云。
看不懂是不是,没关系,小编给大家翻译一下。 JavaScript如下:
var n = 3;
for (var i = 0; i < n; i++) {
console.log("問天地好在。");
}
输出:
問天地好在。
問天地好在。
問天地好在。
代码示例:
完全的文言文编程,就连基本的关键字都是文言文,还具有图灵完整性,很神奇有木有。接下来我们再来认识一下基础语法。
基本语法
上下文无关文法的语法描述还在构建中。同时,请查阅下面的语法表,或者在 src/parser.js 中学习其他更多语法。当然你也可以从在线 IDE 现有的例子中学习更多语法知识!
变量
将文言文简单的翻译一下,就可以对应出来相应的JavaScript代码,小编感觉还是比较好理解的。
流程控制
运算
其余的小编就不一一赘述了,感兴趣的小伙伴们可以直接查看项目源码,链接在上面已经给出来了。接下来为大家来几个示例。
示例
八皇后问题
文言文代码:
注曰。「「今以八皇后置棋盤之上而不相殺。其法幾何。」」
吾有一術。名之曰「皇后問題」。欲行是術。必先得一數。曰「寬」。乃行是術曰。
吾有一列。名之曰「棋盤」。
吾有一術。名之曰「單步」。是術曰。
若「棋盤」之長等於「寬」者。
夫「棋盤」書之。
若非。
吾有一數。曰一。名之曰「此后」。
為是「寬」遍。
吾有一爻。曰陽。名之曰「可乎」。
吾有一數。曰一。名之曰「彼后之位」。
夫「棋盤」之長。名之曰「幾何」。
加一於「幾何」。名之曰「此后之位」。
為是「幾何」遍。
夫「棋盤」之「彼后之位」。名之曰「彼后」。
減「此后之位」以「彼后之位」。名之曰「直距」。
減「彼后」以「此后」。名之曰「右距」。
減「彼后」於「此后」。名之曰「左距」。
若「彼后」等於「此后」者。昔之「可乎」者。今陰也。乃止。也。
若「右距」等於「直距」者。昔之「可乎」者。今陰也。乃止。也。
若「左距」等於「直距」者。昔之「可乎」者。今陰也。乃止。也。
加一於「彼后之位」。名之曰「新位」。
昔之「彼后之位」者。今「新位」也。
云云。
若「可乎」者。
吾有一列。銜其以「棋盤」。名之曰「舊棋盤」
充「棋盤」以「此后」。
施「單步」。噫。
昔之「棋盤」者。今「舊棋盤」是矣。
也。
加一於「此后」。名之曰「新此后」。
昔之「此后」者。今「新此后」也。
云云。
也。
是謂「單步」之術也。
施「單步」。
是謂「皇后問題」之術也。
施「皇后問題」於八。噫。
对应的JavaScript:
/*"今以八皇后置棋盤之上而不相殺。其法幾何。"*/
var 皇后問題 = _ => {};
皇后問題 = 寬 => {
var 棋盤 = [];
var 單步 = _ => {};
單步 = () => {
if (棋盤.length == 寬) {
const _ans1 = 棋盤;
console.log(_ans1);
} else {
var 此后 = 1;
for (let _rand1 = 0; _rand1 < 寬; _rand1++) {
var 可乎 = true;
var 彼后之位 = 1;
const _ans2 = 棋盤.length;
var 幾何 = _ans2;
const _ans3 = 幾何 + 1;
var 此后之位 = _ans3;
for (let _rand2 = 0; _rand2 < 幾何; _rand2++) {
const _ans4 = 棋盤[彼后之位 - 1];
var 彼后 = _ans4;
const _ans5 = 此后之位 - 彼后之位;
var 直距 = _ans5;
const _ans6 = 彼后 - 此后;
var 右距 = _ans6;
const _ans7 = 此后 - 彼后;
var 左距 = _ans7;
if (彼后 == 此后) {
可乎 = false;
break;
};
if (右距 == 直距) {
可乎 = false;
break;
};
if (左距 == 直距) {
可乎 = false;
break;
};
const _ans8 = 彼后之位 + 1;
var 新位 = _ans8;
彼后之位 = 新位;
};
if (可乎) {
var _ans9 = [];
const _ans10 = _ans9.concat(棋盤);
var 舊棋盤 = _ans10;
棋盤.push(此后);
const _ans11 = 單步();
棋盤 = 舊棋盤;
};
const _ans12 = 此后 + 1;
var 新此后 = _ans12;
此后 = 新此后;
};
};
};
const _ans13 = 單步();
};
const _ans14 = 皇后問題(8);
结果:
斐波那契数列
文言文代码:
吾有一術。名之曰「斐波那契」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
若「甲」等於零者乃得零也
若「甲」等於一者乃得一也
減「甲」以一。減「甲」以二。名之曰「乙」。曰「丙」。
施「斐波那契」於「乙」。名之曰「丁」。
施「斐波那契」於「丙」。名之曰「戊」。
加「丁」以「戊」。名之曰「己」。
乃得「己」。
是謂「斐波那契」之術也。
施「斐波那契」於十二。書之。
对应的JavaScript:
var 斐波那契 = _ => {};
斐波那契 = 甲 => {
if (甲 == 0) {
return 0;
};
if (甲 == 1) {
return 1;
};
const _ans1 = 甲 - 1;
const _ans2 = 甲 - 2;
var 乙 = _ans1;
var 丙 = _ans2;
const _ans3 = 斐波那契(乙);
var 丁 = _ans3;
const _ans4 = 斐波那契(丙);
var 戊 = _ans4;
const _ans5 = 丁 + 戊;
var 己 = _ans5;
return 己;
};
const _ans6 = 斐波那契(12);
console.log(_ans6);
结果:
参考文献:文言文编程语言源码github仓库。
- 上一篇: 盘点前端程序员制作网站的常用工具
- 下一篇: AI编程小白必备|Cursor安装及配置教程
猜你喜欢
- 2025-05-30 Mac上最美最好用软件系列
- 2025-05-30 AI编程小白必备|Cursor安装及配置教程
- 2025-05-30 盘点前端程序员制作网站的常用工具
- 2025-05-30 H5网页布局+css代码美化,零基础参考
- 2025-05-30 在OS X中使用oh-my-zsh和powerline安装iTerm2
- 2025-05-30 从办公到娱乐:电脑里那些让你事半功倍的实用工具
- 2025-05-30 sublime使用小技巧
- 2025-05-30 Sublime Text 3优点
- 2025-05-30 99%的人都在用这几款文本编辑器,你在用吗?
- 2025-05-30 定制你的 Mac 桌面,简单华丽的桌面自定义工具:"Ubersicht
- 05-3022《Vue 入门教程》VueRouter 路由嵌套
- 05-30前端面试题-Vue 项目中,你做过哪些性能优化?
- 05-30超简 Vue3+elementPlus 后台管理系统
- 05-30还有前端不知道Electron的?手把手教你把Vue项目打包成桌面程序
- 05-30Nuxt最简入门,让vue项目快速被搜索引擎收录
- 05-30Mac上最美最好用软件系列
- 05-30AI编程小白必备|Cursor安装及配置教程
- 05-30好玩儿的编程语言——文言文编程语言
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)