豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 1080 行 · 53649 字节 · UTF-8
§
寻观「标准库」之书。
寻观「编译器核心」之「编译步骤」之「语法分析」之「词法解析」之书。
寻观「编译器核心」之「编译步骤」之「语法分析」之「抽象语法分析工具」之书。
寻观「编译器核心」之「编译步骤」之「语法分析」之「抽象语法分析」之书。
寻观「编译器核心」之「编译步骤」之「语法分析」之「注释操作」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「总集」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「抽象语法树数据」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「抽象语法树表示」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「抽象语法树基础操作」之书。
寻观「包配置」之「配置数据」之书。
寻观「包配置」之「配置解析」之书。
寻观「构建基础」之「包定位」之书。
寻观「癸象工具」之「总集」之书。
寻观「标准库」之「操作系统」之「路径」之书。

「:文言:先取未归并之声明列,以存无体之乃;汉语:读取归并前的声明树,保留没有函数体的乃签名。:」
「已见名」乃化「字符串」而化(「列」于「字符串」)而「爻」也。
「已见名」者会「所求」而会「名们」而
  鉴「名们」而
    有「罄」则「阴」
    或有(「缀」于「首名」于「余名」)则
      若「串相等」于「所求」于「首名」则「阳」否则「已见名」于「所求」于「余名」
也。

「:文言:文缀即术向,普通接口宿主具,应用接口客具;汉语:由文件后缀确定函数方向,不再维护方向清单。:」
「是宿主接口文」乃化「字符串」而「爻」也。
「是宿主接口文」者会「文件名」而
  「串结尾是它吗」于『。接口。豫』于「文件名」
也。

「是应用接口文」乃化「字符串」而「爻」也。
「是应用接口文」者会「文件名」而
  「串结尾是它吗」于『。应用接口。豫』于「文件名」
也。

「是接口文」乃化「字符串」而「爻」也。
「是接口文」者会「文件名」而
  「或者」于(「是宿主接口文」于「文件名」)于(「是应用接口文」于「文件名」)
也。

「接口文模块」乃化「字符串」而「字符串」也。
「接口文模块」者会「文件名」而
  若「是应用接口文」于「文件名」则
    「去除串结尾」于『。应用接口。豫』于「文件名」
  否则若「是宿主接口文」于「文件名」则「去除串结尾」于『。接口。豫』于「文件名」
  否则
    「发生事故」授以「字符串」于(『不是接口文:』附「文件名」)
也。

「含直接依赖」乃化「字符串」而化(「列」于「包引用」)而「爻」也。
「含直接依赖」者会「所求」而会「依赖们」而
  鉴「依赖们」而
    有「罄」则「阴」
    或有(「缀」于「首依」于「余依」)则
      若「串相等」于「所求」于(「首依」中「一」)则「阳」否则「含直接依赖」于「所求」于「余依」
也。

「检查导入」乃化「表达式」而化「包」而「有」也。
「检查导入」者会「路径式」而会「接口包」而
  虑「名们」者「表达式结构名称转字符串列」于「路径式」而
  鉴「名们」而
    有(「缀」于「导入包」于「忽略模块」)则
      若「或者」
        于(「串相等」于「导入包」于(「包名」于「接口包」))
        于(「含直接依赖」于「导入包」于(「包依赖」于「接口包」))
      则
        「元」
      否则
        「发生事故」于(『接口导入未声明直接依赖:』附「导入包」)
    或有「罄」则「发生事故」于『接口导入缺少包名』
也。

「:文言:声明可寻、可立、可乃;有体之定义皆拒。汉语:只接受导入、构造声明和函数类型声明,拒绝函数体与运行时表达式。:」
「检查一声明」乃化「表达式」而化「包」而「字符串」也。
「检查一声明」者会「原义」而会「接口包」而
  虑「净义」者「去除表达式注释」于「原义」而
  鉴「净义」而
    有(「式节点」于(「文件操作近似类型节点」于「忽略操作」)于(「列」【「路径式」】))则
      (虑「无」者「检查导入」于「路径式」于「接口包」而『』)
    或有(「式节点」于「类型声明近似类型节点」于(「列」【(「自由变量」于「名」),「忽略类」】))则「名」
    或有(「式节点」
      于「构造声明近似类型节点」
      于(「列」【(「式节点」于(「唯一构造器节点」于「忽略序数」于「忽略文件」于「名」)于(「列」【「忽略类」】))】))
      则「名」
    或有「其他」则
      「发生事故」于(『接口仅可含导入、立或乃:』附(「表达式表示」于「净义」))
也。

「检查诸声明」乃
  化(「列」于「表达式」)而
  化(「列」于「字符串」)而
  化「包」而
  「有」
也。
「检查诸声明」者会「待查」而会「已见」而会「接口包」而
  鉴「待查」而
    有「罄」则「元」
    或有(「缀」于「首式」于「余式」)则
      虑「名」者「检查一声明」于「首式」于「接口包」而
      若「串相等」于「名」于『』
      则
        「检查诸声明」于「余式」于「已见」于「接口包」
      否则若「已见名」于「名」于「已见」
      则
        「发生事故」于(『接口中重复声明:』附「名」)
      否则
        (
          虑「无」者「打印行」于(『声明:』附「名」)而
          「检查诸声明」于「余式」于(「缀」于「名」于「已见」)于「接口包」
        )
也。

「函数签名」即「字符串」
  合「表达式」
也。

「提取函数签名」乃化「表达式」而「或可有」于「函数签名」也。
「提取函数签名」者会「原义」而
  鉴(「去除表达式注释」于「原义」)而
    有(「式节点」于「类型声明近似类型节点」于(「列」【(「自由变量」于「名」),「类」】))则
      「可有」于(「名」与「类」)
    或有「其他」则「可无」
