直至正文豫言学篇

豫构包制

图既定,豫构乃书项目内包籍之所指于 .豫构缓存/豫构语言服务/<包文件相对路径去掉。豫>.语言服务.json,其式同源码之语言服务。入口之串与列中诸段皆指包内源书;所依之名与主皆指本地包籍,外部之包则用绝对路径。层级之包:「包含在」之值指其父之籍,「包含包」诸项各指其子之籍,故自父自子皆可跳至彼端;闭包含库子,故为父行豫构,其子之籍亦书跳转。再行豫构则更新其文,编辑器循既有跳转之法读之。

籍

包籍以 。包。豫 为尾,其目录即包根。唯取 parser 之静态值,不求值,不行其中代码。

名称、所有者、版本、简介、说明、类型,皆须明载;依赖、平台、许可、包含在、包含包,按需书之(平台见“平台”之节,许可见“许可”之节,包含在与包含包见“层级之包”)。名须合文件之名;所有者定其籍,不另署作者。官包之所有者曰“豫言”。版本暂用三段十进整数,无前导零;今诸包初定 0.1.0,非编译器之版本。

简介书为典,键曰汉语、文言、赋曰,三者皆不可空,述全包之旨:汉语举通称与大用,文言述其缘起,赋曰咏其所为与所以为(三段之分,从提案〇〇〇二九第九节篇首注释之法)。赋曰为赋,以骈偶为骨,其字之多寡随包自有之源码(子包不计):不及三百行者二十八至五十六字,三百至二千九百九十九行者五十六至一百一十二字,三千行以上者一百一十二至一百六十八字。发现与检查示其汉语。旧之串书,今亦识之。

包身份以所有者与名称两字段存之。异主同名可并存,同主同名虽异版本亦报错。此版不求远包、不解版本范围、不立锁籍,亦不以自署所有者为身份认证。

索与依

先遍当前目录取包名,继解候选元数据以定主。目录不定本地主;外部包集合首层之主名须与包籍相符。坏籍则止。链接、缓存、Git 与旧版目录不索。

依赖省主,则取同主之包;异主须明书所有者与包。命令省主,唯短名独一可取。导入首段只书包名,其后皆从包根寻之,不寻当前文件之邻。

唯自身与直依可见,同域短名重则拒。单名导入依该包之默认导入而展,默认导入书空列则报错,不自合诸书。目录相套之包为界,不可自外层包之路径越之;然登记为子者,可经父路径 父之子 引之(见“层级之包”)。

库与器

类型以典载之,种类惟库与可执行文件。库不得载入口与文件名,而必书「默认导入」(见“默认导入”);器则二者俱备而不可书「默认导入」,名书无缀之程名,占一径段,如 格式化(旧包书 日志 之类以 yy 起者亦可用);未书 --输出 者豫构依本机之系统补其缀,如林檎上出 格式化。林檎。豫行。解码成枚举,各支不杂。旧库、程序、入口之顶层字段皆拒。

器支可另书「入口函数」,指入口之文中入口之函名,如 「入口函数」者『主』也;不书则默「入口」(提案 00006)。豫构构包之本入口,乃授之于编译器(--入口函数 名);命令行入口段或明指之文所构之入口用默名。

器支又可书「界面」,以别图形之器与独对终端之器:「界面」者『图形』也 谓须画屏,开窗于桌面;「界面」者『终端』也 谓惟用终端与标准出入,于壳中以「行」行之;不书则为终端。图形之器与终端之器同,编全部五目标(提案〇〇〇四六第三节);软件目录、市肆与桌面启台据「界面」分为两类(提案〇〇〇四六)。

唯库可供依赖。构库则编诸普通模块,除试书、脚本、数据之文(名。数据。豫 随导之之模而编检)与子包,不链为器。验类同此范围;默认导入为空(且无入口)之库验类时并检试模,且印所检之数,此类多惟置试之包,其模不在诸默认导入之闭。明指文件之试例另论。编译器公用诸书迁库中编译器核心,命令入口仍在豫言编译器包。此二包各有其籍,不复包中套库。

默认导入

库之「类型」必书「默认导入」:目之列,定独书包名之导(寻观「甲」之书。,或径止于子)所展为何模。

「类型」者「典」【
  「种类」者『库』也,
  「默认导入」者「列」【『语言核心/内建类型』,『数据结构/多态列』,『控制/惰性求值』】也,
】也。

缘由与迁移,见默认导入设计。

编译之模

编译之模以文名定之,详见底层模式:名含「。底层」者为底层之文(不用垃圾回收,供执行器、驱动等系统之码),曰底层之源 名。底层。豫、底层之试 名。底层。测试。豫、底层接口 名。底层接口。豫、底层内建之声 名。底层内建。豫;余皆高级之文(有垃圾回收)。包描述书“编译模式”之字段,则报错。

底层之文所导,唯求上述三种底层之模;高级之文导底层之模则报错,故底层之代唯依底层库诸含底层之文之包。一包之中可兼置二者,包之层级与模无涉。包之入口与 豫构 文件 所指之文,二者皆可:编译器依入口之文名择其管线。底层可执行之包,所成者 Wasm 模块。包上下文第三、四式之“底层”一行今恒空,存其式以供稳定编译器读之。

