From: Christian Neukirchen Date: 2006-01-21T23:42:26+09:00 Subject: Re: Ruby Parser Combinator --=-=-= Scott Weeks writes: > Hey Christian, I couldn't find the code for your parser combinator in > that blog entry, could you post a link? I'd love to look at your > implementation because it seems like you've done it in a more elegant > way (at least from the examples you gave). I attached all I have. It's not really practical because flow-control with throw/catch isn't as fast as I wished... but it could be interesting nevertheless. > Cheers, > Scott --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=rightyear.tar.gz Content-Transfer-Encoding: base64 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 --=-=-= -- Christian Neukirchen http://chneukirchen.org --=-=-=--