정수리스트가 임의의 길이 일 수있는 경우 파일에서 쉼표로 분리 된 정수리스트를 파싱하는 데 도움이 필요합니다. 문자열은 "1,2,3,4,5,6,7,8, ..."과 같을 수 있으며, 필요한 목록은 [1,2,3,4,5,6,7, 8, ...].Haskell Attoparsec으로 정수리스트를 분석하십시오.
이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 :
...
내 파서는 현재 하나 개의 정수를 읽지 만 더를 읽기 시작해야합니다 : 같은
파일 형식 보인다. 나는 ByteString에 모든 숫자를 읽을 takeTill를 사용할 수 있지만, 나는 정확히 모르고 같은 문제를 가진 또 다른 문자열을 구문 분석 할 필요가 얼마나 많은 숫자가 될 수 있습니다
parseTile :: Parser Tile
parseTile = do
x <- decimal
char ','
y <- decimal
char ':'
--t <- takeTill (\x -> x == ';')
t <- decimal
char ';'
return $ Tile x y t
내가 this를 찾았지만 내 파일이 json 파일이 아니기 때문에 저를 도와주지 않습니다.
당신은, 당신은''(','문자)'''commaSepInts = 소수점'sepBy1' 뭔가를 얻을 수 있습니다 *'콤비은'sepBy 봐야한다 '; '''row = commaSepInts'sepBy1' (char ':')'''. 이것이 당신의 모든 문제를 해결할 지 모르겠지만'sepBy'는 아마 당신이 찾고있는 것일 것입니다. – bheklilr
@bheklilr 감사합니다 bheklilr, sepBy가 실제로 해결책이었습니다. – user3638162