也。

「提取函数签名们」乃化(「列」于「表达式」)而「列」于「函数签名」也。
「提取函数签名们」者会「声明们」而
  鉴「声明们」而
    有「罄」则「罄」
    或有(「缀」于「首式」于「余式」)则
      鉴(「提取函数签名」于「首式」)而
        有「可无」则
          「提取函数签名们」于「余式」
        或有(「可有」于「首签名」)则
          「缀」于「首签名」于(「提取函数签名们」于「余式」)
也。

「:文言:惟有体之者可充实现,无体之乃不可;汉语:实现必须包含函数定义,单独的类型声明不能算作实现。:」
「提取定义名」乃化「表达式」而「或可有」于「字符串」也。
「提取定义名」者会「原义」而
  鉴(「去除表达式注释」于「原义」)而
    有(「式节点」
      于(「定义声明近似类型节点」于「忽略透明」)
      于(「列」【(「自由变量」于「名」),「忽略类」,「忽略定义」】))则「可有」于「名」
    或有「其他」则「可无」
也。

「提取定义名们」乃化(「列」于「表达式」)而「列」于「字符串」也。
「提取定义名们」者会「声明们」而
  鉴「声明们」而
    有「罄」则「罄」
    或有(「缀」于「首式」于「余式」)则
      鉴(「提取定义名」于「首式」)而
        有「可无」则
          「提取定义名们」于「余式」
        或有(「可有」于「首名」)则
          「缀」于「首名」于(「提取定义名们」于「余式」)
也。

「检查实现函数体」乃
  化(「列」于「字符串」)而
  化(「列」于「字符串」)而
  化「字符串」而
  「有」
也。
「检查实现函数体」者会「所需名们」而会「定义名们」而会「角色」而
  鉴「所需名们」而
    有「罄」则「元」
    或有(「缀」于「首名」于「余名」)则
      若「已见名」于「首名」于「定义名们」
      则
        「检查实现函数体」于「余名」于「定义名们」于「角色」
      否则
        「发生事故」于(「角色」附『函数只有类型声明而无定义:』附「首名」)
也。

「查同名签名」乃
  化「字符串」而
  化(「列」于「函数签名」)而
  「或可有」于「表达式」
也。
「查同名签名」者会「所求」而会「签名们」而
  鉴「签名们」而
    有「罄」则「可无」
    或有(「缀」于「首签名」于「余签名」)则
      若「串相等」于「所求」于(「首签名」中「零」)
      则
        「可有」于(「首签名」中「一」)
      否则
        「查同名签名」于「所求」于「余签名」
也。

「检查名称列无重」乃化(「列」于「字符串」)而「有」也。
「检查名称列无重」者会「名们」而
  鉴「名们」而
    有「罄」则「元」
    或有(「缀」于「首名」于「余名」)则
      若「已见名」于「首名」于「余名」
      则
        「发生事故」于(『方向清单重复函数:』附「首名」)
      否则
        「检查名称列无重」于「余名」
也。

「检查函数方向」乃
  化(「列」于「函数签名」)而
  化(「列」于「字符串」)而
  化(「列」于「字符串」)而
  「有」
也。
「检查函数方向」者会「签名们」而会「宿主名们」而会「应用名们」而
  鉴「签名们」而
    有「罄」则「元」
    或有(「缀」于「首签名」于「余签名」)则
      虑「名」者「首签名」中「零」而
      虑「宿主乎」者「已见名」于「名」于「宿主名们」而
      虑「应用乎」者「已见名」于「名」于「应用名们」而
      若「宿主乎」则
        若「应用乎」则
          「发生事故」于(『函数方向重复:』附「名」)
        否则
          (虑「无」者「打印行」于(『宿主导入:』附「名」)而「检查函数方向」于「余签名」于「宿主名们」于「应用名们」)
      否则若「应用乎」则
        (虑「无」者「打印行」于(『应用导出:』附「名」)而「检查函数方向」于「余签名」于「宿主名们」于「应用名们」)
      否则
        「发生事故」于(『函数缺少方向:』附「名」)
也。

「检查方向清单全集」乃
  化(「列」于「字符串」)而
  化(「列」于「函数签名」)而
  「有」
也。
「检查方向清单全集」者会「名们」而会「签名们」而
  鉴「名们」而
    有「罄」则「元」
    或有(「缀」于「首名」于「余名」)则
      鉴(「查同名签名」于「首名」于「签名们」)而
        有「可有」于「忽略类」则
          「检查方向清单全集」于「余名」于「签名们」
        或有「可无」则
          「发生事故」于(『方向清单列出不存在的函数:』附「首名」)
也。

「检查实现签名」乃
  化(「列」于「函数签名」)而
  化(「列」于「函数签名」)而
  化(「列」于「字符串」)而
  化「字符串」而
  「有」
也。
「检查实现签名」者会「接口签名们」而会「实现签名们」而会「所需名们」而会「角色」而
  鉴「接口签名们」而
    有「罄」则「元」
    或有(「缀」于「首签名」于「余签名」)则
      虑「名」者「首签名」中「零」而
      若「已见名」于「名」于「所需名们」
      则
        鉴(「查同名签名」于「名」于「实现签名们」)而
          有「可无」则
            「发生事故」于(「角色」附『缺少函数:』附「名」)
          或有(「可有」于「实现类」)则
            若「串相等」
              于(「表达式表示」于(「首签名」中「一」))
              于(「表达式表示」于「实现类」)
            则
              「检查实现签名」
                于「余签名」于「实现签名们」于「所需名们」于「角色」
            否则
              「发生事故」于(「角色」附『函数类型不符:』附「名」)
      否则
        「检查实现签名」于「余签名」于「实现签名们」于「所需名们」于「角色」
也。

