豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 278 行 · 15980 字节 · UTF-8
§
寻观「标准库」之书。
寻观「双宿主构建」之「文本工具」之书。
寻观「双宿主构建」之「包描述」之书。

「:文言:此篇纯函数,自应用起,循依赖而尽取其闭包;磁盘之事(列包、读描述)由调用者授以函数与表。汉语:传递依赖解析。输入:包表(包名与包文件路径的对应)、包根列表(只用于报错)、读取包描述的函数、应用根节点;输出:按依赖在前、应用在末排序的库与应用节点,以及按首次遇到顺序排列的操作系统接口名。标准库与内置基础库(原拓展库拆出,见「内置基础库名们」)内置,豫言操作系统XXX 表示接口 XXX,其余依赖到包表里找恰一个。环用已访问表截断。:」

「包节点」即
  「字符串」
  合「字符串」
  合(「列」于「字符串」)
也。

「包节点名」乃化「包节点」而「字符串」也。
「包节点名」者会「节点」而
  「节点」中「零」
也。

「包节点路径」乃化「包节点」而「字符串」也。
「包节点路径」者会「节点」而
  「节点」中「一」
也。

「包节点依赖们」乃化「包节点」而(「列」于「字符串」)也。
「包节点依赖们」者会「节点」而
  「节点」中「二」
也。

「:文言:包表之一项:名与所在之包文件。汉语:包表的一项:包名与包描述文件的路径。:」
「已找包」即「字符串」
  合「字符串」
也。

「:文言:解析所得:库与应用之节点(依赖在前,应用居末),及接口名(首见之序)。汉语:解析结果:节点列表与接口名列表。:」
「解析结果」即(「列」于「包节点」)
  合(「列」于「字符串」)
也。

「解析结果节点们」乃化「解析结果」而(「列」于「包节点」)也。
「解析结果节点们」者会「结果」而
  「结果」中「零」
也。

「解析结果接口们」乃化「解析结果」而(「列」于「字符串」)也。
「解析结果接口们」者会「结果」而
  「结果」中「一」
也。

「:文言:内置基础库之名,依依赖之序;标准库另计。汉语:内置基础库(原拓展库拆出)的包名,按依赖先后排列;标准库另行处理。:」
「内置基础库名们」乃「列」于「字符串」也。
「内置基础库名们」者「列」【『单元测试』,『癸象工具』,『网页客户端』,『云工宿主』,『浏览器宿主』】也。

「:文言:内置基础库之所依。汉语:内置基础库各自的依赖名。:」
「内置基础库依赖们」乃化「字符串」而(「列」于「字符串」)也。
「内置基础库依赖们」者会「名」而
  若「字符串相等吗」于「名」于『单元测试』
  则
    (「列」【『标准库』】)
  否则若「或者」于(「字符串相等吗」于「名」于『云工宿主』)于(「字符串相等吗」于「名」于『浏览器宿主』)
  则
    (「列」【『标准库』,『癸象工具』】)
  否则
    (「列」【『标准库』,『单元测试』】)
也。

「内置名在列中」乃化「字符串」而化(「列」于「字符串」)而「爻」也。
「内置名在列中」者会「名」而会「们」而
  鉴「们」而
    有「罄」则「阴」
    或有(「缀」于「首」于「余」)则(
      若「字符串相等吗」于「首」于「名」则「阳」否则「内置名在列中」于「名」于「余」)
也。

「内置包吗」乃化「字符串」而「爻」也。
「内置包吗」者会「名」而
  「或者」于(「字符串相等吗」于「名」于『标准库』)于(「内置名在列中」于「名」于「内置基础库名们」)
也。

「接口前缀」者『豫言操作系统』也。

「:文言:依赖名冠以豫言操作系统者,乃公约接口,去其冠得接口名。汉语:如果依赖名以「豫言操作系统」开头且后面还有字,返回其后的接口名;否则返回无。:」
「:文言:待办事项:诸父包(豫言操作系统接口、底层接口、适配、工具)亦冠此名,客若依之,则误作同名之接口而不得其目;今惟令客径依具体之包。汉语:待办事项:以此前缀开头的父包(豫言操作系统接口、豫言操作系统底层接口、豫言操作系统适配、豫言操作系统工具)若被应用依赖,会被当作名为“接口”“底层接口”“适配”“工具”的接口而找不到目录;目前只要求应用直接依赖具体的包。:」
「接口依赖名」乃化「字符串」而(「或可有」于「字符串」)也。
「接口依赖名」者会「依」而
  若「且」
    于(「串开头是它吗」于「接口前缀」于「依」)
    于(「大于」于(「串长度」于「依」)于(「串长度」于「接口前缀」))
  则
    (「可有」授以「字符串」于(「获取子字符串」于(「串长度」于「接口前缀」)于(「串长度」于「依」)于「依」))
  否则
    (「可无」授以「字符串」)
