Преобразование КС-грамматик к приведенному виду

Автор работы: Пользователь скрыл имя, 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
Литература
Приложение

Содержимое работы - 1 файл

Курсовая по ТЯПу моя готовая.doc

— 114.00 Кб (Скачать файл)

     if (new_lhs = = rhs && !( new_rhs.Length = =1 &&

         Nonterminals.IndexOf(new_rhs[0]) != -1))

         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.MoveNext();)

      rules[(string)rule.Current] = true;

    // заполняем список Grammar ключами таблицы rules

   Grammar.Clear();

for (IDictionaryEnumerator c = rules.GetEnumerator();

                              c.MoveNext();)

      Grammar.Add((string)c.Key);

}

 

static void Main(string[] args)

{

ReadGrammar();

RemoveFruitlessUnSimb()

RemoveEpsilonRules () ;

RemoveAtoBRules();

KillDuplicates();

Console.WriteLine('' Правила: '');

   for (IEnumerator rule = Grammar.GetEnumerator();

                  rule.MoveNext();)

Console.WriteLine(rule.Current);

Console.WriteLine('' Принимать пустую строку:

               '' + AcceptEmptyString); 

} 

Информация о работе Преобразование КС-грамматик к приведенному виду