Skip to content

Commit f3b55bf

Browse files
committed
再遇分詞
1 parent 3d9579c commit f3b55bf

4 files changed

Lines changed: 63 additions & 19 deletions

File tree

book/.vitepress/config.mts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ export default defineConfig({
3838
text: "音界咒零.一版設計與定義",
3939
link: "/零.一版/音界咒零.一版設計與定義",
4040
},
41-
{ text: "全形字體選擇", link: "/全形字體選擇" },
4241
{
4342
text: "編譯目標:精五門(RISC-V)真言極簡子集",
4443
link: "/零.一版/編譯目標:精五門(RISC-V)真言極簡子集",
@@ -72,11 +71,16 @@ export default defineConfig({
7271
text: "設計與概述",
7372
link: "/零.二版/設計與概述.md",
7473
},
74+
{
75+
text: "再遇分詞",
76+
link: "/零.二版/再遇分詞.md",
77+
},
7578
],
7679
},
7780
{
7881
text: "雜項",
7982
items: [
83+
{ text: "全形字體選擇", link: "/全形字體選擇" },
8084
{
8185
text: "精五組語除錯器介紹",
8286
link: "/雜項/精五組語除錯器介紹.md",
53 KB
Loading

book/零.二版/再遇分詞.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
欲再做分詞,需先細數零.二版加入了哪些新詞。
2+
3+
運算子方面,有:
4+
-
5+
- ==
6+
- !=
7+
-
8+
- >=
9+
-
10+
- <=
11+
12+
特殊符號有:
13+
-
14+
-
15+
16+
關鍵字則有:
17+
-
18+
-
19+
- 或若
20+
- 不然
21+
-
22+
23+
若不以功能性區分,以詞固有的性質來區分:
24+
運算子與特殊符號用到的符號都不允許出現在識別子(變數名、術名),可以歸為一類討論。其中,長度為 1 的詞有可能恰為長度為 2 的詞的前綴,此狀況需要特殊判定。其餘 1 字詞判定與+-*/處理方式相同。
25+
26+
關鍵字中的 1 字詞處理方式與零.一版的``相同,2 字詞與 1 字詞也類似,只是會增加一個狀態。
27+
28+
回憶零.一版的分詞狀態機:
29+
![零・一版分詞狀態機](../image/零・一版分詞狀態機.png)
30+
31+
以此為基礎繪製零.二版的分詞狀態機,貧道略去 1 字特殊符號的狀態,而 1 字關鍵字僅以``為代表,並以`不然`為 2 字關鍵字之代表,`>=```為前綴問題之代表。
32+
33+
此外,除變數名之外,術名也允許非特殊符字符任意組合,今統一稱此二者為`識別子`
34+
35+
![零・二版分詞狀態機](../image/零・二版分詞狀態機.png)
36+
37+
新圖中`x`的含義與零.一版並不相同,其意義改變為「其他出邊字符之外的所有非特殊字符」。
38+
TODO: 修改零.一版分詞狀態圖,使 x 之意義相同。
39+
40+
本次分詞就不再附上代碼,在零.一版的基礎上依狀態機畫葫蘆即可得。

book/零.二版/設計與概述.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -59,37 +59,37 @@
5959
- ``
6060
- 小於
6161

62-
以上算子的求值結果皆為整數,若式子成立,值為1,否則值為0。
62+
以上算子的求值結果皆為整數,若式子成立,值為1,否則值為0。運算優先級彼此相等,但比加減乘除都還要低。
6363

6464
#### 餘數
6565

66-
`` 取餘數。
66+
`` 取餘數。優先級介於乘除與加減間。
6767

6868
### 「若」語句
6969

7070
```音界
71-
若(甲==乙)
71+
若(甲==乙)
7272
...
73-
73+
7474
```
75-
在括號內條件不為0時,執行〖 〗內語句,括號內為0時,注意到括號內並不限定是比較算子,可以是任意算式,乃至數字或變數。
75+
在括號內條件不為0時,執行【 】內語句,括號內為0時,注意到括號內並不限定是比較算子,可以是任意算式,乃至數字或變數。
7676

77-
貧道不採用塵界常見的花括號,是因為全形的花括號並不容易與圓括號區分,貧道自用的微軟正黑體是如此,恐此問題普遍存在,故採`〖 〗`,此類括號似乎沒有通用的念法,在此給它取個名吧!
77+
貧道不採用塵界常見的花括號,是因為全形的花括號並不容易與圓括號區分,貧道自用的微軟正黑體是如此,恐此問題普遍存在,故採`【 】`,此類括號似乎沒有通用的念法,在此給它取個名吧!
7878

7979
道友請看,此括號一面平,一面弧,若置平面朝下、弧面朝上,便好似能擺放蛋或球體的基座。故吾名之曰**基座括號**或簡稱**基括號**
8080

8181
與「若」連用的尚有「或若」、「不然」兩關鍵字。
8282

8383
```音界
84-
若(甲>10)
84+
若(甲>10)
8585
...
86-
或若(乙==1)
86+
或若(乙==1)
8787
...
88-
或若(乙==0)
88+
或若(乙==0)
8989
...
90-
〗不然〖
90+
】不然【
9191
...
92-
92+
9393
# 決策結尾
9494
```
9595

@@ -98,12 +98,12 @@
9898
###
9999

100100
```
101-
術.輾轉相處(甲、乙)
102-
若(乙==0)
101+
術.輾轉相處(甲、乙)
102+
若(乙==0)
103103
歸.甲
104-
104+
105105
歸.輾轉相除(乙、甲%乙)
106-
106+
107107
```
108108

109109
上例展示一遞迴術——輾轉相除術,以下逐詞解釋:
@@ -112,9 +112,9 @@
112112
2. ``:音界號,用以區隔關鍵字與術名
113113
3. `輾轉相除`:術名
114114
4. `(甲、乙)`:參數列表,參數之間以頓號``為間隔
115-
5. ``:左基括號,術體開始
116-
6. `若(乙==0) 歸.甲 `:符合條件時,將甲作為術的求值結果(歸值),結束術。
115+
5. ``:左基括號,術體開始
116+
6. `若(乙==0) 歸.甲 `:符合條件時,將甲作為術的求值結果(歸值),結束術。
117117
7. `歸.輾轉相除(乙、甲%乙)`:施展`輾轉相除(乙、甲%乙)`,以其歸值為歸值,結束術。
118-
5. ``:右基括號,術體結束
118+
5. ``:右基括號,術體結束
119119

120120
在零.二版中,術的參數與歸值(回傳值)都是整數。若在任意分支中,術沒有歸值,編譯器應報錯。

0 commit comments

Comments
 (0)