Kinnuch bio photo

Email

Github

荏苒之境

Nethaid Mellyn 友站链接

荏苒之境主站

Kikomas

Cathamos

Sicusa

音变

← 指南目录 · 导航栏第四项

音变页管理规则集。一个规则集是一段规则文本:音类声明、多合字母、阶段快照、规则,从上到下依次应用。同一种规则语言也用于正字法转写、文字映射和构形的形态音位规则,所以这一页的语法说明对全软件通用。

1. 规则集

顶部标签栏列出项目里的所有规则集,点击切换;「新建规则集」建空的;「导入」可以从音变姬三文件、Lexicanter 发音规则、Zompist SCA²、纯文本导入(见第 6 节)。检视器里可改名、写备注、删除(可撤销)。

规则文本本身是唯一真值,三种视图只是不同的编辑器:

  • 规则列表(默认):每条规则一张卡片,编号从 1 起(只数规则行,注释与声明不占号)。点卡片展开可视化表单:目标、替换、多个环境、排除环境、注释;卡片上方是音类与多合字母面板,可以直接增删。点选一条规则时,测试台会显示「推到这一条为止」的中间结果,卡片上还有一个示例词的变化动画。
  • 链图:思维导图式展示阶段与规则链,点节点定位。
  • 源代码:带行号与高亮的文本编辑器,语法错误逐行标红,警告标黄,底部列出全部诊断,点行号跳转。

底部状态栏:规则数、阶段数、音类数、诊断计数、「导出为文本」、「整库演化」。规则语言的完整语法见本页第 4 节(标题旁的「使用指南」直达)。

2. 阶段快照与语言绑定

-* 名称 记录到达该行时的词形并起名。测试台按阶段分列显示;检视器「阶段对应的语言」把每个阶段绑定到项目里的一门语言。绑定的用处:

  • 构形的「拼接后跑音变」生成器可以指定从哪个阶段推到哪个阶段。
  • 整库演化默认用第一个绑定阶段的语言当源、最后一个当目标。
  • 规则解析时会用第一个绑定语言的音类与多合字母作为基础。

3. 测试台(检视器)

  • 输入词:每行一个,空格也可分隔;随规则集保存。
  • 输出表:每个词一行,按阶段分列;有变化的格子高亮。点一行看轨迹:命中的每条规则、变化前后、所在阶段,点规则号跳到编辑器对应行。
  • 在列表视图选中某条规则时,输出表切换为「至第 n 条」的中间形式。

4. 规则语言

4.1 一段文本里可以写什么

; 分号到行尾是注释;行首 # 也是注释(兼容旧文件)
V=aeiou                 ; 单字母音类:成员按字符拆
{Vlong}=ā ē ī ō ū       ; 长名音类:成员用空格或逗号分隔;不分隔则按字符拆
th|θ                    ; 多合字母:匹配前把 th 当成一个单位 θ,输出时换回
-* 祖语                  ; 阶段快照:记录此刻的词形并起名
a > e / _i              ; 规则
-* 现代语

规则从上到下依次应用;每条规则在整个词内从左到右反复匹配。音类和多合字母声明可以写在任何位置,都对整段文本生效。音系页定义的音类与多合字母自动可用,文本里同名声明会覆盖它们。

4.2 一条规则

目标 > 替换 / 左0_右0 , 左1_右1 , … - 左排除_右排除
部分 说明
目标 可含音类、临时音类 [abc]() 可选段。留空表示增生
替换 可含音类;目标里的第一个音类与替换里的音类按位置一一对应(V > {Vlong} 把第 n 个元音变成第 n 个长元音)。留空表示删除。\ 换位(多于两个字符则整体倒序)。2 双写
环境 _ 是目标所在位置,左右可留空但 _ 不能省;没有 / 等于任意环境。多个环境用 , 分隔,依次应用(后一个环境看到的是前一个改完的词)
排除 - 引出;命中排除环境的位置不变

4.3 环境里的记号

记号 含义
# 词首(左侧)或词末(右侧);输入整体视为一个词
¢ 复合词内部边界(只是一个普通符号,用完可以 ¢ > / _ 删掉)
(x) 可选
x\|y 多选其一,如 #\|C_
? 跨位置:_?m 表示其后任意位置有 m
[xyz] 临时音类
V{Name} 引用音类
@名 引用语素(gloss 或去掉连字符的形式),成员是它的全部异体形;替换侧也可写 @名
t.h 点号隔开两个字母,防止被当成多合字母

未在环境里特殊处理的字符原样进入正则表达式,因此 | 等可以直接用;反过来说,+* 之类要避免。

4.4 示例

V=aeiou
{Vlong}=ā ē ī ō ū
C=ptkbdgmnlrsh
-* Proto
e > a / _h , h_          ; e 在 h 旁边变 a
V > {Vlong} / _#          ; 词末元音延长
h > / V_V                 ; 元音间 h 脱落
> e / #_[nm]C             ; 词首鼻音 + 辅音前增生 e
bm > \ / _                ; bm 换位为 mb
p > pp / V_V - _#         ; 元音间 p 双写,但词末不算
-* Modern

4.5 常见写法

想做的事 写法
词末元音脱落 V > / _#
元音间清塞音浊化 [ptk] > [bdg] / V_V(临时音类按位置对应)
元音和谐(前后) 先定义 Back=aouFront=eöü,写 A > a / Back?_A > e / Front?_A 是原音位占位)
双写辅音单写 C2 > C
删除语素界标 ¢ > / _ 放在规则集末尾
某个后缀的辅音交替 @lar > @ler / Front?_(两个语素各自的异体形按位置对应)
只在某阶段之后生效 把规则写在对应 -* 标记之后

5. 诊断

未定义的音类会报警告并按字面字符处理;缺少 >、环境里没有 _ 等报错误,该行跳过。诊断在源代码视图逐行显示,也列在底部;有错误时状态栏显示红色计数。

6. 导入其他格式

来源 处理
音变姬 Category.txt / Replace.txt / Rule.txt 三个文件直接拼接,语义完全一致(有回归测试保证:236 条规则的整库输出逐词比对)
Lexicanter 发音规则 {a,b} 联合 → [ab]^# → 空
Zompist SCA² 目标/替换/环境/排除目标 > 替换 / 环境 - 排除*?
纯文本 原样作为新规则集

7. 整库演化

底部「整库演化」按钮展开面板:把源语言的全部词条按当前规则集推到目标语言,并自动建立词源链接。

选项 说明
源语言 / 目标语言 默认取第一个与最后一个绑定了语言的阶段
起始 / 终止阶段 输入已经是起始阶段的形式则跳过其前规则;推到终止阶段为止
输入字段 词头、某个词干槽,或源语言的语素表(词根表在语素页时用这个)
词类筛选 只处理某个词类
复制义项与标签 新词带上源词释义
更新已派生词的词头 改了规则重跑时,只改词头不重复建词
词头冲突时仍新建 目标语言里已有同拼写、但没有词源链接的词,默认跳过

流程:预览(表格列出输入、输出、目标语言里已有的词、动作:新建 / 更新 / 未变 / 跳过)→ 写入目标语言。新词的词源类型是「继承(音变)」,来源指向源词条或源语素,protoForm 记录输入形式,备注写规则集名。之后在词库的关系图里能看到整条继承链。

8. 与其他模块的关系

  • 音类与多合字母可来自音系页;@语素 来自语素页。
  • 阶段绑定语言后,构形的「拼接后跑音变」生成器与整库演化都会用到。
  • 正字法规则、文字映射规则用同一套语法,但各自独立存放。