Parsing 什么是「;“一些”;及;“许多”;备选方案的功能是什么?
我正在为你写一个Haskell,我在他实现“Nanoparsec”的部分,这是一个来自第一原理的Haskell解析器。我被困在解析器的Parsing 什么是「;“一些”;及;“许多”;备选方案的功能是什么?,parsing,haskell,parsec,some-and-many,alternative-functor,Parsing,Haskell,Parsec,Some And Many,Alternative Functor,我正在为你写一个Haskell,我在他实现“Nanoparsec”的部分,这是一个来自第一原理的Haskell解析器。我被困在解析器的备选方案实例上,特别是一些和许多实现: instance Alternative Parser where -- empty = ... -- (<|>) p q = ... some v = some_v where many_v = some_v <|> pure [] some_v = (:
备选方案实例上,特别是一些
和许多
实现:
instance Alternative Parser where
-- empty = ...
-- (<|>) p q = ...
some v = some_v
where
many_v = some_v <|> pure []
some_v = (:) <$> v <*> many_v
many v = many_v
where
many_v = some_v <|> pure []
some_v = (:) <$> v <*> many_v
实例替代解析器,其中
--空=。。。
--()p q=。。。
some v=some_v
哪里
许多=一些纯粹的
some_v=(:)v many_v
多v=多v
哪里
许多=一些纯粹的
some_v=(:)v many_v
我不知道这两个函数在做什么。从我所看到的,some
接受一个解析器,应用它,并连接结果,直到输入用完为止。但是,很多
看起来都是一样的。这里发生了什么事?tl;重复的dr:如果一个regex/解析器是你的应用程序,那么一些是+
(一个或多个),另外许多是*
(零个或多个),作为对另一个重复的回答。