寻观「标准库」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「数据结构」之「字典术」之书。
寻观「拓展库」之「癸象工具」之「总集」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「总集」之书。

「：
软件架构说明

本文件是编译器与编辑器扩展之间的语言服务资料层。它不直接响应编辑器请求，
而是在正常编译过程中收集名称与类型资料，再将资料写入构建缓存。编辑器扩展
收到悬停或跳转请求时，只需读取最近一次编译留下的语言服务癸象文件，因此编译器
本身无需常驻，也不需要另设通信进程。

一、整体资料流

一．分布编译步骤在读取某个源文件的抽象语法后，调用「准备语言服务信息」。
   此操作读取原始源码，并清空本文件中属于上一文件的收集状态。

二．名称解析负责确定每个名称究竟引用哪个局部绑定、文件定义或构造器。
   名称一旦解析成功，便调用「标注引用语言服务信息」：一方面记录“引用范围到
   定义范围”的关系，另一方面把原表达式包在「源码范围标注节点」中。跳转到定义
   因而在名称解析这个拥有最准确信息的阶段完成，不依赖之后的类型推断结果。

三．类型检查遇到「源码范围标注节点」时，先照常求得被标注表达式的类型，再调用
   「悬停类型文字」与「记录悬停文字信息」，最后只返回检查后的原表达式。
   标注节点是名称解析与类型检查之间的暂存节点，绝不能流入擦除、优化或代码生成。
   顶层定义和构造器没有普通引用节点包裹，所以文件结构检查会另外调用
   「记录定义悬停」，为定义处补上悬停资料。

四．类型检查结束后，分布编译步骤调用「写语言服务信息」，把本文件收集的资料
   与源文件、检查后定义等产物放在同一个构建缓存目录。编辑器扩展从最新缓存中
   找到对应源文件的“语言服务”产物，按请求筛选覆盖光标且范围最窄的一项。

二、本文件内部的分层

资料模型层由「语言服务信息」与「源码范围」组成。目前只有两种资料：
「定义位置信息」保存引用范围及目标范围；「悬停文字信息」保存范围及显示文字。

源码定位层由「源码搜索状态」及一组“寻找源码……”函数组成。抽象语法树目前
不永久保存词法位置，因此本层从原始源码中重建名称范围。搜索器会跳过字符串和
可嵌套注释，并使用单调向前的游标，使名称解析遍历与源码遍历大体保持线性。
引用搜索与声明搜索各有独立游标，避免寻找声明时消耗引用位置。跨文件定义范围
则存入「定义范围缓存」，防止同一外部定义被反复读取和扫描。

显示层由「内建常量悬停表示」「悬停类型表示」和「悬停类型文字」组成。这里使用
面向使用者的中文类型表示，不调用抽象语法树的调试表示器，避免把内部节点名称、
缓存路径和调试符号泄漏到悬停内容。

收集层以「当前语言服务文件」「当前语言服务信息」及两个搜索状态引用保存一次
文件编译期间的临时状态。并行编译以独立进程处理文件，所以这些进程内引用不会
在不同源文件之间共享；即便如此，每次处理文件仍必须先调用准备函数完成重置。

序列化层把内部资料转换为癸象对象。对外协议只使用中文字段与中文种类值：根对象
包含“版本、源文件、信息”；范围包含“文件、开始行、开始列、结束行、结束列”；
资料种类为“定义”或“悬停”。编辑器扩展会严格检查这些字段，旧协议不会复用。

三、必须保持的约定

所有行列均从零开始，范围采用左闭右开的半开区间。文件路径用于唯一标识源文件，
定义目标可以位于另一文件。收集时使用前衔写入以降低逐项追加成本，序列化前必须
反转，才能恢复源码顺序。若增加新的语言服务资料种类，必须同时更新本文件的资料
模型与序列化分支，以及编辑器扩展的解析和请求处理。若改变名称解析或类型检查中
对标注节点的处理，也必须确认标注节点在类型检查结束时已被完全移除。
：」