「检查实现身份」乃化「字符串」而化「包」而化「字符串」而「有」也。
「检查实现身份」者会「实现文件」而会「接口包」而会「角色」而
  虑「约定路径」者
    「路径合并」于(「获取文件夹名」于「实现文件」)于『实现接口。豫』而
    虑「约定」者「解析配置文件」于「约定路径」而
    虑「无」者
      「确认无未知字段」于「约定路径」于(「列」【『接口所有者』,『接口名称』,『接口版本』,『提供角色』】)于「约定」
    而
    虑「所有者」者
      「配置值取字符串」于『接口所有者』于(「必取配置字段」于「约定」于『接口所有者』)而
      虑「名称」者
        「配置值取字符串」
          于『接口名称』
          于(「必取配置字段」于「约定」于『接口名称』)而
          虑「版本」者
            「配置值取字符串」
              于『接口版本』
              于(「必取配置字段」于「约定」于『接口版本』)而
              虑「清单角色」者
                「配置值取字符串」
                  于『提供角色』
                  于(「必取配置字段」于「约定」于『提供角色』)而
              若「且」
                于(「串相等」于「所有者」于(「包所有者」于「接口包」))
                于(「且」
                  于(「串相等」于「名称」于(「包名」于「接口包」))
                  于(「且」
                    于(「串相等」于「版本」于(「包版本」于「接口包」))
                    于(「串相等」于「角色」于「清单角色」)))
              则
                「元」
              否则
                「发生事故」于(『实现接口身份或角色不符:』附「所有者」附『/』附「名称」附『/』附「版本」附『/』附
                  「清单角色」)
也。

「读取声明列」乃化「字符串」而「列」于「表达式」也。
「读取声明列」者会「文件」而
  虑「源码」者「文件系统」之「读文件」于「文件」而
  虑「词元」者「词法解析顶层」于「源码」而
  虑「语句」者「切分顶层语句」于「词元」而
  虑「声明及标记」者
    「抽象语法解析带注释声明列及语义标记」于「文件」于「语句」
  而
  「带注释编译单元声明列」于(「声明及标记」中「零」)
也。

「读取包声明列」乃化「字符串」而「列」于「表达式」也。
「读取包声明列」者会「包文件」而
  虑「目录」者「获取文件夹名」于「包文件」而
  虑「接口文件们」者
    「滤」授以「字符串」
    于(会「名」而「是接口文」于「名」)
    于(「文件系统」之「读文件夹」于「目录」)而
  若「等于」于(「长度」于「接口文件们」)于「零」
  则
    「发生事故」授以(「列」于「表达式」)
    于『接口包没有。接口。豫或。应用接口。豫文件』
  否则
    「串联」授以「表达式」于(「态射」授以「字符串」授以(「列」于「表达式」)
    于「接口文件们」
    于(会「名」而「读取声明列」于(「路径合并」于「目录」于「名」)))
也。

「提取声明名与类」乃化「表达式」而「或可有」于「函数签名」也。
「提取声明名与类」者会「原义」而
  鉴(「去除表达式注释」于「原义」)而
    有(「式节点」于「类型声明近似类型节点」于(「列」【(「自由变量」于「名」),「类」】))则
      「可有」于(「名」与「类」)
    或有(「式节点」
      于「构造声明近似类型节点」
      于(「列」【(「式节点」于(「唯一构造器节点」于「忽略序数」于「忽略文件」于「名」)于(「列」【「类」】))】))
      则
        「可有」于(「名」与「类」)
    或有(「式节点」
      于(「定义声明近似类型节点」于「忽略透明」)
      于(「列」【(「自由变量」于「名」),「类」,「忽略定义」】))则「可有」
        于(「名」与「类」)
    或有「其他」则「可无」
也。

「提取声明名们」乃化(「列」于「表达式」)而「列」于「字符串」也。
「提取声明名们」者会「声明们」而
  鉴「声明们」而
    有「罄」则「罄」
    或有(「缀」于「首式」于「余式」)则
      鉴(「提取声明名与类」于「首式」)而
        有「可无」则
          「提取声明名们」于「余式」
        或有(「可有」于「名与类」)则
          「缀」于(「名与类」中「零」)于(「提取声明名们」于「余式」)
也。

「:文言:包索引之缓,初无而首用乃发现,其后皆复用;汉语:包索引缓存,第一次需要时按当前目录发现全仓库的包,之后复用。:」
「包索引缓」者「新引用」授以(「或可有」于「包索引」)于「可无」也。

「取包索引」乃化「有」而「包索引」也。
「取包索引」者会「无」而
  鉴(「读引用」授以(「或可有」于「包索引」)于「包索引缓」)而
    有(「可有」于「已建」)则「已建」
    或有「可无」则(
      虑「新建」者
        「发现包」于(「文件系统」之「获取当前路径」于「元」)于『』而
        虑「无」者「写引用」于「包索引缓」于(「可有」于「新建」)而
        「新建」
    )
也。

「:文言:依短名查包,无则败,不唯一亦败;所有者不参与定位,留待身份之核;汉语:按短名在包索引里查包,没有或不唯一都报错;所有者不参与定位,由后面的身份核对确认。:」
「按名查包」乃化「包索引」而化「字符串」而「包记录」也。
「按名查包」者会「索引」而会「名」而
  鉴(「滤」授以「包记录」于(会「记录」而「串相等」于(「记录」中「一」)于「名」)于「索引」)而
    有(「列」【「记录」】)则「记录」
    或有「罄」则「发生事故」授以「包记录」
    于(『发现范围内没有包:』附「名」)
    或有「其他」则
      「发生事故」授以「包记录」于(『包短名不唯一:』附「名」)
也。

