gpt4 book ai didi

parsing - 让解析器忽略所有多余的空格

转载 作者:行者123 更新时间:2023-12-02 04:43:28 26 4
gpt4 key购买 nike

假设我在 Parsec 中有一个 Parser p,我想指定我想忽略 p 中所有多余/冗余的空白。比方说,我将一个列表定义为以“[”开头,以“]”结尾,列表中是用空格分隔的整数。但是如果“[”前面、“]”之后、“[”和第一个整数之间有空格等等,我不希望出现任何错误。

在我的例子中,我希望它适用于我的玩具编程语言的解析器。

如果需要/需要,我会更新代码。

最佳答案

空格包围一切:

parseIntList :: Parsec String u [Int]
parseIntList = do
spaces
char '['
spaces
first <- many1 digit
rest <- many $ try $ do
spaces
char ','
spaces
many1 digit
spaces
char ']'
return $ map read $ first : rest

这是一个非常基本的方法,在某些情况下它会失败(例如一个空列表),但这是让某些东西起作用的良好开端。

@Joehillen 的建议也可行,但它需要更多类型魔法才能使用 Parsec 的 token 功能。 spaces的定义匹配0个或多个满足Data.Char.isSpace的字符,即所有标准的ASCII空格字符。

关于parsing - 让解析器忽略所有多余的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20339089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com