「语言服务信息」立「元类型」也。
  「定义位置信息」立化「源码范围」而化「源码范围」而「语言服务信息」也。
  「悬停文字信息」立化「源码范围」而化「字符串」而「语言服务信息」也。

「源码搜索状态」即（「列」于「字符串」）合「整数」合「整数」也。 「：剩余字符、当前行、当前列。：」

「当前语言服务文件」者「新引用」授以「字符串」于『』也。
「当前语言服务信息」者「新引用」授以（「列」于「语言服务信息」）于「罄」也。
「当前名称搜索状态」者「新引用」授以「源码搜索状态」于（「罄」与「零」与「零」）也。
「当前定义搜索状态」者「新引用」授以「源码搜索状态」于（「罄」与「零」与「零」）也。
「定义范围缓存」者「新引用」授以（「串典」于「源码范围」）于「空串典」也。
「当前悬停范围缓存」者「新引用」授以（「串典」于「有」）于「空串典」也。

「构造源码范围」乃化「字符串」而化「整数」而化「整数」而化「整数」而化「整数」而「源码范围」也。
「构造源码范围」者会「文件」而会「开始行」而会「开始列」而会「结束行」而会「结束列」而
  「文件」与「开始行」与「开始列」与「结束行」与「结束列」也。

「源码范围文件」乃化「源码范围」而「字符串」也。
「源码范围文件」者会「范围」而「范围」中「零」也。
「源码范围开始行」乃化「源码范围」而「整数」也。
「源码范围开始行」者会「范围」而「范围」中「一」也。
「源码范围开始列」乃化「源码范围」而「整数」也。
「源码范围开始列」者会「范围」而「范围」中「二」也。
「源码范围结束行」乃化「源码范围」而「整数」也。
「源码范围结束行」者会「范围」而「范围」中「三」也。
「源码范围结束列」乃化「源码范围」而「整数」也。
「源码范围结束列」者会「范围」而「范围」中「四」也。

「悬停范围缓存键」乃化「源码范围」而「字符串」也。
「悬停范围缓存键」者会「范围」而
  （「源码范围文件」于「范围」）附『:』附
    （「整数表示」于（「源码范围开始行」于「范围」））附『:』附
    （「整数表示」于（「源码范围开始列」于「范围」））附『:』附
    （「整数表示」于（「源码范围结束行」于「范围」））附『:』附
    （「整数表示」于（「源码范围结束列」于「范围」））
也。

「语言服务信息范围」乃化「语言服务信息」而「源码范围」也。
「语言服务信息范围」者会「信息」而
  鉴「信息」而
    有（「定义位置信息」于「范围」于「忽略目标」）则「范围」
    或有（「悬停文字信息」于「范围」于「忽略内容」）则「范围」
也。

「源码范围开始早于」乃化「源码范围」而化「源码范围」而「爻」也。
「源码范围开始早于」者会「范围」而会「边界」而
  若（「小于」于（「源码范围开始行」于「范围」）于（「源码范围开始行」于「边界」））则「阳」
  否则
    「且」于（「等」于（「源码范围开始行」于「范围」）于（「源码范围开始行」于「边界」））
    于（「小于」于（「源码范围开始列」于「范围」）于（「源码范围开始列」于「边界」））
也。

「内建常量悬停表示」乃化「内建常量」而「字符串」也。
「内建常量悬停表示」者会「常量」而
  鉴「常量」而
    有「内建类型字符串」则『字符串』
    或有「内建类型整数」则『整数』
    或有「内建类型小数」则『小数』
    或有「内建类型动态分类值」则『动态分类值』
    或有「内建类型有」则『有』
    或有「内建类型爻」则『爻』
    或有「内建类型元类型」则『元类型』
    或有「内建爻阳」则『阳』
    或有「内建爻阴」则『阴』
    或有「内建有元」则『元』
    或有「内建函数抛出异常」则『抛出异常函数』
    或有「内建函数尝试运行」则『尝试运行函数』
    或有「内建函数整数相等」则『整数相等函数』
    或有「内建函数整数大于」则『整数大于函数』
    或有「内建函数整数减」则『整数减法函数』
    或有「内建函数以当前续延调用」则『以当前续延调用函数』
