0

Haskellを使用したファイル解析での作業で、との両方を使用していData.Attoparsec.Char8ますData.ByteString.Char8: -/[]_のような記号を含むことができる式を解析したい。(マイナス、スラッシュ、ブラケット、アンダースコア)。

私は次のパーサーを書きました

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]"

誰かが私を助けることができますか。

御時間ありがとうございます。

4

2 に答える 2

1

'-'識別子に文字を許可したいが、範囲にA.inClass使用'-'します。範囲文字列の先頭または末尾に配置する必要があります。

セットにリテラルを追加する'-'には、文字列の先頭または末尾に配置します。

アトパーセックのドキュメント

于 2012-02-03T15:30:38.103 に答える
1

ドキュメントを見てみましょう: http://hackage.haskell.org/packages/archive/attoparsec/0.10.1.0/doc/html/Data-Attoparsec-ByteString-Char8.html#g:9

セットに「-」を追加するには、文字列の先頭または末尾に配置します。

クラスのリストにドットがないため、後者は解析されません。

于 2012-02-03T15:33:49.897 に答える