寻观「标准库」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「操作系统」之「异步子进程」之书。
寻观「构建基础」之「包定位」之书。
寻观「包配置」之「包依赖」之书。
寻观「包配置」之「语言服务」之书。
寻观「构建基础」之「包上下文」之书。
寻观「包配置」之「配置数据」之书。
寻观「包配置」之「配置解析」之书。
寻观「豫构」之「仓库目标」之书。

「：文言：先索包名，后解所需，终授编译器。汉语：独立工具负责发现与包图，编译器负责实际编译和阶段调度。：」
「外部目录」者「新引用」授以「字符串」于『』也。

「目标所有者」者「新引用」授以「字符串」于『』也。

「编译器选项」者「新引用」授以「字符串」于『』也。

「输出选项」者「新引用」授以「字符串」于『』也。

「显式文件入口」者「新引用」授以「字符串」于『』也。

「并发选项」者「新引用」授以「整数」于（「在线处理器数量」于「元」）也。

「编译器附加参数」者「新引用」授以（「列」于「字符串」）于「罄」也。

「请求帮助」者「新引用」授以「爻」于「阴」也。

「：文言：发现之时，依层级录诸包为树。汉语：发现命令改按层级打印包树。：」
「树形发现」者「新引用」授以「爻」于「阴」也。

「帮助文本」者『豫构：包构建工具
用法：yy豫构 命令 [包名] [入口路径段…] [豫构选项] [-- 编译器参数…]
命令：发现 [--树] | 检查 包名 | 定位 包名 包名 模块… | 构建 包名 | 类型检查 包名
      文件 路径（按所属包构建）
仓库目标（在语言仓根目录）：自举 | 测试 | 打包 | 清理 | 全部 | 目标 名…
      [-j 并发] [--强制] [--不连带] [--列出]
选项：
  -h, --help          显示帮助，不扫描包或调用编译器
  --树                发现时按层级打印包树：根按目录排列，子包按包含包的顺序缩进
  --所有者 所有者名       指定目标包所有者
  --外部包目录 路径   指定外部包目录
  --编译器 路径       默认使用豫构旁的 yy4_bs.wasm（没有时用 yy4_bs）
  --输出 路径         默认使用包中声明的程序名（加 .wasm）
  -j 数量             并发数（正整数）
编译器参数：用于构建、类型检查和文件命令，-- 之后按原顺序、原参数边界传递。
示例：yy豫构 构建 豫言编译器 -j 8 -- --do-not-load-cache
      yy豫构 类型检查 豫言编译器 -- --no-debug-print
-- 后的 -h / --help 属于编译器；输出和并发数建议使用豫构选项。』也。

「提取命令参数」乃化（「列」于「字符串」）而（「列」于「字符串」）也。
「提取命令参数」者会「参数」而
  鉴「参数」而
    有「罄」则「罄」
  「：文言：双短线后皆授编译器，不复拆之。汉语：保留带值选项、空格及后续分隔符，不再将它们当作包内入口。：」
    或有（「缀」于『--』于「余」）则
      （「写引用」于「编译器附加参数」于「余」；
        「罄」）
    或有（「缀」于『-h』于「余」）则
      （「写引用」于「请求帮助」于「阳」；
        「提取命令参数」于「余」）
    或有（「缀」于『--help』于「余」）则
      （「写引用」于「请求帮助」于「阳」；
        「提取命令参数」于「余」）
    或有（「缀」于『--树』于「余」）则
      （「写引用」于「树形发现」于「阳」；
        「提取命令参数」于「余」）
    或有（「缀」于『--所有者』于（「缀」于「值」于「余」））则
      （「确认短包名」于「值」；
        「写引用」于「目标所有者」于「值」；
        「提取命令参数」于「余」）
    或有（「缀」于『--外部包目录』于（「缀」于「值」于「余」））则
      （「写引用」于「外部目录」于「值」；
        「提取命令参数」于「余」）
    或有（「缀」于『--编译器』于（「缀」于「值」于「余」））则
      （「写引用」于「编译器选项」于「值」；
        「提取命令参数」于「余」）
    或有（「缀」于『--输出』于（「缀」于「值」于「余」））则
      （「写引用」于「输出选项」于「值」；
        「提取命令参数」于「余」）
    或有（「缀」于『-j』于（「缀」于「值」于「余」））则（
      虑「数」者「理解整数」于「值」而
      若「且」于（「大于」于「数」于「零」）于（「串相等」于（「整数表示」于「数」）于「值」）
      则
        （「写引用」于「并发选项」于「数」；
          「提取命令参数」于「余」）
      否则
        「发生事故」授以（「列」于「字符串」）于『并发数应为正整数』
    ）
    或有（「缀」于「首」于「余」）则
      若「串开头是它吗」于『-』于「首」则
        「发生事故」授以（「列」于「字符串」）
        于（『未知选项或缺少选项值：』附「首」附『；编译器参数请放在 -- 之后；帮助见 -h』）
      否则
        「缀」于「首」于（「提取命令参数」于「余」）