也。

「悬停类型表示」乃化「表达式」而「字符串」也。
「悬停类型表示」者会「式」而
  递归虑「表示」其化「表达式」而「字符串」者
        会「当前式」而
          鉴「当前式」而
            有（「自由变量」于「名称」）则「名称」
            或有（「绑定变量」于「序数」）则『第』附（「整数表示」于「序数」）附『个绑定类型』
            或有（「绑定」于「可有名称」于「体」）则（鉴「可有名称」而
              有（「可有」于「名称」）则『承「』附「名称」附『」而』附（「表示」于「体」）
              或有「可无」则『承一类型而』附（「表示」于「体」））
            或有（「式节点」于（「内建节点」于「常量」）于「罄」）则「内建常量悬停表示」于「常量」
            或有（「式节点」于「箭头类型节点」于「子式们」）则
              『（』附（「间合」于『 → 』于（（「态射」授以「表达式」授以「字符串」）于「子式们」于「表示」））附
              『）』
            或有（「式节点」于「元组类型节点」于「子式们」）则
              『（』附（「间合」于『 合 』于（（「态射」授以「表达式」授以「字符串」）于「子式们」于「表示」））附
              『）』
            或有（「式节点」于「函数调用」于「子式们」）则
              『（』附（「间合」于『 于 』于（（「态射」授以「表达式」授以「字符串」）于「子式们」
                于（会「子式」而
                  鉴「子式」而
                    有（「式节点」于（「参数节点」于「忽略形式」）于（（「列」【「参数」】）））
                    则
                      「表示」于「参数」
                    或有「其他」则「表示」于「子式」）））附『）』
            或有（「式节点」于（「隐式派类型节点」于「忽略个数」）于（（「列」【「体」】）））则
              『隐式（』附（「表示」于「体」）附『）』
            或有（「式节点」于（「文件定义引用节点」于「忽略文件」于「定义名」于「忽略序数」）于「罄」）则「定义名」
            或有（「式节点」于（「唯一构造器节点」于「忽略序数」于「忽略文件」于「构造器名」）于「忽略子式」）则
              「构造器名」
            或有（「式节点」于（「源码范围标注节点」于「忽略范围」）于（（「列」【「原式」】）））则「表示」于
              「原式」
            或有（「式节点」于（「源码绑定范围标注节点」于「忽略范围」）于（（「列」【「原式」】）））则「表示」于
              「原式」
            或有「其他」则『未识别类型』
      而
      「表示」于「式」
也。

「悬停类型文字」乃化「表达式」而「字符串」也。
「悬停类型文字」者会「类型」而『类型：』附（「悬停类型表示」于「类型」）也。

「源码状态剩余」乃化「源码搜索状态」而（「列」于「字符串」）也。
「源码状态剩余」者会「状态」而「状态」中「零」也。
「源码状态行」乃化「源码搜索状态」而「整数」也。
「源码状态行」者会「状态」而「状态」中「一」也。
「源码状态列」乃化「源码搜索状态」而「整数」也。
「源码状态列」者会「状态」而「状态」中「二」也。

「源码状态以串开头」乃化「源码搜索状态」而化「字符串」而「爻」也。
「源码状态以串开头」者会「状态」而会「串」而
  （「以起否」授以「字符串」）于「串相等」于（「获取字符」于「串」）
    于（「源码状态剩余」于「状态」）也。

「源码状态前进一字」乃化「源码搜索状态」而「源码搜索状态」也。
「源码状态前进一字」者会「状态」而
  鉴（「源码状态剩余」于「状态」）而
    有「罄」则「状态」
    或有（「缀」于「字」于「尾」）则
      若（「串相等」于「字」于『「：换行：」』）
      则
        「尾」与（「加」于（「源码状态行」于「状态」）于「一」）与「零」
      否则
        「尾」与（「源码状态行」于「状态」）与（「加」于（「源码状态列」于「状态」）于「一」）
