{"id":18655852,"url":"https://github.com/wenyan-lang/wenyan-jvm","last_synced_at":"2026-03-06T07:01:39.651Z","repository":{"id":47489283,"uuid":"230570963","full_name":"wenyan-lang/wenyan-jvm","owner":"wenyan-lang","description":"爪哇文言 - wenyan-lang in JVM.","archived":false,"fork":false,"pushed_at":"2024-10-17T16:24:01.000Z","size":7926,"stargazers_count":32,"open_issues_count":4,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-01-12T00:53:58.267Z","etag":null,"topics":["classical-chinese","groovy","java","jvm","macros","programming-language","wenyan","wenyan-lang","wenyan-programming-language"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wenyan-lang.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGE_LOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-12-28T06:48:07.000Z","updated_at":"2025-10-11T08:04:22.000Z","dependencies_parsed_at":"2025-04-11T17:39:16.352Z","dependency_job_id":"189cfd48-3916-41fa-9966-48532ec53b22","html_url":"https://github.com/wenyan-lang/wenyan-jvm","commit_stats":null,"previous_names":["magiclu550/wenyan-lang_jvm"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/wenyan-lang/wenyan-jvm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wenyan-lang%2Fwenyan-jvm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wenyan-lang%2Fwenyan-jvm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wenyan-lang%2Fwenyan-jvm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wenyan-lang%2Fwenyan-jvm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wenyan-lang","download_url":"https://codeload.github.com/wenyan-lang/wenyan-jvm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wenyan-lang%2Fwenyan-jvm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30164881,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T04:43:31.446Z","status":"ssl_error","status_checked_at":"2026-03-06T04:40:30.133Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["classical-chinese","groovy","java","jvm","macros","programming-language","wenyan","wenyan-lang","wenyan-programming-language"],"created_at":"2024-11-07T07:20:21.305Z","updated_at":"2026-03-06T07:01:39.621Z","avatar_url":"https://github.com/wenyan-lang.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"images/logo.png\" align=\"right\" width=\"100\" height=\"100\"/\u003e\n\n# wenyan-lang_jvm\n\n\nYou can run WenYan Programming Language in JVM.\n\u003e 贡献您的标准库\n1. 找到[标准库文件夹](src/main/java/cn/wenyan/lang)在这里贡献标准库\n2. 在[库映射文件下](src/main/java/cn/wenyan/compiler/script/libs/Library.groovy)添加\n```groovy\nfinal Map\u003cLanguage,Map\u003cString,String\u003e\u003e libs = [\n            (Language.GROOVY) : [\n                    \"算經\" : \"cn.wenyan.lang.算經\",\n                    \"位經\" : \"cn.wenyan.lang.位經\",\n                    \"列經\" : \"cn.wenyan.lang.列經\",\n                    \"物經\" : \"cn.wenyan.lang.物經\",\n                    \"易經\" : \"cn.wenyan.lang.易經\"\n            ]\n    ]\n```\n按照这个样式添加即可\n\n3. 编译调试后再pr,感谢\n\n\u003e 声明\n\n1. 关注本项目不要忘记关注一下语法源:[LingDong的项目](https://github.com/LingDong-/wenyan-lang),因为本项目基于LingDong项目标准开发\n2. 语法非作者(MagicLu)原创。\n3. 本项目预计未来成形后，将会考虑贡献给WenYan本库。\n4. 本项目与LingDong项目一样，遵循MIT许可证\n5. 本项目非商业用途，任何人均可贡献，任何人也可以在合适范围内修改README\n6. 本项目使用方法可以参见[文档](document/Java-Compiler.md)\n7. 关于项目开启的原因可以参见 [#411](https://github.com/LingDong-/wenyan-lang/issues/411)\n8. 本项目的目标语言是groovy,以实现动态语言，主要是为了实现`wenyan`可以调用java相关类库(并尽量确保js版本的wy文件)，以实现在虚拟机运行。\n9. 对于文渊阁的支持，只需要在项目的src执行wyg i 名称即可。编译器提供了相关参数实现文渊阁的编译\n\n\n\u003e 相关链接\n\n1. [wenyan_lang](https://github.com/LingDong-/wenyan-lang)\n2. [文渊阁](https://github.com/wenyan-lang/wyg)\n3. [更新日志](CHANGE_LOG.md)\n4. [LICENSE](LICENSE)\n5. [语法库](src/main/java/cn/wenyan/compiler/WenYanLib.scala)\n6. [文心雕龙](https://github.com/wenyan-lang/wiki)\n\n\u003e 关于作者\n\n是时，吾哀感生之须臾，若成大事，于漫岁月之中，如九渊之瀑，同万山之江，见日月星河之走兽，叹古今中外之大事。\n夸夸而谈，此为吾之感是也，多愁善感，此为吾之心是矣。\n时而求不以物喜不以己悲者，授之于人，而余愧。虽异古人之酌，摘湖中之月。此世千变万化，亦不知后事。\n异隐者采菊，观贤者之莲。忆诸葛之往事，憾先主之心胸而无以馈，奸雄无阻而得大业。\n叹于时，此非吾之生邪?\n\n1. 作者技术水平有限，所以不能很快实现全部语法，并且不能非常严谨的实现\n\n2. 不能确保全部来自javascript版的wenyan脚本通过编译。\n\n3. 作者欢迎所有人发送pull request/issue，拒绝issue灌水和讨论语言使用性，如果有类似的issue，将\n无条件关闭，不予回答\n\n4. 由于作者尚未系统学习编译原理，没有使用抽象语法树，通过「正则」和「流程」(Stream) 完成了语言编译。\n\n5. 作者是也是一名文言文爱好者(或者是文学爱好者)\n\n\u003e 项目的特别功能\n\n* 项目的自定义系统\n    1. 您可以通过项目的自定义系统自由的将文言文代码翻译为其他语言，通过添加[Language.groovy](src/main/java/cn/wenyan/compiler/script/libs/Language.groovy)的配置\n    \n    2. 插件系统(实验)\n        * 继承[Plugin.scala](src/main/java/cn/wenyan/compiler/plugins/Plugin.scala)，标记Main类，打包为jar包，添加组件即可\n* wenyan_shell\n    * ` java -jar wenyan.jar shell` 可以开启交互式命令页面\n* 文渊阁 for java\n    * 尚在策划\n    * 基于文渊阁和maven的项目管理插件，可以实现文言文语言和java源代码混合编译\n* wenyan_java项目管理\n    * 文言项目管理,可以参见[TestMain.java](src/main/java/cn/wenyan/compiler/test/TestMain.java)和[project_example](project_example)文件夹\n    * 构建方案\n         1. 随便建两个文件夹，为src和target(这名字可以自定义，这是我建议的名字)\n         2. src下建一个MakeFile.txt,里面写上主类的路径 \n         3. java -jar wenyan.jar -c @src/MakeFile.txt target -sc src -m 主运行类名(类名 = 文件名) 编译，会在target输出全部编译文件\n         4. java -jar wenyan.jar -o target -n 主类名 -r 运行\n\n\u003e 与javascript/python/ruby版本的区别\n\n1. 这里支持了编译为groovy\n2. 对于文件名称要求严格，不能使用特殊符号标记\n\n\u003e 实现效果\n\n已经可以运行wenyan-lang的[图灵机](https://github.com/LingDong-/wenyan-lang/blob/master/examples/turing.wy)，图灵完备\n\n![turing](images/turing.png)\n\n\u003e 目前实现的语法\n\n##### 變量\n| wenyan | groovy |\n|---|---|\n|`吾有一數。曰三。名之曰「甲」。` | `def jia=3` |\n|`吾有一言。曰「「噫吁戲」」。名之曰「乙」。`|`def yi = '噫吁戲'`|\n|`吾有一爻。曰陰。名之曰「丙」。` | `def bing = false` |\n|`吾有一列。名之曰「丙」。`|`def bing = []`|\n|`吾有三數。曰一。曰三。曰五。名之曰「甲」曰「乙」曰「丙」。` | `def jia = 1,yi=3,bing=5` |\n|`吾有一數。曰五。書之`| `def ans_1=5 println(ans_1)`|\n|`吾有一言。曰「乙」。書之`|`println(yi)`|\n|`有數五十。名之曰「大衍」。`|`def dayan = 50`|\n|`昔之「甲」者。今「大衍」是也。`|`jia = dayan`|\n|`吾有一元`|`(auto type)`|\n\n##### 数组\n| wenyan | groovy|\n|---|---|\n|`吾有一列。名之曰「甲」。充「甲」以四。以二。`|\t`def a = []; a.add(1);`|\n|`夫「甲」之一。`\t| `a[0]`|\n|`夫「玫瑰」之「「名」」`|\t`rose[\"name\"]`|\n|`夫「甲」之其餘。`|`a.slice(1)`|\n|`夫「寶劍」之長。`|\t`sword.size();`|\n|`銜「甲」以「乙」。以「丙」`|`jia.putAll(yi) jia.putAll(bing)`|\n##### 註釋\n| wenyan | groovy |\n|---|---|\n|`批曰。「「文氣淋灕。字句切實」」。`|`/*文氣淋灕。字句切實*/`|\n|`注曰。「「文言備矣」」。`\t|`/*文言備矣*/`|\n|`疏曰。「「居第一之位故稱初。以其陽爻故稱九」」。`|`/*居第一之位故稱初。以其陽爻故稱九*/`|\n\n##### 控制\n| wenyan | groovy |\n|---|---|\n|`為是百遍。⋯⋯ 云云。`|`for (i in 1..100){ ... }`|\n|`若「甲」等於「乙」者。......也。`|`if(jia == yi){`|\n|`若非。`|`}else{`|\n|`恆為是。⋯⋯ 云云。`|`while (true) { ... }`|\n|`乃止。`|`break`|\n|`凡「天地」中之「人」。⋯⋯ 云云。`|`for (human in world){ ... }`|\n|`或若`|`else if`|\n|`若其然者`|\t`if (ans) {`|\n|`若其不然者`|\t`if (!ans) {`|\n##### 數學\n\n| wenyan | groovy |\n|---|---|\n|`加一以二。`\t|`1+2`|\n|`加一於二。`|`2+1`|\n|`加一以二。乘其以三。`|`(1+2)*3`|\n|`除十以三。所餘幾何。`|`10%3`|\n|`減七百五十六以四百三十三。名之曰「甲」。`|`def a = 756-433;`|\n|`夫「甲」「乙」中有陽乎`|`a \\|\\| b`|\n|`夫「甲」「乙」中無陰乎。`|`a\u0026\u0026b`|\n\n##### 导入\n| wenyan | groovy |\n|---|---|\n|`吾嘗觀「「算經」」之書。方悟「正弦」之義。`|`import static 算经.正弦`|\n|`吾嘗觀「「某樓」」中「「某閣」」中「「某書」」之書`| `import 某樓.某閣.某書`|\n\n##### 函数\n| wenyan | groovy |\n|---|---|\n|`吾有一術。名之曰「吸星大法」。是術曰。⋯⋯是謂「吸星大法」之術也。`|`def a(){...}`|\n|`吾有一術。名之曰「六脈神劍」。欲行是術。必先得六數。曰「甲」。曰「乙」。曰「丙」。曰「丁」。曰「戊」。曰「己」乃行是術曰。⋯⋯是謂「六脈神劍」之術也。`|`def b(a,b,c,d,e,f){...}`|\n|`施「翻倍」於「大衍」`|`b(dayuan)`|\n|`施「翻倍」`|`b()`|\n|`夫「甲」。夫「乙」。夫「丙」。取二以施「丁」。取二以施「戊」。取一以施「己」。夫「庚」。夫「辛」。取三以施「壬」。名之曰「癸」。`|`def j = i(f(e(a,d(b,c))),g,h)`|\n\n##### 宏\n| wenyan | groovy |\n|---|---|\n|`或云「「書「甲」焉」」。蓋謂「「吾有一言。曰「甲」。書之」」。`|`Compiled Code`|\n##### 异常处理\n| wenyan| groovy|\n|---|---|\n|`姑妄行此`|try|\n|`其他异常有关语句均实现`|\n\n##### 对象\n| wenyan | groovy |\n|---|---|\n|`吾有一物。名之曰「甲」。`|`def a = [:]`\n|` 吾有一物。名之曰「甲」。其物如是。物之「「乙」」者。數曰三。物之「「丙」」者。言曰「「丁」」。是謂「甲」之物也`|`def a = [b:3,c:\"d\"]`|\n|`昔之「戊」之「「丁」」者。今不復存矣。`|`戊.remove(\"丁\")`|\n\n\u003e 特殊语法\n\n特殊语法是本编译器独有的语法糖,有些是由于编译器实现的机制所导致的产物\n\n本編譯器允許直接使用`書之`，可以輸出最後定義的變量\n\n调用静态方法\n\n```\n吾嘗觀「「java」」中「「lang」」中「「Math」」之書。\n施「Math.pow」於「大衍」於二。名之曰「矣」。書之\n```\n\n使用java对象\n```\n施「new String」於「大衍」。名之曰「矣」。\n施「矣.getClass」。書之。\n```\n\n\u003e 如何使用\n\n\n-m: 参数: 主类,编译时，设置编译主类,比如cn.main.HelloWorld,对应着@sourceFile/cn/main/HelloWorld.wy\n\n-n: 参数: 主类,运行时，设置运行主类,比如cn.main.HelloWorld,对应着@sourceFile/cn/main/HelloWorld.wy\n\n-o: 参数: OutFile,单独设置编译文件输出的文件夹\n\n-p: 该指令已经废弃，使用无效\n\n-r: 参数: 程序参数,运行主文件，-r后面跟着args，即程序参数，这个选项必须放在最后面，比如 -o xxx -c xxx -r 1 2 3\n\n-c: 参数: makeFile和outFile,设置编译文件路径,如@MakeFile.txt或者HelloWorld.wy,后面是输出的文件夹根目录\n\n-g: 该指令废弃，不要使用\n\n-wd: 参数: name,相当于wyg i name,确保有node.js\n\n-sc: 参数: sourcePath,指定源文件的根目录，根目录下面的文件夹则作为package名称\n\n-wyg: 参数: 藏書樓的上一级目录,将文渊阁编译进去，后面跟着藏書樓的上一级目录即可，需要有-sc和-o的内容\n\n-l: 参数: jarFiles,加入依赖的jar包，如hello.jar;eat.jar\n\n-lv: 分詞可視化\n\n-st: 开启强类型编译\n\n\u003e 直接加载文言文脚本\n\n```groovy\nimport cn.wenyan.compiler.WenYanTools\n\ndef compiler = WenYanTools.makeCompiler()\n\ndef javaClass = compiler.compileToClass(\"HelloWorld\",\"吾有一言，曰『问天地好在』，書之。\")\n\njavaClass.getDeclaredMethod(\"run\").invoke(javaClass.newInstance())\n\n```\n\n\u003e 目前需要迫切实现的\n\n- shell 高级操作\n    - 导入jar包/wy文件\n- idea 插件\n- maven插件\n\n\u003e 编译器原始的第三方包导入\n\n1. 编译器将wy文件编译为class字节码文件\n2. 将class字节码文件打包为jar包\n3. 通过编译器-l导入进去即可\n\n\u003e 对于部分不兼容的特性\n\nPS: 由于一些代码按照js特性去实现的，很多特性我都是通过语法糖暴力实现。但这些我确实无力去实现了\n\n1. 对于函数调用，如果是闭包函数，请先`吾有一術。名之曰「xx」。`定义，这样才能确保前面的函数调用后面实现的函数\n\n```wenyan\n今有一術。名之曰「包渾沌」。欲行是術。必先得一物。曰「渾沌物」。乃行是術曰。\n\t吾有一言。曰「「　」」名之曰「挪符」。\n\t吾有一言。曰「「\\n」」名之曰「抬符」。\n\t吾有一術。名之曰「包數」。\n\t吾有一術。名之曰「暗包渾沌」。\n\t吾有一術。名之曰「包列」。\n\t吾有一術。名之曰「包物」。\n\t吾有一術。名之曰「包數」。欲行是術。必先得一數曰「甲」。乃行是術曰。\n\t\t吾有一言。名之曰「正負」。\n\t\t若「甲」小於零者。\n\t\t\t乘「甲」以負一。昔之「甲」者。今其是矣。\n\t\t\t昔之「正負」者。今「「負」」是矣。\n\t\t云云。\n\t\t除「甲」以一。所餘幾何。名之曰「小數」\n\t\t減「小數」於「甲」。名之曰「整數」。\n\t\t吾有二言。名之曰「小」曰「整」。\n\t\t恆為是。若「整數」不大於零者乃止也。\n\t\t\t除「整數」以十。所餘幾何。名之曰「位」。\n\t\t\t加「位」以一。夫「位名」之其。加其以「整」。昔之「整」者。今其是矣。\n\t\t\t減「整數」以「位」。除其以十。昔之「整數」者。今其是矣。\n\t\t云云。\n\t\t恆為是。若「小數」不大於零者乃止也。\n\t\t\t乘「小數」以十。昔之「小數」者。今其是矣。\n\t\t\t除「小數」以一。所餘幾何。名之曰「位」。\n\t\t\t加「位」以一。夫「位名」之其。加其於「小」。昔之「小」者。今其是矣。\n\t\t\t減「小數」以「位」。昔之「小數」者。今其是矣。\n\t\t云云。\n\t\t加「正負」以「整」。昔之「整」者。今其是矣。\n\t\t夫「小」之長。若其然者。\n\t\t\t加「整」以「「·」」。加其以「小」。乃得矣。\n\t\t云云。\n\t\t乃得「整」。\n\t是謂「包數」之術也。\n\n\t吾有一術。名之曰「暗包渾沌」。欲行是術。必先得一言曰「類」。一元曰「實」。一數曰「挪抬」。乃行是術曰。\n\t\t吾有一言。名之曰「渾沌語」。\n\t\t若「類」等於「「物」」者。\n\t\t\t加「渾沌語」以「抬符」昔之「渾沌語」者。今其是矣。\n\t\t\t夫「實」。加「挪抬」以一。取二以施「包物」。加其於「渾沌語」。昔之「渾沌語」者。今其是矣。\n\t\t\t為是「挪抬」遍。加「渾沌語」以「挪符」。昔之「渾沌語」者。今其是矣也。\n\t\t\t加「渾沌語」以「「也」」加其以「抬符」。昔之「渾沌語」者。今其是矣。\n\n\t\t或若「類」等於「「列」」者。\n\t\t\t加「渾沌語」以「抬符」昔之「渾沌語」者。今其是矣。\n\t\t\t夫「實」。加「挪抬」以一。取二以施「包列」。加其於「渾沌語」。昔之「渾沌語」者。今其是矣。\n\t\t\t為是「挪抬」遍。加「渾沌語」以「挪符」。昔之「渾沌語」者。今其是矣也。\n\t\t\t加「渾沌語」以「「也」」加其以「抬符」。昔之「渾沌語」者。今其是矣。\n\n\t\t或若「類」等於「「言」」者。\n\t\t\t加「渾沌語」以「引起」加其以「實」加其以「引迄」。加其以「抬符」昔之「渾沌語」者。今其是矣。\n\t\t或若「類」等於「「爻」」者。\n\t\t\t吾有一言。曰「「陽」」。名之曰「爻名」\n\t\t\t夫「實」。若其不然者。昔之「爻名」者。今「「陰」」是矣也。\n\t\t\t加「渾沌語」以「引起」加其以「爻名」加其以「引迄」。加其以「抬符」昔之「渾沌語」者。今其是矣。\n\t\t或若「類」等於「「數」」者。\n\t\t\t施「包數」於「實」。名之曰「數名」。\n\t\t\t加「渾沌語」以「引起」加其以「數名」加其以「引迄」。加其以「抬符」昔之「渾沌語」者。今其是矣。\n\t\t云云。\n\t\t乃得「渾沌語」\n\t是謂「暗包渾沌」之術也。\n\n\t吾有一術。名之曰「包列」。欲行是術。必先得一物曰「渾沌列」。一數曰「挪抬」。乃行是術曰。\n\t\t吾有一言。名之曰「渾沌語」。\n\t\t凡「渾沌列」中之「實」\n\t\t\t施「識類」於「實」。名之曰「類」。\n\n\t\t\t為是「挪抬」遍。加「渾沌語」以「挪符」。昔之「渾沌語」者。今其是矣也。\n\t\t\t加「渾沌語」以「類」。\n\t\t\t昔之「渾沌語」者。今其是矣。\n\n\t\t\t施「暗包渾沌」於「類」於「實」於「挪抬」。加其於「渾沌語」。昔之「渾沌語」者。今其是矣。\n\t\t云云。\n\t\t乃得「渾沌語」\n\t是謂「包列」之術也。\n\n\t吾有一術。名之曰「包物」。欲行是術。必先得一物曰「渾沌物」。一數曰「挪抬」。乃行是術曰。\n\n\t\t吾有一言。名之曰「渾沌語」。\n\n\t\t施「列物之端」於「渾沌物」。名之曰「諸端」。\n\n\t\t凡「諸端」中之「端」\n\t\t\t施「取物」於「渾沌物」於「端」。名之曰「實」。\n\t\t\t施「識類」於「實」。名之曰「類」。\n\n\t\t\t為是「挪抬」遍。加「渾沌語」以「挪符」。昔之「渾沌語」者。今其是矣也。\n\t\t\t加「渾沌語」以「「之」」。加其以「引起」。加其以「端」。加其以「引迄」。加其以「類」。\n\t\t\t昔之「渾沌語」者。今其是矣。\n\n\t\t\t施「暗包渾沌」於「類」於「實」於「挪抬」。加其於「渾沌語」。昔之「渾沌語」者。今其是矣。\n\t\t云云。\n\t\t乃得「渾沌語」\n\t是謂「包物」之術也。\n\n\t施「包物」於「渾沌物」於一。名之曰「餛飩語」。\n\t加「抬符」以「餛飩語」。加其於「「物」」。加其以「「也」」。乃得矣。\n是謂「包渾沌」之術也。\n\n```\n\n2. 下一级定义域重新定义上一级已经定义的变量\n\n```javascript\nvar 甲 = 1;\n    var 乙 = 1;\n    for (var _rand1 = 0; _rand1 \u003c 試; _rand1++) {\n        var _ans1 = 甲 * 甲;\n        var 乙 = _ans1;\n        var _ans2 = 乙 - 2;\n        var 乙 = _ans2;\n        var _ans3 = 甲 * 2;\n        var 丙 = _ans3;\n        var _ans4 = 乙 / 丙;\n        var 茂 = _ans4;\n        var _ans5 = 甲 - 茂;\n        var 甲 = _ans5;\n    };\n\n```\n\n3. 对于第一级的函数是无法引用的,如果要引用，也是有办法\n\n```wenyan\n今有一術。名之曰「包渾沌1」。欲行是術。必先得一物。曰「渾沌物」。乃行是術曰。\n    ....\n是謂「包渾沌1」之術也。\n\n今有一術。名之曰「包渾沌」。欲行是術。必先得一物。曰「渾沌物」。乃行是術曰。\n    今有一術。名之曰「包渾沌3」。欲行是術。必先得一物。曰「渾沌物」。乃行是術曰。\n        施「包渾沌1」於「渾沌物」\n    是謂「包渾沌」之術也。\n是謂「包渾沌」之術也。\n\n```\n\n这样通过引用包混沌3即可，由于语言特性的限制，对于第一级函数的引用我正在研究\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwenyan-lang%2Fwenyan-jvm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwenyan-lang%2Fwenyan-jvm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwenyan-lang%2Fwenyan-jvm/lists"}