Виведення ланцюжків у формальній граматиці

Математична модель формальної граматики та виведення ланцюжків. Розробка програми, що одержує на вході контекстно-вільну граматику, яка визначена правилами підстановки, та друкує в результаті роботи одне або більше виведення термінального ланцюжка.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 15.05.2011
Размер файла 162,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство освіти та науки України

Житомирський державний технологічний університет

ФІКТ

Кафедра ПЗОТ

Група ПІ-39

Лабораторна робота №2

Тема: «Виведення ланцюжків»

м. Житомир,

2011р.

Мета роботи: вивчити математичну модель формальної граматики, одержати практичні навички виведення ланцюжків в формальній граматиці.

Завдання: потрібно написати програму, що одержує на вході контекстно-вільну граматику, яка визначена правилами підстановки, та друкує в результаті роботи одне або більше виведення термінального ланцюжка в граматиці.

Контекстно-вільну граматику вважати заданою у виді текстового файлу, кожен рядок якого вміщує єдине правило підстановки у вигляді  ->  ( -- ідентифікатор нетермінала, -- рядок ідентифікаторів терміналів і нетерміналів, розділених пробільними символами). Пустий ланцюжок ідентифікується відсутністю правою частиною правила підстановки. Довжина ідентифікаторів обмежена 32 символами. Ідентифікатори, які починаються з великої літери вважаються нетерміналами, з маленької -- терміналами, нетермінал в лівій частині першого правила підстановки вважається початковим символом.

Припустимо, що на вхід програми поступає граматика виду

S a = F ;

F F + T | T

T T * E | T / E | E

E ( F ) | - ( F ) | a

Тоді результатом роботи програми лабораторної роботи може бути рядок виведення

Sa = F ; a = T ; a = E ; a = a ;

Порядок виконання лабораторної роботи:

Написати програму на ЕОМ.

Здати працюючу програму викладачу.

Підготувати і захистити звіт.

Демонстрація роботи алгоритму на прикладі виведення речення в граматиці

Граматика, задана у вигляді текстового файлу:

S -> abr = aTest E Test;

Fu1 -> Fu1 + T | T

T -> T * E | E / E | E

E -> ( alma ) | - ( Fu1 ) | -ab-q(

Test -> Quite

Quite -> T | Quite

Результат роботи програми

Фрагменти коду програми

namespace KPZ__Lab2

{

public partial class Form1 : Form

{

Dictionary<string, string[]> list = new Dictionary<string, string[]>();

public Form1()

{

InitializeComponent( );

}

private void ReadFile(StreamReader files)

{

int indexBegin, indexEnd;

string strFile;

string strCheck;

string strKey;

while ((strFile = files.ReadLine()) != null)

{

List<string> strValue = new List<string>();

indexBegin = strFile.IndexOf(" -> ");

if (-1 != indexBegin)

{

if (strFile[strFile.Length - 1] != 32)

{

strFile += " ";

}

strCheck = strFile.Substring(0, indexBegin + 1);

if (strCheck[0] != 32)

{

strKey = "";

strKey += " ";

strKey += strFile.Substring(0, indexBegin + 1);

}

else

{

strKey = strFile.Substring(0, indexBegin + 1);

}

indexBegin = indexBegin + 3;

indexEnd = strFile.IndexOf(" | ", indexBegin);

while (indexEnd != -1)

{

strValue.Add(strFile.Substring(indexBegin, indexEnd + 1 - indexBegin));

indexBegin = indexEnd + 2;

indexEnd = strFile.IndexOf(" | ", indexBegin);

}

strValue.Add(strFile.Substring(indexBegin));

list.Add(strKey, strValue.ToArray());

}

}

}

private void button1_Click(object sender, EventArgs e)

{

string result = " S ";

int i = 0;

int j = 25;

int terminal = 1;

int random;

string[] strCutted;

list.Clear();

textBox2.Clear();

OpenFileDialog openFileDialog1 = new OpenFileDialog();

openFileDialog1.InitialDirectory = "C:\\kpz2";

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

using (StreamReader files = new StreamReader(openFileDialog1.FileName))

{

FileInfo infF = new FileInfo(openFileDialog1.FileName);

ReadFile(files);

}

}

Random rand = new Random();

while(1==1)

{

if (i > j)

{

i = j;

break;

}

terminal = 0;

foreach (string strKeys in list.Keys)

if (result.IndexOf(strKeys) != -1)

{

terminal = 1;

strCutted = result.Split(new string[] { strKeys }, 2, StringSplitOptions.None);

random = rand.Next(list[strKeys].Length);

result = strCutted[0] + list[strKeys][random] + strCutted[1];

textBox2.Text += "S ->" + result;

textBox2.Text += Environment.NewLine;

break;

}

i++;

}

button1.Enabled = true;

}

}

}

