豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 558 行 · 26860 字节 · UTF-8
§
「:
文言:构建编排之行:析命令行,取所求目标及其所依,拆为调度之务,交构建基础之调度器并行之;键未变者跳过。
汉语:构建编排的执行部分:解析构建程序的命令行,取出所求目标及其依赖闭包,把每个目标拆成“检查、各步骤、完成”一串调度任务,交给构建基础的调度器并行执行;缓存键未变的目标直接跳过。
:」

寻观「标准库」之书。
寻观「标准库」之「数据结构」之「字符串术」之书。
寻观「标准库」之「数据结构」之「多态列」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「操作系统」之「子进程」之书。
寻观「标准库」之「操作系统」之「异步子进程」之书。
寻观「标准库」之「操作系统」之「时间」之书。
寻观「标准库」之「控制」之「异步」之书。
寻观「标准库」之「输入输出」之「笔」之书。
寻观「标准库」之「语言核心」之「异常」之书。
寻观「标准库」之「数学运算」之「转换」之书。
寻「标准库」之「数据结构」之「小数操作」之书。
寻观「构建基础」之「调度器」之书。
寻观「构建编排」之「定义」之书。

「限时可用」乃「爻」也。
「限时可用」者(「查找可执行程序」于『timeout』)中「零」也。

「经过秒数」乃化「小数」而「整数」也。
「经过秒数」者会「起点」而
  「除以」
    于(「小数转整数」于(「小数操作」之「减」于(「获取当前纳秒时间」于「元」)于「起点」))于「一零零零零零零零零零」
也。

「即成」乃化「有」而(「异步任务」于「子进程结果」)也。
「即成」者会「无」而
  「立即完成」授以「子进程结果」于(「零」与「零」与『』与『』)
也。

「:文言:启一外令;定目录者,暂迁而启,启毕即还(协作调度,无并发之虞)。汉语:启动一条外部命令;指定工作目录时先切换目录再启动,启动后立即切回(单线程协作调度,不会与其他任务交错)。:」
「启动命令」乃
  化「字符串」而
  化(「列」于「字符串」)而
  化「字符串」而
  化「整数」而
  (「异步任务」于「子进程结果」)
也。
「启动命令」者会「程序」而会「参数们」而会「工作目录」而会「秒数」而
  虑「用限时」者「且」于「限时可用」于(「大于」于「秒数」于「零」)而
  虑「实程序」者(若「用限时」则『timeout』否则「程序」)而
  虑「实参数」者
    (
      若「用限时」
      则
        「附加」授以「字符串」
        于(「列」【『-k』,『10』,(「整数表示」于「秒数」),「程序」】)
        于「参数们」
      否则
        「参数们」
    )
  而
  若「串相等」于「工作目录」于『』
  则
    「异步获取输出」于「实程序」于「实参数」
  否则
    虑「原目录」者「获取当前路径」于「元」而
    虑「切入」者「切换当前路径」于「工作目录」而
    若「非」于(「等」于(「切入」中「零」)于「零」)
    则
      「发生事故」授以(「异步任务」于「子进程结果」)
      于(『无法进入工作目录:』附「工作目录」附『:』附(「切入」中「一」))
    否则
      虑「已启」者「异步获取输出」于「实程序」于「实参数」
      而
      虑「无」者「切换当前路径」于「原目录」而
      「已启」
也。

「启动步骤」乃
  化(「引用类」于「爻」)而
  化「步骤」而
  (「异步任务」于「子进程结果」)
也。
「启动步骤」者会「跳过」而会「某步」而
  若「读引用」授以「爻」于「跳过」
  则
    「即成」于「元」
  否则
    (
      鉴「某步」而
        有(「命令」于「程序」于「参数们」于「工作目录」于「秒数」)则
          「启动命令」
            于「程序」
            于「参数们」
            于「工作目录」于「秒数」
        或有(「函数」于「函数说明」于「函数体」)则
          (「函数体」于「元」;
            「即成」于「元」)
        或有(「独占」于「独占组名」于「内步」)则
          「启动步骤」于「跳过」于「内步」
    )
也。

「完成名」乃化「字符串」而「字符串」也。
「完成名」者会「名称」而
  「名称」附『#完成』
也。

「:文言:目标之名是否在列。汉语:判断名称是否在名单中。:」
「含名」乃化(「列」于「字符串」)而化「字符串」而「爻」也。
「含名」者会「名称们」而会「名称」而
  鉴「名称们」而
    有「罄」则「阴」
    或有(「缀」于「首名」于「余名」)则
      若「串相等」于「首名」于「名称」则「阳」否则「含名」于「余名」于「名称」
