豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 172 行 · 10275 字节 · UTF-8
§
寻观「编译器核心」之「编译步骤」之「总体过程」之「中间阶段工具」之书。

「:入口程序:」

寻观「标准库」之书。
寻观「构建基础」之「包上下文」之书。
寻观「构建基础」之「包定位」之书。
寻观「构建基础」之「并行编译」之书。
寻观「标准库」之「操作系统」之「异步子进程」之书。
寻观「编译器核心」之「编译步骤」之「总体过程」之「编译过程」之书。
寻观「编译器核心」之「编译步骤」之「总体过程」之「单一编译工作」之书。
寻观「编译器核心」之「编译数据」之「编译配置」之「全局配置」之书。

寻观「编译器核心」之「编译辅助工具」之「命令行」之「命令行参数处理」之书。
寻观「编译器核心」之「编译辅助工具」之「调试工具」之「调试入口」之书。
寻观「编译器核心」之「编译辅助工具」之「命令行」之「可打印文档」之书。
寻观「编译器核心」之「编译辅助工具」之「命令行」之「版本管理」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「编译器核心」之「编译数据」之「编译配置」之「编译期输出」之书。
寻观「编译器核心」之「编译步骤」之「代码生成」之「主程序生成入口」之书。

「参数」者(「命令行参数」之「获取参数」于「元」)也。

「参数长度」者「长度」于「参数」也。

「输入文件路径处理」乃化「字符串」而「字符串」也。
「输入文件路径处理」者会「串」而
  若「路径名是绝对路径」于「串」
  则
    「串」
  否则
    (「路径合并」于(「获取当前路径」于「元」)于「串」)
也。

「:文言:直呼编译器,亦委豫构,不复旧搜索。汉语:保留文件式命令入口,但无上下文的普通编译统一交给包构建系统;工作进程不得回退。:」
「委托包构建」乃化「字符串」而「整数」也。
「委托包构建」者会「文件」而
  虑「自己」者「真实路径」于(「命令行参数」之「获取程序名」于「元」)而
  虑「目录」者「获取文件夹名」于「自己」而
  「:文言:豫构或为网页汇编之模,依次寻之。汉语:依次找同目录的 yy豫构.wasm、yy豫构、yy豫构_stable.wasm、yy豫构_stable;.wasm 由 Node 宿主运行。:」
  虑「候选们」者
    「态射」授以「字符串」授以「字符串」
    于(「列」【『yy豫构.wasm』,『yy豫构』,『yy豫构_stable.wasm』,『yy豫构_stable』】)
    于(会「名」而「路径合并」于「目录」于「名」)而
    虑「找到」者
      「滤」授以「字符串」于(会「径」而「路径存在」于「径」)于「候选们」而
      虑「工具」者
        鉴「找到」而
          有(「缀」于「首」于「余」)则「首」
          或有「其他」则
            『』
      而
      若「串相等」于「工具」于『』则
        「发生事故」授以「整数」
        于『请安装与编译器配套的 yy豫构.wasm 或 yy豫构_stable.wasm』
      否则
        「操作系统」之「子进程」之「运行并传递输出」
          于「工具」
          于(「附加」授以「字符串」
            于(「列」【『文件』,「文件」,『--编译器』,「自己」,『--』】)
            于(「过滤编译输入」
              于(「第N个」授以「字符串」于「零」于(「读引用」授以(「列」于「字符串」)于「要编译的文件」))
              于「参数」))
也。

鉴「参数」而
  有「缀」于『stage』于「阶段参数」则
    「执行中间阶段命令」于「阶段参数」
  或有「缀」于『debug』于「调试参数」则(「进行调试」于「调试参数」)
  或有「其他」则
    (「处理命令行参数」于「参数」;
      (
        若(「读引用」于「需要显式帮助」)
        则
          (「打印行」于「帮助文本」)
        否则
          (
            若(「读引用」于「需要显式版本」)
            则
              (「打印行」于「当前豫言版本」)
            否则
              (
                若(「读引用」于「需要显式关于」)
                则
                  (「打印行」于「AGPL版权声明」)
                否则
                  (
                    虑「无」者
                      「非常粗略调试打印行」
                        于(会「无」而『当前路径:』附((「获取当前路径」于「元」)))
                    而
                    虑「所有输入文件」者
                      ((「态射」)
                      于((「读引用」授以(「列」于「字符串」))于「要编译的文件」)
                      于
                        「输入文件路径处理」
                      )而
                    鉴「所有输入文件」而
                      有((「列」【「文件名」】))则(
                        虑「无」者
                          (
                            若「且」
                              于(「非」于(「已启用包上下文」于「元」))
                              于(「串相等」于(「读引用」于「当前模式」)于『regular』)
                            则
                              「进程」之「退出」于(「委托包构建」于「文件名」)
                            否则
                              「元」
                          )
                        而
                        虑「无」者「确认包上下文输入」于「文件名」
                        而
                        虑「无」者
                          「写引用」
                            于「底层模式」
                            于(「上下文文件属底层」于「文件名」)而鉴(「读引用」于「当前模式」)而
                              有『regular』则
                                若「读引用」于「使用并行编译」
                                则
                                  「进程」之「退出」
                                    于(「并行编译」
                                      于(「命令行参数」之「获取程序名」于「元」)
                                      于「文件名」
                                      于(「过滤调度参数」
                                        于(「过滤编译输入」
                                          于(「第N个」授以「字符串」
                                          于「零」
                                          于(「读引用」授以(「列」于「字符串」)于「要编译的文件」))
                                          于「参数」))
                                          于(
                                          若「等于」
                                            于(「读引用」于「并行编译上限」)
                                            于「零」则
                                              「在线处理器数量」于「元」
                                          否则
                                            「读引用」于「并行编译上限」)
                                              于(「读引用」于「仅执行类型检查」))
                                否则
                                  (「所有依赖分析」于「文件名」;
                                    (「列」于「有」也(「态射」)
                                    于((「读引用」授以(「列」于「字符串」))于「文件编译顺序」)
                                    于(「进行编译」));
                                    (
                                      虑「退出状态」者
                                        「条件生成可执行程序并执行」于「文件名」
                                      而
                                      「进程」之「退出」于(「退出状态」)
                                    ))
                              或有『worker』则(
                                鉴「读引用」于
                                「单一工作模式任务」而
                                  有『exec-gen』则
                                    ((「写引用」授以(「列」于「字符串」))
                                    于「文件编译顺序」
                                    于((「附加」授以「字符串」)
                                    于((「读引用」授以(「列」于「字符串」))于「文件编译顺序」)
                                    于(((「列」于「字符串」)也((「列」【「文件名」】)))));
                                    「进程」之「退出」
                                      于(「条件生成可执行程序并执行」于「文件名」))
                                  或有「其他工作」则(「执行单一工作」于「文件名」)
                              )
                              或有「其他模式」
                              则(「发生事故」于『不识别的模式:』附(「其他模式」))
                      )
                      或有「其他输入文件」则
                        「发生事故」
                          于『期待单一文件名,所有文件』附(「串列表示」于「其他输入文件」)
                  )
              )
          )
      ))。