Jak sprawić, aby parser Attoparsec odniósł sukces bez zużywania (jak parsec lookAhead)
Napisałem szybki parser attoparsec, aby przechodzić plik aspx i upuszczać wszystkie atrybuty stylu, i działa dobrze, z wyjątkiem jednego fragmentu, w którym nie potrafię określić, jak sprawić, by udało się go dopasować>
bez konsumpcji.
Oto co mam:
anyTill = manyTill anyChar
anyBetween start end = start *> anyTill end
styleWithQuotes = anyBetween (stringCI "style=\"") (stringCI "\"")
styleWithoutQuotes = anyBetween (stringCI "style=") (stringCI " " <|> ">")
everythingButStyles = manyTill anyChar (styleWithQuotes <|> styleWithoutQuotes) <|> many1 anyChar
Rozumiem, że jest to częściowo spowodowane tym, jak używam wieluWszystko w styluButStyles, tak aktywnie upuszczam wszystkie elementy stylu na ziemi, ale wstyleWithoutQuotes
Potrzebuję go, aby pasował do „>” jako końca, ale nie powinien go konsumować, w parsecie właśnie bym to zrobiłlookAhead ">"
ale nie mogę tego zrobić w attoparsec.