也。

「:文言:组表记每独占组末一务之名。汉语:组表记录每个独占组里最后一个任务的名称,用来把同组步骤串成一条链。:」
「组中末任务」乃
  化(「列」于(「字符串」合「字符串」))而
  化「字符串」而
  (「或可有」于「字符串」)
也。
「组中末任务」者会「组表」而会「组名」而
  鉴「组表」而
    有「罄」则(「可无」授以「字符串」)
    或有(「缀」于「首条」于「余条」)则
      若「串相等」于(「首条」中「零」)于「组名」
      则
        (「可有」授以「字符串」于(「首条」中「一」))
      否则
        「组中末任务」于「余条」于「组名」
也。

「更新组表」乃
  化(「列」于(「字符串」合「字符串」))而
  化「字符串」而
  化「字符串」而
  (「列」于(「字符串」合「字符串」))
也。
「更新组表」者会「组表」而会「组名」而会「任务名」而
  「缀」授以(「字符串」合「字符串」)
  于(「组名」与「任务名」)
  于((「滤」授以(「字符串」合「字符串」))
  于(会「某条」而「非」于(「串相等」于(「某条」中「零」)于「组名」))
  于「组表」
  )
也。

「步骤独占组」乃化「步骤」而(「或可有」于「字符串」)也。
「步骤独占组」者会「某步」而
  鉴「某步」而
    有(「独占」于「独占组名」于「内步」)则(「可有」授以「字符串」于「独占组名」)
    或有「其他」则(「可无」授以「字符串」)
也。

「组依赖名们」乃
  化「步骤」而
  化(「列」于(「字符串」合「字符串」))而
  (「列」于「字符串」)
也。
「组依赖名们」者会「某步」而会「组表」而
  鉴「步骤独占组」于「某步」而
    有「可无」则(「罄」授以「字符串」)
    或有(「可有」于「组名」)则(
      鉴「组中末任务」于「组表」于「组名」而
        有(「可有」于「末任务名」)则(「缀」授以「字符串」于「末任务名」于(「罄」授以「字符串」))
        或有「可无」则(「罄」授以「字符串」)
    )
也。

「步后组表」乃
  化「步骤」而
  化(「列」于(「字符串」合「字符串」))而
  化「字符串」而
  (「列」于(「字符串」合「字符串」))
也。
「步后组表」者会「某步」而会「组表」而会「任务名」而
  鉴「步骤独占组」于「某步」而
    有「可无」则「组表」
    或有(「可有」于「组名」)则
      「更新组表」于「组表」于「组名」于「任务名」
也。

「:文言:诸步相继为务;独占之步并待其组前一务。汉语:把步骤依次变成任务,后一步依赖前一步;独占步骤另外依赖同组的前一个任务。返回任务列与更新后的组表。:」
「步骤任务们」乃
  化「字符串」而
  化(「引用类」于「爻」)而
  化「整数」而
  化「字符串」而
  化(「列」于「步骤」)而
  化(「列」于(「字符串」合「字符串」))而
  ((「列」于「构建任务」)合(「列」于(「字符串」合「字符串」)))
也。
「步骤任务们」者会「名称」而会「跳过」而会「序号」而会「前名」而会「余步」而会「组表」而
  鉴「余步」而
    有「罄」则((「罄」授以「构建任务」)与「组表」)
    或有(「缀」于「首步」于「后步」)则
      虑「本名」者「名称」附『#』附(「整数表示」于「序号」)而
      虑「本任务」者
        「新构建任务」
          于「本名」
          于(「缀」授以「字符串」于「前名」于(「组依赖名们」于「首步」于「组表」))
          于(会「无」而「启动步骤」于「跳过」于「首步」)
          于(会「结果」而「元」)
      而
      虑「后续」者
        「步骤任务们」
          于「名称」
          于「跳过」
          于(「加」于「序号」于「一」)
          于「本名」于「后步」
          于(「步后组表」于「首步」于「组表」于「本名」)
      而
      ((「缀」授以「构建任务」于「本任务」于(「后续」中「零」))与(「后续」中「一」))
也。

「:文言:一目标为一串之务:检查定其跳否,诸步相继,完成书印而报;所依限于所选之中。汉语:一个目标对应一串任务:检查任务决定是否跳过,各步骤依次执行,完成任务写印记并报告;只等待同在所选范围内的依赖。返回任务列与更新后的组表。:」
「目标任务们」乃
  化「构建目标」而
  化「爻」而
  化(「列」于「字符串」)而
  化(「列」于(「字符串」合「字符串」))而
  ((「列」于「构建任务」)合(「列」于(「字符串」合「字符串」)))
