1. A method of processing a script written in a dynamic scripting language, comprising: pre-parsing the script with a processor to identify high level program structures within the script prior to runtime; generating, with the processor, metadata characterizing the identified high level program structures prior to runtime; using, in the processor, runtime information and the generated metadata to determine parts of the script that need to execute; fully parsing the parts of the script, with the processor, using the generated metadata to generate bytecode; executing the generated bytecode in the processor; caching the generated bytecode; caching the generated metadata; determining, in the processor, during a subsequent runtime execution of the script whether the script has been previously fully parsed; using, in the processor, subsequent runtime information and the cached generated metadata to determine subsequent parts of the script that need to execute; executing, in the processor, the cached generated bytecode corresponding to the subsequent parts of the script that need to execute when it is determined that the script has been previously fully parsed; fully parsing the subsequent parts of the script that need to execute, with the processor, using the cached generated metadata to generate subsequent bytecode when it is determined that the script has not been previously fully parsed; and executing the subsequent bytecode in the processor when it is determined that the script has not been previously fully parsed.