豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 310 行 · 18417 字节 · UTF-8
§
寻观「标准库」之书。
寻观「编译器核心」之「顺序标识符」之「顺序标识符」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「总集」之书。

寻观「编译器核心」之「编译数据」之「操作符」之「操作符数据结构」之书。
寻观「编译器核心」之「编译数据」之「编译配置」之「编译期输出」之书。

「匹配合一上下文」即「串典」于(「或可有」于「表达式」)也。 「:可无表示未解,可有表示已解;键不存在表示不是待求变量:」

「匹配合一上下文添加变量」乃
  化「匹配合一上下文」而
  化「字符串」而
  「匹配合一上下文」
也。
「匹配合一上下文添加变量」者会「上下文」而会「名」而
  (「串典更新」授以(「或可有」于「表达式」))
  于「上下文」
  于「名」
  于(「可无」授以「表达式」)
也。

「匹配合一上下文未解名」乃化「匹配合一上下文」而「列」于「字符串」也。
「匹配合一上下文未解名」者会「上下文」而
  (「滤态射」授以「字符串」授以「字符串」)
  于(会「名」而
  鉴((「串典读取」授以(「或可有」于「表达式」))于「上下文」于「名」)而
    有「可无」则「可有」于「名」
    或有(「可有」于「忽略解」)则「可无」
  )
  于((「串典所有键」授以(「或可有」于「表达式」))于「上下文」)
也。

「匹配合一上下文表示」乃化「匹配合一上下文」而「字符串」也。
「匹配合一上下文表示」者会「上下文」而
  「间合」
    于『;』
    于((「串典态射」授以(「或可有」于「表达式」)授以「字符串」)
    于(会「名」而会「可能解」而
      鉴「可能解」而
        有「可无」则「名」附『=?』
        或有(「可有」于「解」)则
          「名」附『=』附(「表达式表示」于「解」))于「上下文」
    )
也。

「比较左自由变量」乃
  化(「引用类」于「匹配合一上下文」)而
  化「字符串」而
  化「表达式」而
  (「或可有」于(「表达式」合「表达式」))
也。
「比较左自由变量」者会「上下文引用」而会「左名」而会「右式」而
  鉴((「串典查找」授以(「或可有」于「表达式」))于(「读引用」于「上下文引用」)于「左名」)而
    有「可无」则(
      鉴「右式」而
        有(「自由变量」于「右名」)则
          若(「串相等」于「左名」于「右名」)则(「可无」授以(「表达式」合「表达式」))否则「发生事故」
            于
            『不相等!』
        或有(「式节点」于(「拉姆达抽象带类型」于「右形」)于((「列」【「右类型」,「右函体」】)))
        则
          「可有」于((「式节点」
            于(「拉姆达抽象带类型」于「右形」)
            于((「列」【
              「右类型」,
              (「构造抽象」
                于
                『名』于(会「名」而「添加函数调用参数」
                  于(「自由变量」于「左名」)
                  于「右形」
                  于(「自由变量」于「名」)))
            】)))与「右式」)
        或有「其他右式」则
          「发生事故」于『不相等!』
    )
    或有(「可有」于「可无」)则(
      虑「无」者
        (「串典引用更新」授以(「或可有」于「表达式」))
        于「上下文引用」于「左名」
        于(「可有」于「右式」)
      而
      「可无」授以(「表达式」合「表达式」)
    )
    或有(「可有」于(「可有」于「已有解」))则
      「可有」于(「已有解」与「右式」)
也。

「结构比较携上下文引用」乃
  化(「引用类」于「匹配合一上下文」)而
  化「表达式」而
  化「表达式」而
  「有」
