I guess an interpreted language isn't the best type of language to write an interpreter in, but it's the only language I know for the DS.

It's an esoteric language called brainf*** (I'm calling it that because the actual name may not be allowed...maybe no one's here to disallow it but I think "admin" is watching us..'cause he just came within a day of me posting stuff about Waruwaru)
It's about the easiest language to write an interpreter for (I wrote it in almost a day, and added input the next day). It has 8 commands. That's all. Which are "> < - + [ ] . ,". The 8 things you can do are increment the memory pointer, decrement the memory pointer, increment the value that the memory pointer is pointing to, decrementing the value that the memory pointer is pointing to, print out the character the current value that the memory pointer is pointing to's ASCII value, take the ASCII value of a key inputted from the keyboard into the value that the memory pointer is pointing to, and a sort of while loop that is hard to explain. (which takes 2 commands)
More info:
http://www.muppetlabs.com/~breadbox/bf/ (Warning: There are badwords on this link.

(Obviously))
Screenshot:
http://www.bio-gaming.com/jeremy/dslua/img/brainfk.pngDownload (Interpreter + 9 programs that all work except for Towers of Hanoi which takes about 3 minutes to load into memory):
http://www.bio-gaming.com/jeremy/dslua/downloads/brainfuckDS.zipBTW be patient (most of the time) with the speed of loading and running. It's slow. It's an interpreted interpreter.
Sample program (Hello World):
++++++++[>+++++++++<-]>.<+++++[>++++++<-]>-.+++++++..+++.<
++++++++[>>++++<<-]>>.<<++++[>------<-]>.<++++[>++++++<-]>
.+++.------.--------.>+.