豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 369 行 · 16313 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「字符串术」之书。
寻观「标准库」之「数据结构」之「多态列」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「环境变量」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「操作系统」之「子进程」之书。
寻观「标准库」之「输入输出」之「笔」之书。
寻观「豫言终端」之「命令目录」之书。
寻观「豫言终端」之「程序解析」之书。

「:文言:所用之器,明其处;所授之参,不乱其界。汉语:固定工具目录,所有工具通过原生子进程和参数列执行。:」
「指定项目」者「新引用」授以「字符串」于『』也。

「只预演」者「新引用」授以「爻」于「阴」也。

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

「启动目录」者「获取当前路径」于「元」也。

「终端程序位置」者「查找可执行程序」于(「获取程序名」于「元」)也。

「终端工具目录」者
  虑「指定」者「获取环境变量」于『YYSH_TOOL_DIR』而
  若「指定」中「零」则
    「绝对工具路径」于「启动目录」于(「指定」中「一」)
  否则
    若「终端程序位置」中「零」则「获取文件夹名」于(「绝对工具路径」于「启动目录」于(「终端程序位置」中「一」))否则
      「启动目录」
也。

「寻找项目根」乃化「字符串」而「字符串」也。
「寻找项目根」者会「目录」而
  若「且」
    于(「路径存在」于(「路径合并」于「目录」于『应用/豫言编译器/入口。豫』))
    于(「路径存在」于(「路径合并」于「目录」于『应用』))
  则
    「目录」
  否则
    虑「父」者「获取文件夹名」于「目录」
    而
    若「或者」于(「字符串相等吗」于「父」于『』)于(「字符串相等吗」于「父」于「目录」)
    则
      『』
    否则
      「寻找项目根」于「父」
也。

「当前管理项目」乃化「有」而「字符串」也。
「当前管理项目」者会「无」而
  虑「指定」者「读引用」于「指定项目」而
  若「字符串相等吗」于「指定」于『』则
    「寻找项目根」于(「获取当前路径」于「元」)
  否则
    「绝对工具路径」于(「获取当前路径」于「元」)于「指定」
也。

「取工具路径」乃化「字符串」而「字符串」也。
「取工具路径」者会「名」而
  虑「路径」者「路径合并」于「终端工具目录」于(『yy』附「名」)而
  若「路径可执行」于「路径」则
    「路径」
  否则
    若「且」于(「字符串相等吗」于「名」于『豫构』)于(「路径可执行」于(「路径」附『_stable』))
    则
      「路径」附『_stable』
    否则
      「路径」
也。

「取管理编译器」乃化「有」而「字符串」也。
「取管理编译器」者会「无」而
  虑「指定」者「获取环境变量」于『YYSH_COMPILER』而
  若「指定」中「零」则
    「绝对工具路径」于「启动目录」于(「指定」中「一」)
  否则
    虑「随附」者「路径合并」于「终端工具目录」于『yy编译器』
    而
    若「路径可执行」于「随附」则
      「随附」
    否则
      「路径合并」于「终端工具目录」于『yy4_bs.wasm』
也。

「打印调用参数」乃化(「列」于「字符串」)而「有」也。
「打印调用参数」者会「参数」而
  鉴「参数」而
    有「罄」则「元」
    或有(「缀」于「首」于「尾」)则
      (「打印行」于(『  参数:〈』附「首」附『〉』);
        「打印调用参数」于「尾」)
也。

「调用管理程序」乃
  化「字符串」而
  化「字符串」而
  化(「列」于「字符串」)而
  「整数」
也。
「调用管理程序」者会「目录」而会「程序」而会「参数」而
  若「读引用」于「只预演」
  则
    (「打印行」于(『工作目录:』附「目录」);
      「打印行」于(『程序:』附「程序」);
      「打印调用参数」于「参数」;
      「零」)
  否则若「非」于(「路径可执行」于「程序」)
  则
    (「标准错误打印行」于(『工具不可执行:』附「程序」附『。请运行“工具 构建 工具名”;豫构种子须先按快速开始安装。』);
      「一二七」)
  否则
    虑「原目录」者「获取当前路径」于「元」而
    虑「切换结果」者「切换当前路径」于「目录」而
    若「非」于(「等于」于(「切换结果」中「零」)于「零」)
    则
      (「标准错误打印行」于(「切换结果」中「一」);
        「一」)
    否则
      虑「状态」者「运行并继承标准流」于「程序」于「参数」
      而
      虑「还原」者「切换当前路径」于「原目录」
      而
      若「等于」于(「还原」中「零」)于「零」则「状态」
      否则
        (「标准错误打印行」于(『无法还原工作目录:』附(「还原」中「一」));
          「一」)
