根本问题:
究竟是在 expr 的当前调用中匹配下一个运算符,
还是让 expr 的调用者匹配下一个运算符?
For left-associative operators, the right operand gets one more precedence level than the operator itself.
For right-associative operators, the right operand has the same precedence as the current operator.
报错 ⇒ 恢复 ⇒ 继续分析,最重要的是恢复策略
<aside> 💡 恐慌/应急 (Panic) 模式
假装成功、调整状态、继续进行
</aside>
如果下一个词法单元符合预期, 则采用
“单词法符号移除 (single-token deletion)”
或 “单词法符号补全 (single-token insertion)” 策略
采用 “同步-返回 (sync-and-return)” 策略,使用 “重新同步集合 (resynchronization set)” 从当前规则中恢复:
在 $\rm FOLLOWING$ 中找到第一个可以继续匹配的词法单元