1
我有一個解析器,它實際上是一系列操作一系列詞法分析令牌的遞歸函數。什麼導致F#序列重新枚舉?
我遇到的問題是,序列似乎從遞歸函數調用開始重新啓動。鑑於以下骨架定義功能Parse
let restricted = Seq.take_while token_search tokens
let compiled_nodes = Seq.fold (fun list (next: Lexer.Token) -> list @ parse_token this restricted next) [] restricted
功能parse_token
可能導致通話到Parse
。
但是,當發生這種情況時,參數tokens
結束位於序列的開始位置。
關於如何將序列定位在需要的位置的任何想法?
TIA
你很正確。我意識到在我發佈這個問題之後,意識到問題所在。我試圖建立一個共享IEnumerator的等價物,這是錯誤的方法。我最終將它建立在名單上,傳遞了未消耗的剩餘。 – kolosy 2009-03-03 00:00:15