I think that char-char is supposed to be next char ;)
Other than that, I'm not good enough yet at writing parsers in arc to help you much. Your original was already pretty short, though there were a few spots that you could have used the . operator more (car, cdr, etc.)
I am also working on a parser too, though, so whatever you discover will certainly be helpful ;)