利用<代码>Parsec 3.1,可以分以下几种投入:
[Char]
withText.Parsec.String
Data.ByteString
withText.Parsec.ByteString
Data.ByteString.Lazy
withText.Parsec.ByteString.Lazy
我看不到<代码>Data.Text模块的任何内容。 我想对统法协会的编码内容进行分类,而不会受到<编码>String效率低下的影响。 因此,我根据<代码>建立了以下模块。 文本:Parsec.ByteString 模块:
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Text.Parsec.Text
( Parser, GenParser
) where
import Text.Parsec.Prim
import qualified Data.Text as T
instance (Monad m) => Stream T.Text m Char where
uncons = return . T.uncons
type Parser = Parsec T.Text ()
type GenParser t st = Parsec T.Text st
- Does it make sense to do so?
- It this compatible with the rest of the Parsec API?
其他评论:
我不得不在我的教程模块中添加<代码>{-# LANGUAGE No Mono吗?”
包装<代码>Text是一件事,用<代码>Text构建一个AST,是另一回事。 我还需要<代码><<<>> >代码>。
module TestText where
import Data.Text as T
import Text.Parsec
import Text.Parsec.Prim
import Text.Parsec.Text
input = T.pack "xxxxxxxxxxxxxxyyyyxxxxxxxxxp"
parser = do
x1 <- many1 (char x )
y <- many1 (char y )
x2 <- many1 (char x )
return (T.pack x1, T.pack y, T.pack x2)
test = runParser parser () "test" input