豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 254 行 · 13818 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「特殊字符」之书。
寻观「双宿主构建」之「宿主构建」之书。

「:文言:此篇纯函数,析自动模式之命令行,不涉磁盘。汉语:自动模式命令行解析:用法 yy双宿主构建 --自动 云工|浏览器|节点 应用目录 输出目录,并可跟若干选项;选项可以出现在位置参数之间或之后。所有校验(宿主模式、重复选项、缺少选项参数、命名入口只用于云工、浏览器与节点不用许可)都在这里完成,错误信息一律中文。:」

「自动用法」者
  『用法:yy双宿主构建 --自动 云工|浏览器|节点 应用目录 输出目录 [--包根 目录]… [--许可 文件|-] [--命名入口 名] [--编译器 路径] [--类型检查]』
也。

「:文言:解出之选:宿主模式、应用目录、输出目录、包根列、许可(空为未指定)、命名入口(-为无)、编译器、验类否。汉语:自动模式的选项:宿主模式、应用目录、输出目录、包根列表、许可文件(空串表示未指定,- 表示不用)、命名入口(- 表示无)、编译器路径、是否只做类型检查。:」
「自动选项」即
  「字符串」
  合「字符串」
  合「字符串」
  合(「列」于「字符串」)
  合「字符串」
  合「字符串」
  合「字符串」
  合「爻」
也。

「选项模式」乃化「自动选项」而「字符串」也。
「选项模式」者会「选项」而
  「选项」中「零」
也。

「选项应用目录」乃化「自动选项」而「字符串」也。
「选项应用目录」者会「选项」而
  「选项」中「一」
也。

「选项输出目录」乃化「自动选项」而「字符串」也。
「选项输出目录」者会「选项」而
  「选项」中「二」
也。

「选项包根们」乃化「自动选项」而(「列」于「字符串」)也。
「选项包根们」者会「选项」而
  「选项」中「三」
也。

「选项许可」乃化「自动选项」而「字符串」也。
「选项许可」者会「选项」而
  「选项」中「四」
也。

「选项命名入口」乃化「自动选项」而「字符串」也。
「选项命名入口」者会「选项」而
  「选项」中「五」
也。

「选项编译器」乃化「自动选项」而「字符串」也。
「选项编译器」者会「选项」而
  「选项」中「六」
也。

「选项类型检查」乃化「自动选项」而「爻」也。
「选项类型检查」者会「选项」而
  「选项」中「七」
也。

「:文言:扫描之态:位置参数(逆)、包根(逆)、许可、命名入口、编译器、验类。汉语:扫描过程中的状态:位置参数逆序列表、包根逆序列表、许可、命名入口、编译器、是否类型检查。:」
「参数状态」即
  (「列」于「字符串」)
  合(「列」于「字符串」)
  合「字符串」
  合「字符串」
  合「字符串」
  合「爻」
也。

「加位置参数」乃化「参数状态」而化「字符串」而「参数状态」也。
「加位置参数」者会「状态」而会「值」而
  (「缀」于「值」于(「状态」中「零」))与(「状态」中「一」)与(「状态」中「二」)与(「状态」中「三」)
    与(「状态」中「四」)与(「状态」中「五」)
也。

「加包根」乃化「参数状态」而化「字符串」而「参数状态」也。
「加包根」者会「状态」而会「值」而
  (「状态」中「零」)与(「缀」于「值」于(「状态」中「一」))与(「状态」中「二」)与(「状态」中「三」)
    与(「状态」中「四」)与(「状态」中「五」)
也。

「设许可」乃化「参数状态」而化「字符串」而「参数状态」也。
「设许可」者会「状态」而会「值」而
  (「状态」中「零」)与(「状态」中「一」)与「值」与(「状态」中「三」)与(「状态」中「四」)与(「状态」中「五」)
也。

「设命名入口」乃化「参数状态」而化「字符串」而「参数状态」也。
「设命名入口」者会「状态」而会「值」而
  (「状态」中「零」)与(「状态」中「一」)与(「状态」中「二」)与「值」与(「状态」中「四」)与(「状态」中「五」)
也。

「设编译器」乃化「参数状态」而化「字符串」而「参数状态」也。
「设编译器」者会「状态」而会「值」而
  (「状态」中「零」)与(「状态」中「一」)与(「状态」中「二」)与(「状态」中「三」)与「值」与(「状态」中「五」)
也。

「设类型检查」乃化「参数状态」而「参数状态」也。
「设类型检查」者会「状态」而
  (「状态」中「零」)与(「状态」中「一」)与(「状态」中「二」)与(「状态」中「三」)与(「状态」中「四」)与「阳」
也。

「取值选项吗」乃化「字符串」而「爻」也。
「取值选项吗」者会「名」而
  「或者」
    于(「字符串相等吗」于「名」于『--包根』)
    于(「或者」
      于(「字符串相等吗」于「名」于『--许可』)
      于(「或者」于(「字符串相等吗」于「名」于『--命名入口』)于(「字符串相等吗」于「名」于『--编译器』)))
也。

「:文言:取选项之值;无值,或值又似选项,则拒之(唯单一连字符可作值)。汉语:取选项后面的参数值,返回(值,剩余参数);缺少参数或后面紧跟另一个选项时抛出中文事故,单独一个 - 允许作为值。:」
「取选项值」乃
  化「字符串」而
  化(「列」于「字符串」)而
  (「字符串」合(「列」于「字符串」))
也。
「取选项值」者会「选项」而会「尾」而
  鉴「尾」而
    有(「缀」于「值」于「余」)则
      若「且」于(「串开头是它吗」于『--』于「值」)于(「非」于(「字符串相等吗」于「值」于『-』))
      则
        「发生事故」于(『选项 』附「选项」附『 缺少参数(后面紧跟的是另一个选项 』附「值」附『)』)
      否则
        「值」与「余」
    或有「罄」则「发生事故」于(『选项 』附「选项」附『 缺少参数』)
也。

「:文言:一次之选只可设一回。汉语:单值选项不允许重复出现:当前值不是初始哨兵值时说明已设置过。:」
「须未设」乃化「字符串」而化「字符串」而化「字符串」而「有」也。
「须未设」者会「选项」而会「当前」而会「哨兵」而
  若「字符串相等吗」于「当前」于「哨兵」则
    「元」
  否则
    「发生事故」于(『选项 』附「选项」附『 重复出现』)
也。

「:文言:依选项之名,纳其值于态。汉语:把一个带值选项的值记入状态;许可、命名入口、编译器三者不许重复。:」
「纳取值选项」乃化「字符串」而化「字符串」而化「参数状态」而「参数状态」也。
「纳取值选项」者会「选项」而会「值」而会「状态」而
  若「字符串相等吗」于「选项」于『--包根』则
    「加包根」于「状态」于「值」
  否则若「字符串相等吗」于「选项」于『--许可』
  则
    (虑「无」者「须未设」于「选项」于(「状态」中「二」)于『』而「设许可」于「状态」于「值」)
  否则若「字符串相等吗」于「选项」于『--命名入口』
  则
    (虑「无」者「须未设」于「选项」于(「状态」中「三」)于『-』而「设命名入口」于「状态」于「值」)
  否则
    (虑「无」者「须未设」于「选项」于(「状态」中「四」)于『』而「设编译器」于「状态」于「值」)
也。

「:文言:自左而右扫之。汉语:从左到右扫描参数:--类型检查 是开关,四个取值选项各带一个参数,其余以 -- 开头的是未知选项,剩下的是位置参数。:」
「扫描自动参数」乃化(「列」于「字符串」)而化「参数状态」而「参数状态」也。
「扫描自动参数」者会「参数们」而会「状态」而
  鉴「参数们」而
    有「罄」则「状态」
    或有(「缀」于「首」于「尾」)则
      若「字符串相等吗」于「首」于『--类型检查』则
        「扫描自动参数」于「尾」于(「设类型检查」于「状态」)
      否则若「取值选项吗」于「首」
      则
        (
          虑「取」者「取选项值」于「首」于「尾」而
          「扫描自动参数」
            于(「取」中「一」)
            于(「纳取值选项」于「首」于(「取」中「零」)于「状态」)
        )
      否则若「串开头是它吗」于『--』于「首」
      则
        「发生事故」于(『未知选项:』附「首」附『。可用选项:--包根 --许可 --命名入口 --编译器 --类型检查』)
      否则
        「扫描自动参数」于「尾」于(「加位置参数」于「状态」于「首」)