也。

「管理参数有效」乃化「命令条目」而化(「列」于「字符串」)而「爻」也。
「管理参数有效」者会「条目」而会「参数」而
  虑「数量」者「长度」授以「字符串」于「参数」而
  「且」
    于(「非」于(「小于」于「数量」于(「条目」中「五」)))
    于(「非」于(「大于」于「数量」于(「条目」中「六」)))
也。

「适配工具参数」乃
  化「命令条目」而
  化(「列」于「字符串」)而
  (「列」于「字符串」)
也。
「适配工具参数」者会「条目」而会「参数」而
  虑「命」者「条目」中「零」而
  虑「实际」者
    若「字符串相等吗」于「命」于『文档 生成』
    则
      (
        鉴「参数」而
          有「罄」则(「列」【『应用/豫言编译器/入口。豫』,『dist/文档』】)
          或有((「列」【「入口」】))则(「列」【「入口」,『dist/文档』】)
          或有「其他」则「参数」
      )
    否则若「且」
      于(「字符串相等吗」于「命」于『源码 生成』)
      于(「等于」于(「长度」授以「字符串」于「参数」)于「零」)
    则
      (「列」【『dist/源码』】)
    否则
      「参数」
  而
  「附加」授以「字符串」于(「条目」中「四」)于「实际」
也。

「构建管理工具」乃化「字符串」而化(「列」于「程序候选」)而「整数」也。
「构建管理工具」者会「根」而会「工具们」而
  鉴「工具们」而
    有「罄」则「零」
    或有(「缀」于「工具」于「尾」)则
      虑「名」者「工具」中「一」而
      虑「输出」者
        「路径合并」于「终端工具目录」于(
          若「字符串相等吗」于「名」于『豫言终端』则『yysh』否则『yy』附「名」)而
      「:文言:先成新器,后易旧器。汉语:构建至临时产物,成功后替换,避免覆盖正在运行的终端或豫构。:」
      虑「暂存」者「输出」附『.新.exe』
      而
      虑「状态」者
        「调用管理程序」
          于「根」
          于(「取工具路径」于『豫构』)
          于(「列」【『构建』,「名」,『--编译器』,(「取管理编译器」于「元」),『--输出』,「暂存」】)
      而
      若「非」于(「等于」于「状态」于「零」)则
        「状态」
      否则
        虑「移动」者「查找可执行程序」于『mv』
        而
        虑「换器」者
          「调用管理程序」
            于「根」
            于(「移动」中「一」)
            于(「列」【「暂存」,「输出」】)
        而
        若「等于」于「换器」于「零」则
          「构建管理工具」于「根」于「尾」
        否则
          「换器」
也。

「显示工具状态」乃化(「列」于「程序候选」)而「整数」也。
「显示工具状态」者会「工具们」而
  鉴「工具们」而
    有「罄」则「零」
    或有(「缀」于「工具」于「尾」)则
      虑「路径」者
        若「字符串相等吗」于(「工具」中「一」)于『豫言终端』
        则
          「路径合并」于「终端工具目录」于『yysh』
        否则
          「取工具路径」于(「工具」中「一」)
      而
      虑「就绪」者「路径可执行」于「路径」
      而
      虑「无」者
        「打印行」于((若「就绪」则『就绪  』否则『缺少  』)附「路径」)
      而
      虑「余」者「显示工具状态」于「尾」
      而
      若「就绪」则「余」否则「一」
也。

「检查外部依赖」乃化(「列」于「字符串」)而「整数」也。
「检查外部依赖」者会「名称们」而
  鉴「名称们」而
    有「罄」则「零」
    或有(「缀」于「名」于「尾」)则
      虑「结果」者「查找可执行程序」于「名」而
      虑「无」者
        「打印行」于(「名」附(
          若「结果」中「零」则『:』附(「结果」中「一」)否则『:未安装或不在 PATH 中』))
      而
      虑「余」者「检查外部依赖」于「尾」
      而
      若「结果」中「零」则「余」否则「一」
也。

「执行工具条目」乃
  化「字符串」而
  化「命令条目」而
  化(「列」于「字符串」)而
  「整数」
