I have built an interpreted language for Arduino. The language resembles to Arduino language. You can check how the program is running and pin values visually. You can use the visualizing utility without interpreted language too.
The program is stored in RAM. It does not use EEPROM unless you request to save it in EEPROM by ``save'' command. The program in EEPROM is read into RAM at start-up.
If you use the terminal, you can edit your program in the editor and replace the program by clicking prog'' button. You can read your program in RAM by Read from Arduino'' button.
If you use a serial terminal, the prog'' command replace the whole program in the RAM and you can replace a line with the edit'' command. For example you can replace line 2 by ``edit 2'' command.
I get it. I won't be using this myself but as I said if done well I can see it being useful for beginners to try small programs and experiment with the various C constructs, especially if you provide better error reporting than C usually does.
Currently the program is stored in RAM, e.g. char iArduinoProgBuf[600]; and current pointer is handled by char *prog. So I think it's possible if you carefully change *prog to exram_read(addr) and "prog ++" to addr ++ etc.
Worth of try! With an external SPI sram/fram/mram you may store hundreds of kilobytes of the program code and "execute" it. It will run slower, but you may run programs virtualy "unlimited" in size