Системное программирование
Задано регулярное выражение r = (a|b|c)*bc.
Входной алфавит ∑= {a, b, c}. Написать программу, распознающую строки, соответствующие данному регулярному выражению. (Соответствуют: abbbabcbbcabc, bc, abc, bbbc, abcbc, cbc, aabbccbc. Не соответствуют: abccba, bca, abcbcc). Использовать теории регулярных выражений и конечных автоматов (КА): 1. Для заданного регулярного выражения построить соответствующий ему КА; 2. Если автомат, полученный в предыдущем пункте, недетерминированный, то преобразовать его в ДКА; 3. Используя ДКА, написать программу-распознаватель.
Ключевые слова:
регулярное выражение, детерминированный конечный автомат.
|
|||
Для заданной КС-грамматики написать синтаксический анализатор, реализующий метод рекурсивного спуска без откатов. Результатом работы синтаксического анализатора должно быть левое порождение входной строки, представленное списком правил грамматики, использованных в процессе порождения.
Ключевые слова:
синтаксический анализатор, метод рекурсивного спуска без отката, контекстно-свободная грамматика, левая рекурсия, факторизация
|
|||
Написать программу, осуществляющую поиск множества ключевых слов {beta, begin, green} в текстовом файле. Результатом работы программы должен быть список найденных слов и номера позиций этих слов в тексте. Символ новой строки не учитывать при подсчете позиции слова.
Ключевые слова:
регулярные выражения, недетерминированные конечные автоматы, поисковая система
|
|||
Калькулятор.
Ключевые слова:
калькулятор, математическое выражение, функция, синтаксический анализ
|
|||