Не нужно велосипедов. в pear есть решение для конечных автоматов, а в книге http://www.ozon.ru/context/detail/id/2847621/ на 348-й странице пример