One-pass S-expression parser with error reporting
Write a parser for a small S-expression language that reads the input character by character in a single left-to-right pass; splitting the whole string up front is not allowed. It comes in three parts that build on each other: parse atoms, then nested parenthesized lists into a tree, then report malformed input (unbalanced parentheses, stray characters, unexpected end) with a clear error that says where it went wrong.
No answer yet. Write the first one; the best answer gets endorsed.