也。
「执行工具条目」者会「根」而会「条目」而会「参数」而
  虑「命」者「条目」中「零」而
  若「字符串相等吗」于「命」于『状态』
  则
    (「打印行」于(『项目:』附「根」);
      「打印行」于(『编译器:』附(「取管理编译器」于「元」));
      「显示工具状态」于(「常用工具候选」于「元」);
      「零」)
  否则
    若「字符串相等吗」于「命」于『环境 检查』
    则
      虑「工具状态」者「显示工具状态」于(「常用工具候选」于「元」)
      而
      虑「外部状态」者
        「检查外部依赖」于(「列」【『clang』,『git』】)
      而
      虑「编译器就绪」者「路径可执行」于(「取管理编译器」于「元」)
      而
      虑「无」者
        「打印行」于((若「编译器就绪」则『编译器就绪:』否则『缺少编译器:』)附(「取管理编译器」于「元」))
      而
      若「且」于「编译器就绪」于(「等于」于(「加」于「工具状态」于「外部状态」)于「零」)则
        「零」
      否则
        「一」
    否则若「字符串相等吗」于「命」于『工具 构建』
    则
      (
        鉴「参数」而
          有「罄」则「构建管理工具」
            于「根」
            于(「常用工具候选」于「元」)
          或有(「缀」于「工具名」于「余」)则
            虑「结果」者
              「决定命令词」于「工具名」于(「常用工具候选」于「元」)
            而
            若「等于」于(「结果」中「零」)于「零」
            则
              「构建管理工具」
                于「根」
                于(「列」【(「名称候选」于(「结果」中「一」))】)
            否则
              (「标准错误打印行」于(「结果」中「二」);
                「二」)
      )
    否则若「字符串相等吗」于「命」于『网页服务』
    则
      虑「服务参数」者「参数」而
      鉴「服务参数」而
        有(「缀」于「目录」于「端口们」)则
          「调用管理程序」
            于(「绝对工具路径」于「根」于「目录」)
            于(「取工具路径」于『简易网页服务器』)
            于(「附加」授以「字符串」于(「列」【『--本机』】)于「端口们」)
        或有「罄」则「二」
    否则
      虑「实际参数」者「适配工具参数」于「条目」于「参数」
      而
      虑「完整参数」者
        若「字符串相等吗」于(「条目」中「三」)于『豫构』
        则
          「附加」授以「字符串」
          于(「列」【『--编译器』,(「取管理编译器」于「元」)】)
          于「实际参数」
        否则
          「实际参数」
      而
      「调用管理程序」于「根」于(「取工具路径」于(「条目」中「三」))于「完整参数」
也。

「显示管理帮助」乃化(「列」于「字符串」)而「整数」也。
「显示管理帮助」者会「参数」而
  虑「解析」者「解析管理余词」于『』于「参数」而
  若「非」于(「等于」于(「解析」中「零」)于「零」)
  则
    (「标准错误打印行」于(「解析」中「三」);
      「二」)
  否则
    鉴「解析」中「二」而
      有「罄」则
        (「打印行」于(「命令帮助文本」于(「解析」中「一」));
          「打印行」
            于『全局选项置于命令前:--项目 路径、--预演。相对路径按项目根解释;网页服务按当前目录解释。』;
            「打印行」
              于『拼音仅用于筛选命令、工具与包名候选;Tab 选候选,Ctrl-E 或右方向键填入正式名称后执行。』;
              「零」)
      或有「其他」则
        (「标准错误打印行」于『帮助只接受命令路径,如:help 包 检查』;
          「二」)
也。

「执行管理命令」乃化「字符串」而化(「列」于「字符串」)而「整数」也。
「执行管理命令」者会「命」而会「参数」而
  鉴「查命令条目」于「命」而
    有(「缀」于「条目」于「余」)则(
      若「非」于(「管理参数有效」于「条目」于「参数」)
      则
        (「标准错误打印行」于(『用法:』附(「条目」中「一」));
          「二」)
      否则
        虑「项目」者「当前管理项目」于「元」
        而
        虑「根」者
          若「字符串相等吗」于「命」于『网页服务』
          则
            (若「字符串相等吗」于(「读引用」于「指定项目」)于『』则「获取当前路径」于「元」否则「项目」)
          否则
            「项目」
        而
        若「字符串相等吗」于「根」于『』
        则
          (「标准错误打印行」
            于『未找到豫言仓库,请使用 --项目 路径 指定项目根目录。』;
            「二」)
        否则
          「执行工具条目」于「根」于「条目」于「参数」
    )
    或有「罄」则
      (「打印行」于(「命令帮助文本」于「命」);
        「零」)
也。