「:文言:所导之包所在之目录:自身循当前包文件,他包须为直接依赖,循包索引;汉语:导入包所在的目录:自身取当前包文件所在目录,其余的包必须是直接依赖,按短名查包索引。:」
「导入包目录」乃化「字符串」而化「字符串」而化「包」而「字符串」也。
「导入包目录」者会「导入包」而会「当前包文件」而会「接口包」而
  若「串相等」于「导入包」于(「包名」于「接口包」)
  则
    「获取文件夹名」于「当前包文件」
  否则若「含直接依赖」于「导入包」于(「包依赖」于「接口包」)
  则
    「包目录」于(「按名查包」于(「取包索引」于「元」)于「导入包」)
  否则
    「发生事故」授以「字符串」于(『接口导入未声明直接依赖:』附「导入包」)
也。

「解析导入模块路径」乃化「表达式」而化「字符串」而化「包」而「字符串」也。
「解析导入模块路径」者会「路径式」而会「当前包文件」而会「接口包」而
  虑「诸段」者「表达式结构名称转字符串列」于「路径式」而
  鉴「诸段」而
    有(「缀」于「导入包」于「余段」)则(
      虑「模块名」者
        若「等于」于(「长度」于「余段」)于「零」则『总集』否则「间合」于『/』于「余段」
      而
      虑「目录」者「导入包目录」于「导入包」于「当前包文件」于「接口包」
      而
      虑「宿主路径」者
        「路径合并」于「目录」于(「模块名」附『。接口。豫』)
      而
      虑「应用路径」者
        「路径合并」于「目录」于(「模块名」附『。应用接口。豫』)
      而
      虑「源码路径」者「路径合并」于「目录」于(「模块名」附『。豫』)
      而
      虑「有宿主」者「文件系统」之「路径存在」于「宿主路径」
      而
      虑「有应用」者「文件系统」之「路径存在」于「应用路径」
      而
      虑「有源码」者「文件系统」之「路径存在」于「源码路径」
      而
      若「且」于「有宿主」于「有应用」
      则
        「发生事故」授以「字符串」于(『接口模块名对应两种方向:』附「模块名」)
      否则若「且」于(「或者」于「有宿主」于「有应用」)于「有源码」
      则
        「发生事故」授以「字符串」于(『接口模块名同时是接口文与源码:』附「模块名」)
      否则若「有宿主」则「宿主路径」
      否则若「有应用」则「应用路径」
      否则若「有源码」则「源码路径」
      否则
        「发生事故」授以「字符串」于(『接口导入模块不存在:』附「模块名」)
    )
    或有「罄」则「发生事故」授以「字符串」于『接口导入缺少包名』
也。

「读取导入名们」乃
  化「表达式」而
  化「字符串」而
  化「包」而
  (「列」于「字符串」)
也。
「读取导入名们」者会「原义」而会「当前包文件」而会「接口包」而
  鉴(「去除表达式注释」于「原义」)而
    有(「式节点」于(「文件操作近似类型节点」于「忽略操作」)于(「列」【「路径式」】))则
      「提取声明名们」于(「读取声明列」于(「解析导入模块路径」于「路径式」于「当前包文件」于「接口包」))
    或有「其他」则「罄」
也。

「收导入名们」乃
  化(「列」于「表达式」)而
  化「字符串」而
  化「包」而
  (「列」于「字符串」)
也。
「收导入名们」者会「声明们」而会「当前包文件」而会「接口包」而
  鉴「声明们」而
    有「罄」则「罄」
    或有(「缀」于「首式」于「余式」)则
      「附加」授以「字符串」
      于(「读取导入名们」于「首式」于「当前包文件」于「接口包」)
      于(「收导入名们」于「余式」于「当前包文件」于「接口包」)
也。

「检查自由名们」乃
  化(「列」于「字符串」)而
  化(「列」于「字符串」)而
  化「字符串」而
  「有」
也。
「检查自由名们」者会「待检」而会「可用」而会「声明名」而
  鉴「待检」而
    有「罄」则「元」
    或有(「缀」于「首名」于「余名」)则
      若「已见名」于「首名」于「可用」则
        「检查自由名们」于「余名」于「可用」于「声明名」
      否则
        「发生事故」于(『接口类型引用未导入或未定义:』附「声明名」附『 需要 』附「首名」)
也。

「按序检查类型」乃化(「列」于「表达式」)而化(「列」于「字符串」)而「有」也。
「按序检查类型」者会「声明们」而会「可用」而
  鉴「声明们」而
    有「罄」则「元」
    或有(「缀」于「首式」于「余式」)则
      鉴(「提取声明名与类」于「首式」)而
        有「可无」则
          「按序检查类型」于「余式」于「可用」
        或有(「可有」于「名与类」)则(
          虑「名」者「名与类」中「零」而
          虑「类」者「名与类」中「一」而
          虑「无」者
            「检查自由名们」于(「读取式自由变量」于「类」)于「可用」于「名」
          而
          「按序检查类型」于「余式」于(「缀」于「名」于「可用」)
        )
也。

「检查一文件类型」乃化「字符串」而化「字符串」而化「包」而「有」也。
「检查一文件类型」者会「接口文件」而会「当前包文件」而会「接口包」而
  虑「声明们」者「读取声明列」于「接口文件」而
  虑「导入名们」者「收导入名们」于「声明们」于「当前包文件」于「接口包」而
  「按序检查类型」于「声明们」于「导入名们」
也。

「检查包内类型」乃化「字符串」而化「包」而「有」也。
「检查包内类型」者会「当前包文件」而会「接口包」而
  虑「目录」者「获取文件夹名」于「当前包文件」而
  虑「接口文件们」者
    「滤」授以「字符串」
    于(会「名」而「是接口文」于「名」)
    于(「文件系统」之「读文件夹」于「目录」)而
    虑「无」者
      「态射」授以「字符串」授以「有」
      于「接口文件们」
      于(会「名」而「检查一文件类型」于(「路径合并」于「目录」于「名」)于「当前包文件」于「接口包」)
    而
    「元」
