Приведение КС-грамматики к нормальному виду
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
[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