diff --git a/.gitignore b/.gitignore index 9b08aefa..7f07ad86 100644 --- a/.gitignore +++ b/.gitignore @@ -187,4 +187,5 @@ dist *.bc *.dylib callgrind.out.* -cachegrind.out.* \ No newline at end of file +cachegrind.out.* +.yybuild.* \ No newline at end of file diff --git a/performance-investigation/matrix-multiply/.gitignore b/performance-investigation/matrix-multiply/.gitignore index f198d445..bf258da7 100644 --- a/performance-investigation/matrix-multiply/.gitignore +++ b/performance-investigation/matrix-multiply/.gitignore @@ -2,4 +2,4 @@ time_plot *.png *.hi -*.exe \ No newline at end of file +*.exe diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\345\205\245\345\217\243\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\345\205\245\345\217\243\343\200\202\350\261\253" index c7f8fa63..34ef473d 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\345\205\245\345\217\243\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\345\205\245\345\217\243\343\200\202\350\261\253" @@ -22,14 +22,14 @@ 参数者(命令行参数之获取参数于元)也。 参数长度者长度于参数也。 -当前路径者(行于获取当前路径)也。 - +「: 当前路径者(行于获取当前路径)也。 + :」 输入文件路径处理乃化字符串而字符串也。 输入文件路径处理者会串而 若路径名是绝对路径于串 则串 - 否则(「路径合并」于当前路径于串)也。 + 否则(「路径合并」于(获取当前路径于元)于串)也。 鉴参数而有 @@ -47,7 +47,7 @@ 若(读引用于「需要显式关于」) 则(打印行于AGPL版权声明) 否则( - 虑无者非常粗略调试打印行于(会无而『当前路径:』附(当前路径))而 + 虑无者非常粗略调试打印行于(会无而『当前路径:』附((获取当前路径于元)))而 虑所有输入文件者(态射于输入文件路径处理于(读引用于「要编译的文件」))而 鉴「所有输入文件」而 有文件名衔【】则( @@ -62,16 +62,20 @@ 进程之退出于(操作系统之子进程之运行并传递输出于(『python3』)于(参数)) )否则 (虑「 - 进行编译于阳于文件名。 + 所有依赖分析于文件名。 + 有列也态射于(进行编译)于(读引用于文件编译顺序)。 退出状态者条件生成可执行程序并执行于文件名也。 进程之退出于(退出状态)。 」) 或有『worker』则( - 虑「 - 进程之退出于( + 鉴读引用于单一工作模式任务而 + 有『exec-gen』则( + 写引用于文件编译顺序于((读引用于文件编译顺序)接【文件名】); + 进程之退出于(条件生成可执行程序并执行于文件名) + ) + 或有「其他工作」则( 执行单一工作于文件名 - )。 - 」 + ) ) 或有「其他模式」则( 发生事故于『不识别的模式:』附(其他模式) diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\344\274\230\345\214\226/\345\237\272\347\241\200\345\267\245\345\205\267/\345\256\232\344\271\211\346\237\245\346\211\276\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\344\274\230\345\214\226/\345\237\272\347\241\200\345\267\245\345\205\267/\345\256\232\344\271\211\346\237\245\346\211\276\343\200\202\350\261\253" index 71642761..a175fd75 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\344\274\230\345\214\226/\345\237\272\347\241\200\345\267\245\345\205\267/\345\256\232\344\271\211\346\237\245\346\211\276\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\344\274\230\345\214\226/\345\237\272\347\241\200\345\267\245\345\205\267/\345\256\232\344\271\211\346\237\245\346\211\276\343\200\202\350\261\253" @@ -57,7 +57,7 @@ 则( ( 虑文件名者「读取文件引用节点」于「可能元组值」而 - 虑文件结构者「读取优化后形式」于文件名而 + 虑文件结构者「读优化后形式」于文件名而 鉴文件结构而 有(式节点于(结构递归节点于「标签们」)于「递归结构参」衔【】)则 ( diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\344\274\230\345\214\226/\350\267\250\346\226\207\344\273\266\344\274\230\345\214\226/\345\270\270\351\207\217\345\206\205\350\201\224\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\344\274\230\345\214\226/\350\267\250\346\226\207\344\273\266\344\274\230\345\214\226/\345\270\270\351\207\217\345\206\205\350\201\224\343\200\202\350\261\253" index 2fd63d56..dfb91c1e 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\344\274\230\345\214\226/\350\267\250\346\226\207\344\273\266\344\274\230\345\214\226/\345\270\270\351\207\217\345\206\205\350\201\224\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\344\274\230\345\214\226/\350\267\250\346\226\207\344\273\266\344\274\230\345\214\226/\345\270\270\351\207\217\345\206\205\350\201\224\343\200\202\350\261\253" @@ -139,7 +139,7 @@ 则( 当前路径及式中一 )否则( - 「读取优化后形式」于文件名 + 「读优化后形式」于文件名 ))而 鉴文件结构而 有(式节点于(结构递归节点于「标签们」)于「递归结构参」衔【】)则 diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\345\210\206\345\270\203\347\274\226\350\257\221\346\255\245\351\252\244\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\345\210\206\345\270\203\347\274\226\350\257\221\346\255\245\351\252\244\343\200\202\350\261\253" index 5c389f54..0bf3d77d 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\345\210\206\345\270\203\347\274\226\350\257\221\346\255\245\351\252\244\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\345\210\206\345\270\203\347\274\226\350\257\221\346\255\245\351\252\244\343\200\202\350\261\253" @@ -50,11 +50,115 @@ 虑无者非常粗略调试打印行于(会无而『| 正在进行依赖分析: 』附路径)而 虑「所有依赖」者寻找可能导入文件顶层于路径而 虑无者非常粗略调试打印行于(会无而『| 完成,正在写缓存: 』附路径)而 - 虑无者写树组缓存于路径于『依赖分析结果』于(打表态射于「所有依赖」于(会文件名而文件名与阳与(式节点于待定节点于【】)))而 - 虑无者打印行于(以『「:换行:」』合并(所有依赖))而 - 零 + 虑无者「写串列缓存」于路径于『文件依赖』于「所有依赖」而 + 「所有依赖」 )否则( - 虑无者非常粗略调试打印行于(会无而『| 缓存存在: 』附路径)而 - 虑依赖缓存者(「读串列缓存」于路径于『依赖分析结果』)而 - 零 + 虑无者非常粗略调试打印行于(会无而『| 文件依赖缓存存在: 』附路径)而 + 虑依赖缓存者(「读串列缓存」于路径于『文件依赖』)而 + 「依赖缓存」 + )也。 + +执行语法分析乃化字符串而有也。 +执行语法分析者会路径而 + 若(信息需要更新于路径于『抽象语法』) + 则( + 虑无者非常粗略调试打印行于(会无而『| 开始语法分析: 』附路径)而 + 虑结果者抽象语法解析编译单元顶层于路径于( 粗分析编译单元于( 词法解析顶层于(文件系统之读文件于路径) ) )而 + 虑无者非常粗略调试打印行于(会无而『| 语法分析完成,正在保存结果: 』附路径)而 + 虑无者写缓存于路径于『抽象语法』于结果而 + 虑无者非常粗略调试打印行于(会无而『| 全部完成: 』附路径)而 + 元 + )否则( + 虑无者非常粗略调试打印行于(会无而『| 抽象语法缓存存在: 』附路径)而 + 元 + )也。 + +执行类型检查并擦除乃化字符串而有也。 +执行类型检查并擦除者会路径而 + 若(「或者」 + 于(信息需要更新于路径于『正则签名』) + 于(信息需要更新于路径于『擦除后形式』)) + 则( + 虑无者非常粗略调试打印行于(会无而『| 开始加载缓存: 』附路径)而 + 虑抽象语法者(读缓存于路径于『抽象语法』)而 + 虑无者非常粗略调试打印行于(会无而『| 正在类型检查: 』附路径)而 + 虑检查结果者进行文件结构检查顶层于路径于抽象语法而 + 虑正则签名者检查结果中零而 + 虑无者非常粗略调试打印行于(会无而『| 类型检查完成,准备保存数据: 』附路径)而 + 虑无者写缓存于路径于『正则签名』于「正则签名」而 + 虑无者非常粗略调试打印行于(会无而『| 正在转换擦除: 』附路径)而 + 虑变换结果者(「转换擦除顶层」于路径于检查结果中一)而 + 虑无者非常粗略调试打印行于(会无而『| 转换擦除完成,准备保存数据: 』附路径)而 + 虑无者写缓存于路径于『擦除后形式』于「变换结果」而 + 虑无者非常粗略调试打印行于(会无而『| 全部完成: 』附路径)而 + 元 + )否则( + 虑无者非常粗略调试打印行于(会无而『| 类型检查缓存存在: 』附路径)而 + 元 + )也。 + +执行跨模块优化乃化字符串而有也。 +执行跨模块优化者会路径而 + 若(信息需要更新于路径于『优化后形式』) + 则( + 虑无者非常粗略调试打印行于(会无而『| 开始加载缓存: 』附路径)而 + 虑擦除后形式者(读缓存于路径于『擦除后形式』)而 + 虑无者非常粗略调试打印行于(会无而『| 正在优化: 』附路径)而 + 虑优化结果者(「所有跨文件优化步骤」于路径于擦除后形式)而 + 虑无者非常粗略调试打印行于(会无而『| 跨模块优化完成,准备保存数据: 』附路径)而 + 虑无者写缓存于路径于『优化后形式』于「优化结果」而 + 虑无者非常粗略调试打印行于(会无而『| 全部完成: 』附路径)而 + 元 + )否则( + 虑无者非常粗略调试打印行于(会无而『| 跨文件优化缓存存在: 』附路径)而 + 元 + )也。 + +执行闭包转换乃化字符串而有也。 +执行闭包转换者会路径而 + 若(信息需要更新于路径于『闭包形式』) + 则( + 虑闭包转换后语法者前闭包转换顶层于路径于(读缓存于路径于『优化后形式』)而 + 虑无者写树组缓存于路径于『闭包形式』于(闭包转换后语法)而 + 元 + )否则( + 虑无者非常粗略调试打印行于(会无而『| 闭包转换缓存存在: 』附路径)而 + 元 + )也。 + +执行求值正则变换乃化字符串而有也。 +执行求值正则变换者会路径而 + 若(信息需要更新于路径于『求值正则形式』) + 则( + 虑求值正则形式者进行无类型求值正则变换顶层于路径于(读树组缓存于路径于『闭包形式』)而 + 虑无者写树组缓存于路径于『求值正则形式』于「求值正则形式」而 + 元 + )否则( + 虑无者非常粗略调试打印行于(会无而『| 求值正则变换缓存存在: 』附路径)而 + 元 + )也。 + +执行代码生成乃化字符串而有也。 +执行代码生成者会路径而 + 若(信息需要更新于路径于『代码生成形式』) + 则( + 虑无者非常粗略调试打印行于(会无而『| 开始加载缓存: 』附路径)而 + 虑求值正则形式者(读树组缓存于路径于『求值正则形式』)而 + 虑无者非常粗略调试打印行于(会无而『| 缓存加载完成: 』附路径)而 + 虑代码生成前形式者(代码生成准备变换顶层于路径于求值正则形式)而 + 虑无者(若读引用于「保存编译期中间产物」 + 则( + 写树组缓存于路径于『代码生成前形式』于代码生成前形式 + ) + 否则( + 元 + ))而 + 虑无者非常粗略调试打印行于(会无而『| 代码生成准备完成: 』附路径附『 共』附(整数表示于(长度于代码生成前形式))附『个函数』)而 + 虑无者单个文件代码生成顶层于(读引用于文件编译顺序)于路径于(获取输出文件路径于路径)于代码生成前形式而 + 虑无者非常粗略调试打印行于(会无而『| 代码生成完成,准备保存数据: 』附路径)而 + 虑无者写代码生成形式缓存于路径而 + 元 + )否则( + 虑无者非常粗略调试打印行于(会无而『| 代码生成缓存存在: 』附路径)而 + 元 )也。 \ No newline at end of file diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\345\215\225\344\270\200\347\274\226\350\257\221\345\267\245\344\275\234\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\345\215\225\344\270\200\347\274\226\350\257\221\345\267\245\344\275\234\343\200\202\350\261\253" index dbad0e3f..ca9ba849 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\345\215\225\344\270\200\347\274\226\350\257\221\345\267\245\344\275\234\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\345\215\225\344\270\200\347\274\226\350\257\221\345\267\245\344\275\234\343\200\202\350\261\253" @@ -37,126 +37,33 @@ 寻观编译过程工具之书。 寻观编译文件缓存工具之书。 +寻观分布编译步骤之书。 - -执行单一工作乃化字符串「:输入文件的绝对路径:」而整数也。 +执行单一工作乃化字符串「:输入文件的绝对路径:」而有也。 执行单一工作者会路径而 鉴读引用于单一工作模式任务而 有『dependency-analysis』则( - 若(缓存存在于路径于『依赖分析结果』)则 - ( - 虑无者非常粗略调试打印行于(会无而『| 缓存存在: 』附路径)而 - 虑依赖缓存者(读树组缓存于路径于『依赖分析结果』)而 - 虑「所有依赖」者态射于三对子取零于依赖缓存而 - 虑无者打印行于(以『「:换行:」』合并(所有依赖))而 - 零 - ) - 否则( - 虑无者非常粗略调试打印行于(会无而『| 正在进行依赖分析: 』附路径)而 - 虑「所有依赖」者寻找可能导入文件顶层于路径而 - 虑无者非常粗略调试打印行于(会无而『| 完成,正在写缓存: 』附路径)而 - 虑无者写树组缓存于路径于『依赖分析结果』于(打表态射于「所有依赖」于(会文件名而文件名与阳与(式节点于待定节点于【】)))而 - 虑无者打印行于(以『「:换行:」』合并(所有依赖))而 - 零 - ) + 打印行于(以『「:换行:」』合并(执行依赖分析于「路径」)) ) 或有『parse』则( - 若(缓存存在于路径于『抽象语法』)则( - 虑无者非常粗略调试打印行于(会无而『| 缓存存在: 』附路径)而 - 零 - )否则( - 虑无者非常粗略调试打印行于(会无而『| 开始语法分析: 』附路径)而 - 虑结果者抽象语法解析编译单元顶层于路径于( 粗分析编译单元于( 词法解析顶层于(文件系统之读文件于路径) ) )而 - 虑无者非常粗略调试打印行于(会无而『| 语法分析完成,正在保存结果: 』附路径)而 - 虑无者写缓存于路径于『抽象语法』于结果而 - 虑无者非常粗略调试打印行于(会无而『| 全部完成: 』附路径)而 - 零 - ) + 执行语法分析于路径 ) 或有『type-check-and-erase』则( - 若(缓存存在于路径于『擦除后形式』) - 则( - 虑无者非常粗略调试打印行于(会无而『| 缓存存在: 』附路径)而 - 零 - )否则( - 虑无者非常粗略调试打印行于(会无而『| 开始加载缓存: 』附路径)而 - 虑抽象语法者(读缓存于路径于『抽象语法』)而 - 虑无者非常粗略调试打印行于(会无而『| 正在类型检查: 』附路径)而 - 虑检查结果者进行文件结构检查顶层于路径于抽象语法而 - 虑正则签名者检查结果中零而 - 虑无者非常粗略调试打印行于(会无而『| 正在转换擦除: 』附路径)而 - 虑变换结果者(「转换擦除顶层」于路径于检查结果中一)而 - 虑无者非常粗略调试打印行于(会无而『| 本项工作完成,准备保存数据: 』附路径)而 - 虑无者写缓存于路径于『正则签名』于「正则签名」而 - 虑无者写缓存于路径于『擦除后形式』于「变换结果」而 - 虑无者非常粗略调试打印行于(会无而『| 全部完成: 』附路径)而 - 零 - ) + 执行类型检查并擦除于路径 ) 或有『cross-module-optimize』则( - 若(缓存存在于路径于『优化后形式』) - 则( - 虑无者非常粗略调试打印行于(会无而『| 缓存存在: 』附路径)而 - 零 - )否则( - 虑无者非常粗略调试打印行于(会无而『| 开始加载缓存: 』附路径)而 - 虑擦除后形式者(读缓存于路径于『擦除后形式』)而 - 虑无者非常粗略调试打印行于(会无而『| 正在优化: 』附路径)而 - 虑优化结果者(「所有跨文件优化步骤」于路径于擦除后形式)而 - 虑无者非常粗略调试打印行于(会无而『| 本项工作完成,准备保存数据: 』附路径)而 - 虑无者写缓存于路径于『优化后形式』于「优化结果」而 - 虑无者非常粗略调试打印行于(会无而『| 全部完成: 』附路径)而 - 零 - ) + 执行跨模块优化于路径 ) 或有『pre-closure-convert』则( - 若(缓存存在于路径于『求值正则前闭包形式』)则( - 虑无者非常粗略调试打印行于(会无而『| 缓存存在: 』附路径)而 - 零 - )否则( - 虑闭包转换后语法者前闭包转换顶层于路径于(读缓存于路径于『优化后形式』)而 - 虑无者写树组缓存于路径于『求值正则前闭包形式』于(闭包转换后语法)而 - 零 - ) + 执行闭包转换于路径 ) 或有『anf』则( - 若(缓存存在于路径于『求值正则形式』) - 则( - 虑无者非常粗略调试打印行于(会无而『| 缓存存在: 』附路径)而 - 零 - )否则( - 虑求值正则形式者进行无类型求值正则变换顶层于路径于(读树组缓存于路径于『求值正则前闭包形式』)而 - 虑无者写树组缓存于路径于『求值正则形式』于「求值正则形式」而 - 零 - ) + 执行求值正则变换于路径 ) 或有『all-codegen』则( - 若(缓存存在于路径于『代码生成形式』)则( - 虑无者非常粗略调试打印行于(会无而『| 缓存存在: 』附路径)而 - 零 - )否则( - 虑无者非常粗略调试打印行于(会无而『| 开始加载缓存: 』附路径)而 - 虑求值正则形式者(读树组缓存于路径于『求值正则形式』)而 - 虑无者非常粗略调试打印行于(会无而『| 缓存加载完成: 』附路径)而 - 虑代码生成前形式者(代码生成准备变换顶层于路径于求值正则形式)而 - 虑无者(若读引用于「保存编译期中间产物」 - 则( - 写树组缓存于路径于『代码生成前形式』于代码生成前形式 - ) - 否则( - 元 - ))而 - 虑无者非常粗略调试打印行于(会无而『| 代码生成准备完成: 』附路径附『 共』附(整数表示于(长度于代码生成前形式))附『个函数』)而 - 虑无者单个文件代码生成顶层于(读引用于文件编译顺序)于路径于(获取输出文件路径于路径)于代码生成前形式而 - 虑无者非常粗略调试打印行于(会无而『| 本项工作完成,准备保存数据: 』附路径)而 - 虑无者写缓存于路径于『代码生成形式』于(式节点于待定节点于【】)而 - 零 - ) - ) - 或有『exec-gen』则(「:exec gen 不应当overrride自己的路径:」 - 写引用于文件编译顺序于((读引用于文件编译顺序)接【路径】); - 条件生成可执行程序并执行于路径 + 执行代码生成于路径 ) + 或有『to_be_set』则( 发生事故于『必须指定单一工作』 ) diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\346\226\207\344\273\266\347\274\223\345\255\230\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\346\226\207\344\273\266\347\274\223\345\255\230\343\200\202\350\261\253" index 8f3df0de..be2f80a5 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\346\226\207\344\273\266\347\274\223\345\255\230\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\346\226\207\344\273\266\347\274\223\345\255\230\343\200\202\350\261\253" @@ -1,4 +1,4 @@ -寻标准库之书。 +「: 寻标准库之书。 观标准库之书。 寻观豫言编译器之编译数据之文件管理之编译文件管理器之书。 @@ -222,4 +222,4 @@ 元 」) 或有「其他」则发生事故于『期待文件编译信息』 - 也。 \ No newline at end of file + 也。 :」 \ No newline at end of file diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\346\226\207\344\273\266\347\274\223\345\255\230\345\267\245\345\205\267\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\346\226\207\344\273\266\347\274\223\345\255\230\345\267\245\345\205\267\343\200\202\350\261\253" index 38352288..0ea79f24 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\346\226\207\344\273\266\347\274\223\345\255\230\345\267\245\345\205\267\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\346\226\207\344\273\266\347\274\223\345\255\230\345\267\245\345\205\267\343\200\202\350\261\253" @@ -83,7 +83,11 @@ 缓存存在乃化字符串「:路径:」而化字符串「:信息名:」而爻也。 缓存存在者会路径而会信息名而 - 文件系统之路径存在于(获取输出文件路径于路径)附『.』附信息名附『.json』也。 +( + 虑返回者文件系统之路径存在于(获取信息缓存文件路径于路径于信息名)而 + 虑无者编译调试打印行于『cache_file_exist』于(会无而『缓存存在吗:』附(爻表示于返回)附路径附信息名附(获取信息缓存文件路径于路径于信息名))而 + 返回 +)也。 读文件依赖乃化字符串而字符串列也。 @@ -130,8 +134,8 @@ 写求值正则形式者会路径而会式而「写树组缓存」于路径于『求值正则形式』于式也。 「:代码生成只是一个标记:」 -写代码生成形式乃化字符串而有也。 -写代码生成形式者会路径而「写串列缓存」于路径于『代码生成形式』于【】也。 +写代码生成形式缓存乃化字符串而有也。 +写代码生成形式缓存者会路径而「写串列缓存」于路径于『代码生成形式』于【】也。 信息垂直依赖乃化字符串而字符串也。 @@ -151,6 +155,9 @@ 有『文件依赖』则( 【路径】 ) + 或有『抽象语法』则( + 【路径】 + ) 或有「其他信息名」则( 虑垂直依赖者「获取信息缓存文件路径」于路径于(信息垂直依赖于「其他信息名」)而 虑水平依赖者(字符串列也 diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\350\277\207\347\250\213\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\350\277\207\347\250\213\343\200\202\350\261\253" index ad549f07..bddc7d0a 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\350\277\207\347\250\213\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\350\277\207\347\250\213\343\200\202\350\261\253" @@ -38,153 +38,53 @@ 寻观编译过程工具之书。 寻观编译文件缓存之书。 寻观编译文件缓存工具之书。 - - -进行编译乃化爻而化字符串而有也。 -进行编译者会路径是顶层而遇字符串者路径而( - 若存在编译单元于路径 - 则元 +寻观分布编译步骤之书。 + +所有依赖分析乃化字符串而有也。 +所有依赖分析者会路径而 + 虑「 + + 「: 正在依赖分析者新引用授以(字符串列)于【路径】也。 :」 + + 局部编译文件者新引用授以(字符串列)于【】也。 + + 反复获取依赖乃化字符串而有也。 + 反复获取依赖者循反复获取依赖以会当前路径而 + 若(「存在吗」于(「串相等」于当前路径)于(读引用于(局部编译文件))) + 则元 + 否则( + 虑递归者反复获取依赖而 + 虑当前依赖者执行依赖分析于当前路径而 + 虑新依赖者(滤于(会新而非于(存在吗于(「串相等」于新)于((读引用于局部编译文件))))于当前依赖)而 + 虑无者(有列也态射于递归于新依赖)而 + 虑无者(「列引用前衔」于「局部编译文件」于当前路径)而 + 元 + ) + 也。 + + 反复获取依赖于路径。 + 若(非于((长度于(读引用于局部编译文件))等于(长度于(移除重复于「串相等」于(读引用于局部编译文件))))) + 则(发生事故于『重复依赖,检查算法,』附(「串列表示」于(读引用于局部编译文件)))否则元。 + 写引用于「文件编译顺序」于(反转于(读引用于局部编译文件)) + + 」也。 + +进行编译乃化字符串而有也。 +进行编译者会路径而 + 虑无者执行语法分析于路径而 + 若(读引用于仅执行语法分析) + 则(元) 否则( - ( - 「:内容可能从硬盘或者LSP更新,所以 - 如果已有内容则不更新内容,否则更新内容。 - 此外永远执行类型检查和编译成IR:」 - 虑( - 「:为不报错,先添加编译单元:」 - 「添加编译单元」于路径。 - 「更新编译单元」于路径于(正在编译)。 - - 时间格式乃字符串也。 - 时间格式者『[%Y-%m-%d %H:%M:%S] 』也。 - - 开始时间者获取当前纳秒时间于元也。 - 标准错误打印行于(当前日期时间格式表示于时间格式)附『正在编译:』附路径。 - - 若(「读取缓存并试图跳过编译」于路径) - 则(粗略调试打印行于(会无而『已从缓存加载:』附路径)) - 否则(虑「 - - 抽象语法者 - 鉴(读取文件缓存的抽象语法于路径) - 而有(可有「缓存抽象语法」)则缓存抽象语法 - 或有「其他」则(虑「 - 内容串者文件系统之读文件于路径也。 - 结树者词法解析顶层于内容串也。 - 粗语法者粗分析编译单元于结树也。 - 抽象语法解析编译单元顶层于路径于粗语法 - 」)也。 - - 非常粗略调试打印行于(会无而『| 语法分析完成: 』附路径)。 - 详细调试打印行于(会无而『》》》》》》》》[D]语法分析完成: 』附路径附『 》》抽象语法:』附(「表达式表示」于抽象语法))。 - 若(读引用于仅执行语法分析)则 - ( - 虑「 - 更新编译单元于「路径」于( - 「:TODO: 我们要给正则签名一个合理的占位:」 - 「已编译」于「抽象语法」于(「抽象语法」)于【】于「抽象语法」于「可无」 - )。 - 更新抽象语法缓存于「路径」。 - 元。 - 」 - )否则( - 虑「 - - - 检查后语法者进行文件结构检查顶层于路径于抽象语法也。 - 当前文件依赖者移除重复于「串相等」于(读取文件引用依赖于(检查后语法中一))也。 - - 非常粗略调试打印行于(会无而『| 类型检查完成: 』附路径)。 - 详细调试打印行于(会无而『》》》》》》》》[D]类型检查完成: 』附路径附『 》》抽象语法:』附(「表达式表示」于检查后语法中一))。 - 详细调试打印行于(会无而『》》》》》》》》[D]类型检查完成: 』附路径附『 》》打印版抽象语法:「「:换行:」』附(抽象语法友好表示于二于检查后语法中一))。 - - 若(读引用于仅执行类型检查)则( - 虑「 - 更新编译单元于「路径」于( - 「已编译」于「抽象语法」于(检查后语法中零)于「当前文件依赖」于(检查后语法中零)于「可无」 - )。 - 更新抽象语法缓存于「路径」。 - 元。 - 」 - )否则( - 虑「 - - 当前文件依赖者移除重复于「串相等」于(读取文件引用依赖于(检查后语法中一))也。 - - 转换擦除后语法者「转换擦除顶层」于路径于检查后语法中一也。 - 详细调试打印行于(会无而『》》》》》》》》[D]转换擦除完成: 』附路径附『 》》抽象语法:』附(「表达式表示」于转换擦除后语法))。 - 若(读引用于「保存编译期中间产物」) - 则( - 写缓存于路径于『擦除后形式』于「转换擦除后语法」 - )否则( - 元 - )。 - 非常粗略调试打印行于(会无而『| 转换擦除完成: 』附路径)。 - - 求值前优化后语法者「所有跨文件优化步骤」于路径于转换擦除后语法也。 - 若(读引用于「保存编译期中间产物」) - 则( - 写缓存于路径于『优化后形式』于「求值前优化后语法」 - )否则( - 元 - )。 - - 求值变换前闭包语法者前闭包转换顶层于路径于「求值前优化后语法」也。 - 若(读引用于「保存编译期中间产物」) - 则( - 写树组缓存于路径于『求值正则前闭包形式』于(求值变换前闭包语法) - )否则( - 元 - )。 - 求值变换后语法者进行无类型求值正则变换顶层于路径于「求值变换前闭包语法」也。 - 若(读引用于「保存编译期中间产物」) - 则( - 写树组缓存于路径于『求值正则形式』于(求值变换后语法) - )否则( - 元 - )。 - 非常粗略调试打印行于(会无而『| 正则变换完成: 』附路径)。 - - - 代码生成语法者(代码生成准备变换顶层于路径于「求值变换后语法」)也。 - 非常粗略调试打印行于(会无而『| 代码生成准备完成: 』附路径)。 - 编译调试打印行于『compile_tree』于(会无而『代码生成语法:』附(「表达式树组友好表示」于零于代码生成语法))。 - 若(读引用于「保存编译期中间产物」) - 则( - 写树组缓存于路径于『代码生成前形式』于(代码生成语法) - )否则( - 元 - )。 - 单个文件代码生成顶层于(读引用于文件编译顺序)于路径于(获取输出文件路径于路径)于(代码生成语法)。 - 非常粗略调试打印行于(会无而『| 代码生成完成: 』附路径)。 - - 更新编译单元于「路径」于( - 「已编译」于「抽象语法」于(检查后语法中零)于「当前文件依赖」于(求值前优化后语法)于(可有(元)) - )。 - 写引用于文件编译顺序于((读引用于文件编译顺序)接【路径】)。 - 若(读引用于不进行缓存)则(元) - 否则(更新编译缓存于路径)。 - - - 元 - 」 - ) - 」 - )。 - 」 - )。 - - - 结束时间者获取当前纳秒时间于元也。 - - - 标准错误打印行于(当前日期时间格式表示于时间格式)附(『完成编译:』附路径附『 》》(包括编译包含文件的)总用时』附(用时秒数表示于开始时间于结束时间)附『秒』)。 - - - + 虑无者执行类型检查并擦除于路径而 + 若(读引用于仅执行类型检查) + 则(元) + 否则( + 虑无者执行语法分析于路径而 + 虑无者执行类型检查并擦除于路径而 + 虑无者「执行跨模块优化」于路径而 + 虑无者执行闭包转换于路径而 + 虑无者执行求值正则变换于路径而 + 虑无者执行代码生成于路径而 元 ) -))) -也。 - -写引用于(进行编译引用)于(进行编译于阴)。 - + )也。 \ No newline at end of file diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\350\277\207\347\250\213\345\267\245\345\205\267\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\350\277\207\347\250\213\345\267\245\345\205\267\343\200\202\350\261\253" index a3e69152..008c63ce 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\350\277\207\347\250\213\345\267\245\345\205\267\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\346\200\273\344\275\223\350\277\207\347\250\213/\347\274\226\350\257\221\350\277\207\347\250\213\345\267\245\345\205\267\343\200\202\350\261\253" @@ -7,7 +7,7 @@ 寻观标准库之操作系统之路径之书。 - +寻观豫言编译器之编译辅助工具之命令行之可打印文档之书。 @@ -31,10 +31,10 @@ 则(去除串开头于当前路径于「去除结尾后」) 否则「去除结尾后」也。 - (「路径合并」于(「路径合并」于当前路径于『.yybuild.nosync』)于去除开头后) + (「路径合并」于(「路径合并」于当前路径于『.yybuild.』附(当前豫言版本)附『.nosync』)于去除开头后) 」也。 -获取输出文件相对路径乃化字符串「:绝对输入路径:」而字符串也。 +「: 获取输出文件相对路径乃化字符串「:绝对输入路径:」而字符串也。 获取输出文件相对路径者会输入而 虑「 去除结尾后者 @@ -46,7 +46,7 @@ 否则「去除结尾后」也。 (「路径合并」于(「路径合并」于『.』于『.yybuild.nosync』)于去除开头后) - 」也。 + 」也。 :」 获取输出代码文件路径乃化字符串而字符串也。 diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\345\257\271\350\261\241\347\261\273\345\236\213\346\243\200\346\237\245\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\345\257\271\350\261\241\347\261\273\345\236\213\346\243\200\346\237\245\343\200\202\350\261\253" index 3b0e377f..89ac7281 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\345\257\271\350\261\241\347\261\273\345\236\213\346\243\200\346\237\245\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\345\257\271\350\261\241\347\261\273\345\236\213\346\243\200\346\237\245\343\200\202\350\261\253" @@ -558,7 +558,7 @@ ) 或有(式节点于(文件引用节点于「新文件名」)于【】)则 ( - 虑检查后类者读取文件签名于新文件名而 + 虑检查后类者读正则签名于新文件名而 虑无者「断言类型相等」于境于检查后类于类而 (式节点于(文件引用节点于新文件名)于【】) ) diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\346\226\207\344\273\266\347\273\223\346\236\204\346\243\200\346\237\245\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\346\226\207\344\273\266\347\273\223\346\236\204\346\243\200\346\237\245\343\200\202\350\261\253" index af407bd6..77d0e9d8 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\346\226\207\344\273\266\347\273\223\346\236\204\346\243\200\346\237\245\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\346\226\207\344\273\266\347\273\223\346\236\204\346\243\200\346\237\245\343\200\202\350\261\253" @@ -43,7 +43,7 @@ 有式节点于(近似结构节点于「可能名」)于 (式节点于(文件导入近似类型节点于「文件名」)于【】)衔「尾式」衔【】则 ( - 虑文件签名者(读取文件签名于文件名)而 + 虑文件签名者(读正则签名于文件名)而 虑文件引用者(式节点于(文件引用节点于文件名)于【】)而 虑静态签名者(式节点于静态单例类型节点于【文件签名,文件引用】)而 虑后尾式者(尾式检查于境于静态签名于尾式)而 diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\347\255\276\345\220\215\347\261\273\345\236\213\345\244\204\347\220\206\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\347\255\276\345\220\215\347\261\273\345\236\213\345\244\204\347\220\206\343\200\202\350\261\253" index 44cee9af..cc1307db 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\347\255\276\345\220\215\347\261\273\345\236\213\345\244\204\347\220\206\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\347\261\273\345\236\213\346\243\200\346\237\245/\347\255\276\345\220\215\347\261\273\345\236\213\345\244\204\347\220\206\343\200\202\350\261\253" @@ -27,7 +27,7 @@ 投影文件引用类型进行投影者循投影文件引用类型进行投影以会式而 鉴式而有 式节点于(文件引用节点于「文件名」)于【】则 - (可有(读取文件签名于文件名)) + (可有(读正则签名于文件名)) 或有式节点于(结构投影带序数于名于「序数」)于(「后式」衔【】)则 (虑后后式者(投影文件引用类型进行投影于后式)而 鉴后后式而 diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\350\257\255\346\263\225\345\210\206\346\236\220/\345\207\275\346\225\260\345\220\210\351\233\206\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\350\257\255\346\263\225\345\210\206\346\236\220/\345\207\275\346\225\260\345\220\210\351\233\206\343\200\202\350\261\253" index a61aaaed..c51f37fe 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\350\257\255\346\263\225\345\210\206\346\236\220/\345\207\275\346\225\260\345\220\210\351\233\206\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\350\257\255\346\263\225\345\210\206\346\236\220/\345\207\275\346\225\260\345\220\210\351\233\206\343\200\202\350\261\253" @@ -30,8 +30,8 @@ 粗分析编译单元类型即化表达式列而粗声明列也。 粗分析编译单元引用者新引用于(粗分析编译单元类型也会输入而发生事故于『尚未设置具体值』)也。 -进行编译类型即化字符串而有也。 -进行编译引用者新引用于(进行编译类型也会路径而发生事故于『尚未设置具体值』)也。 +「: 进行编译类型即化字符串而有也。 +进行编译引用者新引用于(进行编译类型也会路径而发生事故于『尚未设置具体值』)也。 :」 编译全局主模块类型即化字符串而有也。 编译全局主模块引用者新引用于(编译全局主模块类型也会路径而发生事故于『尚未设置具体值41』)也。 diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\350\257\255\346\263\225\345\210\206\346\236\220/\346\212\275\350\261\241\350\257\255\346\263\225\345\210\206\346\236\220\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\350\257\255\346\263\225\345\210\206\346\236\220/\346\212\275\350\261\241\350\257\255\346\263\225\345\210\206\346\236\220\343\200\202\350\261\253" index 8786b7a7..01901e3c 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\350\257\255\346\263\225\345\210\206\346\236\220/\346\212\275\350\261\241\350\257\255\346\263\225\345\210\206\346\236\220\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\346\255\245\351\252\244/\350\257\255\346\263\225\345\210\206\346\236\220/\346\212\275\350\261\241\350\257\255\346\263\225\345\210\206\346\236\220\343\200\202\350\261\253" @@ -272,10 +272,7 @@ 环二及导入处理者若需要导入于作则 (虑「 新文件名者导入解析之解析导入文件名于(「符列环境读取路径」于「原先环境」)于结构名也。 - 鉴(读引用于当前模式)而 - 有『regular』则(读引用于「函数合集」之进行编译引用)于新文件名 - 或有「其他」则元。 - 模块信息者(读取抽象语法)于新文件名也。 + 模块信息者(读抽象语法)于新文件名也。 模块近似类型者( 「获取结构的最细致近似签名」于【】于模块信息 )也。 diff --git "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\350\276\205\345\212\251\345\267\245\345\205\267/\345\221\275\344\273\244\350\241\214/\345\217\257\346\211\223\345\215\260\346\226\207\346\241\243\343\200\202\350\261\253" "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\350\276\205\345\212\251\345\267\245\345\205\267/\345\221\275\344\273\244\350\241\214/\345\217\257\346\211\223\345\215\260\346\226\207\346\241\243\343\200\202\350\261\253" index 079a1778..437cc878 100644 --- "a/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\350\276\205\345\212\251\345\267\245\345\205\267/\345\221\275\344\273\244\350\241\214/\345\217\257\346\211\223\345\215\260\346\226\207\346\241\243\343\200\202\350\261\253" +++ "b/\350\261\253\350\250\200\347\274\226\350\257\221\345\231\250/\347\274\226\350\257\221\350\276\205\345\212\251\345\267\245\345\205\267/\345\221\275\344\273\244\350\241\214/\345\217\257\346\211\223\345\215\260\346\226\207\346\241\243\343\200\202\350\261\253" @@ -1,6 +1,6 @@ 寻观标准库之书。 -当前豫言版本者『v0.1.0alpha』也。 +当前豫言版本者『v0.1.0rc1』也。 AGPL版权声明者 『豫言编程语言 (一款中文函数式编程语言)