improved syntax, rewrite using bnfc again, because of parsec errors, improved typechecker in the works