gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:41:44 28 4
gpt4 key购买 nike

假设我有一个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 的建议也可行,但它需要更多的类型魔法才能使用秒差距的标记功能。 spaces 的定义匹配 0 个或多个满足 Data.Char.isSpace 的字符,即所有标准 ASCII 空格字符。

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

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