也。

「转绝对路径」乃化「字符串」而化「字符串」而「字符串」也。
「转绝对路径」者会「根」而会「路径」而
  若「路径名是绝对路径」于「路径」则
    「路径」
  否则
    「路径合并」于「根」于「路径」
也。

「：文言：编译器之默认：豫构旁之 yy4_bs.wasm，无则 yy4_bs。汉语：默认编译器：豫构所在目录的 yy4_bs.wasm，没有时用 yy4_bs；.wasm 由 Node 宿主运行。：」
「默认编译器」乃化「有」而「字符串」也。
「默认编译器」者会「无」而
  虑「目录」者
    「获取文件夹名」于（「真实路径」于（「获取程序名」于「元」））而
    虑「网页」者「路径合并」于「目录」于『yy4_bs.wasm』而
    若「路径存在」于「网页」则「网页」否则「路径合并」于「目录」于『yy4_bs』
也。

「构建单元」乃化「已解析包图」而化「包标识」而化「爻」而化「爻」而「整数」也。
「构建单元」者会「图」而会「包名」而会「仅检查」而会「不链接」而
  虑「索引」者「图」中「零」而
  虑「包值」者「查包」于「索引」于「包名」而
  虑「入口」者
    若「串相等」于（「读引用」授以「字符串」于「显式文件入口」）于『』
    则
      「定位包内文件」于「索引」于「包值」于（「图」中「二」）
    否则
      「读引用」授以「字符串」于「显式文件入口」
  而
  虑「原目录」者「获取当前路径」于「元」而
  虑「指定编译器」者「读引用」授以「字符串」于「编译器选项」而
  虑「编译器」者
    「真实路径」于（
      若「串相等」于「指定编译器」于『』则「默认编译器」于「元」否则「转绝对路径」于「原目录」于「指定编译器」
    ）
  而
  虑「指定输出」者「读引用」授以「字符串」于「输出选项」而
  虑「声明程序」者「包程序」于（「解析包文件」于（「包值」中「二」））而
  虑「输出」者
    「转绝对路径」
      于「原目录」
      于（
        若「串相等」于「指定输出」于『』则（
          虑「名」者
            （若「串相等」于「声明程序」于『』则『yy』附（「包值」中「一」）否则「声明程序」）
          而
          若「串结尾是它吗」于『.wasm』于「名」则
            「名」
          否则
            「名」附『.wasm』
        ）
        否则
          「指定输出」
      ）而
  「：文言：闭包内诸包之模，录于上下文。汉语：收集依赖闭包内编译模式为底层的包文件，写进包上下文，编译器据此为其中的文件选底层管线。：」
  虑「底层们」者
    「串联」授以「字符串」于（「态射」授以「包标识」授以（「列」于「字符串」）
    于（「图」中「一」）
    于（会「标识」
      而
  虑「记录」者「查包」于「索引」于「标识」而
  若「包为底层」于（「解析包文件」于（「记录」中「二」））则
    「列」【（「记录」中「二」）】
  否则
    「罄」授以「字符串」
    ））
  而
  虑「入口底层」者「包为底层」于（「解析包文件」于（「包值」中「二」））而
  虑「内容」者「编码带模式包上下文」于「索引」于「底层们」而
  虑「切换结果」者「切换当前路径」于（「获取文件夹名」于「编译器」）而
  若「不等于」于（「切换结果」中「零」）于「零」则
    「发生事故」授以「整数」于（「切换结果」中「一」）
  否则
    虑「上下文文件」者「存放上下文」于「内容」而
    虑「参数」者
      「附加」授以「字符串」
      于（「列」【
        「入口」，
        『--package-context』，
        「上下文文件」，
        『--parallel』，
        『-j』，
        （「整数表示」于（「读引用」授以「整数」于「并发选项」））
      】）于（
        若「仅检查」则「列」【『--type-check-only』】
        否则若「不链接」则「列」【『--no-link』】
        否则
          「列」【『-o』，「输出」】
      ）
    而
    虑「状态」者
      「操作系统」之「子进程」之「运行并传递输出」
        于「编译器」
        于（「附加」授以「字符串」于「参数」于（「读引用」授以（「列」于「字符串」）于「编译器附加参数」））
    而
    虑「恢复」者「切换当前路径」于「原目录」而
    若「等于」于（「恢复」中「零」）于「零」则
      「状态」
    否则
      「发生事故」授以「整数」于（「恢复」中「一」）