也。

「依赖分类」立「元类型」也。
  「略过依赖」立「依赖分类」也。
  「接口依赖」立化「字符串」而「依赖分类」也。
  「普通依赖」立「依赖分类」也。

「:文言:状态三事:已访问之包名、已得之节点(逆序)、已见之接口(逆序)。汉语:解析状态:已访问的包名、已产出节点的逆序列表、已遇到接口名的逆序列表。:」
「解析状态」即
  (「列」于「字符串」)
  合(「列」于「包节点」)
  合(「列」于「字符串」)
也。

「:文言:一依赖何属:内置、已见者略过;接口未见则收之;余者为普通包。汉语:给依赖分类:内置包或已访问的包、已收集的接口都略过,新接口收集,其余是需要到包表里找的普通包。:」
「:文言:依赖之名将入路径与命令,先验其洁。汉语:依赖名必须是安全名称(不空、不含斜杠等),否则抛出指明请求者的中文事故;接口名同样受检。:」
「核验依赖名」乃化「字符串」而化「字符串」而「有」也。
「核验依赖名」者会「请求者」而会「依」而
  若「安全名称吗」于「依」则
    「元」
  否则
    「发生事故」于(『包「』附「请求者」附『」的依赖名不合法:「』附「依」附
      『」(不能为空、. 或 ..,也不能含斜杠、反斜杠、制表符或换行)』)
也。

「分类依赖」乃化「字符串」而化「字符串」而化「解析状态」而「依赖分类」也。
「分类依赖」者会「请求者」而会「依」而会「状态」而
  虑「无」者「核验依赖名」于「请求者」于「依」而
  若「内置包吗」于「依」则
    「略过依赖」
  否则
    鉴(「接口依赖名」于「依」)而
      有(「可有」于「名」)则
        (若「列含串」于(「状态」中「二」)于「名」则「略过依赖」否则(「接口依赖」于「名」))
      或有「可无」则
        (若「列含串」于(「状态」中「零」)于「依」则「略过依赖」否则「普通依赖」)
也。

「:文言:同名之包,取其路径之去重有序者。汉语:在包表里按名查找,返回去重并按字节序排序的候选路径列表。:」
「按名找路径」乃
  化(「列」于「已找包」)而
  化「字符串」而
  (「列」于「字符串」)
也。
「按名找路径」者会「包表」而会「名」而
  「排序字符串」于(「去重字符串」
    于(「态射」授以「已找包」授以「字符串」
      于(「滤」授以「已找包」于(会「项」而「字符串相等吗」于(「项」中「零」)于「名」)于「包表」)
      于(会「项」而「项」中「一」))
      于(「罄」授以「字符串」))
也。

「:文言:无则告其所搜之根,多则列其诸径。汉语:候选恰有一个时返回其路径;没有或有多个时抛出说明依赖名、请求者与包根的中文事故。:」
「唯一路径」乃
  化「字符串」而
  化「字符串」而
  化(「列」于「字符串」)而
  化(「列」于「字符串」)而
  「字符串」
也。
「唯一路径」者会「名」而会「请求者」而会「候选们」而会「包根们」而
  鉴「候选们」而
    有(「缀」于「唯一」于「罄」)则「唯一」
    或有「罄」则「发生事故」于(『找不到依赖包「』附「名」附『」(被「』附「请求者」附『」依赖)。已搜索的包根:』附(
        若「等于」于(「长度」授以「字符串」于「包根们」)于「零」则
          『(没有指定任何 --包根)』
        否则
          「顿号连接」于「包根们」
      )附『。请用 --包根 指定含「』附「名」附『。包。豫」的目录。』)
    或有「其他」则
      「发生事故」于(『依赖包「』附「名」附『」(被「』附「请求者」附『」依赖)有多个候选,无法确定:』附(「顿号连接」
        于「候选们」)附『。请调整 --包根,使它只出现一次。』)
也。

「:文言:自动模式所识之包,主皆为豫言。汉语:自动模式生成的包上下文里所有包的所有者都是「豫言」,其他所有者暂不支持。:」
「核验所有者」乃化「字符串」而化「包描述」而「有」也。
「核验所有者」者会「路径」而会「描述」而
  若「字符串相等吗」于(「包描述所有者」于「描述」)于『豫言』则
    「元」
  否则
    「发生事故」于(『自动模式暂只支持所有者为「豫言」的包:』附「路径」附『 的所有者是「』附(「包描述所有者」
      于「描述」)附『」』)
也。

「:文言:入一包:读其描述,验其名与所有者。汉语:读取包描述并核对:包描述里的名称必须与依赖名一致,所有者必须是「豫言」。:」
「载入节点」乃
  化(化「字符串」而「包描述」)而
  化「字符串」而
  化「字符串」而
  「包节点」
