豫言源码浏览器 / Source Browser

浏览项目文件与源码

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

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

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

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

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

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

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

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

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

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

「帮助文本」者『豫构:包构建工具
用法: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』)
          )
          或有((「列」【『发现』】))则(
            若「读引用」授以「爻」于「树形发现」则
              (「打印包树」
                于(「真实路径」于(「获取当前路径」于「元」))于「索引」;
                「零」)
            否则
              (
                虑「无」者
                  「态射」授以「包记录」授以「有」
                  于「索引」
                  于(会「包值」
                    而
  虑「配置」者「解析包文件」于(「包值」中「二」)而
  「打印行」于((「包全名」于「包值」)附『「:制表:」』附(「包版本」于「配置」)附『「:制表:」』附(「包简介」
    于「配置」)附『「:制表:」』附(「包值」中「二」)
  ))而「零」
              )
          )
          或有(「缀」于「命令」于(「缀」于「名」于「余」))则(
            虑「无」者「确认短包名」于「名」
            而
            虑「全名」者
              「选择包身份」
                于「索引」
                于((「读引用」授以「字符串」于「目标所有者」)与「名」)
            而
            虑「图」者「解析包图」于「索引」于「全名」
            而
            虑「无」者
              「写包图语言服务」于(「获取当前路径」于「元」)于「图」而
            鉴「命令」与「余」而
              有『检查』与「罄」则(
                虑「无」者
                  「态射」授以「包标识」授以「有」
                  于(「图」中「一」)
                  于(会「标识」
                    而
  虑「包值」者「查包」于(「图」中「零」)于「标识」而
  虑「配置」者「解析包文件」于(「包值」中「二」)而
  虑「无」者
    「打印行」于((「包标识表示」于「标识」)附『 版本:』附(「包版本」于「配置」)附
      『;类型:』附(若「包为库」于「配置」则『库』否则『可执行文件;文件名:』附(「包程序」于「配置」))附
        『;说明:』附(「间合」于『、』于(「包说明」于「配置」))
    )而
    虑「无」者
      「打印行」于((「包标识表示」于「标识」)附『 → 』附(「间合」
        于『,』
        于(「态射」授以「包标识」授以「字符串」于(「包值」中「三」)于「包标识表示」))附『;源码数:』附
          (「整数表示」于(「长度」授以「字符串」于(「收集包源码」于(「包目录」于「包值」)于「阳」)))
      )而
    「:文言:有父有子者,别录其层。汉语:有包含关系的包多打印一行,无则不打印。:」
              若「且」
                于(「串相等」于(「包声明父」于「配置」)于『』)
                于(「等于」于(「长度」授以「字符串」于(「包声明子们」于「配置」))于「零」)则
                  「元」
              否则
                「打印行」于((「包标识表示」于「标识」)附『 包含在:』附(
                  若「串相等」于(「包声明父」于「配置」)于『』则
                    『(根)』
                  否则
                    「包声明父」
                      于「配置」
                )附
                  (
                    若「等于」
                      于(「长度」授以「字符串」于(「包声明子们」于「配置」))
                      于「零」则
                        『』
                    否则
                      『;包含:』附(「间合」于『、』于(「包声明子们」于「配置」))
                  )))
                而
                「零」
              )
              或有『定位』与「模块段」则
                (「打印行」于(「定位包导入」
                  于(「图」中「零」)
                  于(「查包」于(「图」中「零」)于「全名」)于「模块段」);
                  「零」)
                    「:文言:可明指包内入口,不改其籍。汉语:尾部名称段覆盖本次入口,测试与多工具共用包边界及依赖。:」
              或有『构建』与「入口段」则
                「构建包」
                  于((「图」中「零」)与(「图」中「一」)
                    与
                      (若「等于」于(「长度」授以「字符串」于「入口段」)于「零」则
                        「图」中「二」
                        否则
                          「入口段」))
                          于「全名」于「阴」
              或有『类型检查』与「检查入口段」则
                「构建包」
                  于((「图」中「零」)与(「图」中「一」)
                    与
                      (
                        若「等于」
                          于(「长度」授以「字符串」于「检查入口段」)于「零」则
                            「图」中「二」
                        否则
                          「检查入口段」
                      ))
                      于「全名」于「阳」
              或有「非法命令」则
                「发生事故」授以「整数」于『命令或参数数量错误』
          )
          或有「非法参数」则
            「发生事故」授以「整数」于『命令缺少包名或含多余参数』
      )
也。

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