Lesson 05 β Pratt Parsing / Precedence Climbing
Mα»t hΓ m parseExpr(minbp) thay cho cαΊ£ chα»₯c hΓ m phΓ’n tαΊ§ng. Ba module tΖ°Ζ‘ng tΓ‘c: chαΊ‘y thuαΊt toΓ‘n tα»«ng bΖ°α»c vα»i cΓ’y dα»±ng dαΊ§n, so kαΊΏt hợp trΓ‘i vs phαΊ£i, vΓ chα»nh binding power Δα» thαΊ₯y cΓ’y Δα»i hΓ¬nh.
1. Pratt Stepper β chαΊ‘y thuαΊt toΓ‘n tα»«ng bΖ°α»c
NhαΊp biα»u thα»©c (toΓ‘n tα» + - * / ^, ngoαΊ·c ( ), unary -). Chα»nh binding power trong bαΊ£ng nαΊΏu muα»n.
BαΊ₯m ChαΊ‘y tα»«ng bΖ°α»c rα»i BΖ°α»c βΈ Δα» xem minbp hiα»n tαΊ‘i, cΓ’y dα»±ng dαΊ§n, vΓ giΓ‘ trα» tΓnh ra.
BαΊ£ng binding power (chα»nh Δược)
| toÑn tỠ| lbp | kết hợp | rbp (suy ra) |
|---|
TrΓ‘i-kαΊΏt-hợp β rbp = lbp + 1. PhαΊ£i-kαΊΏt-hợp β rbp = lbp β 1. Δα»i sα»/kαΊΏt hợp rα»i ChαΊ‘y tα»«ng bΖ°α»c lαΊ‘i Δα» thαΊ₯y αΊ£nh hΖ°α»ng.
NhαΊt kΓ½ thuαΊt toΓ‘n
2. Associativity Demo β trΓ‘i vs phαΊ£i, hai cΓ’y khΓ‘c nhau
CΓΉng mα»t loαΊ‘i toΓ‘n tα» lαΊ·p lαΊ‘i, nhΖ°ng kαΊΏt hợp trΓ‘i vΓ kαΊΏt hợp phαΊ£i dα»±ng cΓ’y khΓ‘c nhau β giΓ‘ trα» khΓ‘c nhau.
ΔΓ’y lΓ Δiα»u mΓ rbp = lbp Β± 1 Δiα»u khiα»n.
8 - 3 - 2rbp(-) = lbp + 1 β toΓ‘n tα» cΓΉng mα»©c KHΓNG lα»t vΓ o Δα» quy β gom vΓ²ng ngoΓ i.2 ^ 3 ^ 2rbp(^) = lbp β 1 β toΓ‘n tα» cΓΉng mα»©c Lα»T vΓ o Δα» quy β gom bΓͺn phαΊ£i trΖ°α»c.
BαΊ£n lα»: α» 8-3-2, -β cΓ³ lbp 30 vs minbp 31 (= rbp cα»§a -β) β 30 > 31 sai β gom trΓ‘i.
α» 2^3^2, ^β cΓ³ lbp 50 vs minbp 49 (= rbp cα»§a ^β) β 50 > 49 ΔΓΊng β gom phαΊ£i. ΔΓΊng mα»t con sα» rbp lαΊt cαΊ£ cΓ’y.
3. BαΊ£ng Ζ°u tiΓͺn tΖ°Ζ‘ng tΓ‘c β Δα»i binding power, cΓ’y Δα»i hΓ¬nh
Biα»u thα»©c cα» Δα»nh 2 + 3 * 4. KΓ©o binding power cα»§a + vΓ *.
Khi lbp(*) > lbp(+) β cΓ’y 2 + (3*4) (nhΓ’n trΖ°α»c). ΔαΊ£o lαΊ‘i β (2+3) * 4 (cα»ng trΖ°α»c). ThαΊ₯y ngay cΓ’y vΓ giΓ‘ trα» nhαΊ£y.