Parsec allocating a lot of memory

Nick Name nick.name@inwind.it
Mon, 4 Aug 2003 19:16:44 +0200


Hi all, I am using "parsec" to parse the output from "xmame -listinfo"
wich is a list of records of the form

game (
   attr1 value1
   ...
   attrN valueN
)

and for approx. 3500 records I got ~250 mb of RSS memory during parsing,
wich takes 20 seconds on my athlon 1400.

I think that I must have done something wrong (this is the first time I
use parsec), here is my parser:

--- Begin
games = many game

game = 
    do
    openGame
    x <- manyTill attribute closeGame
    return (mkGameInfo x)

attribute = 
    do
    whitespaces
    x <- identifier
    whitespaces
    y <- tillEOL
    return (x,y)

openGame = 
    do
    string "game ("
    newline

closeGame = 
    do
    string ")"
    newline
    newline

whitespace = "\v\f\t\r "
whitespaces = skipMany (oneOf whitespace)

tillEOL = manyTill anyChar newline

identifier = many alphaNum
--- End

Thanks for any advice

Vincenzo