Преобразование КС-грамматик к приведенному виду
Курсовая работа, 09 Октября 2011, автор: пользователь скрыл имя
Краткое описание
Теория формальных языков и грамматик является разделом математической лингвистики - специфической математической дисциплины, ориентированной на изучение структуры естественных и искусственных языков. По характеру используемого математического аппарата теория формальных грамматик и языков близка к теории алгоритмов и теории автоматов.
Содержание работы
Введение…………………………………………………………………..3
1. Основные понятия и определения теории формальных языков……4
2. Классификация грамматик и языков по Хомскому…………………6
3. Приведенные грамматики…………………………………………….8
4. Преобразования грамматик…………………………………………...9
4.1. Алгоритм удаления бесплодных символов…………………9
4.2. Алгоритм удаления недостижимых символов……………..9
4.3. Преобразование неукорачивающих грамматик……………10
4.4. Исключение цепных правил………………………………...12
5. Разработка программы……………………………………………….14
Литература
Приложение
Содержимое работы - 1 файл
Курсовая по ТЯПу моя готовая.doc
— 114.00 Кб (Скачать файл)if (new_lhs = = rhs && !( new_rhs.Length = =1 &&
Nonterminals.IndexOf(new_rhs[
newrules.Add(lhs + '' '' + new+rhs);
// добавить правило
}
Grammar.Remove(rule.Current);
// удаляем А -> В правило
Grammar.AddRange(newrules);
// добавляем новые правила
AtoBRulesExist = true;
break;
}
}
while(AtoBRulesExist); // пока существуют
// А -> В правила
}
static void KillDuplicates
()
{
// вставляем все правила в хэш-
Hashtable rules = new Hashtable();
for (IEnumerator rule Grammar.GetEnumerator();
rule.
rules[(string)rule.
// заполняем список Grammar ключами таблицы rules
Grammar.Clear();
for (IDictionaryEnumerator c = rules.GetEnumerator();
Grammar.Add((string)c.
}
static void Main(string[] args)
{
ReadGrammar();
RemoveFruitlessUnSimb()
RemoveEpsilonRules () ;
RemoveAtoBRules();
KillDuplicates();
Console.WriteLine('' Правила: '');
for (IEnumerator rule = Grammar.GetEnumerator();
rule.
Console.WriteLine(rule.
Console.WriteLine('' Принимать пустую строку:
''
+ AcceptEmptyString);
}