Lots of semantic checks. Need symbol table to fully implement