也。

「源码状态前进」乃化「源码搜索状态」而化「整数」而「源码搜索状态」也。
「源码状态前进」者会「状态」而会「个数」而
  若（「等」于「个数」于「零」）则「状态」
  否则
    「源码状态前进」于（「源码状态前进一字」于「状态」）于（「减」于「个数」于「一」）也。

「源码状态前进字符串」乃化「源码搜索状态」而化「字符串」而「源码搜索状态」也。
「源码状态前进字符串」者会「状态」而会「串」而
  「源码状态前进」于「状态」于（「串长度」于「串」）也。

「源码状态是注释开头」乃化「源码搜索状态」而「爻」也。
「源码状态是注释开头」者会「状态」而
  鉴（「源码状态剩余」于「状态」）而
    有（「缀」于『「』于（「缀」于『：』于「忽略尾」））则「阳」
    或有「其他」则「阴」也。

「源码状态是注释结尾」乃化「源码搜索状态」而「爻」也。
「源码状态是注释结尾」者会「状态」而
  鉴（「源码状态剩余」于「状态」）而
    有（「缀」于『：』于（「缀」于『」』于「忽略尾」））则「阳」
    或有「其他」则「阴」也。

「跳过源码注释」乃化「源码搜索状态」而化「整数」而「源码搜索状态」也。
「跳过源码注释」者会「状态」而会「深度」而
  鉴（「源码状态剩余」于「状态」）而
    有「罄」则「状态」
    或有「其他」则
      若（「源码状态是注释开头」于「状态」）
      则
        「跳过源码注释」于（「源码状态前进」于「状态」于「二」）
        于（「加」于「深度」于「一」）
      否则若（「源码状态是注释结尾」于「状态」）
      则
        （若（「等」于「深度」于「一」）
        则
          「源码状态前进」于「状态」于「二」
        否则
          「跳过源码注释」于（「源码状态前进」于「状态」于「二」）
            于（「减」于「深度」于「一」））
      否则
        「跳过源码注释」于（「源码状态前进一字」于「状态」）于「深度」
也。

「跳过源码字符串」乃化「源码搜索状态」而「源码搜索状态」也。
「跳过源码字符串」者会「状态」而
  鉴（「源码状态剩余」于「状态」）而
    有「罄」则「状态」
    或有「其他」则
      若（「源码状态以串开头」于「状态」于『「：』：」』）
      则
        「源码状态前进字符串」于「状态」于『「：』：」』
      否则
        「跳过源码字符串」于（「源码状态前进一字」于「状态」）
也。

「读取源码引号名称」乃化「字符串」而化「源码搜索状态」而化（「列」于「字符串」）而化「整数」而化「整数」而
  「或可有」于（「字符串」合「源码范围」合「源码搜索状态」）也。
「读取源码引号名称」者会「文件」而会「状态」而会「反名称」而会「开始行」而会「开始列」而
  鉴（「源码状态剩余」于「状态」）而
    有「罄」则「可无」
    或有（「缀」于「字」于「忽略尾」）则
      若（「串相等」于「字」于『」』）
      则
        （虑「名称」者「串组合并」于（「反转」于「反名称」）而
          虑「范围」者「构造源码范围」于「文件」于「开始行」于「开始列」
          于（「源码状态行」于「状态」）于（「源码状态列」于「状态」）而
          「可有」于（「名称」与「范围」与（「源码状态前进一字」于「状态」）））
      否则
        「读取源码引号名称」于「文件」于（「源码状态前进一字」于「状态」）
        于（「缀」于「字」于「反名称」）于
        「开始行」于「开始列」
也。

「声明后缀」乃化「源码搜索状态」而「爻」也。
「声明后缀」者会「状态」而
  （「存在吗」授以「字符串」）于（会「后缀」而「源码状态以串开头」于「状态」于「后缀」）
    于（「列」【『的类型可以是』，『的类型是』，『的定义是』，『其实就是』，『是一种』，『乃』，『者』，『立』，『即』，『号』】）
