豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 422 行 · 20866 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「构建基础」之「包定位」之书。
寻观「包配置」之「配置数据」之书。
寻观「包配置」之「配置解析」之书。

「:文言:先定众籍,后循所依。汉语:校验候选包元数据,再解析依赖闭包,返回完整身份索引、拓扑顺序与根包入口。:」
「已解析包图」即
  「包索引」
  合(「列」于「包标识」)
  合(「列」于「字符串」)
也。

「:文言:层级之资料:主、名、父名、子名列、为库否。汉语:各包配置里的包含关系资料(所有者、名称、包含在、包含包、是否库类型),用于两向校验并给库类型子包填写父包名。:」
「包层级资料」即
  「字符串」
  合「字符串」
  合「字符串」
  合(「列」于「字符串」)
  合「爻」
也。

「查层级资料」乃
  化(「列」于「包层级资料」)而
  化「字符串」而
  化「字符串」而
  「或可有」于「包层级资料」
也。
「查层级资料」者会「资料们」而会「所有者」而会「名」而
  鉴「资料们」而
    有「罄」则「可无」
    或有(「缀」于「首」于「余」)则
      若「且」于(「串相等」于(「首」中「零」)于「所有者」)
      于(「串相等」于(「首」中「一」)于「名」)
      则
        「可有」于「首」
      否则
        「查层级资料」于「余」于「所有者」于「名」
也。

「必取层级资料」乃
  化(「列」于「包层级资料」)而
  化「字符串」而
  化「字符串」而
  化「字符串」而
  「包层级资料」
也。
「必取层级资料」者会「资料们」而会「所有者」而会「名」而会「缺失提示」而
  鉴「查层级资料」于「资料们」于「所有者」于「名」而
    有(「可有」于「资料」)则「资料」
    或有「可无」则
      「发生事故」授以「包层级资料」于「缺失提示」
也。

「:文言:父子必两向相应。汉语:严格两向:每个声明“包含在”的包,其父必须存在且在“包含包”里登记它;每个登记的子包必须存在且声明“包含在”本包。:」
「确认包含关系登记」乃化(「列」于「包层级资料」)而「有」也。
「确认包含关系登记」者会「资料们」而
  虑「无」者
    「态射」授以「包层级资料」授以「有」
    于「资料们」
    于(会「资料」而
    虑「所有者」者「资料」中「零」而
    虑「名」者「资料」中「一」而
    虑「父名」者「资料」中「二」而
    虑「无」者
      若「串相等」于「父名」于『』则
        「元」
      否则
        (
          虑「父」者
            「必取层级资料」
              于「资料们」
              于「所有者」
              于「父名」
              于(『包含在的父包不存在:』附「名」附『 → 』附「父名」)
          而
          若「包内含名」于(「父」中「三」)于「名」则
            「元」
          否则
            「发生事故」授以「有」于(『父包未登记子包:』附「父名」附『 的「包含包」缺少 』附「名」)
        )
    而
    虑「无」者
      「态射」授以「字符串」授以「有」
      于(「资料」中「三」)
      于(会「子名」
        而
  虑「子」者
    「必取层级资料」于「资料们」于「所有者」于「子名」于(『登记的子包不存在:』附「名」附『 → 』附「子名」)而
  若「串相等」于(「子」中「二」)于「名」则
    「元」
  否则
    「发生事故」授以「有」于(『子包未声明包含在:』附「子名」附『(应含在 』附「名」附『)』))
    而
    「元」
    )
  而
  「元」
也。

「:文言:沿父上溯,步数有穷。汉语:沿“包含在”上溯的步数不超过包总数,否则成环。:」
「确认包含无环」乃
  化(「列」于「包层级资料」)而
  化「包层级资料」而
  化「整数」而
  「有」
也。
「确认包含无环」者会「资料们」而会「资料」而会「余步」而
  若「串相等」于(「资料」中「二」)于『』则
    「元」
  否则若「大于」于「余步」于「零」
  则
    「确认包含无环」
      于「资料们」
      于(「必取层级资料」
        于「资料们」
        于(「资料」中「零」)
        于(「资料」中「二」)
        于(『包含在的父包不存在:』附(「资料」中「一」)附『 → 』附(「资料」中「二」)))
        于(「减」于「余步」于「一」)
  否则
    「发生事故」授以「有」于(『包含关系成环:』附(「资料」中「一」))
也。