也。
「结构比较携上下文引用」者会「上下文引用」而会「左式」而会「右式」而
  虑「抛出断言异常」者
    (遇「有」者「无」
  而
  (「发生事故」授以「有」于『不相等!』附(「表达式表示」于「左式」)附『 != 』附(「表达式表示」于「右式」))
    )
    而
  虑「简单断言」者
    (遇「爻」者「条件」而若「条件」则「元」否则(「抛出断言异常」于「元」))而
    递归虑「比较表达式列」其化(「列」于「表达式」)而化(「列」于「表达式」)而「有」者
      会「剩余左式们」而会「剩余右式们」而
        鉴「剩余左式们」与「剩余右式们」而
          有「罄」与「罄」则「元」
          或有(「缀」于「左项」于「后左式们」)与(「缀」于「右项」于「后右式们」)
          则(
            虑「无」者
              「结构比较携上下文引用」于
                「上下文引用」于「左项」于
                「右项」
            而
            「比较表达式列」于
            「后左式们」于「后右式们」
          )
          或有「其他」则
            「抛出断言异常」于「元」
    而
    鉴「左式」与「右式」而
      有(「自由变量」于「左名」)与「待比较右式」则(
        鉴(「比较左自由变量」于「上下文引用」于「左名」于「待比较右式」)而
          有「可无」则「元」
          或有(「可有」于(「后左式」与「后右式」))则
            「结构比较携上下文引用」于「上下文引用」于「后左式」于
            「后右式」
      )
      或有(「式节点」于(「内建节点」于(「量甲」))于「罄」)与(「式节点」于(「内建节点」于(「量乙」))于「罄」)
      则
        「简单断言」于(「内建常量相等」于「量甲」于「量乙」)
      或有(「式节点」于「函数调用」于「左项们」)与(「式节点」于「函数调用」于「右项们」)则
        「比较表达式列」于「左项们」于「右项们」
      或有(「式节点」于(「参数节点」于「左形」)于「左参数们」)
        与(「式节点」于(「参数节点」于「右形」)于「右参数们」)则
          (「简单断言」于(「参式相等」于「左形」于「右形」);
            「比较表达式列」于「左参数们」于「右参数们」)
      或有(「式节点」于「箭头类型节点」于「左类型们」)
        与(「式节点」于「箭头类型节点」于「右类型们」)则
          (「比较表达式列」于「左类型们」于「右类型们」)
      或有(「式节点」于(「隐式派类型节点」于「左参数个数」)于((「列」【「左值域」】)))
        与(「式节点」于(「隐式派类型节点」于「右参数个数」)于((「列」【「右值域」】)))
        则(
          虑「无」者
            「简单断言」
              于(「等」于「左参数个数」于「右参数个数」)
          而
          递归虑「比较抽象们」其化「整数」而化「表达式」而化「表达式」而「有」者会「剩余个数」而会「左抽象」而会
            「右抽象」
  而
  若(「等」于「剩余个数」于「零」)则
    「结构比较携上下文引用」于
          「上下文引用」于
            「左抽象」于「右抽象」
  否则
    (
      虑「抽象名」者
        「下个字符序数」于
          『等价抽象』
      而
      「比较抽象们」
        于(「减」于「剩余个数」于「一」)
        于(「式替换」于(「自由变量」于「抽象名」)于「左抽象」)
        于(「式替换」于(「自由变量」于「抽象名」)于「右抽象」)
    )
          而
          「比较抽象们」于「左参数个数」于「左值域」于「右值域」
        )
      或有(「式节点」于(「顺序执行节点」)于((「列」【「左式一」,「左式二」】)))
        与(「式节点」于(「顺序执行节点」)于((「列」【「右式一」,「右式二」】)))则
          (「结构比较携上下文引用」于
            「上下文引用」于「左式一」于「右式一」;
            「结构比较携上下文引用」于「上下文引用」于「左式二」于「右式二」)
      或有(「式节点」于(「爻分支节点」)于(「列」【「左分析式」,「左式一」,「左式二」】))
        与(「式节点」于(「爻分支节点」)于(「列」【「右分析式」,「右式一」,「右式二」】))
        则
          (「结构比较携上下文引用」于「上下文引用」于「左分析式」于「右分析式」;
            「结构比较携上下文引用」于「上下文引用」于「左式一」于「右式一」;
            「结构比较携上下文引用」于「上下文引用」于「左式二」于「右式二」)
      或有(「式节点」于(「拉姆达抽象带类型」于「左形」)于((「列」【「左类型」,「左函体」】)))
        与(「式节点」于(「拉姆达抽象带类型」于「右形」)于((「列」【「右类型」,「右函体」】)))
        则(
          若(「参式相等」于「左形」于「右形」)
          则
            (「结构比较携上下文引用」于「上下文引用」于「左类型」于「右类型」;
              (
                虑「抽象名」者「下个字符序数」于『等价抽象』而
                「结构比较携上下文引用」
                  于「上下文引用」
                  于(「式替换」于(「自由变量」于「抽象名」)于「左函体」)
                  于((「式替换」于(「自由变量」于「抽象名」)于「右函体」))
              ))
          否则
            (「抛出断言异常」于「元」)
        )
      或有「其他左式」
        与(「式节点」于(「拉姆达抽象带类型」于「右形」)于((「列」【「右类型」,「右函体」】)))
        则(「结构比较携上下文引用」
          于「上下文引用」
          于(「式节点」
            于(「拉姆达抽象带类型」于「右形」)
            于((「列」【
              「右类型」,
              (「构造抽象」于『名』于(会「名」而「添加函数调用参数」于「左式」于「右形」于(「自由变量」于「名」)))
            】)))
            于「右式」)
      或有(「式节点」于(「拉姆达抽象带类型」于「左形」)于((「列」【「左类型」,「左函体」】)))
        与「其他右式」则(「结构比较携上下文引用」
          于「上下文引用」
          于「左式」
          于(「式节点」
            于(「拉姆达抽象带类型」于「左形」)
            于((「列」【
              「左类型」,
              (「构造抽象」于『名』于(会「名」而「添加函数调用参数」于「右式」于「左形」于(「自由变量」于「名」)))
            】))))
      或有(「式节点」于(「元组构造节点」)于「左元素们」)
        与(「式节点」于(「元组构造节点」)于「右元素们」)则
          「比较表达式列」
            于「左元素们」
            于「右元素们」
      或有(「式节点」于(「元组类型节点」)于「左类型们」)
        与(「式节点」于(「元组类型节点」)于「右类型们」)则
          「比较表达式列」
            于「左类型们」
            于「右类型们」
      或有(「式节点」于(「元组解构节点」于「左序数」)于((「列」【「左对」】)))
        与(「式节点」于(「元组解构节点」于「右序数」)于((「列」【「右对」】)))则
          (「简单断言」
            于(「等」于「左序数」于「右序数」);
            「结构比较携上下文引用」于「上下文引用」于「左对」于「右对」)
      或有(「式节点」于(「文件引用节点」于「左文件名」)于「罄」)
        与(「式节点」于(「文件引用节点」于「右文件名」)于「罄」)则( 「:默认相等,因为两边默认已经经过了类型检查:」
          「简单断言」于(「串相等」于「左文件名」于「右文件名」)
        )
      或有(「式节点」于(「文件定义引用节点」于「左文件名」于「左定义名」于「左序数」)于「左参数」)
        与
          (「式节点」于(「文件定义引用节点」于「右文件名」于「右定义名」于「右序数」)于「右参数」)则
            (「简单断言」
              于(「且」
                于(「串相等」于「左文件名」于「右文件名」)
                于(「且」于(「串相等」于「左定义名」于「右定义名」)于(「整数相等」于「左序数」于「右序数」)));
              「比较表达式列」于「左参数」于「右参数」)
      或有(「式节点」于(「结构投影带序数」于「左名」于「左序数」)于((「列」【「左参数」】)))
        与(「式节点」于(「结构投影带序数」于「右名」于「右序数」)于((「列」【「右参数」】)))则(
          若「串相等」于
            「左名」于「右名」
          则
            (
              若「整数相等」于「左序数」于「右序数」
              则
                (「结构比较携上下文引用」于「上下文引用」于「左参数」于「右参数」)
              否则
                ((「抛出断言异常」于「元」))
            )
          否则
            (「抛出断言异常」于「元」)
        )
      或有(「式节点」于(「递归节点」)于((「列」【「左定义域」,「左值域」】)))
        与
          (「式节点」于(「递归节点」)于((「列」【「右定义域」,「右值域」】)))则
            (「结构比较携上下文引用」
              于
                「上下文引用」于「左定义域」于「右定义域」;
                (
                  虑「抽象名」者「下个字符序数」于『等价抽象』而
                  「结构比较携上下文引用」
                    于「上下文引用」
                    于(「式替换」于(「自由变量」于「抽象名」)于「左值域」)
                    于(「式替换」于(「自由变量」于「抽象名」)于「右值域」)
                ))
      或有(「式节点」于(「唯一构造器节点」于「左数」于「左文件路径」于「左构造器名」)于((「列」【「左类」】)))
        与(「式节点」于(「唯一构造器节点」于「右数」于「右文件路径」于「右构造器名」)于((「列」【「右类」】)))
        则
          「简单断言」于(「且」
            于(「串相等」于「左文件路径」于「右文件路径」)
            于(「串相等」于「左构造器名」于「右构造器名」)) 「:序数是类型内的运行时标记,文件路径与构造器名才构成类型检查时的唯一身份:」
      或有(「式节点」于(「整数节点」于「左数」)于「罄」)与
        (「式节点」于(「整数节点」于「右数」)于「罄」)则
          「简单断言」于(「等」于「左数」于「右数」)
      或有(「式节点」于(「小数节点」于「左数」于(「左整部」与「左小部」))于「罄」)
        与
          (「式节点」于(「小数节点」于「右数」于(「右整部」与「右小部」))于「罄」)则
            「简单断言」于(「且」于(「串相等」于「左整部」于「右整部」)于(「串相等」于「左小部」于「右小部」))
      或有(「式节点」于(「字符串节点」于「左串」)于「罄」)与
        (「式节点」于(「字符串节点」于「右串」)于「罄」)则
          「简单断言」于(「串相等」于「左串」于「右串」)
      或有「其他」则(「抛出断言异常」于「元」)
也。

「结构比较携上下文」乃
  化「匹配合一上下文」而
  化「表达式」而
  化「表达式」而
  「匹配合一上下文」
也。
「结构比较携上下文」者会「上下文」而会「左式」而会「右式」而
  虑「上下文引用」者「新引用」于「上下文」而
  虑「无」者「结构比较携上下文引用」于「上下文引用」于「左式」于「右式」而
  「读引用」于「上下文引用」
也。

「结构比较」乃化「表达式」而化「表达式」而「有」也。
「结构比较」者会「左式」而会「右式」而
  虑「忽略上下文」者
    「结构比较携上下文」于(「空串典」授以(「或可有」于「表达式」))
    于「左式」
    于「右式」
  而
  「元」
也。