豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 193 行 · 11318 字节 · UTF-8
§
寻观「标准库」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「抽象语法树数据」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「抽象语法树基础操作」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「抽象语法树方法」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「抽象语法树表示」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「复杂度计算」之书。

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

「换行」乃化「整数」而「字符串」也。
「换行」者会「缩进」而
  若(「大于」于「缩进」于「零」)
  则
    (「换行」于(「减」于「缩进」于「一」))附『  』
  否则
    『「:换行:」』
也。

「缩进长度」者「二」也。

「抽象语法友好表示」乃
  化「爻」而 「:为阴则无需缩进:」
  化「整数」 「:当前换行缩进:」而
  化「表达式」而
  「字符串」
也。
「抽象语法友好表示」者会「需要缩进」而会「缩进」而会「式」而
  虑「递归」者
    (化「整数」而化「表达式」而「字符串」也
    会「后缩进」而会「后式」而「抽象语法友好表示」于「阳」于「后缩进」于「后式」
    )而
    虑「直接递归」者
      (化「整数」而化「表达式」而「字符串」也
      会「后缩进」而会「后式」而「抽象语法友好表示」于「阴」于「后缩进」于「后式」
      )而
    鉴「式」而
      有(「式节点」于「内联虑带类型」于(「列」【「式类」,「当前式」,「尾式」】))
      则(
        虑「名称及尾」者「解构抽象」于「尾式」而
        (「换行」于「缩进」)附
          (『虑  』附(「名称及尾」中「零」)附『  者  』附(「递归」于(「加」于「缩进」于「四」)于「当前式」)
          附『  而 』附(「换行」于(「加」于「缩进」于「二」))附(「递归」
            于(「加」于「缩进」于「二」)于
              「名称及尾」中「一」)
                「: 附『』附(换行于缩进减二)附『』 :」
)
      )
      或有(「式节点」于「内联虑」于((「列」【(「当前式」),「尾式」】)))
      则(
        虑「名称及尾」者
          「解构抽象」于「尾式」
        而
        (「换行」于「缩进」)附
          (『虑 』附(「名称及尾」中「零」)附『  者  』附(「直接递归」于(「加」于「缩进」于「四」)于「当前式」)附
            『  而 』附(「递归」于「缩进」于「名称及尾」中「一」))
      )
      或有(「式节点」于「顺序执行节点」于((「列」【(「当前式」),「尾式」】)))则((「换行」于「缩进」)附
        (『虑 __ 者  』附(「直接递归」于「缩进」于「当前式」)附『  而 』附(「递归」于「缩进」于「尾式」))
      )
      或有(「式节点」于「爻分支节点」于(「列」【「爻式」,「阳支」,「阴支」】))则((「换行」于「缩进」)附
        『若  』附(「直接递归」于「缩进」于「爻式」)附(「换行」于「缩进」)附『  则  』附(「递归」
          于(「加」于「缩进」于「缩进长度」)于「阳支」)
          附(「换行」于「缩进」)附『 否则 』附
            (「递归」于(「加」于「缩进」于「缩进长度」)于「阴支」)
      )
      或有(「式节点」于「模式匹配」于(「缀」于「模式」于「分支们」))则((「换行」于「缩进」)附
        『鉴  』附(「表达式表示」于「模式」)附『  而  』附
          (「间合」
            于『』
            于((「态射」)于「分支们」于(会「分支」而「递归」于(「加」于「缩进」于「缩进长度」)于「分支」)))
      )
      或有(「式节点」于(「常量模式匹配分支」)于((「列」【「常量」,「结果」】)))则((「换行」于「缩进」)附
        『有  』附(「表达式表示」于「常量」)附『  则  』附
          (「递归」于(「加」于「缩进」于「缩进长度」)于「结果」)
      )
      或有(「式节点」于(「变量模式匹配分支」)于((「列」【「结果」】)))
      则(
        虑「名称及尾」者「解构抽象」于「结果」
        而
        (「换行」于「缩进」)附『有  』附(「名称及尾」中「零」)附『  则  』附(「递归」
          于(「加」于「缩进」于「缩进长度」)
          于(「名称及尾」中「一」))
      )
      或有(「式节点」于(「唯一构造器模式匹配分支」于「序数」)于((「列」【「结果」】)))
      则(
        虑「名称及尾」者
          「解构抽象」于
            「结果」
        而
        (「换行」于「缩进」)
        附『有  ⌂(』附(「整数表示」于「序数」)附『)  』附(「名称及尾」中「零」)附『  则  』附(「递归」
          于(「加」于「缩进」于「缩进长度」)
          于(「名称及尾」中「一」))
      )
      或有(「式节点」于(「续延调用节点」)于((「列」【「结果」】)))
      则(
        虑「名称及尾」者「解构抽象」于「结果」而
        (「换行」于「缩进」)附『续延调用  』附(「名称及尾」中「零」)附『.』附(「递归」
          于(「加」于「缩进」于「缩进长度」)
          于(「名称及尾」中「一」))
      )
      或有(「式节点」于(「拉姆达抽象」于「合并式」)于((「列」【「拉体」】)))
      则(
        虑「当前名称及尾」者「解构抽象」于
          「拉体」
        而
        『λ』附(「当前名称及尾」中「零」)附『.』附(「递归」
          于(「加」于「缩进」于「缩进长度」)于「当前名称及尾」
            中「一」)
      )
      或有(「式节点」于(「拉姆达抽象」于(「多参数形」于「原来个数」))于((「列」【「拉体」】)))
      则(
        递归虑
          「个数递归」其化「整数」而化「表达式」而「字符串」者
            (会「个数」而会「拉体」而
              若(「大于」于「个数」于「零」)
              则
                (
                  虑「名称一及尾」者「解构抽象」于「拉体」而
                  (「名称一及尾」中「零」)附『.』附(「个数递归」
                    于(「减」于「个数」于「一」)
                    于(「名称一及尾」中「一」))
                )
              否则
                ((「参式表示」于(「多参数形」于「原来个数」))附(「递归」
                  于(「加」于「缩进」于「缩进长度」)于「拉体」)
                ))
        而
        『λ』附
          (「个数递归」于「原来个数」于「拉体」)
      )
      或有(「式节点」于(「拉姆达抽象」于「其他式」)于((「列」【「拉体」】)))
      则(
        虑「当前名称及尾」者「解构抽象」于
          「拉体」
        而
        『λ』附(「当前名称及尾」中「零」)附(「参式表示」于「其他式」)
        附『.』附(「递归」于(「加」于「缩进」于「缩进长度」)于「当前名称及尾」中「一」)
      )
      或有(「式节点」于(「拉姆达抽象续延」于「续延名」)于((「列」【「拉体」】)))
      则(
        虑「当前名称及尾」者
          「解构抽象」于「拉体」
        而
        『λₖ(』附「续延名」附『)』
        附(「当前名称及尾」中「零」)附『.』附(「递归」
          于(「加」于「缩进」于「缩进长度」)于
            「当前名称及尾」中「一」)
      )
      或有(「式节点」于(「拉姆达抽象续延无绑定」于「续延名」)于((「列」【「拉体」】)))则
        (『λₖ(』附「续延名」附『)』附(「递归」于(「加」于「缩进」于「缩进长度」)于「拉体」))
      或有(「式节点」于「节点名」于「参数」)则(
        若(「小于」于(「计算表达式复杂度」于「式」)于「一零」)则
          ((若「需要缩进」则(「换行」于「缩进」)否则『』)附(「表达式表示」于「式」))
        否则
          (
            虑「原输出」者
              ((「节点名称表示」于「节点名」)附『[』附
                (「间合」
                  于((「换行」于(「加」于「缩进」于「四」))附『;』)
                  于((「态射」)于「参数」于(会「参数式」而「递归」于(「加」于「缩进」于「四」)于「参数式」)))
                  附(「换行」于「缩进」)附『]』
              )
            而
            (若「需要缩进」则(「换行」于「缩进」)否则『』)附
              「原输出」
          )
      )
      或有「其他」则((若「需要缩进」则(「换行」于「缩进」)否则『』)附(「表达式表示」于「式」))
也。

「抽象语法友好表示顶层」乃化「表达式」而「字符串」也。
「抽象语法友好表示顶层」者会「式」而
  「抽象语法友好表示」于「阳」于「零」于「式」
也。

「表达式树组友好表示」乃
  化「整数」 「:当前换行缩进:」而
  化(「列」于(「字符串」合「爻」合「表达式」))而
  「字符串」
也。
「表达式树组友好表示」者会「缩进」而会「式」而
  (「间合」
    于『「:换行:」』
    于((「态射」)
    于「式」
    于(会「函数定义」而
      (「三对子取零」于「函数定义」)附『(』附(「爻表示」于(「三对子取一」于「函数定义」))附
        『)』
          附
            『的定义是:』附(「抽象语法友好表示顶层」于(「三对子取二」于「函数定义」)))
    ))
也。