0

整数のリストが任意の長さにできる場合、ファイルからカンマ区切りの整数のリストを解析するのに助けが必要です。文字列は "1,2,3,4,5,6,7,8,..." のようになり、作成する必要があるリストは [1,2,3,4,5,6,7, 8、...]。

ファイル形式は次のようになります。

0,0:1; -- minimum of 1 integer after the :
0,1:1,2;
0,2:5;
0,3:5,16,223,281; -- any amount of integers can follow the :
...

現在、私のパーサーは 1 つの整数しか読み取っていませんが、さらに読み取りを開始する必要があります。takeTill を使用してすべての数値を ByteString に読み込むことができますが、さらに別の文字列を解析する必要があり、正確にいくつの数値が存在するか分からないという同じ問題があります。

parseTile :: Parser Tile
parseTile = do
  x <- decimal
  char ','
  y <- decimal
  char ':'
  --t <- takeTill (\x -> x == ';')
  t <- decimal
  char ';'
  return $ Tile x y t

これを見つけましが、ファイルが json ファイルではないため、役に立ちません。

4

1 に答える 1

4

あなたは使用することができsepByますdecimal

parseTile :: Parser Tile
parseTile = do
  x <- decimal
  char ','
  y <- decimal
  char ':'
  t <- decimal `sepBy` (char ',')
  char ';'
  return $ Tile x y t
于 2014-12-30T19:33:51.057 に答える