也。

「寻找源码名称范围」乃化「字符串」而化「字符串」而化「源码搜索状态」而
  「或可有」于（「源码范围」合「源码搜索状态」）也。
「寻找源码名称范围」者会「文件」而会「名称」而会「状态」而
  鉴（「源码状态剩余」于「状态」）而
    有「罄」则「可无」
    或有「其他」则
      若（「源码状态是注释开头」于「状态」）
      则
        「寻找源码名称范围」于「文件」于「名称」于（「跳过源码注释」于（「源码状态前进」于「状态」于「二」）于「一」）
      否则若（「源码状态以串开头」于「状态」于『『』）
      则
        「寻找源码名称范围」于「文件」于「名称」于（「跳过源码字符串」于（「源码状态前进字符串」于「状态」于『『』））
      否则若（「源码状态以串开头」于「状态」于『「』）
      则
        （虑「名称开始」者「源码状态前进一字」于「状态」而
          鉴（「读取源码引号名称」于「文件」于「名称开始」于「罄」
            于（「源码状态行」于「名称开始」）于（「源码状态列」于「名称开始」））而
            有「可无」则「可无」
            或有（「可有」于（「所得名称」与「范围」与「后状态」））则
              若（「且」于（「串相等」于「所得名称」于「名称」）于（「非」于（「声明后缀」于「后状态」）））
              则
                「可有」于（「范围」与「后状态」）
              否则
                「寻找源码名称范围」于「文件」于「名称」于「后状态」
        ）
      否则若（「源码状态以串开头」于「状态」于「名称」）
      则
        （虑「后状态」者「源码状态前进字符串」于「状态」于「名称」而
          若（「声明后缀」于「后状态」）
          则
            「寻找源码名称范围」于「文件」于「名称」于「后状态」
          否则
            「可有」于（（「构造源码范围」于「文件」于（「源码状态行」于「状态」）
              于（「源码状态列」于「状态」）于（「源码状态行」于「后状态」）
              于（「源码状态列」于「后状态」））与「后状态」））
      否则
        「寻找源码名称范围」于「文件」于「名称」于（「源码状态前进一字」于「状态」）
也。

「寻找源码绑定范围」乃化「字符串」而化「字符串」而化「源码搜索状态」而
  「或可有」于（「源码范围」合「源码搜索状态」）也。
「寻找源码绑定范围」者会「文件」而会「名称」而会「状态」而
  鉴（「源码状态剩余」于「状态」）而
    有「罄」则「可无」
    或有「其他」则
      若（「源码状态是注释开头」于「状态」）
      则
        「寻找源码绑定范围」于「文件」于「名称」于（「跳过源码注释」于（「源码状态前进」于「状态」于「二」）于「一」）
      否则若（「源码状态以串开头」于「状态」于『『』）
      则
        「寻找源码绑定范围」于「文件」于「名称」于（「跳过源码字符串」于（「源码状态前进字符串」于「状态」于『『』））
      否则若（「源码状态以串开头」于「状态」于『「』）
      则
        （虑「名称开始」者「源码状态前进一字」于「状态」而
          鉴（「读取源码引号名称」于「文件」于「名称开始」于「罄」
            于（「源码状态行」于「名称开始」）于（「源码状态列」于「名称开始」））而
            有「可无」则「可无」
            或有（「可有」于（「所得名称」与「范围」与「后状态」））则
              若（「串相等」于「所得名称」于「名称」）
              则
                「可有」于（「范围」与「后状态」）
              否则
                「寻找源码绑定范围」于「文件」于「名称」于「后状态」
        ）
      否则若（「源码状态以串开头」于「状态」于「名称」）
      则
        （虑「后状态」者「源码状态前进字符串」于「状态」于「名称」而
          「可有」于（（「构造源码范围」于「文件」于（「源码状态行」于「状态」）
            于（「源码状态列」于「状态」）于（「源码状态行」于「后状态」）
            于（「源码状态列」于「后状态」））与「后状态」））
      否则
        「寻找源码绑定范围」于「文件」于「名称」于（「源码状态前进一字」于「状态」）