也。

「：文言：以字节之序比两串，供诸根依包述之径而排。汉语：按字节序比较两个字符串（UTF-8 字节序即码位序），包树据此按包描述文件路径排列各根。：」
「串字节在前」乃化「字符串」而化「字符串」而化「整数」而「爻」也。
「串字节在前」者会「甲」而会「乙」而会「序」而
  若「等于」于「序」于（「字节长度」于「甲」）
  则
    「小于」于「序」于（「字节长度」于「乙」）
  否则若「等于」于「序」于（「字节长度」于「乙」）
  则
    「阴」
  否则
    虑「甲字」者「字符转整数」于「甲」于「序」而
    虑「乙字」者「字符转整数」于「乙」于「序」而
    若「等于」于「甲字」于「乙字」
    则
      「串字节在前」于「甲」于「乙」于（「加」于「序」于「一」）
    否则
      「小于」于「甲字」于「乙字」
也。

「按径插入」乃化「包记录」而化（「列」于「包记录」）而「列」于「包记录」也。
「按径插入」者会「记录」而会「已序」而
  鉴「已序」而
    有「罄」则「列」【「记录」】
    或有（「缀」于「首」于「余」）则
      若「串字节在前」于（「记录」中「二」）于（「首」中「二」）于「零」
      则
        「缀」于「记录」于「已序」
      否则
        「缀」于「首」于（「按径插入」于「记录」于「余」）
也。

「按径排序」乃化（「列」于「包记录」）而「列」于「包记录」也。
「按径排序」者会「记录们」而
  鉴「记录们」而
    有「罄」则「罄」授以「包记录」
    或有（「缀」于「首」于「余」）则
      「按径插入」于「首」于（「按径排序」于「余」）
也。

「：文言：录一包于树：缩进、名、目、类、简介；子依「包含包」之序递录。汉语：打印包树中的一个包及其全部后代：每层缩进两格，行内是包名、相对项目根的目录（可执行文件另注明）与简介；子包按「包含包」的顺序递归打印。：」
「打印包树节点」乃
  化「字符串」而
  化（「列」于「包记录」）而
  化「包记录」而
  化「字符串」而
  「有」
也。
「打印包树节点」者会「根目录」而会「索引」而会「记录」而会「缩进」而
  虑「配置」者「解析包文件」于（「记录」中「二」）而
  虑「目录」者「包目录」于「记录」而
  虑「相对」者
    若「串开头是它吗」于（「根目录」附『/』）于「目录」则
      「去除串开头」于（「根目录」附『/』）于「目录」
    否则若「串相等」于「目录」于「根目录」则
      『.』
    否则
      「目录」
  而
  虑「类别」者
    若「包为库」于「配置」则『』否则『，可执行文件』
  而
  虑「无」者
    「打印行」于（「缩进」附（「记录」中「一」）附『（』附「相对」附「类别」附『）：』附（「包简介」于「配置」））
  而
  虑「无」者
    「态射」授以「字符串」授以「有」
    于（「包声明子们」于「配置」）
    于（会「子名」而
      「打印包树节点」
        于「根目录」
        于「索引」
        于（「查包」于「索引」于（（「记录」中「零」）与「子名」））
        于（「缩进」附『  』））
  而
  「元」
也。

「：文言：诸根依包述之径而排，各录其树，终计包数与树数。汉语：打印全部包树：未声明包含在的包是根，按包描述文件路径排列（与目录布局一致），逐棵打印，最后汇总包数与树数。：」
「是根包」乃化「包记录」而「爻」也。
「是根包」者会「记录」而
  「串相等」于（「包声明父」于（「解析包文件」于（「记录」中「二」）））于『』
也。

「打印包树」乃化「字符串」而化（「列」于「包记录」）而「有」也。
「打印包树」者会「根目录」而会「索引」而
  虑「根们」者
    「按径排序」于（「滤」授以「包记录」于「是根包」于「索引」）而
    虑「无」者
      「态射」授以「包记录」授以「有」
      于「根们」
      于（会「记录」而「打印包树节点」于「根目录」于「索引」于「记录」于『』）
    而
    「打印行」于（『共 』附（「整数表示」于（「长度」授以「包记录」于「索引」））附『 个包，』附（「整数表示」
      于（「长度」授以「包记录」于「根们」））附『 棵树。』）
