3
私はattoparsecパーサーでトレース/デバッグをしたいと思っています。ここでは、最小限の[ありません]作業例です:attoparsec ParserにIOを正しく追加するには?
import Data.Text as T
import Data.Attoparsec.Text
import Data.Attoparsec.Combinator
import Control.Applicative ((<*), (*>))
parseSentences :: Parser [T.Text]
parseSentences = many1 $ takeWhile1 (/= '.') <* char '.' <* skipSpace
parser :: Parser [T.Text]
parser = do
stuff <- parseSentences
-- putStrLn $ "Got stuff: " ++ show stuff
tail <- takeText
-- putStrLn $ "Got tail: " ++ show tail
return $ stuff ++ [tail, T.pack "more stuff"]
main = do
let input = T.pack "sample. example. bang"
print $ parseOnly parser input
私は私のパーサにIOアクションを使用するために何をすべきか?
[OK]をクリックします。しかし、私は元のコードのように、パーサのクエリの間でどのようにそれらを行うことができますか?トレースするフィードを取得し、そこから出力を得るためのノーオペレーションはありますか? – wiz
あなたは 'trace 'を行うことができます..." $ return() 'おそらく... – dflemstr
ありがとう!それはうまくいった! – wiz