也。

「查函数模块签名」乃
  化「字符串」而
  化(「列」于「字符串」)而
  化「字符串」而
  「字符串」合「表达式」
也。
「查函数模块签名」者会「所求」而会「接口文件们」而会「目录」而
  鉴「接口文件们」而
    有「罄」则「发生事故」授以(「字符串」合「表达式」)
    于(『清单函数没有声明:』附「所求」)
    或有(「缀」于「文件名」于「余文件」)则
      鉴(「查同名签名」于「所求」于(「提取函数签名们」于(「读取声明列」于(「路径合并」于「目录」于「文件名」))))
      而
        有(「可有」于「类」)则(「接口文模块」于「文件名」)与「类」
        或有「可无」则
          「查函数模块签名」于「所求」于「余文件」于「目录」
也。

「造函数清单项」乃
  化「字符串」而
  化「字符串」而
  化(「列」于「字符串」)而
  化「字符串」而
  「癸象」
也。
「造函数清单项」者会「名」而会「角色」而会「接口文件们」而会「目录」而
  虑「模块与类」者「查函数模块签名」于「名」于「接口文件们」于「目录」而
  「癸象对象」于(「列」【
    『模块』与(「癸象字符串」于(「模块与类」中「零」)),
    『函数』与(「癸象字符串」于「名」),
    『方向』与(「癸象字符串」于「角色」),
    『签名』与(「癸象字符串」于(「表达式表示」于(「模块与类」中「一」)))
  】)
也。

「造角色函数清单」乃
  化(「列」于「字符串」)而
  化「字符串」而
  化(「列」于「字符串」)而
  化「字符串」而
  (「列」于「癸象」)
也。
「造角色函数清单」者会「名们」而会「角色」而会「接口文件们」而会「目录」而
  「态射」授以「字符串」授以「癸象」
    于「名们」
    于(会「名」而「造函数清单项」于「名」于「角色」于「接口文件们」于「目录」)
也。

「读取文件函数名们」乃化「字符串」而「列」于「字符串」也。
「读取文件函数名们」者会「文件」而
  「态射」授以「函数签名」授以「字符串」
    于(「提取函数签名们」于(「读取声明列」于「文件」))
    于(会「签名」而「签名」中「零」)
也。

「读取角色函数名们」乃
  化(「列」于「字符串」)而
  化「字符串」而
  化「字符串」而
  「列」于「字符串」
也。
「读取角色函数名们」者会「文件们」而会「目录」而会「角色」而
  鉴「文件们」而
    有「罄」则「罄」
    或有(「缀」于「文件名」于「余文件」)则
      虑「所需乎」者
        若「串相等」于「角色」于『宿主』则「是宿主接口文」于「文件名」否则「是应用接口文」于「文件名」
      而
      若「所需乎」
      则
        「附加」授以「字符串」
        于(「读取文件函数名们」于(「路径合并」于「目录」于「文件名」))
        于(「读取角色函数名们」于「余文件」于「目录」于「角色」)
      否则
        「读取角色函数名们」于「余文件」于「目录」于「角色」
也。

「检查模块名无重」乃
  化(「列」于「字符串」)而
  化(「列」于「字符串」)而
  「有」
也。
「检查模块名无重」者会「文件们」而会「已见」而
  鉴「文件们」而
    有「罄」则「元」
    或有(「缀」于「文件名」于「余文件」)则
      虑「模块」者「接口文模块」于「文件名」而
      若「已见名」于「模块」于「已见」
      则
        「发生事故」于(『接口模块名重复:』附「模块」)
      否则
        「检查模块名无重」于「余文件」于(「缀」于「模块」于「已见」)
也。

「:文言:按 UTF-8 字节次序定模块之序,毋随读目录之先后;汉语:按 UTF-8 字节排序模块名,清单不依赖目录遍历顺序。:」
「串字节先于序」乃化「字符串」而化「字符串」而化「整数」而「爻」也。
「串字节先于序」者会「甲」而会「乙」而会「序」而
  若「等于」于「序」于(「字节长度」于「甲」)
  则
    「小于」于「序」于(「字节长度」于「乙」)
  否则若「等于」于「序」于(「字节长度」于「乙」)
  则
    「阴」
  否则
    虑「甲字」者「字符转整数」于「甲」于「序」而
    虑「乙字」者「字符转整数」于「乙」于「序」而
    若「等于」于「甲字」于「乙字」
    则
      「串字节先于序」于「甲」于「乙」于(「加」于「序」于「一」)
    否则
      「小于」于「甲字」于「乙字」
也。

「插入有序名」乃化「字符串」而化(「列」于「字符串」)而「列」于「字符串」也。
「插入有序名」者会「所插」而会「已序」而
  鉴「已序」而
    有「罄」则「列」【「所插」】
    或有(「缀」于「首名」于「余名」)则
      若「串字节先于序」于「所插」于「首名」于「零」
      则
        「缀」于「所插」于「已序」
      否则
        「缀」于「首名」于(「插入有序名」于「所插」于「余名」)
也。

「排序名们」乃化(「列」于「字符串」)而「列」于「字符串」也。
「排序名们」者会「名们」而
  鉴「名们」而
    有「罄」则「罄」
    或有(「缀」于「首名」于「余名」)则
      「插入有序名」于「首名」于(「排序名们」于「余名」)
也。

「造一文件公开声明」乃
  化「字符串」而
  化(「列」于「表达式」)而
  「列」于「癸象」