也。

「寻找源码声明范围」乃化「字符串」而化「字符串」而化「源码搜索状态」而
  「或可有」于（「源码范围」合「源码搜索状态」）也。
「寻找源码声明范围」者会「文件」而会「名称」而会「状态」而
  鉴（「源码状态剩余」于「状态」）而
    有「罄」则「可无」
    或有「其他」则
      若（「源码状态是注释开头」于「状态」）
      则
        「寻找源码声明范围」于「文件」于「名称」于（「跳过源码注释」于（「源码状态前进」于「状态」于「二」）于「一」）
      否则若（「源码状态以串开头」于「状态」于『『』）
      则
        「寻找源码声明范围」于「文件」于「名称」于（「跳过源码字符串」于（「源码状态前进字符串」于「状态」于『『』））
      否则若（「源码状态以串开头」于「状态」于『「』）
      则
        （虑「名称开始」者「源码状态前进一字」于「状态」而
          鉴（「读取源码引号名称」于「文件」于「名称开始」于「罄」
            于（「源码状态行」于「名称开始」）于（「源码状态列」于「名称开始」））而
            有「可无」则「可无」
            或有（「可有」于（「所得名称」与「范围」与「后状态」））则
              若（「且」于（「串相等」于「所得名称」于「名称」）于（「声明后缀」于「后状态」））
              则
                「可有」于（「范围」与「后状态」）
              否则
                「寻找源码声明范围」于「文件」于「名称」于「后状态」
        ）
      否则若（「源码状态以串开头」于「状态」于「名称」）
      则
        （虑「后状态」者「源码状态前进字符串」于「状态」于「名称」而
          若（「声明后缀」于「后状态」）
          则
            「可有」于（（「构造源码范围」于「文件」于（「源码状态行」于「状态」）
              于（「源码状态列」于「状态」）于（「源码状态行」于「后状态」）
              于（「源码状态列」于「后状态」））与「后状态」）
          否则
            「寻找源码声明范围」于「文件」于「名称」于（「源码状态前进一字」于「状态」））
      否则
        「寻找源码声明范围」于「文件」于「名称」于（「源码状态前进一字」于「状态」）
也。

「是阿拉伯数字」乃化「字符串」而「爻」也。
「是阿拉伯数字」者会「字」而
  （「存在吗」授以「字符串」）于（会「数字」而「串相等」于「字」于「数字」）
    于（「列」【『0』，『1』，『2』，『3』，『4』，『5』，『6』，『7』，『8』，『9』】）
也。

「去除名称末尾序数」乃化「字符串」而「字符串」也。
「去除名称末尾序数」者会「名称」而
  递归虑「去除」其化（「列」于「字符串」）而（「列」于「字符串」）者
        会「反字们」而
          鉴「反字们」而
            有（「缀」于「字」于「尾」）则若（「是阿拉伯数字」于「字」）则「去除」于「尾」否则「反字们」
            或有「罄」则「罄」
      而
      「串组合并」于（「反转」于（「去除」于（「反转」于（「获取字符」于「名称」））））
也。

「定义范围缓存键」乃化「字符串」而化「字符串」而「字符串」也。
「定义范围缓存键」者会「文件」而会「名称」而「文件」附『「：换行：」』附「名称」也。

「准备语言服务信息」乃化「字符串」而「有」也。
「准备语言服务信息」者会「文件」而
  虑「内容」者「文件系统」之「读文件」于「文件」而
  虑「初态」者（「获取字符」于「内容」）与「零」与「零」而
  （「写引用」于「当前语言服务文件」于「文件」）；
  （「写引用」于「当前语言服务信息」于「罄」）；
  （「写引用」于「当前名称搜索状态」于「初态」）；
  （「写引用」于「当前定义搜索状态」于「初态」）；
  （「写引用」授以（「串典」于「有」）于「当前悬停范围缓存」于「空串典」）
