Skip to content

Commit 0c05c60

Browse files
committed
修改調車場算法所在標題
1 parent 229241d commit 0c05c60

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

book/.vitepress/config.mts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ export default defineConfig({
7575
text: "再遇分詞",
7676
link: "/零.二版/再遇分詞.md",
7777
},
78+
{
79+
text: "再遇剖析(一)決定算子優先級",
80+
link: "/零.二版/再遇剖析(一)決定算子優先級.md",
81+
},
7882
],
7983
},
8084
{

book/零.二版/再遇剖析.md renamed to book/零.二版/再遇剖析(一)決定算子優先級.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545

4646
而手寫遞迴下降中充斥大量為了處理優先級而生的函數,也會降低可讀性。那有沒有其他方法能決定優先級呢?
4747

48-
### 決定優先級的算法
48+
## 決定優先級的算法
4949

5050
道友們可能在煉氣時就學過或自己想到過該如何巧用棧,從左到右掃過一個算式求其值。該算法名為[調車場算法](https://en.wikipedia.org/wiki/Shunting_yard_algorithm),而其遞迴版本(遞迴跟棧關係密切啊!)有另一個名字,叫[優先級爬升算法](https://en.wikipedia.org/wiki/Operator-precedence_parser)
5151

@@ -106,7 +106,7 @@ x 兩側的 - 優先級相等,但 - 是左結合,優先往左側結合,故
106106
```
107107
該算法稍作加強,也能處理括號,基本想法是每當遇到右括號時,就當做算子已經暫時讀取完畢,算子算式由右一直向左結合直到碰到左括號。
108108

109-
#### 以棧實作:調車場算法
109+
### 以棧實作:調車場算法
110110
此過程能以棧輕易模擬,具體作法可參照下方源碼:
111111

112112
```rust
@@ -176,11 +176,11 @@ impl 調車場 {
176176

177177
```
178178

179-
#### 遞迴實作:優先級爬升算法
179+
### 遞迴實作:優先級爬升算法
180180
TODO:
181181

182182

183-
### 混用回溯剖析與優先級決定算法
183+
## 混用回溯剖析與優先級決定算法
184184

185185
那吾人不妨在剖析器中將算子、算元與括號順序保留,再由此優先級爬升算法來處理優先級。
186186

0 commit comments

Comments
 (0)