Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Работа: предложения и спрос
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.10.2009, 20:13
Аватар для KatieK
KatieK KatieK вне форума
Прохожий
 
Регистрация: 26.10.2009
Сообщения: 4
Репутация: 10
По умолчанию Задача в delphi

Срочно нужна помощь! Господа программеры, преклоняю пред Вами свою бестолковую голову.....
Требуется разработать процедур в Delphi, обеспечивающую реализацию модуля лексического разбора. Модуль должен быть реализован с использованием модели детерминированного конечного автомата и должен обеспечивать лексический разбор команды Replace.
Синтаксис команды может быть записан в виде:
[<РАЗДЕЛИТЕЛЬ>] REPLACE < РАЗДЕЛИТЕЛЬ> < ИМЯ ПОЛЯ>
WITH < РАЗДЕЛИТЕЛЬ> < ВЫРАЖЕНИЕ>
[FOR < РАЗДЕЛИТЕЛЬ> <ЛОГИЧЕСКОЕ ВЫРАЖЕНИЕ>]
пример
REPLACE F1 WITH A →F2
REPLACE F3 WITH B2 FOR C2>C3
Необходима таблица с ошибками и скрины из программы.
Кто-нибудь может выручить????
__________________
Женщины способны на всё, мужчины – на всё остальное...
Ответить с цитированием
  #2  
Старый 26.10.2009, 20:15
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Поясните, что такое:
Цитата:
Необходима таблица с ошибками и скрины из программы.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 26.10.2009, 20:30
Аватар для KatieK
KatieK KatieK вне форума
Прохожий
 
Регистрация: 26.10.2009
Сообщения: 4
Репутация: 10
По умолчанию

ну скриншоты, показывающие работу проги..
а талицу формата
Внутренные состояние Входные символы
replacewithforпробелКонец строкиНеопознанные символы
Sost 1
Sost 2
ну как-то так..
__________________
Женщины способны на всё, мужчины – на всё остальное...
Ответить с цитированием
  #4  
Старый 26.10.2009, 20:43
Аватар для KatieK
KatieK KatieK вне форума
Прохожий
 
Регистрация: 26.10.2009
Сообщения: 4
Репутация: 10
По умолчанию

ну что, поможешь?
__________________
Женщины способны на всё, мужчины – на всё остальное...
Ответить с цитированием
  #5  
Старый 26.10.2009, 23:36
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Пока не возьмусь т.к. пока по заданию есть вопросы.
1. <РАЗДЕЛИТЕЛЬ> - какой-то конкретный символ или выбраный пользователем в предварительных настройках?
2. < ИМЯ ПОЛЯ> - имеется ввиду имя поля БД или это название части текста которую надо заменить?
3.< ВЫРАЖЕНИЕ> - это просто какой-то текст или предопределенная функция, которая что-то делает.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 28.10.2009, 23:54
Аватар для KatieK
KatieK KatieK вне форума
Прохожий
 
Регистрация: 26.10.2009
Сообщения: 4
Репутация: 10
По умолчанию

Вот что-то накрапала.....
Мб проверить будет проще..
Код:
unit UnitBLR;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    LblPvja: TLabel;
    LblYV: TLabel;
    LblKV: TLabel;
    CmdInput: TButton;
    CmdProcess: TButton;
    CmdExit: TButton;
    EdPVJA: TEdit;
    ListBoxYV: TListBox;
    ListBoxPar: TListBox;
    Label1: TLabel;
    ClearButton: TButton;
    procedure FormActivate(Sender: TObject);
    procedure CmdInputClick(Sender: TObject);
    procedure CmdProcessClick(Sender: TObject);
    procedure CmdExitClick(Sender: TObject);
    procedure ClearButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Pvja, oldpvja: String;
implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
 EdPvja.SetFocus;
end;

procedure TForm1.CmdInputClick(Sender: TObject);
begin
 Pvja:=EdPvja.Text;
 CmdProcess.SetFocus;
end;

procedure TForm1.CmdProcessClick(Sender: TObject);
Type
 T_YV=Array[1..40] Of Integer;
 T_Par=array[1..40] of string;
Var
  Par: T_Par;
  YV: T_YV;
  Ksl: Integer;
  I,Kv: Integer;
Procedure Lan (PVJA: String; {ПВЯ}
       Var YV: T_YV; {Упр. вектор}
       Var Par: T_Par; {Пар. вектор}
       Var Ksl: Integer; {К-во расшифрованных слов ПВЯ}
       Var Kv: Integer);
       {Блок лексического разбора}
       Var   Slov: Array[1..3] of String;   {Терминальный словарь}
   Kts: Integer;                            {К-во эл-тов в терминальном словаре}
   Sost: Integer;                           {Состояние системы}
   Stroka: String;                          {Рабочие переменные}
   J,L,Nom,Ls,Ln: Integer;
   f: boolean;
