豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 519 行 · 23396 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「整数操作」之书。
寻观「标准库」之「数据结构」之「字符串术」之书。
寻观「标准库」之「数据结构」之「多态列」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「输入输出」之「笔」之书。
寻观「豫言终端」之「命令解析」之书。
寻观「豫言终端」之「程序解析」之书。
寻观「豫言终端」之「命令目录」之书。

「:
交互编辑结果的状态:零表示得到命令行,一表示输入结束,二表示用户取消。
编辑器只在行尾增删字符;候选区最多显示五行,并记录、清除上一次绘制的区域。
:」

「逃逸字符」者「字节转字符串」于「二七」也。

「换行字符」者「字节转字符串」于「一零」也。

「回车字符」者「字节转字符串」于「一三」也。

「清除当前行」者(「逃逸字符」附『[2K』)也。

「补全候选」即
  「字符串」 「:补全后的命令行:」
  合
    「字符串」 「:显示名称:」
也。

「删除末字符」乃化「字符串」而「字符串」也。
「删除末字符」者会「文本」而
  鉴(「反转」授以「字符串」于(「获取字符」于「文本」))而
    有「罄」则『』
    或有(「缀」于「末字符」于「其余反字符」)则
      「串组合并」于(「反转」授以「字符串」于「其余反字符」)
也。

「只含命令名」乃化「字符串」而「爻」也。
「只含命令名」者会「文本」而
  (「全部符合」授以「字符串」)
  于(会「字符」而「非」于(「是分隔字符」于「字符」))
  于(「获取字符」于「文本」)
也。

「引用程序名」乃化「字符串」而「字符串」也。
「引用程序名」者会「名称」而
  虑「需要引用」者
    (「存在吗」授以「字符串」)
    于(会「字符」而「或者」
      于(「是分隔字符」于「字符」)
      于(「或者」
        于(「字符串相等吗」于「字符」于(「字节转字符串」于「三四」))
        于(「字符串相等吗」于「字符」于(「字节转字符串」于「九二」))))
        于(「获取字符」于「名称」)而
  若「需要引用」
  则
    虑「反斜杠」者「字节转字符串」于「九二」而
    虑「双引号」者「字节转字符串」于「三四」而
    虑「反斜杠已转义」者
      「串查找替换」于「名称」于「反斜杠」于(「反斜杠」附「反斜杠」)而
      虑「双引号已转义」者
        「串查找替换」于「反斜杠已转义」于「双引号」于(「反斜杠」附「双引号」)
      而
      「双引号」附「双引号已转义」附「双引号」
  否则
    「名称」
也。

「分解当前词」乃化「字符串」而(「字符串」合「字符串」)也。
「分解当前词」者会「文本」而
  递归虑「继续分解」其化「整数」而化(「列」于「字符串」)而化「字符串」而化「字符串」而(「字符串」合「字符串」)者
    会「状态」而会「字符们」而会「已完成」而会「当前词」而
      鉴「字符们」而
        有「罄」则「已完成」与「当前词」
        或有(「缀」于「字符」于「字符尾」)则
          若「等于」于「状态」于「三」
          则
            「继续分解」
              于「零」于「字符尾」于「已完成」
              于(「当前词」附「字符」)
          否则若「等于」于「状态」于「四」
          则
            「继续分解」
              于「二」于「字符尾」于「已完成」
              于(「当前词」附「字符」)
          否则若「等于」于「状态」于「一」
          则
            若「字符串相等吗」于「字符」于『'』
            则
              「继续分解」
                于「零」于「字符尾」于「已完成」
                于(「当前词」附「字符」)
            否则
              「继续分解」
                于「一」于「字符尾」于「已完成」
                于(「当前词」附「字符」)
          否则若「等于」于「状态」于「二」
          则
            若「字符串相等吗」于「字符」于『"』
            则
              「继续分解」
                于「零」于「字符尾」于「已完成」
                于(「当前词」附「字符」)
            否则若「字符串相等吗」于「字符」于『\』
            则
              「继续分解」
                于「四」于「字符尾」于「已完成」
                于(「当前词」附「字符」)
            否则
              「继续分解」
                于「二」于「字符尾」于「已完成」
                于(「当前词」附「字符」)
          否则若「是分隔字符」于「字符」
          则
            「继续分解」
              于「零」于「字符尾」
              于(「已完成」附「当前词」附「字符」)于『』
          否则若「字符串相等吗」于「字符」于『'』
          则
            「继续分解」
              于「一」于「字符尾」于「已完成」
              于(「当前词」附「字符」)
          否则若「字符串相等吗」于「字符」于『"』
          则
            「继续分解」
              于「二」于「字符尾」于「已完成」
              于(「当前词」附「字符」)
          否则若「字符串相等吗」于「字符」于『\』
          则
            「继续分解」
              于「三」于「字符尾」于「已完成」
              于(「当前词」附「字符」)
          否则
            「继续分解」
              于「零」于「字符尾」于「已完成」
              于(「当前词」附「字符」)
  而
  「继续分解」于「零」于(「获取字符」于「文本」)于『』于『』
也。

「解读当前词」乃化「字符串」而(「爻」合「字符串」)也。
「解读当前词」者会「当前词」而
  若「字符串相等吗」于「当前词」于『』
  则
    「阳」与『』
  否则
    虑「解析结果」者「解析命令行」于「当前词」而
    若「解析结果」中「零」
    则
      鉴「解析结果」中「一」而
        有((「列」【「唯一词」】))则「阳」与「唯一词」
        或有「其他」则
          「阴」与『』
    否则
      「阴」与『』
也。

「制作命令补全候选」乃
  化「字符串」而
  化(「列」于「程序候选」)而
  (「列」于「补全候选」)
也。
「制作命令补全候选」者会「文本前缀」而会「候选们」而
  鉴「候选们」而
    有「罄」则「罄」
    或有(「缀」于「候选」于「候选尾」)则
      虑「名称」者「候选」中「一」而
      「缀」
        于((「文本前缀」附(「引用程序名」于「名称」)附『 』)与「名称」)
        于(「制作命令补全候选」于「文本前缀」于「候选尾」)
也。

「制作路径补全候选」乃
  化「字符串」而
  化(「列」于「程序候选」)而
  (「列」于「补全候选」)
也。
「制作路径补全候选」者会「文本前缀」而会「候选们」而
  鉴「候选们」而
    有「罄」则「罄」
    或有(「缀」于「候选」于「候选尾」)则
      虑「路径」者「候选」中「零」而
      虑「尾缀」者
        若「串结尾是它吗」于『/』于「路径」则『』否则『 』
      而
      「缀」
        于((「文本前缀」附(「引用程序名」于「路径」)附「尾缀」)与「路径」)
        于(「制作路径补全候选」于「文本前缀」于「候选尾」)
也。

「补全显示名已存在」乃化「字符串」而化(「列」于「补全候选」)而「爻」也。
「补全显示名已存在」者会「显示名」而会「候选们」而
  鉴「候选们」而
    有「罄」则「阴」
    或有(「缀」于「候选」于「候选尾」)则
      若「字符串相等吗」于「显示名」于(「候选」中「一」)
      则
        「阳」
      否则
        「补全显示名已存在」于「显示名」于「候选尾」
也。

「追加未见补全」乃
  化(「列」于「补全候选」)而
  化(「列」于「补全候选」)而
  (「列」于「补全候选」)
也。
「追加未见补全」者会「已有」而会「新增」而
  鉴「新增」而
    有「罄」则「已有」
    或有(「缀」于「候选」于「候选尾」)则
      若「补全显示名已存在」于(「候选」中「一」)于「已有」
      则
        「追加未见补全」于「已有」于「候选尾」
      否则
        「追加未见补全」于(「结尾多」授以「补全候选」于「已有」于「候选」)
        于「候选尾」
也。

「当前匹配候选可列空词」乃
  化「字符串」而
  化(「列」于「程序候选」)而
  化「爻」而
  (「列」于「补全候选」)
也。
「当前匹配候选可列空词」者会「文本」而会「候选索引」而会「列出空词」而
  虑「当前部分」者「分解当前词」于「文本」而
  虑「文本前缀」者「当前部分」中「零」而
  虑「当前词结果」者「解读当前词」于(「当前部分」中「一」)而
  虑「前缀解析」者「解析命令行」于「文本前缀」而
  若「且」于(「当前词结果」中「零」)于(「前缀解析」中「零」)
  则
    虑「当前词」者「当前词结果」中「一」而
    虑「管理候选」者「含全局选项的补全词」于(「前缀解析」中「一」)而
    虑「管理匹配」者
      若「字符串相等吗」于「当前词」于『』
      则
        (若「列出空词」则「管理候选」否则「罄」)
      否则
        「实时匹配程序」于「当前词」于「管理候选」
    而
    虑「管理补全」者「制作命令补全候选」于「文本前缀」于「管理匹配」而
    虑「原补全」者鉴「前缀解析」中「一」而
      有「罄」则(
        若「字符串相等吗」于「当前词」于『』
        则
          「罄」
        否则若「是子字符串吗」于『/』于「当前词」
        则
          「制作路径补全候选」
            于「文本前缀」
            于(「枚举路径候选」于「当前词」于「阴」)
        否则
          虑「本地候选」者
            「制作路径补全候选」
              于「文本前缀」
              于(「枚举路径候选」于「当前词」于「阴」)
          而
          虑「程序候选们」者
            「制作命令补全候选」
              于「文本前缀」
              于(「实时匹配程序」于「当前词」于「候选索引」)
          而
          「追加未见补全」于「本地候选」于「程序候选们」
      )
      或有「已有参数」则
        若「字符串相等吗」于「当前词」于『』
        则
          若「列出空词」
          则
            「制作路径补全候选」
              于「文本前缀」
              于(「枚举路径候选」于『』于「阴」)
          否则
            「罄」
        否则
          「制作路径补全候选」
            于「文本前缀」
            于(「枚举路径候选」于「当前词」于「阴」)而
    「:文言:命词先列,路径仍存。汉语:管理命令优先显示,继续保留原有文件和外部程序候选。:」
  「追加未见补全」于「管理补全」于「原补全」
  否则
    「罄」
也。

「当前匹配候选」乃
  化「字符串」而
  化(「列」于「程序候选」)而
  (「列」于「补全候选」)
也。
「当前匹配候选」者会「文本」而会「候选索引」而
  「当前匹配候选可列空词」于「文本」于「候选索引」于「阴」
也。

「空词可打开候选吗」乃化「字符串」而「爻」也。
「空词可打开候选吗」者会「文本」而
  虑「当前部分」者「分解当前词」于「文本」而
  「字符串相等吗」于(「当前部分」中「一」)于『』
也。

「是右方向键」乃化「字符串」而「爻」也。
「是右方向键」者会「按键」而
  「字符串相等吗」于「按键」于(「逃逸字符」附『[C』)
也。

「候选显示窗口」乃
  化「整数」而
  化(「列」于「补全候选」)而
  (「列」于「补全候选」)
也。
「候选显示窗口」者会「选中序数」而会「候选们」而
  鉴「候选们」而
    有「罄」则「罄」
    或有「其他」则
      (「取」授以「补全候选」)
      于「五」
      于((「放」授以「补全候选」)于(「乘」于(「除以」于「选中序数」于「五」)于「五」)于「候选们」)
也。

「候选窗口选中行」乃化「整数」而「整数」也。
「候选窗口选中行」者会「选中序数」而
  「减」于「选中序数」于(「乘」于(「除以」于「选中序数」于「五」)于「五」)
也。

「候选可见行数」乃化「整数」而「整数」也。
「候选可见行数」者会「总数」而
  若「大于」于「总数」于「五」则「五」否则「总数」
也。

「打印候选区域」乃
  化「整数」而
  化「整数」而
  化「整数」而
  化「整数」而
  化「整数」而
  化(「列」于「补全候选」)而
  「有」
也。
「打印候选区域」者会「行号」而会「区域行数」而会「可见行数」而会「选中序数」而会「总数」而会「窗口」而
  若「等于」于「行号」于「区域行数」
  则
    「元」
  否则
    (
      虑「无」者「打印」于(「换行字符」附「回车字符」附「清除当前行」)
      而
      若「小于」于「行号」于「可见行数」
      则
        鉴「窗口」而
          有「罄」则「打印候选区域」
            于(「加」于「行号」于「一」)
            于「区域行数」
            于「可见行数」
            于「选中序数」于「总数」于「罄」
          或有(「缀」于「候选」于「候选尾」)则(
            虑「无」者
              若「等于」于「行号」于(「候选窗口选中行」于「选中序数」)
              则
                「打印」于(「逃逸字符」附『[7m ❯ 』附(「候选」中「一」)附『 』附「逃逸字符」附『[0m  』附
                  (「整数表示」于(「加」于「选中序数」于「一」))附『/』附(「整数表示」于「总数」))
              否则
                「打印」于(『   』附(「候选」中「一」))
            而
            「打印候选区域」
              于(「加」于「行号」于「一」)
              于「区域行数」于「可见行数」于「选中序数」于「总数」于「候选尾」
          )
      否则
        「打印候选区域」于(「加」于「行号」于「一」)于「区域行数」于「可见行数」于「选中序数」于「总数」于「罄」
    )
也。

「重绘编辑器」乃
  化「字符串」而
  化「字符串」而
  化「整数」而
  化(「列」于「补全候选」)而
  化「整数」而
  「整数」
也。
「重绘编辑器」者会「提示」而会「文本」而会「选中序数」而会「候选们」而会「原区域行数」而
  虑「窗口」者「候选显示窗口」于「选中序数」于「候选们」而
  虑「总数」者(「长度」授以「补全候选」)于「候选们」而
  虑「可见行数」者「候选可见行数」于「总数」而
  虑「区域行数」者「整数最大值」于「原区域行数」于「可见行数」而
  虑「无」者
    「打印」于(「回车字符」附「清除当前行」附「提示」附「文本」)而
    虑「无」者
      「打印候选区域」于「零」于「区域行数」于「可见行数」于「选中序数」于「总数」于「窗口」而
      虑「无」者
        若「大于」于「区域行数」于「零」
        则
          「打印」于(「逃逸字符」附『[』附(「整数表示」于「区域行数」)附『A』附「回车字符」附「提示」附「文本」)
        否则
          「元」
      而
      「可见行数」
也。

「结束编辑器」乃化「字符串」而化「字符串」而化「字符串」而化「整数」而「有」也。
「结束编辑器」者会「提示」而会「文本」而会「尾记」而会「区域行数」而
  虑「新区域行数」者
    「重绘编辑器」于「提示」于「文本」于「零」于「罄」于「区域行数」
  而
  「打印行」于「尾记」
也。

「下个选中序数」乃化「整数」而化「整数」而「整数」也。
「下个选中序数」者会「当前」而会「总数」而
  若「等于」于(「加」于「当前」于「一」)于「总数」则
    「零」
  否则
    「加」于「当前」于「一」
也。

「读取交互命令行」乃
  化「字符串」而
  化(「列」于「程序候选」)而
  (「整数」合「字符串」)
也。
「读取交互命令行」者会「提示」而会「候选索引」而
  若「进入终端原始输入模式」于「元」
  则
    递归虑「继续编辑」其化「字符串」而化「整数」而化「整数」而化「爻」而(「整数」合「字符串」)者
      会「文本」而会「选中序数」而会「原区域行数」而会「空词候选已打开」而
      虑「候选们」者
        「当前匹配候选可列空词」于「文本」于「候选索引」于「空词候选已打开」而
        虑「候选数」者(「长度」授以「补全候选」)于「候选们」而
        虑「实际选中」者
          若「等于」于「候选数」于「零」则「零」
          否则
            若「小于」于「选中序数」于「候选数」则「选中序数」否则「零」
        而
        虑「可见行数」者
          「重绘编辑器」
            于「提示」于「文本」于「实际选中」于「候选们」于「原区域行数」
        而
        虑「读取结果」者「读取终端按键」于「元」
        而
        若「非」于(「读取结果」中「零」)
        则
          (「退出终端原始输入模式」于「元」;
            「结束编辑器」于「提示」于「文本」于『』于「可见行数」;
            (「一」与『』))
        否则
          虑「按键」者「读取结果」中「一」
          而
          虑「键码」者「字符转整数」于「按键」于「零」
          而
          若「或者」
            于(「等于」于「键码」于「一三」)
            于(「等于」于「键码」于「一零」)
          则
            (「退出终端原始输入模式」于「元」;
              「结束编辑器」于「提示」于「文本」于『』于「可见行数」;
              (「零」与「文本」))
          否则若「或者」
            于(「等于」于「键码」于「五」)
            于(「是右方向键」于「按键」)
          则
            若「大于」于「候选数」于「零」
            则
              虑「选中候选」者
                (「第N个」授以「补全候选」)于「实际选中」于「候选们」
              而
              「继续编辑」
                于(「选中候选」中「零」)于「零」于「可见行数」于「阴」
            否则
              (「打印」于(「字节转字符串」于「七」);
                「继续编辑」
                  于「文本」于「实际选中」于「可见行数」于「空词候选已打开」)
          否则若「等于」于「键码」于「九」
          则
            若「大于」于「候选数」于「零」
            则
              「继续编辑」
                于「文本」
                于(「下个选中序数」于「实际选中」于「候选数」)
                于「可见行数」于「空词候选已打开」
            否则若「且」
              于(「空词可打开候选吗」于「文本」)
              于(「非」于「空词候选已打开」)
            则
              「继续编辑」于「文本」于「零」于「可见行数」于「阳」
            否则
              (「打印」于(「字节转字符串」于「七」);
                「继续编辑」于「文本」于「零」于「可见行数」于「空词候选已打开」)
          否则若「或者」
            于(「等于」于「键码」于「一二七」)
            于(「等于」于「键码」于「八」)
          则
            「继续编辑」
              于(「删除末字符」于「文本」)于「零」于「可见行数」于「阴」
          否则若「等于」于「键码」于「三」
          则
            (「退出终端原始输入模式」于「元」;
              「结束编辑器」于「提示」于「文本」于『^C』于「可见行数」;
              (「二」与『』))
          否则若「且」
            于(「等于」于「键码」于「四」)
            于(「字符串相等吗」于「文本」于『』)
          则
            (「退出终端原始输入模式」于「元」;
              「结束编辑器」于「提示」于「文本」于『』于「可见行数」;
              (「一」与『』))
          否则若「或者」
            于(「小于」于「键码」于「三二」)
            于(「等于」于「键码」于「一二七」)
          则
            「继续编辑」
              于「文本」于「实际选中」于「可见行数」于「空词候选已打开」
          否则
            「继续编辑」于(「文本」附「按键」)于「零」于「可见行数」于「阴」
    而
    「继续编辑」于『』于「零」于「零」于「阴」
  否则
    (「标准错误打印行」于『无法进入终端原始输入模式』;
      (「一」与『』))
也。