syntax change: less BNF, more pattern matching
implemented nested statements
implemented the "?" quantifier