Haskell中的级联解析器

问题描述 投票:0回答:2
newtype Parser a = Parser { parse :: String -> Maybe (a,String) }

我有2个解析器:

1)a =(满足isAlpha),它知道如何匹配字符串中的第一个字母数字字符。

正在运行[[解析一个“ k345”

给出了<< [仅('k',“ 345”)`]2)b =很多(满足isDigit),知道如何匹配任意数量的数字。运行parse b“ 1234 abc”`给出

Just(“ 1234”,“ abc”)

现在,我想将这2个字符组合在一起,并匹配一个单字母数字字符,后跟任意数量的数字。我尝试过:

parse(a *> b)“ k1234 7”]

got Just(“ 1234”,“ 7”)

。看起来与第一个解析器a匹配的“ k”已从输出中消失。我该如何解决这个问题?
谢谢! newtype Parser a = Parser {parse :: String-> Maybe(a,String)}我有2个解析器:1)a =(satisfy isAlpha)知道如何匹配字符串中的第一个字母数字字符。解析...
parsing haskell applicative
2个回答
0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.