Furthermore, the compiler can perform name binding and variable capture that might otherwise have been performed manually by the programmer.
This processing can occur at compile-time and therefore reduce errors that could occur at runtime when code that is simply processed as a string is executed.