也。
「载入节点」者会「读描述」而会「名」而会「路径」而
  虑「描述」者「读描述」于「路径」而
  虑「无」者
    (
      若「字符串相等吗」于(「包描述名称」于「描述」)于「名」则
        「元」
      否则
        「发生事故」于(『包描述名称与依赖名不一致:依赖「』附「名」附『」,但 』附「路径」附『 里的名称是「』附(「包描述名称」
          于「描述」)附『」』)
    )而
    虑「无」者「核验所有者」于「路径」于「描述」而
    「名」与「路径」与(「包描述依赖们」于「描述」)
也。

「载入依赖」乃
  化(「列」于「已找包」)而
  化(「列」于「字符串」)而
  化(化「字符串」而「包描述」)而
  化「字符串」而
  化「字符串」而
  「包节点」
也。
「载入依赖」者会「包表」而会「包根们」而会「读描述」而会「请求者」而会「依」而
  虑「路径」者
    「唯一路径」于「依」于「请求者」于(「按名找路径」于「包表」于「依」)于「包根们」
  而
  「载入节点」于「读描述」于「依」于「路径」
也。

「:文言:三事各有登记之术;泛型之缀,必在有型之函内为之,以免类型不定。汉语:解析状态的三个更新函数:登记已访问的包名、登记新遇到的接口名、追加产出的节点。写成带完整类型签名的小函数,避免在局部绑定里构造带泛型的元组导致隐式参数无法确定。:」
「登记访问」乃化「字符串」而化「解析状态」而「解析状态」也。
「登记访问」者会「名」而会「状态」而
  (「缀」于「名」于(「状态」中「零」))与(「状态」中「一」)与(「状态」中「二」)
也。

「登记节点」乃化「包节点」而化「解析状态」而「解析状态」也。
「登记节点」者会「节点」而会「状态」而
  (「状态」中「零」)与(「缀」于「节点」于(「状态」中「一」))与(「状态」中「二」)
也。

「登记接口」乃化「字符串」而化「解析状态」而「解析状态」也。
「登记接口」者会「名」而会「状态」而
  (「状态」中「零」)与(「状态」中「一」)与(「缀」于「名」于(「状态」中「二」))
也。

「:文言:访一包:先记其名(防环),逐依而入;接口则收,普通包则载而访之;毕,乃书其节点于后。汉语:深度优先访问一个包:进入时先登记,防止环;按依赖声明顺序处理每个依赖;处理完再把本节点追加到结果(因此依赖在前,应用在末)。:」
「访问包」乃
  化(「列」于「已找包」)而
  化(「列」于「字符串」)而
  化(化「字符串」而「包描述」)而
  化「包节点」而
  化「解析状态」而
  「解析状态」
也。
「访问包」者会「包表」而会「包根们」而会「读描述」而会「节点」而会「状态」而
  虑「入表」者「登记访问」于(「包节点名」于「节点」)于「状态」而
  递归虑「逐依」其化(「列」于「字符串」)而化「解析状态」而「解析状态」者
    会「余」而会「当前」而
      鉴「余」而
        有「罄」则「当前」
        或有(「缀」于「依」于「尾」)则
          「逐依」
            于「尾」
            于(
            鉴(「分类依赖」于(「包节点名」于「节点」)于「依」于「当前」)而
              有「略过依赖」则「当前」
              或有(「接口依赖」于「接口名」)则
                「登记接口」于「接口名」于「当前」
              或有「普通依赖」则(「访问包」
                于「包表」
                于「包根们」
                于「读描述」
                于(「载入依赖」于「包表」于「包根们」于「读描述」于(「包节点名」于「节点」)于「依」)
                于「当前」))
  而
  虑「结束」者「逐依」于(「包节点依赖们」于「节点」)于「入表」而
  「登记节点」于「节点」于「结束」
也。

「:文言:自应用起尽取其依赖之闭包。汉语:解析入口:从应用节点出发,返回(节点列表,接口名列表);节点依赖在前、应用在末,接口按首次遇到的顺序。:」
「解析依赖」乃
  化(「列」于「已找包」)而
  化(「列」于「字符串」)而
  化(化「字符串」而「包描述」)而
  化「包节点」而
  「解析结果」
也。
「解析依赖」者会「包表」而会「包根们」而会「读描述」而会「应用」而
  虑「末状态」者
    「访问包」
      于「包表」
      于「包根们」
      于「读描述」于「应用」
      于((「罄」授以「字符串」)与(「罄」授以「包节点」)与(「罄」授以「字符串」))
  而
  (「反转」授以「包节点」于(「末状态」中「一」))与(「反转」授以「字符串」于(「末状态」中「二」))
也。