我使用Haskell进行文件解析,我正在使用Data.Attoparsec.Char8
和Data.ByteString.Char8
。我想解析一个表达式,它可以包含如下符号: - / [] _。(减号,斜杠,braquets和下划线)。
我写了以下解析器
import qualified Data.ByteString.Char8 as B
import qualified Data.Attoparsec.Char8 as A
identifier' :: Parser B.ByteString
identifier' = A.takeWhile $ A.inClass "A-Za-z0-9_//- /[/]"
......但它并不像预期的那样有效。
ghc> A.parse identifier' (B.pack "EMBXSHM-PortClo")
Done "-PortClo" "EMBXSHM"
ghc> A.parse identifier' (B.pack "AU_D[1].PCMPTask")
Done ".PCMPTask" "AU_D[1]"
有人可以帮助我。
感谢您的时间。
答案 0 :(得分:1)
您希望在标识符中添加'-'
个字符,但A.inClass
使用'-'
作为范围。你必须把它放在范围字符串的开头或结尾:
要向文本
'-'
添加文字{{1}},请将其放在字符串的开头或结尾。
答案 1 :(得分:1)
查看文档:{{3}}
要在集合中添加“ - ”,请将其放在字符串的开头或结尾。
后者无法解析,因为您的班级列表中没有点。