add toString to Syntax, optimise parser