Мета роботи: вивчити математичну модель формальної граматики, одержати практичні навички виведення ланцюжків в формальній граматиці.
Завдання: потрібно написати програму, що одержує на вході контекстно-вільну граматику, яка визначена правилами підстановки, та друкує в результаті роботи одне або більше виведення термінального ланцюжка в граматиці.
Контекстно-вільну граматику вважати заданою у виді текстового файлу, кожен рядок якого вміщує єдине правило підстановки у вигляді a -> b (a — ідентифікатор нетермінала, b — рядок ідентифікаторів терміналів і нетерміналів, розділених пробільними символами). Пустий ланцюжок ідентифікується відсутністю правою частиною правила підстановки. Довжина ідентифікаторів обмежена 32 символами. Ідентифікатори, які починаються з великої літери вважаються нетерміналами, з маленької — терміналами, нетермінал в лівій частині першого правила підстановки вважається початковим символом.
Припустимо, що на вхід програми поступає граматика виду
| S ® a = F ; |
|
F ® F + T | T Возможно вы искали - Контрольная работа: Газетная верстка T ® T * E | T / E | E E ® ( F ) | – ( F ) | a |
Тоді результатом роботи програми лабораторної роботи може бути рядок виведення
SÞa = F ; Þa = T ; Þa = E ; Þa = a ;
Порядок виконання лабораторної роботи:
Похожий материал - Курсовая работа: Ділова гра як новітня методика вивчення "1С: Підприємство 7.7"
1. Написати програму на ЕОМ.
2. Здати працюючу програму викладачу.
3. Підготувати і захистити звіт.
Демонстрація роботи алгоритму на прикладі виведення речення в граматиці
Граматика, задана у вигляді текстового файлу:
Очень интересно - Курсовая работа: Интеграция удаленных приложений "1С:Предприятие" и MS Access
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[]>();