也。
「造一文件公开声明」者会「模块」而会「声明们」而
  鉴「声明们」而
    有「罄」则「罄」
    或有(「缀」于「首式」于「余式」)则
      虑「其余」者「造一文件公开声明」于「模块」于「余式」而
      鉴(「提取声明名与类」于「首式」)而
        有「可无」则「其余」
        或有(「可有」于「名与类」)则
          虑「种类」者鉴(「提取函数签名」于「首式」)而
            有「可无」则『构造』
            或有(「可有」于「忽略签名」)则
              『函数』
          而
          「缀」
            于(「癸象对象」
              于(「列」【
                『模块』与(「癸象字符串」于「模块」),
                『名称』与(「癸象字符串」于(「名与类」中「零」)),
                『种类』与(「癸象字符串」于「种类」),
                『声明』与(「癸象字符串」于(「表达式表示」于(「去除表达式注释」于「首式」)))
              】))于「其余」
也。

「造诸文件公开声明」乃
  化(「列」于「字符串」)而
  化「字符串」而
  「列」于「癸象」
也。
「造诸文件公开声明」者会「文件们」而会「目录」而
  鉴「文件们」而
    有「罄」则「罄」
    或有(「缀」于「文件名」于「余文件」)则
      「附加」授以「癸象」
      于(「造一文件公开声明」
        于(「接口文模块」于「文件名」)
        于(「读取声明列」于(「路径合并」于「目录」于「文件名」)))
        于(「造诸文件公开声明」于「余文件」于「目录」)
也。

「:文言:依所依之短名查包索引,得其包描述文件;所有者由下之身份核对确认;汉语:按所依包的短名查包索引,得到它的包描述文件;所有者由后面的身份核对确认。:」
「解析依赖路径」乃化「包引用」而「字符串」也。
「解析依赖路径」者会「引用」而
  (「按名查包」于(「取包索引」于「元」)于(「引用」中「一」))中「二」
也。

「解析依赖包」乃化「包引用」而化「包」而「字符串」合「包」也。
「解析依赖包」者会「引用」而会「当前包」而
  虑「依名」者「引用」中「一」而
  虑「依主」者鉴(「引用」中「零」)而
    有「可无」则
      「包所有者」于「当前包」
    或有(「可有」于「所有者」)则
      「所有者」而
      虑「目标文件」者「解析依赖路径」于「引用」而
      虑「依包」者「解析包文件」于「目标文件」而
      若「且」于(「串相等」于「依主」于(「包所有者」于「依包」))
      于(「串相等」于「依名」于(「包名」于「依包」))
      则
        「目标文件」与「依包」
      否则
        「发生事故」授以(「字符串」合「包」)
        于(『依赖身份不符:』附「依主」附『/』附「依名」)
也。

「造包身份项」乃化「包」而「癸象」也。
「造包身份项」者会「所包」而
  「癸象对象」于(「列」【
    『所有者』与(「癸象字符串」于(「包所有者」于「所包」)),
    『名称』与(「癸象字符串」于(「包名」于「所包」)),
    『版本』与(「癸象字符串」于(「包版本」于「所包」))
  】)
也。

「解析直接依赖」乃化「包引用」而化「包」而「癸象」也。
「解析直接依赖」者会「引用」而会「接口包」而
  虑「路径与包」者「解析依赖包」于「引用」于「接口包」而
  「造包身份项」于(「路径与包」中「一」)
也。

「锁定身份」即
  「字符串」
  合「字符串」
  合「字符串」
也。

「取锁定身份」乃化「包」而「锁定身份」也。
「取锁定身份」者会「所包」而
  (「包所有者」于「所包」)与(「包名」于「所包」)与(「包版本」于「所包」)
也。

「身份键」乃化「锁定身份」而「字符串」也。
「身份键」者会「身份」而
  (「身份」中「零」)附『/』附(「身份」中「一」)附『/』附(「身份」中「二」)
也。

「求解析闭包」乃化「字符串」而化(「列」于「字符串」)而「列」于「锁定身份」也。
「求解析闭包」者会「包文件」而会「路径内」而
  虑「所包」者「解析包文件」于「包文件」而
  虑「身份」者「取锁定身份」于「所包」而
  虑「键」者「身份键」于「身份」而
  若「已见名」于「键」于「路径内」
  则
    「发生事故」授以(「列」于「锁定身份」)于(『接口包依赖成环:』附「键」)
  否则
    「缀」
      于「身份」
      于(「串联」授以「锁定身份」
        于(「态射」授以「包引用」授以(「列」于「锁定身份」)
        于(「包依赖」于「所包」)
        于(会「引用」
          而
  虑「目标」者「解析依赖包」于「引用」于「所包」而
  「求解析闭包」于(「目标」中「零」)于(「缀」于「键」于「路径内」))))
也。

「查既有版本」乃
  化「锁定身份」而
  化(「列」于「锁定身份」)而
  「或可有」于「字符串」
也。
「查既有版本」者会「所求」而会「已见」而
  鉴「已见」而
    有「罄」则「可无」
    或有(「缀」于「首身」于「余身」)则
      若「且」
        于(「串相等」于(「所求」中「零」)于(「首身」中「零」))
        于(「串相等」于(「所求」中「一」)于(「首身」中「一」))
      则
        「可有」于(「首身」中「二」)
      否则
        「查既有版本」于「所求」于「余身」
也。

「去重并核版」乃
  化(「列」于「锁定身份」)而
  化(「列」于「锁定身份」)而
  「列」于「锁定身份」
也。
「去重并核版」者会「待查」而会「已见」而
  鉴「待查」而
    有「罄」则「已见」
    或有(「缀」于「首身」于「余身」)则
      鉴(「查既有版本」于「首身」于「已见」)而
        有「可无」则
          「去重并核版」
            于「余身」
            于(「附加」授以「锁定身份」于「已见」于(「列」【「首身」】))
        或有(「可有」于「旧版」)则
          若「串相等」于「旧版」于(「首身」中「二」)
          则
            「去重并核版」于「余身」于「已见」
          否则
            「发生事故」授以(「列」于「锁定身份」)
            于(『接口包传递依赖版本冲突:』附(「首身」中「零」)附『/』附(「首身」中「一」))
