Автор работы: Пользователь скрыл имя, 09 Октября 2011 в 15:51, курсовая работа
Теория формальных языков и грамматик является разделом математической лингвистики - специфической математической дисциплины, ориентированной на изучение структуры естественных и искусственных языков. По характеру используемого математического аппарата теория формальных грамматик и языков близка к теории алгоритмов и теории автоматов.
Введение…………………………………………………………………..3
1. Основные понятия и определения теории формальных языков……4
2. Классификация грамматик и языков по Хомскому…………………6
3. Приведенные грамматики…………………………………………….8
4. Преобразования грамматик…………………………………………...9
4.1. Алгоритм удаления бесплодных символов…………………9
4.2. Алгоритм удаления недостижимых символов……………..9
4.3. Преобразование неукорачивающих грамматик……………10
4.4. Исключение цепных правил………………………………...12
5. Разработка программы……………………………………………….14
Литература
Приложение
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);
}
Информация о работе Преобразование КС-грамматик к приведенному виду