平台

可选之字段「平台」,明包可用于何平台,及各平台所须之外依。其书法如「依赖」:值为列,每项或为平台名之串(简书),或为含「名称」之典。如唯行于诺驿、须二诺驿库之包:

「平台」者「列」【「典」【「名称」者『诺驿』也,「诺驿库」者「列」【『@kmamal/sdl』,『@kmamal/gpu』】也】】也。

典之「名称」必书;「诺驿库」「系统库」可书,皆串之列。诺驿者,Node.js 也;诺驿库者,npm 之包也;「系统库」书动态装载器所认之文件名。如依操作系统而明图形处理器之系统库:

「平台」者
  「列」
  【「典」【「名称」者『诺驿之林纳』也,「系统库」者「列」【『libcuda.so.1』】也】
  ,「典」【「名称」者『诺驿之轩窗』也,「系统库」者「列」【『nvcuda.dll』】也】
  ,「典」【「名称」者『诺驿之林檎』也,「系统库」者「列」【『Metal.framework』】也】
  】
也。

平台之树有定,子平台之名连“之”为一:

林檎
林纳
轩窗
豫言系统
诺驿
  诺驿之林檎
  诺驿之林纳
  诺驿之轩窗

许可

可选之字段「许可」书包之许可,其值为 SPDX 许可式之串:

「许可」者『MIT』也。
「许可」者『AGPL-3.0-only』也。
「许可」者『MIT OR Apache-2.0』也。

层级之包

包籍增二可选之字段,使诸包成组:父登记其直子,子明其父。以安全外壳诸库为例:

「:安全外壳。包。豫(父):」
「包含包」者「列」【『安全外壳密码』,『安全外壳协议』】也。   「:直子;次序有义:」

「:安全外壳协议。包。豫(子):」
「包含在」者『安全外壳』也。                                 「:父;不书则为根:」

二字段之值,皆同主之包名,一包至多一父。层乃逻辑之树,不系于目录;目录相套而未登记者,仍唯为界。身份仍为主、名,天下唯一,不因层而改。两向必相应:父之「包含包」当恰为凡书「包含在」其父者;缺一向、多一向、父或子不存、自含、重复、成环,皆报错,错辞含 包含在的父包不存在、父包未登记子包、登记的子包不存在、子包未声明包含在、包含关系成环、包不能包含自身、包不能包含在自身之中、包含包重复。

依父,则兼依父及其后裔之为库者(子、孙以下),亦可唯依某子。闭包之序:先「依赖」,次「包含包」所列之库子,末及自身;「包含包」之次宜稳。由是:子不得依其祖(成环,报“包依赖成环”;环含包含者,并示 子包不能依赖其祖先);可执行之子不入闭包,不可导入,唯登记以归类。

导入之法不改。设当前包为甲,路径为 一之二之…之末:首段必为甲自身或甲直依之名,得乙;自次段起,段为乙所登记之库子,则以其子代乙而续,否则余段为乙之包内模块;无余段,则依乙之默认导入而展,如单名导入。如唯依「密壳」者,可书 寻观「密壳」之「密壳约」之「通道」之书。。子先于模块:父之模块路径若以子名起(子名。豫 或 子名/…),则蔽其子,报 子包与父包模块重名。唯依父戊,则其子己不得为首段;寻 以末段名空间,故 寻观「戊」之「己」之书 所绑仍为 己。

包上下文书第五式:承第四式,每记于「父」与直依之间复增「默认导入」一列(目以“;”连之,空串示无默认导入);第四式承第三式,模行恒有,每记于文件与直依之间增「父」一列;旧编译器不识第四、五式。二至四式无「默认导入」之列,读之则自各包之包籍取此字段。行 ./豫构。林檎。豫行 检查 包名,于有包含关系之包,增一行 <包标识> 包含在:<父包名或(根)>;包含:<子包名、…>(无子则省“;包含”之辞),无包含者不增。行 ./豫构。林檎。豫行 发现 --树,依层级录诸包:无「包含在」者为根,依包述之径而排;子依「包含包」之序,每层缩进二格。每行书包名、自项目根之目录(可执行者另注“可执行文件”)与简介,末行计包数与树数;不书 --树 则仍逐行平列。本仓之层级,见仓库包构建“包之层级”之节。缘由、升级之序与试点,见豫构层级包设计。

书法

全仓之源惟一书法,曰雅言(提案〇〇〇二六、〇〇〇二七,见雅言之体)。包述无书法之字段;包上下文一律书第五式,读旧带“文体”之列之第六式则略其列。

说明之文

说明登记汉语、文言二路径,尾分别为 .汉语.md 与 .文言.md。验其存在、同包、无链接越界。简介供概览,正文载用途、用法与维护之则;不以说明作源码。普通包归档尚未实现,不称说明已可发布。

完整例与命令见汉语说明。旧稳定豫构不能读新籍;正式推广须先更新双种子。今版供审,不自行发布。