音变
← 指南目录 · 导航栏第四项
音变页管理规则集。一个规则集是一段规则文本:音类声明、多合字母、阶段快照、规则,从上到下依次应用。同一种规则语言也用于正字法转写、文字映射和构形的形态音位规则,所以这一页的语法说明对全软件通用。
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=aou、Front=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. 与其他模块的关系
- 音类与多合字母可来自音系页;
@语素来自语素页。 - 阶段绑定语言后,构形的「拼接后跑音变」生成器与整库演化都会用到。
- 正字法规则、文字映射规则用同一套语法,但各自独立存放。
荏苒之境
Kikomas
Cathamos