Приведение КС-грамматики к нормальному виду

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



[i,3]) then p [i]: ='';;i: =0 to v+k doLength (p [i]) >2 then mmo2. Lines. Add (p [i]);i: =0 to v do p [i]: ='';i: =0 to mmo2. Lines. Count do begin p [i]: =mmo2. Lines [i];[i]: = [];j: =3 to Length (p [i]) dop [i,j] in ['A'. 'Z'] then mn [i]: =mn [i] + [P [i,j]];;;

Пример использования:

.Вводим правила в Мемо1

2.Нажимаем на кнопку 1

.Нажимаем на кнопку 4

5)Исключение цепных правил

Входные данные: правила из Мемо2

Выходные данные: правила в Мемо2

procedure TForm1. btn5Click (Sender: TObject);: =mmo2. Lines. Count;i: =0 to v do p [i]: ='';i: =0 to v do p [i]: =mmo2. Lines [i];. Clear;i: =1 to 5 do r [i]: =' '; k: =0;i: =0 to v doLength (p [i]) =3 then(p [i,1] in ['A'. 'Z']) and (p [i,3] in ['A'. 'Z']) and (p [i,1] 2 then mmo2. Lines. Add (p [i]);;

Пример использования:

.Ведем правила в Мемо1

2.Нажмем на кнопку 1

.Нажмем на кнопку 5

Литература

1."Теория и реализация языков программирования" Серебряков В. А. Издательство М3-Пресс, 1999г., 174 стр.

2."Давайте создадим компилятор!" Джек Креншоу Издательство Самиздат, 1995г., 135 стр.

."Алгоритмы, языки, автоматы и компиляторы" М. Мозговой Издательство Наука и техника, 2006г., 316 стр.

Приложение

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls, Grids, jpeg, ExtCtrls, XPMan, Menus, Buttons;

type= class (TForm): TButton;: TMemo;: TMemo;: TButton;: TButton;: TButton;: TButton;: TLabel;: TXPManifest;btn1Click (Sender: TObject);btn2Click (Sender: TObject);btn3Click (Sender: TObject);btn4Click (Sender: TObject);btn5Click (Sender: TObject);btn1MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);btn2MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);FormMouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);btn3MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);btn4MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);btn5MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);

{ Private declarations }

{ Public declarations };: TForm1;,m,n,j,v,k,l: Integer;,s1: string;: array [0.40] of string;,vt,k1,k2,mm: set of Char;: array [0.25] of set of Char;: Char;: array [1.5] of Char;

{$R *. dfm}TForm1. btn1Click (Sender: TObject);l;. Clear;i: =0 to mmo1. Lines. Count doLength (mmo1. Lines [i]) >2 then begin: = []; s: =mmo1. Lines [i];j: =0 to Length (s) do begin(s [j] in ['А'. 'Я']) or (s [j] in ['а'. 'я']) then mmo1. Lines. Delete (i);: =mm+ [s [j]]; end;(not (s [1] in ['A'. 'Z'])) or (s [2] 2 then mmo2. Lines. Add (p [i]);;TForm1. btn1MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);. Caption: ='Анализ грамматики';;TForm1. btn2MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);

begin

lbl1. Caption: ='Удаление бесплодных символов';

end;TForm1. FormMouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);. Caption: ='Приведение грамматики';;TForm1. btn3MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);

begin

lbl1. Caption: ='Удаление недостижимых символов';

end;TForm1. btn4MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);

begin

lbl1. Caption: ='Преобразование неукорачивающих правил';

end;TForm1. btn5MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);. Caption: ='Исключение цепных правил';;

end.

Пример работы программы:

Шаг 1: вводим правила в Мемо1

Шаг 2: нажимаем на кнопку 1

Шаг 3: нажимаем на кнопку 2

Шаг 4: нажимаем на кнопку 3

Шаг 5: нажимаем на кнопку 4

Шаг 6: нажимаем на кнопку 5