也。

「造锁定身份项」乃化「锁定身份」而「癸象」也。
「造锁定身份项」者会「身份」而
  「癸象对象」于(「列」【
    『所有者』与(「癸象字符串」于(「身份」中「零」)),
    『名称』与(「癸象字符串」于(「身份」中「一」)),
    『版本』与(「癸象字符串」于(「身份」中「二」))
  】)
也。

「:文言:以构建机 SHA-256 算源文之实字,载逻辑名而不载物理径;汉语:构建时散列规范文件内容,清单只记录逻辑文件名和摘要。:」
「取文件摘要」乃化「字符串」而「字符串」也。
「取文件摘要」者会「文件」而
  虑「结果」者
    「子进程」之「获取输出」于『shasum』于(「列」【『-a』,『256』,「文件」】)而
  若「结果」中「零」
  则
    虑「摘要」者「获取子字符串」于「零」于「六四」于(「结果」中「一」)而
    若「等于」于(「串长度」于「摘要」)于「六四」
    则
      「摘要」
    否则
      「发生事故」授以「字符串」于(『SHA-256 输出过短:』附「文件」)
  否则
    「发生事故」授以「字符串」于(『SHA-256 失败:』附「文件」附(「结果」中「二」))
也。

「造规范摘要项」乃化「字符串」而化「字符串」而「癸象」也。
「造规范摘要项」者会「逻辑名」而会「实际文件」而
  「癸象对象」于(「列」【
    『文件』与(「癸象字符串」于「逻辑名」),
    『算法』与(「癸象字符串」于『SHA-256』),
    『摘要』与(「癸象字符串」于(「取文件摘要」于「实际文件」))
  】)
也。

「造目录摘要项们」乃
  化「字符串」而
  化「字符串」而
  化(「列」于「字符串」)而
  「列」于「癸象」
也。
「造目录摘要项们」者会「逻辑前缀」而会「目录」而会「文件们」而
  「态射」授以「字符串」授以「癸象」
    于「文件们」
    于(会「文件名」而「造规范摘要项」于(「逻辑前缀」附「文件名」)于(「路径合并」于「目录」于「文件名」))
也。

「造规范摘要项们」乃化「字符串」而化(「列」于「字符串」)而「列」于「癸象」也。
「造规范摘要项们」者会「包文件」而会「接口文件们」而
  虑「目录」者「获取文件夹名」于「包文件」而
  虑「包文档名们」者
    「滤」授以「字符串」
    于(会「名」而「或者」于(「串结尾是它吗」于『.汉语.md』于「名」)于(「串结尾是它吗」于『.文言.md』于「名」))
    于(「文件系统」之「读文件夹」于「目录」)而
    虑「包名们」者
      「排序名们」于(「附加」授以「字符串」
        于(「列」【(「获取文件名」于「包文件」)】)
        于(「附加」授以「字符串」于「接口文件们」于「包文档名们」))而
        虑「公共目录」者「获取文件夹名」于「目录」而
        虑「公共名们」者
          「排序名们」于(「滤」授以「字符串」
            于(会「名」而「或者」
              于(「串结尾是它吗」于『.汉语.md』于「名」)
              于(「串结尾是它吗」于『.文言.md』于「名」))
              于(「文件系统」之「读文件夹」于「公共目录」))
        而
        「附加」授以「癸象」
        于(「造目录摘要项们」于『包/』于「目录」于「包名们」)
        于(「造目录摘要项们」于『公共/』于「公共目录」于「公共名们」)
也。

「:文言:清单先成于文,乃可写亦可校;汉语:先生成清单文本,再决定写入或核对。:」
「生成接口清单」乃
  化「字符串」而
  化「包」而
  化(「列」于「字符串」)而
  化(「列」于「字符串」)而
  「字符串」
也。
「生成接口清单」者会「包文件」而会「接口包」而会「宿主名们」而会「应用名们」而
  虑「目录」者「获取文件夹名」于「包文件」而
  虑「接口文件们」者
    「滤」授以「字符串」
    于(会「名」而「是接口文」于「名」)
    于(「文件系统」之「读文件夹」于「目录」)而
    虑「函数项们」者
      「附加」授以「癸象」
      于(「造角色函数清单」于「宿主名们」于『宿主』于「接口文件们」于「目录」)
      于(「造角色函数清单」于「应用名们」于『应用』于「接口文件们」于「目录」)而
      虑「依赖项们」者
        「态射」授以「包引用」授以「癸象」
        于(「包依赖」于「接口包」)
        于(会「引用」而「解析直接依赖」于「引用」于「接口包」)而
        虑「闭包项们」者
          「态射」授以「锁定身份」授以「癸象」
          于(「去重并核版」于(「求解析闭包」于「包文件」于「罄」)于「罄」)
          于(会「身份」而「造锁定身份项」于「身份」)而
          虑「摘要项们」者
            「造规范摘要项们」于「包文件」于「接口文件们」而
            虑「清单」者
              「癸象对象」于(「列」【
                『格式版本』与(「癸象整数」于「四」),
                『接口所有者』与(「癸象字符串」于(「包所有者」于「接口包」)),
                『接口名称』与(「癸象字符串」于(「包名」于「接口包」)),
                『接口版本』与(「癸象字符串」于(「包版本」于「接口包」)),
                『直接依赖』与(「癸象数组」于「依赖项们」),
                『解析闭包』与(「癸象数组」于「闭包项们」),
                『规范摘要』与(「癸象数组」于「摘要项们」),
                『公开声明』与(「癸象数组」于(「造诸文件公开声明」于(「排序名们」于「接口文件们」)于「目录」)),
                『函数』与(「癸象数组」于「函数项们」)
              】)
            而
            「癸象表示」于「清单」
