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