「:文言:验其登记,填其父名;唯库子可下钻。汉语:校验包含关系,并把库类型子包的父包名填进记录(可执行文件类型的子包保持为空,不可下钻)。:」
「补全包含关系」乃化「包索引」而化(「列」于「包层级资料」)而「包索引」也。
「补全包含关系」者会「索引」而会「资料们」而
  虑「无」者「确认包含关系登记」于「资料们」而
  虑「无」者
    「态射」授以「包层级资料」授以「有」
    于「资料们」
    于(会「资料」而「确认包含无环」于「资料们」于「资料」于(「长度」授以「包层级资料」于「资料们」))
  而
  「态射」授以「包记录」授以「包记录」
    于「索引」
    于(会「记录」而
    虑「资料」者
      「必取层级资料」
        于「资料们」
        于(「记录」中「零」)
        于(「记录」中「一」)
        于(『包含关系资料缺失:』附(「记录」中「一」))而
    若(「资料」中「四」)
    则
      ((「记录」中「零」)与(「记录」中「一」)与(「记录」中「二」)与(「记录」中「三」)与(「资料」中「二」))
    否则
      ((「记录」中「零」)与(「记录」中「一」)与(「记录」中「二」)与(「记录」中「三」)与『』))
也。

「:文言:先索候选,继验其籍。汉语:文件名仅供候选发现;完整身份取配置所有者,外部目录必须与声明一致;并校验包含关系(两向一致、无环),填写库类型子包的父包名。:」
「补全包索引」乃化「包索引」而「包索引」也。
「补全包索引」者会「候选」而
  虑「带资料」者
    「态射」授以「包记录」授以(「包记录」合「包层级资料」)
    于「候选」
    于(会「记录」而
    虑「配置」者「解析包文件」于(「记录」中「二」)而
    虑「所有者」者「包所有者」于「配置」而
    虑「无」者
      若「或者」于(「串相等」于(「记录」中「零」)于『』)
      于(「串相等」于(「记录」中「零」)于「所有者」)则
        「元」
      否则
        「发生事故」授以「有」于(『包所有者与发现目录不一致:』附(「记录」中「二」))
    而
    (「包记录」也(「所有者」与(「记录」中「一」)与(「记录」中「二」)与(「记录」中「三」)与(「记录」中「四」)))
  与
      (「包层级资料」也(「所有者」与(「记录」中「一」)与(「包声明父」于「配置」)与(「包声明子们」于「配置」)
        与(「包为库」于「配置」))))
  而
  虑「索引」者
    「从左折叠」授以(「包记录」合「包层级资料」)授以「包索引」
      于(会「项」而会「已有」而「插入包索引」于(「项」中「零」)于「已有」)于「罄」于「带资料」
  而
  「补全包含关系」
    于「索引」
    于(「态射」授以(「包记录」合「包层级资料」)授以「包层级资料」于「带资料」于(会「项」而「项」中「一」))
也。

「发现具名包」乃化「字符串」而化「字符串」而「包索引」也。
「发现具名包」者会「根」而会「外部」而
  「补全包索引」于(「发现包」于「根」于「外部」)
也。

「确认包说明」乃化「包索引」而化「包记录」而化「包」而「有」也。
「确认包说明」者会「索引」而会「记录」而会「配置」而
  虑「无」者
    「态射」授以「字符串」授以「有」
    于(「包说明」于「配置」)
    于(会「路径」而
    虑「文件」者「路径合并」于(「包目录」于「记录」)于「路径」而
    虑「无」者
      若「路径存在」于「文件」则「元」否则「发生事故」授以「有」
      于(『说明文件不存在:』附「文件」)
    而
    虑「无」者
      若「路径是普通文件」于「文件」则「元」否则「发生事故」授以「有」
      于(『说明文件不存在:』附「文件」)
    而
    虑「实际」者「真实路径」于「文件」而
    若「且」
      于(「串相等」于「实际」于「文件」)
      于(「包标识相等」于(「包身份」于(「所属包」于「索引」于「实际」))于(「包身份」于「记录」))
    则
      「元」
    否则
      「发生事故」授以「有」于(『说明文件越过包边界或符号链接:』附「文件」))
  而
  「元」
也。

「:文言:库子隐为所依,次序依「包含包」。汉语:依“包含包”的顺序返回本包登记的库类型子包(记录里父包名等于本包名者);它们是依赖闭包里的隐含边,依赖父包即依赖它们。:」
「隐含子包标识」乃
  化「包索引」而
  化「包记录」而
  化「包」而
  (「列」于「包标识」)
也。
「隐含子包标识」者会「索引」而会「记录」而会「配置」而
  虑「候选们」者
    「态射」授以「字符串」授以「包标识」
    于(「包声明子们」于「配置」)
    于(会「名」而(「记录」中「零」)与「名」)
  而
  「滤」授以「包标识」
    于(会「标识」而「串相等」于(「包父名」于(「查包」于「索引」于「标识」))于(「记录」中「一」))
    于「候选们」
也。

「:文言:子先于模块,故父之模块名不得与子同。汉语:父包自己的模块路径若是“<子包名>。豫”或以“<子包名>/”开头,就会被同名库类型子包遮蔽,报错。:」
「确认子包不遮蔽模块」乃化「包索引」而化「包记录」而「有」也。
「确认子包不遮蔽模块」者会「索引」而会「包值」而
  虑「子们」者「子包们」于「索引」于「包值」而
  若「等于」于(「长度」授以「包记录」于「子们」)于「零」则
    「元」
  否则
    虑「根」者(「包目录」于「包值」)附『/』
    而
    虑「相对们」者
      「态射」授以「字符串」授以「字符串」
      于(「收集包源码」于(「包目录」于「包值」)于「阳」)
      于(会「路径」而「去除串开头」于「根」于「路径」)
    而
    虑「无」者
      「态射」授以「包记录」授以「有」
      于「子们」
      于(会「子」
        而
  虑「名」者「子」中「一」而
  若「或者」
    于(「包内含名」于「相对们」于(「名」附『。豫』))
    于(「非」
      于(「等于」
        于(「长度」授以「字符串」
          于(「滤」授以「字符串」于(会「路径」而「串开头是它吗」于(「名」附『/』)于「路径」)于「相对们」))
          于「零」))
  则
    「发生事故」授以「有」于(『子包与父包模块重名:』附(「包全名」于「包值」)附『 的模块「』附「名」附
      『」与其子包同名』)
  否则
    「元」
      )
    而
    「元」
也。

「:文言:环中有含者,为提示。汉语:依赖环里如果有库类型子包,多半是子包依赖了它的祖先,给出提示。:」
「链含层级」乃化「包索引」而化(「列」于「包标识」)而「爻」也。
「链含层级」者会「索引」而会「链」而
  「非」于(「等于」
    于(「长度」授以「包标识」
      于(「滤」授以「包标识」
        于(会「标识」而「非」于(「串相等」于(「包父名」于(「查包」于「索引」于「标识」))于『』))
        于「链」))
        于「零」)
也。