begin
  Kv:=0; Ksl:=0; Sost:=0;
  Slov[1]:='replace'; Slov[2]:='with'; Slov[3]:='for';
  J:=1; Ln:=Length(PVJA);  oldpvja:=pvja;
  f:=false;

  While (J<=Ln) And (Kv=0) Do
  begin
   Stroka:=Copy(PVJA, J, Ln-J+1);

    Case Sost of
    0: begin    {Поиск разделителя}
        If Copy(Stroka, 1, 1) = ' ' Then
          J:= J + 1
        else
        begin
          if copy(stroka,1,7)=slov[1] then
          begin
             ksl:=ksl+1; yv[ksl]:=1; j:=j+7; sost:=1;
          end
          else kv:=2;
        end;
       end;

     1: begin
          if copy (stroka,1,1)=' ' then
            begin
              sost:=2; j:=j+1;
            end
          else
            begin
              insert(' ',pvja,j); ln:=ln+1;
              EdPvja.Text:=Pvja; f:=true;
            end;
        end;

     2: begin
          if copy(stroka,1,1)=' ' then
            begin
              j:=j+1; sost:=3;
            end
          else
            if copy(stroka,1,4)=slov[2] then
            begin
              insert(' ',pvja,j); ln:=ln+1;
              EdPvja.Text:=Pvja; f:=true;
            end
            else
            begin
              par[ksl]:=par[ksl]+copy(stroka,1,1); j:=j+1;
            end;
        end;

     3: begin
          if copy(stroka,1,1)=' ' then
            begin
              sost:=4; j:=j+1;
            end
          else
            begin
              insert(' ',pvja,j); ln:=ln+1;
              EdPvja.Text:=Pvja; f:=true;
            end;
        end;

    4: begin    {Поиск разделителя}
        If Copy(Stroka, 1, 1) = ' ' Then
          J:= J + 1
        else
        begin
          if copy(stroka,1,4)=slov[2] then
          begin
             ksl:=ksl+1; yv[ksl]:=2; j:=j+4; sost:=5;
          end
          else kv:=4;
        end;
       end;

     5: begin
          if copy (stroka,1,1)=' ' then
            begin
              sost:=6; j:=j+1;
            end
          else
            begin
              insert(' ',pvja,j); ln:=ln+1;
              EdPvja.Text:=Pvja; f:=true;
            end;
        end;

     6: begin
          if copy(stroka,1,1)=' ' then
            begin
              j:=j+1; sost:=7;
            end
          else
            if copy(stroka,1,3)=slov[3] then
            begin
              insert(' ',pvja,j); ln:=ln+1;
              EdPvja.Text:=Pvja; f:=true;
            end
            else
            begin
              par[ksl]:=par[ksl]+copy(stroka,1,1); j:=j+1;
            end;
        end;

     7: begin
          if copy(stroka,1,1)=' ' then
            begin
              sost:=8; j:=j+1;
            end
          else
            begin
              insert(' ',pvja,j); ln:=ln+1;
              EdPvja.Text:=Pvja; f:=true;
            end;
        end;

    8: begin    {Поиск разделителя}
        If Copy(Stroka, 1, 1) = ' ' Then
          J:= J + 1
        else
        begin
          if copy(stroka,1,3)=slov[3] then
          begin
             ksl:=ksl+1; yv[ksl]:=3; j:=j+3; sost:=9;
          end
          else kv:=6;
        end;
       end;

     9: begin
          if copy (stroka,1,1)=' ' then
            begin
              sost:=10; j:=j+1;
            end
          else
            begin
              insert(' ',pvja,j); ln:=ln+1;
              EdPvja.Text:=Pvja; f:=true;
            end;
        end;

     10: begin
          if copy(stroka,1,1)=' ' then
            begin
              j:=j+1;// sost:=11;
            end
          else
            if copy(stroka,1,3)=slov[3] then
            begin
              insert(' ',pvja,j); ln:=ln+1;
              EdPvja.Text:=Pvja; f:=true;
            end
            else
            begin
              par[ksl]:=par[ksl]+copy(stroka,1,1); j:=j+1;
            end;
        end;



    end;{Case}
  end; {While }

  If (Sost = 0) And (Kv = 0) Then Kv:=1;
  If (Sost = 4) And (Kv = 0) Then Kv:=3;
  If (Sost = 8) And (Kv = 0) Then Kv:=5;

  if f then
  begin
    EdPvja.Text:=Pvja;
  end;
  ClearButton.SetFocus;
end; {Procedure}




Procedure San ( YV: T_YV;  Ksl: Integer;
                            Var Kv:Integer);
begin
end;
Procedure Yprava ( YV: T_YV;  Ksl: Integer; Var Kv:Integer);
begin
end;
begin
 Lan (Pvja,YV,Par,Ksl,Kv);
 For I:= 1 To Ksl Do ListBoxYv.AddItem(IntToStr(Yv[i]),ListBoxYv);
 for i:=1 to ksl do ListBoxPar.AddItem((Par[i]),ListBoxPar);
 LblKv.Caption := LblKv.Caption + ' ' + IntToStr(Kv);
 San (YV,Ksl,Kv);
 Yprava (YV,Ksl,Kv);
end;

procedure TForm1.CmdExitClick(Sender: TObject);
begin
 Close;
end;

procedure TForm1.ClearButtonClick(Sender: TObject);
begin
 LblKv.Caption:='Код возврата: ';
 EdPVJA.Text:='';
 ListBoxYV.Clear;
 ListBoxPar.Clear;
 EdPvja.Font.Color:=clWindowText;
 EdPvja.SetFocus;
end;

end.
__________________
Женщины способны на всё, мужчины – на всё остальное...
Ответить с цитированием
  #7  
Старый 13.11.2009, 13:37
6ruse 6ruse вне форума
Прохожий
 
Регистрация: 09.11.2009
Сообщения: 20
Репутация: 10
По умолчанию Вот!!!, что то!!!

Я сильно извеняюсь, но это просто супер вариант для работы!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:03.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter