J'ai un analyseur qui est effectivement un ensemble de fonctions récursives fonctionnant sur une séquence de jetons lexers.Qu'est-ce qui provoque la ré-énumération d'une séquence F #?
Le problème que je rencontre est que la séquence semble redémarrer depuis le début sur les appels de fonction récursifs. Compte tenu de la définition du squelette suivant pour la fonction 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
La fonction parse_token
peut entraîner un appel en Parse
.
Cependant, lorsque cela se produit, le paramètre tokens
finit par être positionné au début de la séquence.
Des idées sur la façon de garder la séquence positionnée là où elle doit être?
tia
vous avez tout à fait raison. Je me suis rendu compte qu'après avoir posté la question, et réalisé quel était le problème. J'essayais de construire l'équivalent d'un IEnumerator partagé, ce qui était la mauvaise approche. J'ai fini par le construire sur des listes, en passant autour du reste non consommé. – kolosy