也。
「目标任务们」者会「某目标」而会「强制」而会「所选名们」而会「组表」而
  虑「名称」者「目标名称」于「某目标」而
  虑「跳过」者「新引用」授以「爻」于「阴」而
  虑「键引用」者「新引用」授以「字符串」于『』而
  虑「起时」者「新引用」授以「小数」于(「获取当前纳秒时间」于「元」)而
  虑「检查名」者「名称」附『#检查』而
  虑「步数」者「长度」授以「步骤」于(「目标步骤」于「某目标」)而
  虑「末名」者
    (若「等」于「步数」于「零」则「检查名」否则「名称」附『#』附(「整数表示」于「步数」))而
    虑「所待们」者
      (「态射」授以「字符串」授以「字符串」)
      于((「滤」授以「字符串」)于(会「依赖名」而「含名」于「所选名们」于「依赖名」)于(「目标依赖」于「某目标」))
      于「完成名」
    而
    虑「检查任务」者
      「新构建任务」
        于「检查名」
        于「所待们」
        于(会「无」
  而
  虑「键」者「目标键」于「某目标」而
  虑「最新」者
    「且」于(「非」于「强制」)于(「已最新」于「某目标」于「键」)而
    虑「无」者「写引用」授以「字符串」于「键引用」于「键」而
    虑「无」者「写引用」授以「爻」于「跳过」于「最新」而
    虑「无」者
      「写引用」授以「小数」于「起时」于(「获取当前纳秒时间」于「元」)
    而
    虑「无」者
      (若「最新」则「元」否则「打印行」于(『【开始】』附「名称」))
    而
    「即成」于「元」
        )
        于(会「结果」而「元」)
    而
    虑「完成任务」者
      「新构建任务」
        于(「完成名」于「名称」)
        于(「列」【「末名」】)
        于(会「无」
          而
  虑「无」者
    (
      若「读引用」授以「爻」于「跳过」
      则
        「打印行」于(『【已最新】』附「名称」)
      否则
        (
          虑「无」者
            (
              若「可缓存」于「某目标」
              则
                「写文件」
                  于(「印记路径」于「名称」)
                  于(「读引用」授以「字符串」于「键引用」)
              否则
                「元」
            )
          而
          「打印行」
            于(『【完成】』附「名称」附『(』附(「整数表示」于(「经过秒数」于(「读引用」授以「小数」于「起时」)))
            附『 秒)』)
        )
    )
  而
  「即成」于「元」
        )
        于(会「结果」而「元」)
    而
    虑「步段」者
      「步骤任务们」于「名称」于「跳过」于「一」于「检查名」于(「目标步骤」于「某目标」)于「组表」
    而
    ((「缀」授以「构建任务」
      于「检查任务」
      于(「附加」授以「构建任务」于(「步段」中「零」)于(「列」【「完成任务」】)))
        与(「步段」中「一」)
    )
也。

「:文言:依所依排序:所依在前;所依不在所选者不计;成环则止。汉语:按依赖做拓扑排序,依赖在前;不在所选范围内的依赖不计;有环即报错。:」
「拓扑排序」乃
  化(「列」于「构建目标」)而
  化(「列」于「构建目标」)而
  (「列」于「构建目标」)
也。
「拓扑排序」者会「剩余」而会「已排」而
  虑「所选名们」者
    (「态射」授以「构建目标」授以「字符串」)
    于(「附加」授以「构建目标」于「剩余」于「已排」)
    于「目标名称」而
    虑「已排名们」者
      (「态射」授以「构建目标」授以「字符串」)于「已排」于「目标名称」而
      虑「可排」者
        (「滤」授以「构建目标」)
        于(会「候选」而
          「等」
            于(「长度」授以「字符串」
              于((「滤」授以「字符串」)
              于(会「依赖名」而「且」
                于(「含名」于「所选名们」于「依赖名」)
                于(「非」于(「含名」于「已排名们」于「依赖名」)))
                于(「目标依赖」于「候选」)))
                于「零」
        )
        于「剩余」
      而
      若「等」于(「长度」授以「构建目标」于「剩余」)于「零」
      则
        「已排」
      否则
        (
          若「等」于(「长度」授以「构建目标」于「可排」)于「零」
          则
            「发生事故」授以(「列」于「构建目标」)
            于(『目标依赖成环:』附(「间合」
              于『、』
              于((「态射」授以「构建目标」授以「字符串」)于「剩余」于「目标名称」)))
          否则
            「拓扑排序」
              于((「滤」授以「构建目标」)
              于(会「候选」而「非」
                于(「含名」
                  于((「态射」授以「构建目标」授以「字符串」)于「可排」于「目标名称」)
                  于(「目标名称」于「候选」)))
                  于「剩余」)
                  于(「附加」授以「构建目标」于「已排」于「可排」)
        )
也。

「查目标」乃
  化(「列」于「构建目标」)而
  化「字符串」而
  (「或可有」于「构建目标」)
也。
「查目标」者会「目标们」而会「名称」而
  鉴「目标们」而
    有「罄」则(「可无」授以「构建目标」)
    或有(「缀」于「首目标」于「余目标」)则
      若「串相等」于(「目标名称」于「首目标」)于「名称」
      则
        (「可有」授以「构建目标」于「首目标」)
      否则
        「查目标」于「余目标」于「名称」
也。

「目标名单」乃化(「列」于「构建目标」)而「字符串」也。
「目标名单」者会「目标们」而
  「间合」于『、』于((「态射」授以「构建目标」授以「字符串」)于「目标们」于「目标名称」)
也。

「:文言:自所求者起,遍其所依,得闭包之诸目标。汉语:从所求目标出发遍历依赖,得到需要执行的全部目标。:」
「目标闭包」乃
  化(「列」于「构建目标」)而
  化(「列」于「字符串」)而
  化(「列」于「构建目标」)而
  (「列」于「构建目标」)
也。
「目标闭包」者会「目标们」而会「待访」而会「已得」而
  鉴「待访」而
    有「罄」则「已得」
    或有(「缀」于「首名」于「余访」)则
      若「含名」于((「态射」授以「构建目标」授以「字符串」)于「已得」于「目标名称」)
      于「首名」
      则
        「目标闭包」于「目标们」于「余访」于「已得」
      否则
        (
          鉴「查目标」于「目标们」于「首名」而
            有(「可有」于「所求目标」)则
              「目标闭包」
                于「目标们」
                于(「附加」授以「字符串」于(「目标依赖」于「所求目标」)于「余访」)
                于(「缀」授以「构建目标」于「所求目标」于「已得」)
            或有「可无」则
              「发生事故」授以(「列」于「构建目标」)
              于(『未知目标:』附「首名」附『。可用目标:』附(「目标名单」于「目标们」))
        )
也。

「:文言:命令行之所解:目标、并发、强制、但列。汉语:命令行解析结果:目标名单、并发数、是否强制、是否只列出。:」
「解析参数」乃
  化(「列」于「字符串」)而
  化((「列」于「字符串」)合「整数」合「爻」合「爻」)而
  ((「列」于「字符串」)合「整数」合「爻」合「爻」)
也。
「解析参数」者会「余参」而会「已解」而
  鉴「余参」而
    有「罄」则「已解」
    或有(「缀」于「首参」于「后参」)则
      若「串相等」于「首参」于『-j』
      则
        (
          鉴「后参」而
            有「罄」则(「发生事故」授以((「列」于「字符串」)合「整数」合「爻」合「爻」)于『-j 之后须写并发数』)
            或有(「缀」于「并发文」于「再后参」)则
              「解析参数」
                于「再后参」
                于((「已解」中「零」)与(「理解整数」于「并发文」)与(「已解」中「二」)与(「已解」中「三」))
        )
      否则
        (
          若「串相等」于「首参」于『--强制』
          则
            「解析参数」
              于「后参」
              于((「已解」中「零」)与(「已解」中「一」)与「阳」与(「已解」中「三」))
          否则
            (
              若「串相等」于「首参」于『--列出』
              则
                「解析参数」
                  于「后参」
                  于((「已解」中「零」)与(「已解」中「一」)与(「已解」中「二」)与「阳」)
              否则
                (
                  若「串开头是它吗」于『-』于「首参」
                  则
                    (「发生事故」授以((「列」于「字符串」)合「整数」合「爻」合「爻」)
                    于(『未知选项:』附「首参」))
                  否则
                    「解析参数」
                      于「后参」
                      于((「缀」授以「字符串」于「首参」于(「已解」中「零」))与(「已解」中「一」)
                        与(「已解」中「二」)与(「已解」中「三」))
                )
            )
        )
也。

「列出目标」乃化(「列」于「构建目标」)而「有」也。
「列出目标」者会「目标们」而
  鉴「目标们」而
    有「罄」则「元」
    或有(「缀」于「首目标」于「余目标」)则
      虑「无」者
        「打印行」于((「目标名称」于「首目标」)附『    』附(「目标说明」于「首目标」))
      而
      「列出目标」于「余目标」
也。

「:文言:但取所求之目标,不及所依;有不识者则止。汉语:只取所求的目标本身,不展开依赖;遇到未知目标即报错。:」
「只取所求」乃
  化(「列」于「构建目标」)而
  化(「列」于「字符串」)而
  (「列」于「构建目标」)
也。
「只取所求」者会「目标们」而会「所求们」而
  (「态射」授以「字符串」授以「构建目标」)
  于「所求们」
  于(会「所求名」而
  鉴「查目标」于「目标们」于「所求名」而
    有(「可有」于「所求目标」)则「所求目标」
    或有「可无」则
      「发生事故」授以「构建目标」于(『未知目标:』附「所求名」附『。可用目标:』附(「目标名单」于「目标们」)))
也。

「:文言:执所求之目标,返退码;连带者并执其所依。汉语:执行给定名称的目标,返回退出码(零为成功);连带为阳时连同依赖一起执行,为阴时只执行所求目标本身。:」
「执行目标」乃
  化(「列」于「构建目标」)而
  化(「列」于「字符串」)而
  化「整数」而
  化「爻」而
  化「爻」而
  「整数」
也。
「执行目标」者会「目标们」而会「所求们」而会「并发」而会「强制」而会「连带」而
  虑「闭包」者
    (
      若「连带」
      则
        「目标闭包」于「目标们」于「所求们」于(「罄」授以「构建目标」)
      否则
        「只取所求」于「目标们」于「所求们」
    )
  而
  虑「排序后」者「拓扑排序」于「闭包」于(「罄」授以「构建目标」)而
  虑「所选名们」者
    (「态射」授以「构建目标」授以「字符串」)于「排序后」于「目标名称」而
    虑「无」者
      「获取输出」于『mkdir』于(「列」【『-p』,「印记目录」】)
    而
    虑「折叠果」者
      「从左折叠」授以「构建目标」授以((「列」于「构建任务」)合(「列」于(「字符串」合「字符串」)))
      于(会「某目标」而会「已有」
  而
  虑「本段」者
    「目标任务们」于「某目标」于「强制」于「所选名们」于(「已有」中「一」)
  而
  ((「附加」授以「构建任务」于(「已有」中「零」)于(「本段」中「零」))与(「本段」中「一」)))
  于((「罄」授以「构建任务」)与(「罄」授以(「字符串」合「字符串」)))
  于「排序后」
    而
    虑「任务们」者「折叠果」中「零」而
    虑「起点」者「获取当前纳秒时间」于「元」而
    虑「码」者
      「执行任务图」于(「新引用」授以(「列」于「构建任务」)于「任务们」)
      于「并发」
    而
    虑「无」者
      (
        若「等」于「码」于「零」
        则
          「打印行」于(『构建成功(』附(「整数表示」于(「经过秒数」于「起点」))附『 秒)』)
        否则
          「标准错误打印行」于(『构建失败,退出码 』附(「整数表示」于「码」))
      )
    而
    「码」
也。

「:文言:构建程序之主:依命令行执其目标而退。汉语:构建程序的主函数:按命令行执行目标后以相应退出码结束进程。用法:程序 [目标…] [-j 并发] [--强制] [--不连带] [--列出];不给目标时执行“全部”;--不连带 只执行所列目标本身,不执行其依赖。:」
「构建程序主函数」乃化(「列」于「构建目标」)而「有」也。
「构建程序主函数」者会「目标们」而
  虑「原参数们」者「获取参数」于「元」而
  虑「连带」者「非」于(「含名」于「原参数们」于『--不连带』)而
  虑「解」者
    「解析参数」
      于((「滤」授以「字符串」)于(会「某参」而「非」于(「串相等」于「某参」于『--不连带』))于「原参数们」)
      于((「罄」授以「字符串」)与(「在线处理器数量」于「元」)与「阴」与「阴」)
  而
  若「解」中「三」
  则
    (「列出目标」于「目标们」;
      「进程」之「退出」于「零」)
  否则
    虑「目标参数」者「解」中「零」而
    虑「所求们」者
      (
        若「等」于(「长度」授以「字符串」于「目标参数」)于「零」
        则
          (「缀」授以「字符串」于『全部』于(「罄」授以「字符串」))
        否则
          「反转」授以「字符串」于「目标参数」
      )
    而
    「进程」之「退出」于(「执行目标」于「目标们」于「所求们」于(「解」中「一」)于(「解」中「二」)于「连带」)
也。