也。

「参数」者「命令行参数」之「获取参数」于「元」也。

「六项」者鉴「参数」而
  有(「列」【「包文件」】)则
    「包文件」与「包文件」与『』与『』与「阳」与『』
  或有(「列」【「所查」,「包文件」】)则
    「所查」与「包文件」与『』与『』与「阴」与『』
  或有(「列」【「首」,「次」,「末」】)则
    若「或者」于(「串相等」于「首」于『--清单』)于(「串相等」于「首」于『--核对清单』)
    则
      「次」与「次」与『』与『』与「阳」与「末」
    否则
      「首」与「首」与「次」与「末」与「阳」与『』
  或有(「列」【「所查」,「包文件」,「实现文件」,「实现角色」】)则
    「所查」与「包文件」与「实现文件」与「实现角色」与「阴」与『』
  或有「其他」则
    「发生事故」
      于
      『用法:yy豫言操作系统接口检查 包描述 [实现文件 宿主或应用];或 接口文件 包描述 [实现文件 宿主或应用];或 --清单 包描述 输出文件;或 --核对清单 包描述 清单文件』
也。

「路径」者「六项」中「零」也。

「包路径」者「六项」中「一」也。

「实现路径」者「六项」中「二」也。

「角色」者「六项」中「三」也。

「整包乎」者「六项」中「四」也。

「清单输出」者「六项」中「五」也。

「核对清单乎」者鉴「参数」而
  有(「列」【「首参」,「忽略包」,「忽略清单」】)则
    「串相等」于「首参」于『--核对清单』
  或有「其他」则「阴」
也。

若「非」于(「串相等」于(「获取文件夹名」于「路径」)于(「获取文件夹名」于「包路径」))
则
  「发生事故」于『接口文件与包描述文件须在同一目录』
否则
  「元」。
「接口包」者「解析包文件」于「包路径」也。

「打印行」于(『包身份:』附(「包所有者」于「接口包」)附『/』附(「包名」于「接口包」)附『/』附(「包版本」
  于「接口包」))。
「声明」者若「整包乎」则「读取包声明列」于「包路径」否则「读取声明列」于「路径」也。

「打印行」于(『接口声明数:』附(「整数表示」于(「长度」于「声明」)))。
「函数们」者「提取函数签名们」于「声明」也。

「接口目录」者「获取文件夹名」于「包路径」也。

「接口文件们」者
  「排序名们」于(「滤」授以「字符串」
    于(会「名」而「是接口文」于「名」)
    于(「文件系统」之「读文件夹」于「接口目录」))
也。

「检查模块名无重」于「接口文件们」于「罄」。
「所查文件们」者若「整包乎」则「接口文件们」否则「列」【(「获取文件名」于「路径」)】也。

「宿主名们」者「读取角色函数名们」于「所查文件们」于「接口目录」于『宿主』也。

「应用名们」者「读取角色函数名们」于「所查文件们」于「接口目录」于『应用』也。

「检查名称列无重」于「宿主名们」。
「检查名称列无重」于「应用名们」。
「检查诸声明」于「声明」于「罄」于「接口包」。
「检查函数方向」于「函数们」于「宿主名们」于「应用名们」。
若「整包乎」则「检查包内类型」于「包路径」于「接口包」
否则
  「检查一文件类型」于「路径」于「包路径」于「接口包」。
若「整包乎」则
  (虑「无」者「检查方向清单全集」于「宿主名们」于「函数们」而「检查方向清单全集」于「应用名们」于「函数们」)
否则
  「元」。

若「串相等」于「实现路径」于『』则
  「元」
否则
  (
    虑「无」者「检查实现身份」于「实现路径」于「接口包」于「角色」
    而
    若「串相等」于「角色」于『宿主』
    则
      (
        虑「无」者
          若「等于」于(「长度」于「宿主名们」)于「零」则「发生事故」
            于『此接口包没有宿主提供的函数』
          否则
            「元」
        而
        虑「实现声明」者「读取声明列」于「实现路径」
        而
        虑「无」者
          「检查实现签名」
            于「函数们」
            于(「提取函数签名们」于「实现声明」)于「宿主名们」于「角色」
        而
        「检查实现函数体」于「宿主名们」于(「提取定义名们」于「实现声明」)于「角色」
      )
    否则若「串相等」于「角色」于『应用』
    则
      (
        虑「无」者
          若「等于」于(「长度」于「应用名们」)于「零」则「发生事故」
            于『此接口包没有应用提供的函数』
          否则
            「元」
        而
        虑「实现声明」者「读取声明列」于「实现路径」
        而
        虑「无」者
          「检查实现签名」
            于「函数们」
            于(「提取函数签名们」于「实现声明」)于「应用名们」于「角色」
        而
        「检查实现函数体」于「应用名们」于(「提取定义名们」于「实现声明」)于「角色」
      )
    否则
      「发生事故」于『实现角色须为宿主或应用』
  )。

若「串相等」于「清单输出」于『』则
  「元」
否则
  (
    虑「清单文本」者
      「生成接口清单」于「包路径」于「接口包」于「宿主名们」于「应用名们」
    而
    若「核对清单乎」
    则
      若「串相等」于「清单文本」于(「文件系统」之「读文件」于「清单输出」)
      则
        「打印行」于『接口清单核对通过』
      否则
        「发生事故」于(『接口清单与当前规范不符:』附「清单输出」)
    否则
      「文件系统」之「写文件」于「清单输出」于「清单文本」
  )。