豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 107 行 · 8325 字节 · UTF-8
§
寻观「标准库」之书。

寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「抽象语法树数据」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「抽象语法树基础操作」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「抽象语法树表示」之书。

「:检查给定的表达式是否可以被消除:」
「:我们假设ANF形式:」
「表达式无副作用」乃化「表达式」而「爻」也。
「表达式无副作用」者会「式」而
  虑「递归」者「表达式无副作用」而
  鉴「式」而
    有(「自由变量」于「名」)则
      「阳」
    或有(「式节点」于(「自由变量标注节点」于「变量名」)于((「列」【「内容」】)))则
      (「递归」于「内容」)
    或有「式节点」于「内联虑」于((「列」【「实现」,「下个」】))则
      (若(「表达式无副作用」)于「实现」则(「表达式无副作用」于(「解构抽象」于「下个」)中「一」)否则(「阴」))
    或有(「式节点」于(「文件引用节点」于「文件名」)于「罄」)则
      「阳」
    或有(「式节点」于(「文件定义引用节点」于「文件名」于「定义名」于「序数」)于「罄」)则
      「阳」
    或有(「式节点」于(「文件定义内存引用节点」于「文件名」于「定义名」于「序数」)于「罄」)则
      「阳」
    或有(「绑定」于「可能串」于「底式」)则
      (虑「无」者「打印行」于『「发生事故」60』而「发生事故」于『不应当出现绑定』)
    或有(「式节点」于(「结构投影带序数」于「投影名」于「序数」)于((「列」【「结构」】)))则
      (「递归」于「结构」)
    或有(「式节点」于(「结构投影」于「投影名」)于((「列」【「结构」】)))则
      (「递归」于「结构」)
    或有(「式节点」于「函数调用」于「参数」)则
      「阴」
    或有(「式节点」于(「展开后内建节点」于「量」)于「参数们」)则
      ((「全部符合」授以「表达式」)于「递归」于「参数们」)
    或有(「式节点」于(「爻分支节点」)于(「列」【「爻式」,「阳式」,「阴式」】))
    则(
      若(「表达式无副作用」于「爻式」)
      则
        (若(「表达式无副作用」于「阳式」)则(「表达式无副作用」于「阴式」)否则「阴」)
      否则
        「阴」
    )
    或有(「式节点」于(「整数节点」于「数」)于「罄」)则
      「阳」
    或有(「式节点」于(「小数节点」于「数」于「整小部」)于「罄」)则
      「阳」
    或有(「式节点」于(「字符串节点」于「串」)于「罄」)则
      「阳」
    或有(「式节点」于「模式匹配」于(「缀」于「分析式」于「分支们」))则
      ((「全部符合」授以「表达式」)于「递归」于(「缀」于「分析式」于「分支们」))
    或有(「式节点」于(「常量模式匹配分支」)于((「列」【「常量」,「结果」】)))则
      (「递归」于「结果」)
    或有(「式节点」于(「变量模式匹配分支」)于((「列」【「结果」】)))则
      (「递归」于(「解构抽象」于「结果」)中「一」)
    或有(「式节点」于(「唯一构造器模式匹配分支」于「序数」)于((「列」【「结果」】)))则
      (「递归」于(「解构抽象」于「结果」)中「一」)
    或有(「式节点」于(「元组构造节点」)于「元素们」)则
      ((「全部符合」授以「表达式」)于(「递归」)于「元素们」)
    或有(「式节点」于(「元组类型节点」)于「类型们」)则
      ((「全部符合」授以「表达式」)于(「递归」)于「类型们」)
    或有(「式节点」于(「栈元组构造节点」)于「元素们」)则
      ((「全部符合」授以「表达式」)于(「递归」)于「元素们」)
    或有(「式节点」于(「擦除后类型节点」)于「罄」)则
      「阳」
    或有(「式节点」于(「元组解构节点」于「序数」)于((「列」【「元组」】)))则
      (「递归」于「元组」)
    或有(「式节点」于(「元组更新节点」于「序数」)于((「列」【「元组」,「更新式」】)))则
      「阴」
    或有(「式节点」于「顺序执行节点」于((「列」【「式甲」,「式乙」】)))则
      (「且」于(「递归」于「式甲」)于(「递归」于「式乙」))
    或有(「式节点」于(「展开后唯一构造器节点」于「序数」)于「参数们」)则
      ((「全部符合」授以「表达式」)于「递归」于「参数们」)
    或有(「式节点」于(「唯一构造器序数元组节点」于「序数」于「元组长」)于「参数们」)则
      ((「全部符合」授以「表达式」)于「递归」于「参数们」)
    或有(「式节点」于(「唯一构造器序数元组投影序数节点」)于「参数们」)则
      ((「全部符合」授以「表达式」)于「递归」于「参数们」)
    或有(「式节点」于(「唯一构造器序数元组投影元组节点」)于「参数们」)则
      ((「全部符合」授以「表达式」)于「递归」于「参数们」)
    或有(「式节点」于(「文件引用节点」于「新文件名」)于「罄」)则
      「阳」
    或有(「式节点」于(「解析后外部调用节点无类型」于「串」)于「参」)则
      「阴」
    或有(「式节点」于(「续延调用节点」)于((「列」【「续参」】)))则(「阴」)
    或有(「式节点」于(「拉姆达抽象」于「拉形」)于((「列」【「拉参」】)))则(「阳」 「:拉姆达抽象当然可以消除,只要它不被调用:」
  )
    或有(「式节点」于(「拉姆达抽象续延」于「续延名」)于((「列」【「拉参」】)))则(「阴」 「:续延名可能被引用:」
  )
    或有(「式节点」于「空值节点」于「罄」)则
      「阳」
    或有(「式节点」于(「文件定义存储节点」于「文件名」于「定义名」于「序数」)于((「列」【「参」】)))则
      (「阴」)
    或有(「式节点」于(「函数调用续延」于「续延名」)于((「列」【「参」】)))则
      「阴」
    或有(「式节点」于(「函数尾调用」)于((「列」【「函」,「参」】)))则
      「阴」
    或有(「式节点」于(「续延调用返回节点」)于((「列」【「函」,「参」】)))则
      「阴」
    或有(「式节点」于(「函数引用节点」于「函数名」)于「罄」)则
      「阳」
        「:文言:声明虽载函数体,亦不可删。汉语:静态入口声明包含 lambda 参数;即使其返回值未使用,也必须保留声明供后续函数提升。:」
    或有(「式节点」于(「函数全局声明节点」于「函数名」)于「声明参数」)则
      「阴」 「:函数声明不可以被移除:」
    或有(「式节点」于(「递归节点」)于((「列」【「定义域」,「递归值域」】)))则
      (「递归」于(「解构抽象」于「递归值域」)中「一」)
    或有「其他」则
      「发生事故」于『未有副作用检查310:』附(「表达式表示」于「式」)
也。