1. A method of processing a script written in a dynamic scripting language, comprising: pre-parsing the script to identify high level program structures within the script prior to execution; generating metadata characterizing the identified high level structures; using runtime information and metadata to determine parts of the script that need to execute; fully parsing the parts of the script using the generated metadata to generate bytecode; and executing the script.