也。

「查找下个名称源码范围」乃化「字符串」而「或可有」于（「字符串」合「源码范围」）也。
「查找下个名称源码范围」者会「原名称」而
  虑「文件」者「读引用」于「当前语言服务文件」而
  虑「状态」者「读引用」于「当前名称搜索状态」而
  虑「源码名称」者「去除名称末尾序数」于「原名称」而
  鉴（「寻找源码名称范围」于「文件」于「源码名称」于「状态」）而
    有「可无」则「可无」
    或有（「可有」于（「范围」与「后状态」））则
      （「写引用」于「当前名称搜索状态」于「后状态」）；
      （「可有」于（「源码名称」与「范围」））
也。

「查找下个绑定源码范围」乃化「字符串」而「或可有」于（「字符串」合「源码范围」）也。
「查找下个绑定源码范围」者会「原名称」而
  虑「文件」者「读引用」于「当前语言服务文件」而
  虑「状态」者「读引用」于「当前名称搜索状态」而
  虑「源码名称」者「去除名称末尾序数」于「原名称」而
  鉴（「寻找源码绑定范围」于「文件」于「源码名称」于「状态」）而
    有「可无」则「可无」
    或有（「可有」于（「范围」与「后状态」））则
      （「写引用」于「当前名称搜索状态」于「后状态」）；
      （「可有」于（「源码名称」与「范围」））
也。

「查找并记录当前定义范围」乃化「字符串」而「或可有」于「源码范围」也。
「查找并记录当前定义范围」者会「名称」而
  虑「文件」者「读引用」于「当前语言服务文件」而
  鉴（「寻找源码声明范围」于「文件」于「名称」于（「读引用」于「当前定义搜索状态」））而
    有「可无」则「可无」
    或有（「可有」于（「范围」与「后状态」））
    则（虑「无」者「写引用」于「当前定义搜索状态」于「后状态」而
        虑「无」者「写引用」于「当前名称搜索状态」于「后状态」而
        虑「无」者（「写引用」授以（「串典」于「有」）于「当前悬停范围缓存」于「空串典」）而
        虑「无」者（「写引用」授以（「列」于「语言服务信息」））于
        「当前语言服务信息」
        于（（「滤」授以「语言服务信息」）
          于（会「信息」而「源码范围开始早于」于（「语言服务信息范围」于「信息」）于「范围」）
          于（「读引用」于「当前语言服务信息」））
        而
        虑「无」者（「串典引用更新」授以「源码范围」）于「定义范围缓存」
          于（「定义范围缓存键」于「文件」于「名称」）于「范围」而「可有」于
          「范围」
    ）
也。

「查找文件定义范围」乃化「字符串」而化「字符串」而「或可有」于「源码范围」也。
「查找文件定义范围」者会「文件」而会「名称」而
  虑「键」者「定义范围缓存键」于「文件」于「名称」而
  鉴（（「串典查找」授以「源码范围」）于（「读引用」于「定义范围缓存」）于「键」）而
    有（「可有」于「已缓存」）则「可有」于「已缓存」
    或有「可无」则（虑「初态」者（「获取字符」于（「文件系统」之「读文件」于「文件」））与「零」与「零」而
                    鉴（「寻找源码声明范围」于「文件」于「名称」于「初态」）而
                      有「可无」则「可无」
                      或有（「可有」于（「范围」与「忽略状态」））则
                        虑「无」者（「串典引用更新」授以「源码范围」）于「定义范围缓存」于「键」于「范围」而
                        「可有」于「范围」
    ）
也。

「记录定义位置信息」乃化「源码范围」而化「源码范围」而「有」也。
「记录定义位置信息」者会「范围」而会「目标」而
  「列引用前衔」于「当前语言服务信息」于（「定义位置信息」于「范围」于「目标」）也。