也。

「:文言:验模式、命名入口与许可,补编译器之默认。汉语:校验并组装选项:宿主模式必须是云工、浏览器或节点;命名入口只用于云工且须为 ASCII 标识符;浏览器与节点模式不使用许可文件(节点的运行授权在启动时由宿主选项给出);应用目录与输出目录不能为空;编译器默认 ./yy3_bs,不含斜杠的路径补 ./ 前缀。:」
「组装选项」乃
  化「字符串」而
  化「字符串」而
  化「字符串」而
  化「参数状态」而
  「自动选项」
也。
「组装选项」者会「模式」而会「应用」而会「输出」而会「状态」而
  虑「云工乎」者「字符串相等吗」于「模式」于『云工』而
  虑「浏览器乎」者「字符串相等吗」于「模式」于『浏览器』而
  虑「节点乎」者「字符串相等吗」于「模式」于『节点』而
  虑「无」者
    (
      若「或者」于「云工乎」于(「或者」于「浏览器乎」于「节点乎」)则
        「元」
      否则
        「发生事故」于(『宿主模式须为「云工」「浏览器」或「节点」,得到:』附「模式」)
    )而
    虑「无」者
      (
        若「或者」于(「字符串相等吗」于「应用」于『』)于(「字符串相等吗」于「输出」于『』)则
          「发生事故」于『应用目录与输出目录都不能为空』
        否则
          「元」
      )
    而
    虑「许可」者「状态」中「二」而
    虑「入口」者「状态」中「三」而
    虑「无」者
      (
        若「且」于(「非」于「云工乎」)于(「非」于(「字符串相等吗」于「入口」于『-』))则
          「发生事故」于『命名入口只用于云工模式』
        否则
          「元」
      )
    而
    虑「无」者
      (
        若「或者」于(「字符串相等吗」于「入口」于『-』)于(「入口名合法」于「入口」)则
          「元」
        否则
          「发生事故」于(『命名入口须为 ASCII 标识符:』附「入口」)
      )
    而
    虑「无」者
      (
        若「且」
          于(「或者」于「浏览器乎」于「节点乎」)
          于(「非」于(「或者」于(「字符串相等吗」于「许可」于『』)于(「字符串相等吗」于「许可」于『-』)))则
            「发生事故」于(「模式」附『模式不使用许可文件,请去掉 --许可』)
        否则
          「元」
      )
    而
    虑「原编译器」者「状态」中「四」而
    虑「编译器」者
      若「字符串相等吗」于「原编译器」于『』则
        『./yy4_bs.wasm』
      否则
        (若「是子字符串吗」于『/』于「原编译器」则「原编译器」否则『./』附「原编译器」)
    而
    「模式」与「应用」与「输出」与(「反转」授以「字符串」于(「状态」中「一」))与「许可」与「入口」与「编译器」
      与(「状态」中「五」)
也。

「:文言:析自动模式之命令行(不含 --自动 本身)。汉语:解析 --自动 之后的全部参数,返回自动选项;参数个数不对时抛出带用法的中文事故。:」
「解析自动参数」乃化(「列」于「字符串」)而「自动选项」也。
「解析自动参数」者会「参数们」而
  虑「末」者
    「扫描自动参数」于「参数们」于((「罄」授以「字符串」)与(「罄」授以「字符串」)与『』与『-』与『』与「阴」)而
  鉴(「反转」授以「字符串」于(「末」中「零」))而
    有(「缀」于「模式」于(「缀」于「应用」于(「缀」于「输出」于「罄」)))则「组装选项」
      于「模式」于「应用」于「输出」于「末」
    或有「其他」则
      「发生事故」于(『自动模式需要恰好三个位置参数(宿主模式、应用目录、输出目录)。』附「新行」附「自动用法」)
也。