豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 212 行 · 13495 字节 · UTF-8
§
「:
把所有的模式匹配都转换成 if
:」

寻观「标准库」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「总集」之书。

。
寻观「编译器核心」之「编译数据」之「编译配置」之「编译期输出」之书。

寻观「编译器核心」之「顺序标识符」之「顺序标识符」之书。

「:将三抽象转换成单抽象:」
「模式匹配消除」乃化「表达式」而「表达式」也。
「模式匹配消除」者会「式」而
  虑「可能递归消除」者
    (遇「表达式」者「分支内式」而
  鉴「分支内式」而
    有(「式节点」于「模式匹配」于(「缀」于「分析式」于「分支们」))则
      (「模式匹配消除」于「分支内式」)
    或有「其他」则
      (「分支内式」)
    )而
      鉴「式」而
        有(「式节点」于「模式匹配」于(「缀」于「分析式」于「分支们」))
        则(
          虑「无」者
            「编译调试打印行」
              于
              『pattern_match_cancel』
                于(会「无」而『模式匹配消除进行』附(「表达式表示」于「式」))而
                虑「分析式名」者
                  (
                    若(「是直接变量」于「分析式」)则(「读取直接变量」于「分析式」)否则
                      (「下个字符序数」于『分析式消除』)
                  )而
                递归虑「处理剩余」其化(「列」于「表达式」)而「表达式」者(会「剩余」而
                  鉴
                  「剩余」而
                    有「罄」则「发生事故」
                      于『必须有默认分支』
                    或有(「缀」于(「式节点」于(「变量模式匹配分支」)于((「列」【「结果」】)))于「多余分支」)则
                      (「可能递归消除」于(「式替换」于(「自由变量」于「分析式名」)于「结果」))
                    或有(「缀」
                      于(「式节点」于(「常量模式匹配分支」)于((「列」【「常量」,「分支式」】)))
                      于
                      「其余分支」)则(
                      虑「后续分支」者「处理剩余」于「其余分支」
                      而
                      鉴「常量」而
                        有(「式节点」于(「整数节点」于「数」)于「罄」)则
                          「式节点」
                            于「内联虑」
                            于((「列」【
                              (「式节点」于(「整数节点」于「数」)于「罄」),
                              (「构造抽象」
                                于『闭消数』
                                于(会「数名」而「式节点」
                                  于「内联虑」
                                  于((「列」【
                                    (「式节点」
                                      于(「展开后内建节点」于「内建函数整数相等」)
                                      于((「列」【(「自由变量」于「分析式名」),(「自由变量」于「数名」)】))),
                                      (「构造抽象」
                                        于『闭消相等结果』
                                        于(会「相等结果」而「式节点」
                                          于「爻分支节点」
                                          于(「列」【
                                            「自由变量」于「相等结果」,
                                            「可能递归消除」于「分支式」,
                                            「后续分支」
                                          】)))
                                  】))))
                            】))
                        或有(「式节点」于(「字符串节点」于「串」)于「罄」)则
                          「式节点」
                            于「内联虑」
                            于((「列」【
                              (「式节点」于(「字符串节点」于「串」)于「罄」),
                              (「构造抽象」
                                于『闭消串』
                                于(会「串名」而「式节点」
                                  于「内联虑」
                                  于((「列」【
                                    (「式节点」
                                      于(「解析后外部调用节点无类型」于『豫言_字符串相等』)
                                      于((「列」【(「自由变量」于「分析式名」),(「自由变量」于「串名」)】))),
                                      (「构造抽象」
                                        于『闭消相等结果』
                                        于(会「相等结果」而「式节点」
                                          于「爻分支节点」
                                          于(「列」【
                                            「自由变量」于「相等结果」,
                                            「可能递归消除」于「分支式」,
                                            「后续分支」
                                          】)))
                                  】))))
                            】))
                        或有(「式节点」于(「展开后内建节点」于「内建爻阳」)于「罄」)则「式节点」
                          于
                          「爻分支节点」
                            于(「列」【「自由变量」于「分析式名」,「可能递归消除」于「分支式」,「后续分支」】)
                        或有(「式节点」于(「展开后内建节点」于「内建爻阴」)于「罄」)则「式节点」
                          于
                          「爻分支节点」
                            于(「列」【「自由变量」于「分析式名」,「后续分支」,「可能递归消除」于「分支式」】)
                    )
                    或有(「缀」
                      于(「式节点」于(「唯一构造器模式匹配分支」于「序数」)于((「列」【「分支式」】)))
                      于
                        「其余分支」)则(
                      虑「后续分支」者「处理剩余」于「其余分支」而
                      「式节点」
                        于
                          「内联虑」
                            于((「列」【
                              (「式节点」于(「整数节点」于「序数」)于「罄」),
                              (「构造抽象」
                                于
                                『闭消序数』
                                  于(会
                                  「序数名」
                                  而
                                  「式节点」
                                    于
                                    「内联虑」
                                      于((「列」【
                                        (「式节点」
                                          于(「唯一构造器序数元组投影序数节点」)
                                          于((「列」【(「自由变量」于「分析式名」)】))),
                                          (「构造抽象」
                                            于『闭消待检测数』
                                            于(会「待检测数名」而「式节点」
                                            于「内联虑」
                                            于((「列」【
                                              (「式节点」
                                                于(「展开后内建节点」于「内建函数整数相等」)
                                                于((「列」【
                                                  (「自由变量」于「待检测数名」),
                                                  (「自由变量」于「序数名」)
                                                】))),
                                                (「构造抽象」
                                                  于『闭消相等结果』
                                                  于(会「相等结果」而「式节点」
                                                  于「爻分支节点」
                                                  于(「列」【
                                                    「自由变量」于「相等结果」,
                                                    「式节点」
                                                      于「内联虑」
                                                      于((「列」【
                                                        (「式节点」
                                                          于(「唯一构造器序数元组投影元组节点」)
                                                          于((「列」【(「自由变量」于「分析式名」)】))),
                                                          (「构造抽象」
                                                            于『参数数组』
                                                            于(会「参数数组」而「可能递归消除」
                                                            于(「式替换」于(「自由变量」于「参数数组」)于「分支式」)))
                                                      】)),
                                                      「后续分支」
                                                  】)))
                                            】))))
                                      】))))
                            】))
                    )
                    或有「其他」则
                      「发生事故」于『消83』
                )
                而
                虑「初步结果」者「处理剩余」于「分支们」
                而
                虑「结果」者
                  (
                    若(「是直接变量」于「分析式」)则
                      (「初步结果」)
                    否则
                      (「式节点」
                        于「内联虑」
                        于((「列」【「分析式」,(「进行抽象」于「分析式名」于「初步结果」)】)))
                  )
                而
                虑「无」者
                  「编译调试打印行」
                    于『pattern_match_cancel』
                    于(会「无」而『模式匹配消除结果』附(「表达式表示」于「结果」))
                而
                「结果」
        )
        或有「其他」则
          (「发生事故」于『期待模式匹配,却得到了:』附(「表达式表示」于「其他」))
也。

「展开展开后唯一构造器节点」乃化「表达式」而「表达式」也。
「展开展开后唯一构造器节点」者会「实现」而
  鉴「实现」而
    有(「式节点」于(「展开后唯一构造器节点」于「序数」)于「参数」)则(
      若(「大于」于(「长度」于「参数」)于「二五零」)则
        (「发生事故」于『暂时不支持长度超过250的构造器』)
      否则
        (「式节点」
          于(「唯一构造器序数元组节点」于「序数」于(「长度」于「参数」))
          于((「列」【(「式节点」于(「元组构造节点」)于「参数」)】)))
          「: 式节点于「内联虑」于【式节点于(整数节点于「序数」)于【】,
                            构造抽象于『闭消序数』于(会序数名而
                                式节点于「内联虑」于【(式节点于(元组构造节点)于参数),
                                构造抽象于『闭消参数组』于(会参数组名而
                                    (式节点于(元组构造节点)于(自由变量于序数名)衔(自由变量于参数组名)衔【】)
                                )
                            】)】 :」
  )
    或有「其他」则
      「发生事故」于(『期待唯一构造器』)
也。