一連のレクサートークンで動作する再帰関数のセットであるパーサーがあります。
私が直面している問題は、再帰的な関数呼び出しでシーケンスが最初から再開されるように見えることです。次の関数のスケルトン定義が与えられた場合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
はシーケンスの先頭に配置されてしまいます。
シーケンスを必要な場所に配置する方法についてのアイデアはありますか?
ティア