TO DO: Complete
Validate a given program (or the current one)
Optional
an abstract syntax tree to analyze and validate.
TO DO: Complete