也。

「：文言：库无入口，逐书成物而不链器。汉语：默认库构建覆盖包内普通模块，排除测试及子包；显式文件命令仍可用于测试程序。：」
「构建包」乃化「已解析包图」而化「包标识」而化「爻」而「整数」也。
「构建包」者会「图」而会「标识」而会「仅检查」而
  虑「包值」者「查包」于（「图」中「零」）于「标识」而
  若「且」
    于（「等于」于（「长度」授以「字符串」于（「图」中「二」））于「零」）
    于（「包为库」于（「解析包文件」于（「包值」中「二」）））
  则
    （
      虑「无」者
        若「串相等」于（「读引用」于「输出选项」）于『』则
          「元」
        否则
          「发生事故」授以「有」于『库没有可执行输出，不能指定 --输出』
      而
      虑「文件们」者
        「滤」授以「字符串」
        于（会「文件」而「非」于（「串结尾是它吗」于『。测试。豫』于「文件」））
        于（「收集包源码」于（「包目录」于「包值」）于「阳」）
      而
      虑「无」者
        「态射」授以「字符串」授以「有」
        于「文件们」
        于（会「文件」
          而
  虑「无」者「写引用」于「显式文件入口」于「文件」而
  虑「状态」者「构建单元」于「图」于「标识」于「仅检查」于「阳」而
  若「等于」于「状态」于「零」则
    「元」
  否则
    「进程」之「退出」于「状态」
        ）
      而
      虑「无」者「写引用」于「显式文件入口」于『』而
      「零」
    ）
  否则
    「构建单元」于「图」于「标识」于「仅检查」于「阴」
也。

