Смекни!
smekni.com

Проектирование компилятора (стр. 4 из 4)

(c in ['+','-','*','/']) or (c in [':','=','(',')','.','_',';','%']) and (c <> ' ') then

s := s + c

else

Check;

end;

i := i + 1;

end;

end;

result := z;

end;

//====================================

procedure TForm1.Button1Click(Sender: TObject);

var i, j, v: Integer;

c: Char;

begin

for i := 0 to Memo1.Lines.Count - 1 do

begin

StringToWords(Memo1.Lines.Strings[i], 2, ListBox1.Items);

end;

v := 1;

for i := 0 to ListBox1.Items.Count - 1 do

for j := 0 to StringGrid2.RowCount - 1 do

begin

if ListBox1.Items.Strings[i] = StringGrid2.Cells[0,j] then

begin

StringGrid1.RowCount := StringGrid1.RowCount + 1;

StringGrid1.Cells[0,v] := IntToStr(v);

StringGrid1.Cells[1,v] := StringGrid2.Cells[0,j];

StringGrid1.Cells[2,v] := StringGrid2.Cells[1,j];

v := v + 1;

Break;

end

else if j = StringGrid2.RowCount - 1 then

begin

StringGrid1.RowCount := StringGrid1.RowCount + 1;

StringGrid1.Cells[0,v] := IntToStr(v);

StringGrid1.Cells[1,v] := ListBox1.Items.Strings[i];

c := ListBox1.Items.Strings[i][1];

if (c in ['0'..'9']) then

StringGrid1.Cells[2,v] := 'Числовое значение'

else if ((c in ['%'])) then StringGrid1.Cells[2,v] := 'Символьная константа'

else StringGrid1.Cells[2,v] := 'Переменная';

v := v + 1;

end;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Memo1.Clear;

ListBox1.Clear;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

if OpenDialog1.Execute then

begin

Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

Edit1.Text := OpenDialog1.FileName;

end;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

if FileExists(Edit1.Text) then

Memo1.Lines.LoadFromFile(Edit1.Text)

else MessageBox(Handle, 'Файл не найден.', 'Внимание', MB_ICONINFORMATION);

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

if Button5.Caption = '>' then

begin

Form1.Width := 854;

Button5.Caption := '<';

end

else

begin

Form1.Width := 680;

Button5.Caption := '>';

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

StringGrid1.Cells[0,0] := '№ п/п';

StringGrid1.Cells[1,0] := 'Лексема';

StringGrid1.Cells[2,0] := 'Значение';

StringGrid2.Cells[0,0] := '+';

StringGrid2.Cells[1,0] := 'Операция сложения';

StringGrid2.Cells[0,1] := '-';

StringGrid2.Cells[1,1] := 'Операция вычитания';

StringGrid2.Cells[0,2] := '*';

StringGrid2.Cells[1,2] := 'Операция умножения';

StringGrid2.Cells[0,3] := '/';

StringGrid2.Cells[1,3] := 'Операция деления';

StringGrid2.Cells[0,4] := '(';

StringGrid2.Cells[1,4] := 'Открывающая скобка';

StringGrid2.Cells[0,5] := ')';

StringGrid2.Cells[1,5] := 'Закрывающая скобка';

StringGrid2.Cells[0,6] := ':-';

StringGrid2.Cells[1,6] := 'Операция присваивания';

StringGrid2.Cells[0,6] := ';';

StringGrid2.Cells[1,6] := 'Разделитель';

end;

procedure TForm1.Button6Click(Sender: TObject);

var i: Integer;

begin

for i := 1 to StringGrid1.RowCount - 1 do

StringGrid1.Rows[i].Clear;

StringGrid1.RowCount := 2;

end;

end.

Результат выполнения: