Построить регулярное выражение, исходя из регулярной грамматики

Задание: написать программу, которая строит по заданной левой или правой регулярной грамматике эквивалетное регулярное выражение. Мне нужно знать четкий алгоритм по которому я смогу это сделать. Подскажите что-нибудь пожалуйста.