使用 Result 進行結構化錯誤處理

以下程式碼實作一個非常簡單的運算式語言剖析器,但會藉由恐慌來處理錯誤。請重新編寫,改用慣用的錯誤處理機制,並將錯誤傳播至 main 的回傳陳述式。您可以自由使用 thiserroranyhow

提示:首先請修正 parse 函式中的錯誤處理機制。確認一切正常運作後,更新 Tokenizer 即可實作 Iterator<Item=Result<Token, TokenizerError>>,並在剖析器中處理。

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX