依赖解析。豫
yuyan · 278 行 · 15980 字节 · UTF-8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
寻观「标准库」之书。
寻观「双宿主构建」之「文本工具」之书。
寻观「双宿主构建」之「包描述」之书。
「:文言:此篇纯函数,自应用起,循依赖而尽取其闭包;磁盘之事(列包、读描述)由调用者授以函数与表。汉语:传递依赖解析。输入:包表(包名与包文件路径的对应)、包根列表(只用于报错)、读取包描述的函数、应用根节点;输出:按依赖在前、应用在末排序的库与应用节点,以及按首次遇到顺序排列的操作系统接口名。标准库与内置基础库(原拓展库拆出,见「内置基础库名们」)内置,豫言操作系统XXX 表示接口 XXX,其余依赖到包表里找恰一个。环用已访问表截断。:」
「包节点」即
「字符串」
合「字符串」
合(「列」于「字符串」)
也。
「包节点名」乃化「包节点」而「字符串」也。
「包节点名」者会「节点」而
「节点」中「零」
也。
「包节点路径」乃化「包节点」而「字符串」也。
「包节点路径」者会「节点」而
「节点」中「一」
也。
「包节点依赖们」乃化「包节点」而(「列」于「字符串」)也。
「包节点依赖们」者会「节点」而
「节点」中「二」
也。
「:文言:包表之一项:名与所在之包文件。汉语:包表的一项:包名与包描述文件的路径。:」
「已找包」即「字符串」
合「字符串」
也。
「:文言:解析所得:库与应用之节点(依赖在前,应用居末),及接口名(首见之序)。汉语:解析结果:节点列表与接口名列表。:」
「解析结果」即(「列」于「包节点」)
合(「列」于「字符串」)
也。
「解析结果节点们」乃化「解析结果」而(「列」于「包节点」)也。
「解析结果节点们」者会「结果」而
「结果」中「零」
也。
「解析结果接口们」乃化「解析结果」而(「列」于「字符串」)也。
「解析结果接口们」者会「结果」而
「结果」中「一」
也。
「:文言:内置基础库之名,依依赖之序;标准库另计。汉语:内置基础库(原拓展库拆出)的包名,按依赖先后排列;标准库另行处理。:」
「内置基础库名们」乃「列」于「字符串」也。
「内置基础库名们」者「列」【『单元测试』,『癸象工具』,『网页客户端』,『云工宿主』,『浏览器宿主』】也。
「:文言:内置基础库之所依。汉语:内置基础库各自的依赖名。:」
「内置基础库依赖们」乃化「字符串」而(「列」于「字符串」)也。
「内置基础库依赖们」者会「名」而
若「字符串相等吗」于「名」于『单元测试』
则
(「列」【『标准库』】)
否则若「或者」于(「字符串相等吗」于「名」于『云工宿主』)于(「字符串相等吗」于「名」于『浏览器宿主』)
则
(「列」【『标准库』,『癸象工具』】)
否则
(「列」【『标准库』,『单元测试』】)
也。
「内置名在列中」乃化「字符串」而化(「列」于「字符串」)而「爻」也。
「内置名在列中」者会「名」而会「们」而
鉴「们」而
有「罄」则「阴」
或有(「缀」于「首」于「余」)则(
若「字符串相等吗」于「首」于「名」则「阳」否则「内置名在列中」于「名」于「余」)
也。
「内置包吗」乃化「字符串」而「爻」也。
「内置包吗」者会「名」而
「或者」于(「字符串相等吗」于「名」于『标准库』)于(「内置名在列中」于「名」于「内置基础库名们」)
也。
「接口前缀」者『豫言操作系统』也。
「:文言:依赖名冠以豫言操作系统者,乃公约接口,去其冠得接口名。汉语:如果依赖名以「豫言操作系统」开头且后面还有字,返回其后的接口名;否则返回无。:」
「:文言:待办事项:诸父包(豫言操作系统接口、底层接口、适配、工具)亦冠此名,客若依之,则误作同名之接口而不得其目;今惟令客径依具体之包。汉语:待办事项:以此前缀开头的父包(豫言操作系统接口、豫言操作系统底层接口、豫言操作系统适配、豫言操作系统工具)若被应用依赖,会被当作名为“接口”“底层接口”“适配”“工具”的接口而找不到目录;目前只要求应用直接依赖具体的包。:」
「接口依赖名」乃化「字符串」而(「或可有」于「字符串」)也。
「接口依赖名」者会「依」而
若「且」
于(「串开头是它吗」于「接口前缀」于「依」)
于(「大于」于(「串长度」于「依」)于(「串长度」于「接口前缀」))
则
(「可有」授以「字符串」于(「获取子字符串」于(「串长度」于「接口前缀」)于(「串长度」于「依」)于「依」))
否则
(「可无」授以「字符串」)
也。
「依赖分类」立「元类型」也。
「略过依赖」立「依赖分类」也。
「接口依赖」立化「字符串」而「依赖分类」也。
「普通依赖」立「依赖分类」也。
「:文言:状态三事:已访问之包名、已得之节点(逆序)、已见之接口(逆序)。汉语:解析状态:已访问的包名、已产出节点的逆序列表、已遇到接口名的逆序列表。:」
「解析状态」即
(「列」于「字符串」)
合(「列」于「包节点」)
合(「列」于「字符串」)
也。
「:文言:一依赖何属:内置、已见者略过;接口未见则收之;余者为普通包。汉语:给依赖分类:内置包或已访问的包、已收集的接口都略过,新接口收集,其余是需要到包表里找的普通包。:」
「:文言:依赖之名将入路径与命令,先验其洁。汉语:依赖名必须是安全名称(不空、不含斜杠等),否则抛出指明请求者的中文事故;接口名同样受检。:」
「核验依赖名」乃化「字符串」而化「字符串」而「有」也。
「核验依赖名」者会「请求者」而会「依」而
若「安全名称吗」于「依」则
「元」
否则
「发生事故」于(『包「』附「请求者」附『」的依赖名不合法:「』附「依」附
『」(不能为空、. 或 ..,也不能含斜杠、反斜杠、制表符或换行)』)
也。
「分类依赖」乃化「字符串」而化「字符串」而化「解析状态」而「依赖分类」也。
「分类依赖」者会「请求者」而会「依」而会「状态」而
虑「无」者「核验依赖名」于「请求者」于「依」而
若「内置包吗」于「依」则
「略过依赖」
否则
鉴(「接口依赖名」于「依」)而
有(「可有」于「名」)则
(若「列含串」于(「状态」中「二」)于「名」则「略过依赖」否则(「接口依赖」于「名」))
或有「可无」则
(若「列含串」于(「状态」中「零」)于「依」则「略过依赖」否则「普通依赖」)
也。
「:文言:同名之包,取其路径之去重有序者。汉语:在包表里按名查找,返回去重并按字节序排序的候选路径列表。:」
「按名找路径」乃
化(「列」于「已找包」)而
化「字符串」而
(「列」于「字符串」)
也。
「按名找路径」者会「包表」而会「名」而
「排序字符串」于(「去重字符串」
于(「态射」授以「已找包」授以「字符串」
于(「滤」授以「已找包」于(会「项」而「字符串相等吗」于(「项」中「零」)于「名」)于「包表」)
于(会「项」而「项」中「一」))
于(「罄」授以「字符串」))
也。
「:文言:无则告其所搜之根,多则列其诸径。汉语:候选恰有一个时返回其路径;没有或有多个时抛出说明依赖名、请求者与包根的中文事故。:」
「唯一路径」乃
化「字符串」而
化「字符串」而
化(「列」于「字符串」)而
化(「列」于「字符串」)而
「字符串」
也。
「唯一路径」者会「名」而会「请求者」而会「候选们」而会「包根们」而
鉴「候选们」而
有(「缀」于「唯一」于「罄」)则「唯一」
或有「罄」则「发生事故」于(『找不到依赖包「』附「名」附『」(被「』附「请求者」附『」依赖)。已搜索的包根:』附(
若「等于」于(「长度」授以「字符串」于「包根们」)于「零」则
『(没有指定任何 --包根)』
否则
「顿号连接」于「包根们」
)附『。请用 --包根 指定含「』附「名」附『。包。豫」的目录。』)
或有「其他」则
「发生事故」于(『依赖包「』附「名」附『」(被「』附「请求者」附『」依赖)有多个候选,无法确定:』附(「顿号连接」
于「候选们」)附『。请调整 --包根,使它只出现一次。』)
也。
「:文言:自动模式所识之包,主皆为豫言。汉语:自动模式生成的包上下文里所有包的所有者都是「豫言」,其他所有者暂不支持。:」
「核验所有者」乃化「字符串」而化「包描述」而「有」也。
「核验所有者」者会「路径」而会「描述」而
若「字符串相等吗」于(「包描述所有者」于「描述」)于『豫言』则
「元」
否则
「发生事故」于(『自动模式暂只支持所有者为「豫言」的包:』附「路径」附『 的所有者是「』附(「包描述所有者」
于「描述」)附『」』)
也。
「:文言:入一包:读其描述,验其名与所有者。汉语:读取包描述并核对:包描述里的名称必须与依赖名一致,所有者必须是「豫言」。:」
「载入节点」乃
化(化「字符串」而「包描述」)而
化「字符串」而
化「字符串」而
「包节点」
也。
「载入节点」者会「读描述」而会「名」而会「路径」而
虑「描述」者「读描述」于「路径」而
虑「无」者
(
若「字符串相等吗」于(「包描述名称」于「描述」)于「名」则
「元」
否则
「发生事故」于(『包描述名称与依赖名不一致:依赖「』附「名」附『」,但 』附「路径」附『 里的名称是「』附(「包描述名称」
于「描述」)附『」』)
)而
虑「无」者「核验所有者」于「路径」于「描述」而
「名」与「路径」与(「包描述依赖们」于「描述」)
也。
「载入依赖」乃
化(「列」于「已找包」)而
化(「列」于「字符串」)而
化(化「字符串」而「包描述」)而
化「字符串」而
化「字符串」而
「包节点」
也。
「载入依赖」者会「包表」而会「包根们」而会「读描述」而会「请求者」而会「依」而
虑「路径」者
「唯一路径」于「依」于「请求者」于(「按名找路径」于「包表」于「依」)于「包根们」
而
「载入节点」于「读描述」于「依」于「路径」
也。
「:文言:三事各有登记之术;泛型之缀,必在有型之函内为之,以免类型不定。汉语:解析状态的三个更新函数:登记已访问的包名、登记新遇到的接口名、追加产出的节点。写成带完整类型签名的小函数,避免在局部绑定里构造带泛型的元组导致隐式参数无法确定。:」
「登记访问」乃化「字符串」而化「解析状态」而「解析状态」也。
「登记访问」者会「名」而会「状态」而
(「缀」于「名」于(「状态」中「零」))与(「状态」中「一」)与(「状态」中「二」)
也。
「登记节点」乃化「包节点」而化「解析状态」而「解析状态」也。
「登记节点」者会「节点」而会「状态」而
(「状态」中「零」)与(「缀」于「节点」于(「状态」中「一」))与(「状态」中「二」)
也。
「登记接口」乃化「字符串」而化「解析状态」而「解析状态」也。
「登记接口」者会「名」而会「状态」而
(「状态」中「零」)与(「状态」中「一」)与(「缀」于「名」于(「状态」中「二」))
也。
「:文言:访一包:先记其名(防环),逐依而入;接口则收,普通包则载而访之;毕,乃书其节点于后。汉语:深度优先访问一个包:进入时先登记,防止环;按依赖声明顺序处理每个依赖;处理完再把本节点追加到结果(因此依赖在前,应用在末)。:」
「访问包」乃
化(「列」于「已找包」)而
化(「列」于「字符串」)而
化(化「字符串」而「包描述」)而
化「包节点」而
化「解析状态」而
「解析状态」
也。
「访问包」者会「包表」而会「包根们」而会「读描述」而会「节点」而会「状态」而
虑「入表」者「登记访问」于(「包节点名」于「节点」)于「状态」而
递归虑「逐依」其化(「列」于「字符串」)而化「解析状态」而「解析状态」者
会「余」而会「当前」而
鉴「余」而
有「罄」则「当前」
或有(「缀」于「依」于「尾」)则
「逐依」
于「尾」
于(
鉴(「分类依赖」于(「包节点名」于「节点」)于「依」于「当前」)而
有「略过依赖」则「当前」
或有(「接口依赖」于「接口名」)则
「登记接口」于「接口名」于「当前」
或有「普通依赖」则(「访问包」
于「包表」
于「包根们」
于「读描述」
于(「载入依赖」于「包表」于「包根们」于「读描述」于(「包节点名」于「节点」)于「依」)
于「当前」))
而
虑「结束」者「逐依」于(「包节点依赖们」于「节点」)于「入表」而
「登记节点」于「节点」于「结束」
也。
「:文言:自应用起尽取其依赖之闭包。汉语:解析入口:从应用节点出发,返回(节点列表,接口名列表);节点依赖在前、应用在末,接口按首次遇到的顺序。:」
「解析依赖」乃
化(「列」于「已找包」)而
化(「列」于「字符串」)而
化(化「字符串」而「包描述」)而
化「包节点」而
「解析结果」
也。
「解析依赖」者会「包表」而会「包根们」而会「读描述」而会「应用」而
虑「末状态」者
「访问包」
于「包表」
于「包根们」
于「读描述」于「应用」
于((「罄」授以「字符串」)与(「罄」授以「包节点」)与(「罄」授以「字符串」))
而
(「反转」授以「包节点」于(「末状态」中「一」))与(「反转」授以「字符串」于(「末状态」中「二」))
也。