Am encore nouveau pour Haskell, alors mes excuses s'il y a une réponse évidente à cette ...
Je voudrais faire une fonction qui divise la toutes les listes de chaînes suivantes soit [chaîne]:Haskell: Délimiter une chaîne par sous-chaînes choisies et les espaces
["int x = 1", "y := x + 123"]
["int x= 1", "y:= x+123"]
["int x=1", "y:=x+123"]
tous dans la même chaîne de chaînes par exemple [[chaîne]]:
[["int", "x", "=", "1"], ["y", ":=", "x", "+", "123"]]
Vous pouvez utiliser map words.lines
pour le premier [Chaîne].
Mais je ne sais pas de moyens vraiment bien de prendre également en compte les autres - où vous utiliserez les différents sous-chaînes "="
, ":="
, etc. "+"
pour briser la chaîne principale.
Merci de prendre le temps de me éclairer sur Haskell :-)
Merci pour votre réponse. J'espérais cependant un moyen simple de le faire «purement», c'est-à-dire sans autres bibliothèques. Oh, et de préférence sans monades non plus (parce que je n'ai pas encore tout à fait appris à les connaître encore lol). –
Ouais parsec n'est pas génial quand vous commencez. J'ai trouvé qu'il était relativement facile d'éditer un analyseur que quelqu'un d'autre avait écrit, mais écrire le mien dépassait mes capacités pendant un moment. Nécessite un peu de confort avec des monades. – luqui
Assez juste. Cela vaut la peine de considérer cela comme une option. Si vous voulez quelque chose d'autre qui n'est pas monadique, vous devrez peut-être choisir une option personnalisée. –