我正在嘗試使解析器掃描文本文件中由空行分隔的數字數組。解析虛框之間的數字數組
1 235 623 684
2 871 699 557
3 918 686 49
4 53 564 906
1 154
2 321
3 519
1 235 623 684
2 871 699 557
3 918 686 49
以下是完整的text file
我寫了parsec
以下解析器:
import Text.ParserCombinators.Parsec
emptyLine = do
spaces
newline
emptyLines = many1 emptyLine
data1 = do
dat <- many1 digit
return (dat)
datan = do
many1 (oneOf " \t")
dat <- many1 digit
return (dat)
dataline = do
dat1 <- data1
dat2 <- many datan
many (oneOf " \t")
newline
return (dat1:dat2)
parseSeries = do
dat <- many1 dataline
return dat
parseParag = try parseSeries
parseListing = do
--cont <- parseSeries `sepBy` emptyLines
cont <- between emptyLines emptyLines parseSeries
eof
return cont
main = do
fichier <- readFile ("test_listtst.txt")
case parse parseListing "(test)" fichier of
Left error -> do putStrLn "!!! Error !!!"
print error
Right serie -> do
mapM_ print serie
但它失敗,出現以下錯誤:
!!! Error !!!
"(test)" (line 6, column 1):
unexpected "1"
expecting space or new-line
和我不不明白爲什麼。
你知道我的解析器有什麼問題嗎?
你有沒有關於如何解析由空行分隔的結構化數據的例子?
請添加您的導入... – Jubobs
我添加了導入文件 – JeanJouX
我的意思是:在您的Haskell源文件中添加'import ...'行。因爲你的代碼片段不是獨立的。 – Jubobs