我有一个解析器,它实际上是一组对一系列词法分析器标记进行操作的递归函数。
我遇到的问题是该序列似乎从递归函数调用的开头重新开始。给定以下功能的骨架定义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
最终会定位在序列的开头。
关于如何将序列保持在需要的位置的任何想法?
蒂亚