Хочу немного подправить, в английском сегменте конечный автоматы для парсера языков называют NFA (Nondeterministic finite automaton) и DFA (deterministic finite automaton). А FSM это более общая штука. Например программа которая вызывает скрипты в зависимости от состояния программы, это тоже конечный автомат.