「解析包图」乃化「包索引」而化「包标识」而「已解析包图」也。
「解析包图」者会「候选」而会「根引用」而
  虑「索引」者「补全包索引」于「候选」而
  虑「根名」者「选择包身份」于「索引」于「根引用」而
  虑「完成名」者「新引用」授以(「列」于「包标识」)于「罄」而
  虑「已解包」者「新引用」授以「包索引」于「罄」而
  虑「根入口」者「新引用」授以(「列」于「字符串」)于「罄」而
  递归虑「访问」其化「包标识」而化(「列」于「包标识」)而「有」者会「全名」而
  会「链」而
  若「含包标识」于「链」于「全名」
  则
    「发生事故」授以「有」于(『包依赖成环:』附(「间合」
      于『 → 』
      于(「态射」授以「包标识」授以「字符串」于(「结尾多」授以「包标识」于「链」于「全名」)于「包标识表示」))附
        (
          若「链含层级」
            于「索引」
            于(「结尾多」授以「包标识」于「链」于「全名」)则『(环中含包含关系:子包不能依赖其祖先)』
          否则
            『』
        ))
  否则若「含包标识」于(「读引用」授以(「列」于「包标识」)于「完成名」)
  于「全名」则「元」
  否则
    虑「记录」者「查包」于「索引」于「全名」而
    「尝试运行」授以「有」
    于(会「无」
      而
  虑「配置」者「解析包文件」于(「记录」中「二」)而
  虑「无」者「确认包说明」于「索引」于「记录」于「配置」而
  虑「依赖」者
    「态射」授以「包引用」授以「包标识」
    于(「包依赖」于「配置」)
    于(会「引用」而
      (鉴「引用」中「零」而
      有「可无」则(「记录」中「零」)
      或有(「可有」于「所有者」)则「所有者」)与(「引用」中「一」))
  而
  虑「无」者
    「从左折叠」授以「包标识」授以(「列」于「包标识」)
    于(会「名」而会「已有」
      而
      若「含包标识」于「已有」于「名」则
        「发生事故」授以(「列」于「包标识」)
        于(『重复声明依赖:』附(「包标识表示」于「名」))
      否则
        「缀」于「名」于「已有」
    )于「罄」于「依赖」而
    虑「无」者
      「确认可见包名」于((「记录」中「零」)与(「记录」中「一」)与(「记录」中「二」)与「依赖」
        与(「记录」中「四」)
      )
    而
    虑「无」者
      「态射」授以「包标识」授以「有」
      于「依赖」
      于(会「标识」
        而
        若「包为库」于(「解析包文件」于((「查包」于「索引」于「标识」)中「二」))则
          「元」
        否则
          「发生事故」授以「有」于(『依赖包未声明库能力:』附(「包标识表示」于「标识」)))
    而
    「:文言:同闭包之包,其模必同。汉语:编译模式(高级/底层)必须在整个依赖闭包内一致,底层包因此不能依赖标准库等高级包。:」
      虑「无」者
        「态射」授以「包标识」授以「有」
        于「依赖」
        于(会「标识」
          而
  虑「依赖模」者
    「包编译模式」于(「解析包文件」于((「查包」于「索引」于「标识」)中「二」))
  而
  若「串相等」于「依赖模」于(「包编译模式」于「配置」)则
    「元」
  否则
    「发生事故」授以「有」于(『编译模式不一致:〈』附(「包标识表示」于「全名」)附『〉是』附(「包编译模式」
      于「配置」)附『,其依赖〈』附(「包标识表示」于「标识」)附『〉是』附「依赖模」附
        『;同一依赖闭包内的包必须同模式』))
      而
      「:文言:库子隐为所依,模亦须同。汉语:父包的库类型子包是隐含依赖,编译模式也必须与父包一致,并检查子包名不遮蔽父包自己的模块。:」
      虑「子们」者「隐含子包标识」于「索引」于「记录」于「配置」
      而
      虑「无」者
        「态射」授以「包标识」授以「有」
        于「子们」
        于(会「标识」
          而
  虑「子模」者
    「包编译模式」于(「解析包文件」于((「查包」于「索引」于「标识」)中「二」))
  而
  若「串相等」于「子模」于(「包编译模式」于「配置」)则
    「元」
  否则
    「发生事故」授以「有」于(『编译模式不一致:〈』附(「包标识表示」于「全名」)附『〉是』附(「包编译模式」
      于「配置」)附『,其子包〈』附(「包标识表示」于「标识」)附『〉是』附「子模」附
        『;父包与其库类型子包必须同模式』))
      而
      虑「无」者「确认子包不遮蔽模块」于「索引」于「记录」
      而
      虑「新链」者「结尾多」授以「包标识」于「链」于「全名」
      而
      虑「无」者
        「态射」授以「包标识」授以「有」
        于「依赖」
        于(会「名」而「访问」于「名」于「新链」)
      而
      虑「无」者
        「态射」授以「包标识」授以「有」
        于「子们」
        于(会「名」而「访问」于「名」于「新链」)
      而
      虑「无」者
        「写引用」
          于「已解包」
          于(「缀」授以「包记录」
            于((「记录」中「零」)与(「记录」中「一」)与(「记录」中「二」)与「依赖」与(「记录」中「四」))
            于(「读引用」授以「包索引」于「已解包」))
      而
      虑「无」者
        「写引用」
          于「完成名」
          于(「结尾多」授以「包标识」于(「读引用」授以(「列」于「包标识」)于「完成名」)于「全名」)
      而
      若「包标识相等」于「全名」于「根名」则
        「写引用」于「根入口」于(「包入口」于「配置」)
      否则
        「元」
    )
    于(会「错误」而「发生事故」授以「有」于((「记录」中「二」)附『:「:换行:」』附「错误」))
  而
  虑「无」者「访问」于「根名」于「罄」而
  (「态射」授以「包记录」授以「包记录」
    于「索引」
    于(会「记录」而
      若「含包标识」于(「读引用」授以(「列」于「包标识」)于「完成名」)
      于(「包身份」于「记录」)
      则
        「查包」于(「读引用」授以「包索引」于「已解包」)
        于(「包身份」于「记录」)
      否则
        「记录」
    ))与
      (「读引用」授以(「列」于「包标识」)于「完成名」)与(「读引用」授以(「列」于「字符串」)于「根入口」)
也。