Scheme has a natural tree structure to exploit anyhow, show me a C++ interpreter in 15 minutes and I'll be impressed ;)
Scheme has a natural tree structure to exploit anyhow, show me a C++ interpreter in 15 minutes and I'll be impressed ;)
As an exercise, yes! If you've tinkered with the insides of something, it often makes you a better user of it. If you've written a compiler for a language with arrays, you'll understand what's going on with things like a[5] and 5[a] in C. You'll understand calling conventions and have a good feel for what it costs for language X to call language Y. You'll see how stacks are used to implement things like lexical scoping.
Maybe I'm preaching to the choir. But if I am, then let other people have the fun too! They should be congratulated.
You can use XML or JSON to represent AST. You can write interpreter for AST representations in these formats very fast too. But somebody else need to write parser from language with real syntax into AST.
JavaScript is example of Scheme implementation with Java-like syntax. Write interpreter for this language in 15 minutes.