「执行豫构」乃化（「列」于「字符串」）而「整数」也。
「执行豫构」者会「参数」而
  若「读引用」授以「爻」于「请求帮助」则
    （「打印行」于「帮助文本」；
      「零」）
  否则
    虑「无」者
      若「等于」
        于（「长度」授以「字符串」于（「读引用」授以（「列」于「字符串」）于「编译器附加参数」））
        于「零」则
          「元」
      否则
        （
          鉴「参数」而
            有（「缀」于『构建』于「余」）则「元」
            或有（「缀」于『类型检查』于「余」）则「元」
            或有（「缀」于『文件』于「余」）则「元」
            或有「其他」则
              「发生事故」授以「有」
              于『只有构建和类型检查命令支持 -- 编译器参数』
        ）而
    鉴「参数」而
      有「罄」则
        （「打印行」于「帮助文本」；
          「零」）
      或有「非空参数」则（
        虑「索引」者
          「发现具名包」
            于（「获取当前路径」于「元」）
            于（「读引用」授以「字符串」于「外部目录」）而
        鉴「参数」而
          有（「列」【『文件』，「文件路径」】）则（
            虑「文件」者
              「真实路径」于（「转绝对路径」于（「获取当前路径」于「元」）于「文件路径」）
            而
            虑「包值」者「所属包」于「索引」于「文件」
            而
            虑「图」者「解析包图」于「索引」于（「包身份」于「包值」）
            而
            虑「无」者
              「写包图语言服务」于（「获取当前路径」于「元」）于「图」
            而
            虑「相对」者
              「去除串开头」于（（「包目录」于「包值」）附『/』）于「文件」
            而
            虑「无扩展」者
              若「串结尾是它吗」于『。豫』于「相对」则
                「去除串结尾」于『。豫』于「相对」
              否则
                「发生事故」授以「字符串」
                于『文件命令只接受 。豫 源文件』
            而
            虑「入口段」者「按字符分段」于『/』于「无扩展」
            而
            虑「无」者「写引用」于「显式文件入口」于「文件」而
            「构建包」
              于（（「图」中「零」）与（「图」中「一」）与「入口段」）
              于（「包身份」于「包值」）
              于（「包内含名」于（「读引用」授以（「列」于「字符串」）于「编译器附加参数」）于『--type-check-only』）
          ）
          或有（（「列」【『发现』】））则（
            若「读引用」授以「爻」于「树形发现」则
              （「打印包树」
                于（「真实路径」于（「获取当前路径」于「元」））于「索引」；
                「零」）
            否则
              （
                虑「无」者
                  「态射」授以「包记录」授以「有」
                  于「索引」
                  于（会「包值」
                    而
  虑「配置」者「解析包文件」于（「包值」中「二」）而
  「打印行」于（（「包全名」于「包值」）附『「：制表：」』附（「包版本」于「配置」）附『「：制表：」』附（「包简介」
    于「配置」）附『「：制表：」』附（「包值」中「二」）
  ））而「零」
              ）
          ）
          或有（「缀」于「命令」于（「缀」于「名」于「余」））则（
            虑「无」者「确认短包名」于「名」
            而
            虑「全名」者
              「选择包身份」
                于「索引」
                于（（「读引用」授以「字符串」于「目标所有者」）与「名」）
            而
            虑「图」者「解析包图」于「索引」于「全名」
            而
            虑「无」者
              「写包图语言服务」于（「获取当前路径」于「元」）于「图」而
            鉴「命令」与「余」而
              有『检查』与「罄」则（
                虑「无」者
                  「态射」授以「包标识」授以「有」
                  于（「图」中「一」）
                  于（会「标识」
                    而
  虑「包值」者「查包」于（「图」中「零」）于「标识」而
  虑「配置」者「解析包文件」于（「包值」中「二」）而
  虑「无」者
    「打印行」于（（「包标识表示」于「标识」）附『 版本：』附（「包版本」于「配置」）附
      『；类型：』附（若「包为库」于「配置」则『库』否则『可执行文件；文件名：』附（「包程序」于「配置」））附
        『；说明：』附（「间合」于『、』于（「包说明」于「配置」））
    ）而
    虑「无」者
      「打印行」于（（「包标识表示」于「标识」）附『 → 』附（「间合」
        于『，』
        于（「态射」授以「包标识」授以「字符串」于（「包值」中「三」）于「包标识表示」））附『；源码数：』附
          （「整数表示」于（「长度」授以「字符串」于（「收集包源码」于（「包目录」于「包值」）于「阳」）））
      ）而
    「：文言：有父有子者，别录其层。汉语：有包含关系的包多打印一行，无则不打印。：」
              若「且」
                于（「串相等」于（「包声明父」于「配置」）于『』）
                于（「等于」于（「长度」授以「字符串」于（「包声明子们」于「配置」））于「零」）则
                  「元」
              否则
                「打印行」于（（「包标识表示」于「标识」）附『 包含在：』附（
                  若「串相等」于（「包声明父」于「配置」）于『』则
                    『（根）』
                  否则
                    「包声明父」
                      于「配置」
                ）附
                  （
                    若「等于」
                      于（「长度」授以「字符串」于（「包声明子们」于「配置」））
                      于「零」则
                        『』
                    否则
                      『；包含：』附（「间合」于『、』于（「包声明子们」于「配置」））
                  ）））
                而
                「零」
              ）
              或有『定位』与「模块段」则
                （「打印行」于（「定位包导入」
                  于（「图」中「零」）
                  于（「查包」于（「图」中「零」）于「全名」）于「模块段」）；
                  「零」）
                    「：文言：可明指包内入口，不改其籍。汉语：尾部名称段覆盖本次入口，测试与多工具共用包边界及依赖。：」
              或有『构建』与「入口段」则
                「构建包」
                  于（（「图」中「零」）与（「图」中「一」）
                    与
                      （若「等于」于（「长度」授以「字符串」于「入口段」）于「零」则
                        「图」中「二」
                        否则
                          「入口段」））
                          于「全名」于「阴」
              或有『类型检查』与「检查入口段」则
                「构建包」
                  于（（「图」中「零」）与（「图」中「一」）
                    与
                      （
                        若「等于」
                          于（「长度」授以「字符串」于「检查入口段」）于「零」则
                            「图」中「二」
                        否则
                          「检查入口段」
                      ））
                      于「全名」于「阳」
              或有「非法命令」则
                「发生事故」授以「整数」于『命令或参数数量错误』
          ）
          或有「非法参数」则
            「发生事故」授以「整数」于『命令缺少包名或含多余参数』
      ）
也。

「进程」之「退出」于（「尝试运行」授以「整数」
  于（会「无」而
    鉴「获取参数」于「元」而
      有（「缀」于「首」于「余」）则（
        若「是仓库命令」于「首」则
          「运行仓库目标」于（「获取参数」于「元」）
        否则
          「执行豫构」于（「提取命令参数」于（「获取参数」于「元」））
      ）
      或有「罄」则「执行豫构」于（「提取命令参数」于（「获取参数」于「元」）））
      于（会「错误」而「标准错误打印行」
        于「错误」；
        「一」））。
