豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 111 行 · 5422 字节 · UTF-8
§
「:This is untyped closure conversion. 
I have prepared groundwork for typed closure conversion, but I 
have not yet studied it.
Part of the reason is that type annotation and typed ANF conversion take 
too long to execute.
:」

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

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

寻观「编译器核心」之「编译步骤」之「总体过程」之「编译过程工具」之书。
寻观「编译器核心」之「顺序标识符」之「顺序标识符」之书。

「函数提升」乃
  化「字符串」而
  化(化(「字符串」合「爻」合「表达式」)而「有」)而
  化「表达式」而
  「表达式」
也。
「函数提升」者会「模块名」而会「写出函数」而会「式」而
  虑「无」者
    「编译调试打印行」于『func_hoist』于(会「无」而『函数提升中:』附(「表达式表示」于「式」))而
    虑「递归」者
      (化「表达式」而「表达式」也会「后式」而「函数提升」于「模块名」于「写出函数」于「后式」)而
      虑「绑定递归」者
        (化「表达式」而「表达式」也会「式」而「抽象表达式操作」于「式」于「递归」)而
      鉴「式」而
        有(「式节点」于(「拉姆达抽象」于(「多参数形」于「个数」))于((「列」【「参」】)))
        则(
          虑「函数名」者
            「下个字符序数」
              于(「模块名」附『_提升函数』)
          而
          虑「无」者
            (
              若(「等」于((「长度」授以「字符串」)于(「读取式自由变量」于「参」))于「零」)则
                「元」
              否则
                「发生事故」于『闭包中不应该存在自由变量』
            )
          而
          虑「无」者
            「写出函数」
              于(「函数名」与「阴」
                与「式节点」
                  于(「拉姆达抽象」于(「多参数形」于「个数」))
                  于((「列」【(「绑定递归」于「参」)】)))
          而
          「式节点」
            于(「函数引用节点」于「函数名」)
            于「罄」
        )
        或有(「式节点」
          于(「函数全局声明节点」于「函数名」)
          于((「列」【(「式节点」于(「拉姆达抽象」于(「多参数形」于「个数」))于((「列」【「参」】)))】)))
          则(
            虑「无」者
              (
                若(「等」于((「长度」授以「字符串」)于(「读取式自由变量」于「参」))于「零」)
                则
                  「元」
                否则
                  「发生事故」于『闭包中不应该存在自由变量』
              )
            而
            虑「无」者
              「写出函数」于(「函数名」与「阳」
                与「式节点」
                  于(「拉姆达抽象」于(「多参数形」于「个数」))
                  于((「列」【(「递归」于「参」)】)))
            而
            「式节点」于(「函数引用节点」于「函数名」)于「罄」
          )
        或有(「式节点」于(「自由变量标注节点」于(「名」))于((「列」【「当前」】)))则((「式节点」
          于(「自由变量标注节点」于(「名」))
          于((「列」【(「函数提升」于(「模块名」附『_』附「名」)于「写出函数」于「当前」)】)))
        )
        或有「其他」则
          「表达式统一操作」于「递归」于「式」
也。

「函数提升顶层」乃
  化「字符串」而
  化「表达式」而
  「列」于(「字符串」合「爻」合「表达式」)
也。
「函数提升顶层」者会「路径」而会「式」而
  虑「结果」者
    ((「引用类」于(「列」于(「字符串」合「爻」合「表达式」)))也「新引用」于「罄」)而
    虑「添加结果」者
      (化「字符串」合「爻」合「表达式」而「有」也会「串式」而
        「写引用」于「结果」于(「缀」于「串式」于(「读引用」于「结果」))
      )
    而
    (「缀」于((「当前路径转全局函数名」于「路径」)与「阳」
  与((「式节点」
    于(「拉姆达抽象」于(「多参数形」于「零」))
    于((「列」【
      (「函数提升」
        于(「操作系统」之「路径」之「获取文件名」于(「去除路径结尾豫言拓展名」于「路径」))
        于
          「添加结果」于「式」)
    】)
    ))
      )
      ))于(「反转」于(「读引用」于「结果」))
也。