fsm, regex, parsing, grammar practice