「记录悬停文字信息」乃化「源码范围」而化「字符串」而「有」也。
「记录悬停文字信息」者会「范围」而会「内容」而
  虑「键」者「悬停范围缓存键」于「范围」而
  鉴（（「串典查找」授以「有」）于（「读引用」于「当前悬停范围缓存」）于「键」）而
    有（「可有」于「忽略已有」）则「元」
    或有「可无」则（虑「无」者（「串典引用更新」授以「有」）于「当前悬停范围缓存」于「键」于「元」而
                    「列引用前衔」于「当前语言服务信息」于（「悬停文字信息」于「范围」于「内容」））
也。

「表达式定义范围」乃化「表达式」而「或可有」于「源码范围」也。
「表达式定义范围」者会「式」而
  鉴「式」而
    有（「式节点」于（「文件定义引用节点」于「文件」于「名称」于「忽略序数」）于「罄」）则「查找文件定义范围」于
      「文件」于「名称」
    或有（「式节点」于（「文件引用节点」于「文件」）于「罄」）则「可有」
      于（「构造源码范围」于「文件」于「零」于「零」于「零」于「零」）
    或有「其他」则「可无」
也。

「标注引用语言服务信息」乃化「源码范围」而化「表达式」而「表达式」也。
「标注引用语言服务信息」者会「范围」而会「式」而
  虑「无」者鉴（「表达式定义范围」于「式」）而
    有（「可有」于「目标」）则「记录定义位置信息」于「范围」于「目标」
    或有「可无」则「元」而
  鉴「式」而
    有（「式节点」于（「文件引用节点」于「忽略文件」）于「罄」）则「式」
    或有「其他」则「式节点」于（「源码范围标注节点」于「范围」）
      于（「列」【「式」】）
也。

「记录定义悬停」乃化「字符串」而化「字符串」而化「表达式」而「有」也。
「记录定义悬停」者会「文件」而会「名称」而会「类型」而
  鉴（「查找文件定义范围」于「文件」于「名称」）而
    有（「可有」于「范围」）则「记录悬停文字信息」于「范围」于（「悬停类型文字」于「类型」）
    或有「可无」则「元」
也。

「源码范围转癸象」乃化「源码范围」而「癸象」也。
「源码范围转癸象」者会「范围」而
  「癸象对象」于（「列」【
    『文件』与（「癸象字符串」于（「源码范围文件」于「范围」）），
    『开始行』与（「癸象整数」于（「源码范围开始行」于「范围」）），
    『开始列』与（「癸象整数」于（「源码范围开始列」于「范围」）），
    『结束行』与（「癸象整数」于（「源码范围结束行」于「范围」）），
    『结束列』与（「癸象整数」于（「源码范围结束列」于「范围」））
  】）也。

「语言服务信息转癸象」乃化「语言服务信息」而「癸象」也。
「语言服务信息转癸象」者会「信息」而
  鉴「信息」而
    有（「定义位置信息」于「范围」于「目标」）则
      「癸象对象」于（「列」【
        『种类』与（「癸象字符串」于『定义』），
        『范围』与（「源码范围转癸象」于「范围」），
        『目标』与（「源码范围转癸象」于「目标」）
      】）
    或有（「悬停文字信息」于「范围」于「内容」）则
      「癸象对象」于（「列」【
        『种类』与（「癸象字符串」于『悬停』），
        『范围』与（「源码范围转癸象」于「范围」），
        『内容』与（「癸象字符串」于「内容」）
      】）
也。

「写语言服务信息」乃化「字符串」而「有」也。
「写语言服务信息」者会「输出路径」而
  虑「文件」者「读引用」于「当前语言服务文件」而
  虑「信息们」者（「态射」授以「语言服务信息」授以「癸象」）于（「反转」于（「读引用」于「当前语言服务信息」））于
    「语言服务信息转癸象」而
  虑「根」者「癸象对象」于（「列」【
    『版本』与（「癸象整数」于「一」），
    『源文件』与（「癸象字符串」于「文件」），
    『信息』与（「癸象数组」于「信息们」）
  】）而
  「文件系统」之「写文件」于「输出路径」于（「癸象表示」于「根」）
也。