Висновок

математичний формальний граматика ланцюжок термінальний

Виконавши лабораторну роботу, я вивчила математичну модель формальної граматики, одержала практичні навички виведення ланцюжків в формальній граматиці.

Я написала програму, що одержує на вході контекстно-вільну граматику з (.txt) файлу, яка визначена правилами підстановки, та друкує в результаті роботи одне виведення термінального ланцюжка в граматиці.

Размещено на Allbest.ru


Подобные документы

  • Написання програми для виведення чисел Фібоначчі. Загальна характеристика мови Паскаль. Науковий доробок Леонардо Фібоначчі. Історія і властивості послідовності. Особливості програмування мовою Turbo Pascal. Відкалібрування та синхронізування програми.

    курсовая работа [325,1 K], добавлен 09.10.2013

  • Створення програми, яка друкує в вікно інформацію про натискання клавіш на клавіатурі в таблицю. Функція виведення назви отриманого програмою повідомлення від клавіатури та певних додаткових даних. Обробка інформації, неопрацьованої віконною процедурою.

    лабораторная работа [17,9 K], добавлен 14.05.2011

  • Визначення множини вхідних та вихідних лінгвістичних змінних нечіткої системи керування змішувачем. Аналіз побудови системи нечіткого виведення, розгляд його етапів, аналіз наукового та технічного застосування. Аналітичне рішення тестового прикладу.

    курсовая работа [412,6 K], добавлен 17.05.2012

  • Характеристика мов програмування. Історія виникнення мови C#, її особливості, версії та нові можливості. Приклад програм виведення на екран, виведення поточної дати та часу та програми музичного програвача. Програмний код та результат виконання програм.

    контрольная работа [321,3 K], добавлен 13.06.2012

  • Розробка структури програмного забезпечення, загальної схеми функціонування програми. Реалізація виведення графічних зображень, роботи з шлагбаумом, загальних елементів керування та музики. Інструкція з технічного обслуговування, системного програміста.

    курсовая работа [3,1 M], добавлен 10.03.2009

  • Розробка програми, що надає користувачу можливості керування додатками Microsoft PowerPoint: запуск вказаного додатку, переключення слайдів, виведення інформації про слайд , коректне завершення і вивантаження з пам’яті презентації, що переглядається.

    курсовая работа [2,1 M], добавлен 21.04.2011

  • Розробка програми-довідки про музеї Дрогобичини. Розгляд музею І. Франка в селі Нагуєвичі за допомогою середовища Eclipse. Виведення інформації про музей. Перехід між різними місцями в музеї. Супроводження текстового матеріалу графічними файлами.

    курсовая работа [3,4 M], добавлен 24.02.2014

  • Теоретичні відомості. Блок-схема. Текст програми. Результати роботи програми. Процедури і функції. Координати, вікна, сторінки. Багатокутники. Дуги, кола, еліпси. Фарби, палітри, заповнення. Збереження і видача зображень. Виведення тексту. Включення драйв

    курсовая работа [345,2 K], добавлен 17.12.2005

  • Аналіз сучасного стану технологій програмування. Порівняння відстані між центрами кіл з радіусами. Класи, які використовуються при розробці програми меню. Розробка та виконання тестового прикладу. Виведення кіл на екран та інструкція користувача.

    курсовая работа [229,0 K], добавлен 14.03.2013

  • Вивчення структури програми на Паскалі. Значення функції для будь-якого введеного значення аргументу. Введення-виведення за допомогою операторів Readln і Writeln, визначення їх відмінності від операторів Read і Write. Лістинг і результати роботи програми.

    лабораторная работа [217,4 K], добавлен 04.11.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.