diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7494b24..dea01fa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: runs-on: windows-latest strategy: matrix: - python-version: [3.6, 3.7, 3.8, 3.9] + python-version: ["3.7", "3.8", "3.9", "3.10.0-beta.3"] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} diff --git a/setup.py b/setup.py index 6ad0599..b6754ed 100644 --- a/setup.py +++ b/setup.py @@ -25,15 +25,15 @@ 'Natural Language :: Chinese (Traditional)', 'License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9' + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', ], keywords='middle-chinese historical-linguistics qieyun', packages=find_packages('src'), package_dir={'': 'src'}, - python_requires='>=3.6, <4', + python_requires='>=3.7, <4', entry_points={}, project_urls={ 'Bug Reports': 'https://github.com/nk2028/qieyun-encoder-python/issues', diff --git "a/src/QieyunEncoder/_\351\237\263\344\275\215\351\205\215\345\210\227\350\246\217\345\211\207\350\241\250.py" "b/src/QieyunEncoder/_\351\237\263\344\275\215\351\205\215\345\210\227\350\246\217\345\211\207\350\241\250.py" new file mode 100644 index 0000000..00726ed --- /dev/null +++ "b/src/QieyunEncoder/_\351\237\263\344\275\215\351\205\215\345\210\227\350\246\217\345\211\207\350\241\250.py" @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- + + +from enum import IntEnum + + +class 合法性等級(IntEnum): + 無效, 強非法, 弱非法, 弱合法, 稀有合法, 強合法 = range(6) + + @property + def 字符串(self) -> str: + return self.name + + +# 以下規則只適用於更優音韻地位 +# 每條規則是三元組 (合法性等級, 禁止的情況, 排除的情況) +# 在規則下進行簡要解釋,並舉出違反規則的例外小韻(根據數據中對一些爭議小韻的處理不同,例外小韻可能有差異) +音位配列規則表 = ( + (合法性等級.無效, '邪章昌船書常日以羣母 一二四等', None), + # 這些聲母只能拼三等,也不存在對應的能拼非三等的聲母 + + (合法性等級.強非法, '次入韻', '去聲'), + # 因爲次入四韻都是由上古去聲韻尾變來。例外小韻:茝栘臡佁䑂倄 + + (合法性等級.強非法, '幫組 之韻', None), + # 因爲之韻在音系上相當於開合分韻的開口韻,幫組不能拼 + + (合法性等級.強非法, '陽唐庚耕清青蒸登韻 銳音 合口', '以母 清韻'), + # 分開合的 -ng 尾韻銳音無合口(以母清韻除外)。例外小韻:𢷾𦳮騂硦㘀 + + (合法性等級.強非法, '四等 合口 銳音', None), + # 因爲上古無唇化銳音聲母 + + (合法性等級.強非法, '云母 開口', '宵侵鹽韻'), + # 分開合的韻云母無開口,因爲云母上古就是 *w。例外小韻:矣漹 + + (合法性等級.強非法, '麻韻 三等', '銳音 開口'), + # 麻歌屬於銳鈍分韻,且合口沒有上古來源。例外小韻:乜𦣛 + + (合法性等級.強非法, '侵鹽韻 重紐A類', '影母'), + # 脂祭真仙侵鹽六韻見系(除影母外)開口缺少重紐。特別地,侵鹽韻僅影母有可靠重紐 + # 這是因爲上古見系聲母拼這些韻的 A 類開口韻的字到了後世,聲母常常會被腭化到章組 + + (合法性等級.強非法, '俟母', '之韻'), + # 俟母之韻可能是成音節捲舌近音(ɻ̍)特殊演變的結果,類似現代漢語的 er 不能拼其他聲母 + + (合法性等級.弱非法, '來母 二等', None), + # 因爲來母上古就是 *r。例外小韻:藞瀧犖礐䐯斕𡰠顟臉 + + (合法性等級.弱非法, '歌韻 三等', '見影組 平聲'), + # 見系歌三本無上古来源,但因爲見組聲母三等非三等音值有別,所以引入見組歌三專用於音譯,且不用仄聲 + + (合法性等級.弱非法, '痕韻 銳音', None), + # 沒有上古来源,因为上古非三等 *ən 在銳音后会前化,入先韵。例外小韻:吞 + + (合法性等級.弱非法, '幫組 蕭添韻', None), + # m 與前元音相拼時更接近 n,因此唇音 + em 先異化成了 en。例外小韻:𡕢 + + (合法性等級.弱非法, '祭韻 見影組 重紐A類', '影母'), + # 脂祭真仙侵鹽六韻見系(除影母外)開口缺少重紐。例外小韻:藝 + + (合法性等級.弱非法, '祭韻 幫組 重紐B類', None), + # 特別地,祭韻幫組也無重紐 + + (合法性等級.弱合法, '冬韻 鈍音 舒聲', None), + # 在上古就缺乏,原因不明。例外小韻:𪁪雺攻䃔䃔 + + (合法性等級.弱合法, '船母 尤之東陽祭宵鹽韻', None), + # 除魚虞鍾外,船母不拼三 C 韻;此外船母也不拼祭宵鹽韻。原因不明 + + (合法性等級.弱合法, '麻韻 三等 知組', None), + # 原因不明。例外小韻:爹 + + (合法性等級.弱合法, '蒸韻 合口 舒聲', None), + # 因爲蒸韻合口字大多數併入了東韻 + + (合法性等級.弱合法, '東韻 三等 上聲', None), + # -ng 尾上聲字少,具體原因不明 + + (合法性等級.弱合法, '佳麻皆夬韻 合口 知組', None), + # 原因不明。例外小韻:檛䊬顡尵 + + (合法性等級.弱合法, '山刪韻 合口 舒聲 知組', None), + # 原因不明。例外小韻:窀奻奻 + + (合法性等級.稀有合法, '銜韻 知組', None), + # 原因不明。例外小韻:𠗨 + + (合法性等級.稀有合法, '云母 鍾韻', None), + # 沒有上古來源,因爲上古云母 *w 排斥元音圓唇的鍾韻 + + (合法性等級.稀有合法, '脂仙宵韻 見影組 開口 重紐A類', '影母'), + # 脂祭真仙侵鹽六韻見系(除影母外)開口缺少重紐。例外小韻:棄鬐咦甄孑遣譴蹻翹翹 + # 特別地,真韻的例外小韻太多,因此不視爲非法。另外宵韻的見系開口重紐也很少,列入規則 + + (合法性等級.稀有合法, '幫組 咸覃銜談韻', None), + # 因爲唇音聲母會掩蔽 -m 尾的音色,將 -m 尾的部位異化。例外小韻:𨂝埿姏㛧 + + (合法性等級.稀有合法, '脂韻 莊組', '生母'), + # 原因不明。例外小韻:㿷 + + (合法性等級.稀有合法, '真韻 莊組 合口', '生母 入聲'), + # 原因不明。例外小韻:𠭴 + + (合法性等級.稀有合法, '蒸韻 上聲', None), + # -ng 尾上聲字少,具體原因不明。例外小韻:庱拯㱡殑 + + (合法性等級.稀有合法, '登韻 合口 上去聲', None), + # -ng 尾上聲字少,具體原因不明,且登合僅見系字 + + (合法性等級.稀有合法, '冬韻 上聲', None), + # -ng 尾上聲字少,具體原因不明。《切韻》冬韻無對應的上聲韻目。例外小韻:湩 + + (合法性等級.稀有合法, '皆韻 上聲', '見影組 開口'), + # 原因不明 + + (合法性等級.稀有合法, '邪母 虞東宵韻', None), + # 原因不明 +) diff --git "a/src/QieyunEncoder/\345\270\270\351\207\217.py" "b/src/QieyunEncoder/\345\270\270\351\207\217.py" index e91d4b2..f2da613 100644 --- "a/src/QieyunEncoder/\345\270\270\351\207\217.py" +++ "b/src/QieyunEncoder/\345\270\270\351\207\217.py" @@ -41,4 +41,5 @@ class 常量: 輕脣韻: str = '東鍾微虞廢文元陽尤凡' + 陰聲韻: str = '支脂之微魚虞模齊祭泰佳皆夬灰咍廢蕭宵肴豪歌麻尤侯幽' 次入韻: str = '祭泰夬廢' diff --git "a/src/QieyunEncoder/\351\237\263\351\237\273\345\234\260\344\275\215.py" "b/src/QieyunEncoder/\351\237\263\351\237\273\345\234\260\344\275\215.py" index 572b3d3..1ff6587 100644 --- "a/src/QieyunEncoder/\351\237\263\351\237\273\345\234\260\344\275\215.py" +++ "b/src/QieyunEncoder/\351\237\263\351\237\273\345\234\260\344\275\215.py" @@ -40,7 +40,7 @@ .. hint:: 不要與中古後期三十六字母混淆。 - + 中古後期三十六字母: