tokenize
parse + compile