source: branches/AS8051toC/UMainForm.pas

Last change on this file was 26, checked in by chronos, 12 years ago
  • Upraveno: Překlad rozdělen do fáze zpracování maker a druhé fáze zpracování instrukcí.
File size: 2.6 KB
Line 
1unit UMainForm;
2
3{$mode delphi}{$H+}
4
5interface
6
7uses
8 Classes, SysUtils, FileUtil, SynHighlighterCpp, SynEdit, SynMemo,
9 SynHighlighterAny, SynHighlighterPas, Forms, Controls, Graphics, Dialogs,
10 StdCtrls, UParser, UCompiler;
11
12type
13 { TFormMain }
14
15 TFormMain = class(TForm)
16 ButtonSelectDir: TButton;
17 ButtonConvert: TButton;
18 EditPath: TEdit;
19 OpenDialog1: TOpenDialog;
20 SynCppSyn1: TSynCppSyn;
21 SynMemo1: TSynMemo;
22 function IsKeyword(Text: string): Boolean;
23 procedure ButtonConvertClick(Sender: TObject);
24 procedure ButtonSelectDirClick(Sender: TObject);
25 procedure FormCreate(Sender: TObject);
26 procedure FormDestroy(Sender: TObject);
27 procedure FormShow(Sender: TObject);
28 private
29 public
30 MainFile: TStringList;
31 MainFileOut: TStringList;
32 Macros: TStringList;
33 Compiler: TCompiler;
34 CompilerMacro: TCompilerMacro;
35 procedure Error(Text: string);
36 end;
37
38var
39 FormMain: TFormMain;
40
41implementation
42
43{$R *.lfm}
44
45{ TFormMain }
46
47function TFormMain.IsKeyword(Text: string): Boolean;
48var
49 I: integer;
50begin
51 Result := False;
52 for I := 0 to High(Instructions) do
53 if Instructions[I] = Text then
54 Result := True;
55end;
56
57procedure TFormMain.ButtonConvertClick(Sender: TObject);
58begin
59 MainFile.LoadFromFile(EditPath.Text);
60 MainFileOut.Text := CompilerMacro.Compile(MainFile.Text);
61 MainFileOut.Text := Compiler.Compile(MainFileOut.Text);
62 ForceDirectoriesUTF8(ExtractFileDir(EditPath.Text) + DirectorySeparator + 'C');
63 MainFileOut.SaveToFile(ExtractFileDir(EditPath.Text) + DirectorySeparator + 'C' +
64 DirectorySeparator + 'main.c');
65 SynMemo1.Lines.Assign(MainFileOut);
66end;
67
68procedure TFormMain.ButtonSelectDirClick(Sender: TObject);
69var
70 Dir: string;
71begin
72 OpenDialog1.FileName := EditPath.Text;
73 if OpenDialog1.Execute then begin
74 EditPath.Text := OpenDialog1.FileName;
75 end;
76end;
77
78procedure TFormMain.FormCreate(Sender: TObject);
79begin
80 MainFile := TStringList.Create;
81 MainFileOut := TStringList.Create;
82 CompilerMacro := TCompilerMacro.Create;
83 CompilerMacro.Parser.OnError := Error;
84 Compiler := TCompiler.Create;
85 Compiler.Parser.OnError := Error;
86end;
87
88procedure TFormMain.FormDestroy(Sender: TObject);
89begin
90 FreeAndNil(MainFile);
91 FreeAndNil(MainFileOut);
92 FreeAndNil(CompilerMacro);
93 FreeAndNil(Compiler);
94end;
95
96procedure TFormMain.FormShow(Sender: TObject);
97begin
98 ButtonConvertClick(Self);
99 //Close;
100end;
101
102procedure TFormMain.Error(Text: string);
103begin
104 Compiler.Emit('Error: ' + Text + LineEnding);
105 Compiler.Parser.Position := Length(Compiler.Parser.Source) + 1;
106end;
107
108
109
110end.
111
Note: See TracBrowser for help on using the repository browser.