繁体   English   中英

如何在 Haskell 中运行 Parsec 测试?

[英]How to run Parsec test in Haskell?

最近,我开始使用 Hackage 库学习解析器实现,尤其是 Parsec。 到目前为止,我有这段代码来测试整数加法作为简单计算器功能之一:

import Text.Parsec hiding(digit)
import Data.Functor

type Parser a = Parsec String () a

digit :: Parser Char
digit = oneOf ['0'..'9']

number :: Parser Integer
number = read <$> many1 digit

addition = do
    lhv <- number
    spaces
    char '+'
    spaces
    rhv <- number
    return $ lhv + rhv  

由于缺少 GHCI 启动此解析器的线索,我有点困惑(我的操作系统是 Windows 10)。 我想在命令提示符中输入什么只是为了进行一些测试?

您可以使用Text.Parsec 模块中parseTest函数。 GHCI 中的示例会话:

~/g/scripts $ stack ghci parser.hs
GHCi, version 8.6.5: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /home/sibi/.ghci
[1 of 1] Compiling Main             ( /home/sibi/github/scripts/parser.hs, interpreted )
Ok, one module loaded.
Loaded GHCi configuration from /tmp/haskell-stack-ghci/452ad586/ghci-script
λ> :t addition
addition
  :: ParsecT String () Data.Functor.Identity.Identity Integer
λ> :t parseTest
parseTest
  :: (Stream s Data.Functor.Identity.Identity t, Show a) =>
     Parsec s () a -> s -> IO ()
λ> parseTest addition "3 + 2"
5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM