haskell – 用Text.Combinators.Parsec进行不区分大小写的解析最干净的方法是什么?

haskell – 用Text.Combinators.Parsec进行不区分大小写的解析最干净的方法是什么?,第1张

概述我正在和Parsec一起编写我的第一个程序.我想解析 MySQL模式转储,并希望提供一种很好的方法来解析表示某些不区分大小写的关键字的字符串.以下是一些代码,显示了我用来解析“CREATE”或“create”的方法.有没有更好的方法来做到这一点?一个没有诉诸于buildExpressionParser的答案是最好的.我在这里走宝宝步. p_create_t :: GenParser Char st 我正在和Parsec一起编写我的第一个程序.我想解析 MySQL模式转储,并希望提供一种很好的方法来解析表示某些不区分大小写的关键字的字符串.以下是一些代码,显示了我用来解析“CREATE”或“create”的方法.有没有更好的方法来做到这一点?一个没有诉诸于buildExpressionParser的答案是最好的.我在这里走宝宝步.
p_create_t :: GenParser Char st Statement  p_create_t = do      x <- (string "CREATE" <|> string "create")      xs <- manyTill anyChar (char ';')      return $Createtable (x ++ xs) []  -- refine later
解决方法 您可以从字符解析器中构建不区分大小写的解析器.
-- Match the lowercase or uppercase form of 'c'caseInsensitiveChar c = char (tolower c) <|> char (toupper c)-- Match the string 's',accepting either lowercase or uppercase form of each character caseInsensitiveString s = try (mapM caseInsensitiveChar s) <?> "\"" ++ s ++ "\""
总结

以上是内存溢出为你收集整理的haskell – 用Text.Combinators.Parsec进行不区分大小写的解析最干净的方法是什么?全部内容,希望文章能够帮你解决haskell – 用Text.Combinators.Parsec进行不区分大小写的解析最干净的方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1099241.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存