Changeset 41


Ignore:
Timestamp:
Feb 28, 2012, 8:34:31 PM (13 years ago)
Author:
chronos
Message:
  • Modified: Instead of TProducer class will be used TTarget as real target definition.
  • Added: For execution of compiled code TExecutor class is introduced.
Location:
trunk
Files:
20 added
2 deleted
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Compiler/TranspascalCompiler.lpk

    r38 r41  
    99      <PathDelim Value="\"/>
    1010      <SearchPaths>
    11         <OtherUnitFiles Value="Produce;Analyze"/>
     11        <OtherUnitFiles Value="Target;Target\Interpretter;Target\ASM8051;Target\Java;Target\GCC;Target\PHP;Target\Delphi;Target\Dynamic C"/>
    1212        <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
    1313      </SearchPaths>
     14      <Parsing>
     15        <SyntaxOptions>
     16          <SyntaxMode Value="Delphi"/>
     17        </SyntaxOptions>
     18      </Parsing>
    1419      <Other>
    1520        <CompilerMessages>
     
    2126    </CompilerOptions>
    2227    <Version Minor="1"/>
    23     <Files Count="12">
     28    <Files Count="13">
    2429      <Item1>
    2530        <Filename Value="UCompiler.pas"/>
     
    3136      </Item2>
    3237      <Item3>
    33         <Filename Value="Produce\UProducerTreeView.pas"/>
    34         <UnitName Value="UProducerTreeView"/>
     38        <Filename Value="UProducer.pas"/>
     39        <UnitName Value="UProducer"/>
    3540      </Item3>
    3641      <Item4>
    37         <Filename Value="Produce\UProducer.pas"/>
    38         <UnitName Value="UProducer"/>
     42        <Filename Value="Target\ASM8051\UProducerASM8051.pas"/>
     43        <UnitName Value="UProducerAsm8051"/>
    3944      </Item4>
    4045      <Item5>
    41         <Filename Value="Produce\UProducers.pas"/>
    42         <UnitName Value="UProducers"/>
     46        <Filename Value="Target\Dynamic C\UProducerDynamicc.pas"/>
     47        <UnitName Value="UProducerDynamicC"/>
    4348      </Item5>
    4449      <Item6>
    45         <Filename Value="Produce\UProducerAsm8051.pas"/>
    46         <UnitName Value="UProducerAsm8051"/>
     50        <Filename Value="Target\Delphi\UProducerPascal.pas"/>
     51        <UnitName Value="UProducerPascal"/>
    4752      </Item6>
    4853      <Item7>
    49         <Filename Value="Produce\UProducerDynamicC.pas"/>
    50         <UnitName Value="UProducerDynamicC"/>
     54        <Filename Value="Target\GCC\UProducerGCC.pas"/>
     55        <UnitName Value="UProducerGCC"/>
    5156      </Item7>
    5257      <Item8>
    53         <Filename Value="Produce\UProducerPascal.pas"/>
    54         <UnitName Value="UProducerPascal"/>
     58        <Filename Value="UAnalyzer.pas"/>
     59        <UnitName Value="UAnalyzer"/>
    5560      </Item8>
    5661      <Item9>
    57         <Filename Value="Produce\UProducerGCCC.pas"/>
    58         <UnitName Value="UProducerGCCC"/>
     62        <Filename Value="Analyze\UAnalyzerPascal.pas"/>
     63        <UnitName Value="UAnalyzerPascal"/>
    5964      </Item9>
    6065      <Item10>
    61         <Filename Value="Analyze\UAnalyzer.pas"/>
    62         <UnitName Value="UAnalyzer"/>
     66        <Filename Value="UTarget.pas"/>
     67        <UnitName Value="UTarget"/>
    6368      </Item10>
    6469      <Item11>
    65         <Filename Value="Analyze\UAnalyzers.pas"/>
    66         <UnitName Value="UAnalyzers"/>
     70        <Filename Value="UExecutor.pas"/>
     71        <UnitName Value="UExecutor"/>
    6772      </Item11>
    6873      <Item12>
    69         <Filename Value="Analyze\UAnalyzerPascal.pas"/>
    70         <UnitName Value="UAnalyzerPascal"/>
     74        <Filename Value="Target\UTargets.pas"/>
     75        <UnitName Value="UTargets"/>
    7176      </Item12>
     77      <Item13>
     78        <Filename Value="Target\Interpretter\UTargetInterpretter.pas"/>
     79        <UnitName Value="UTargetInterpretter"/>
     80      </Item13>
    7281    </Files>
    7382    <Type Value="RunAndDesignTime"/>
  • trunk/Compiler/TranspascalCompiler.pas

    r38 r41  
    88
    99uses
    10   UCompiler, USourceCode, UProducerTreeView, UProducer, UProducers,
    11   UProducerAsm8051, UProducerDynamicC, UProducerPascal, UProducerGCCC,
    12   UAnalyzer, UAnalyzers, UAnalyzerPascal, LazarusPackageIntf;
     10  UCompiler, USourceCode, UProducer, UProducerASM8051, UProducerDynamicc,
     11  UProducerPascal, UProducerGCC, UAnalyzer, UAnalyzerPascal, UTarget,
     12  UExecutor, UTargets, UTargetInterpretter, LazarusPackageIntf;
    1313
    1414implementation
  • trunk/Compiler/UCompiler.pas

    r38 r41  
    66
    77uses
    8   SysUtils, Variants, Classes, Contnrs, UAnalyzers, UProducers, FileUtil,
    9   Dialogs, USourceCode, UProducer, UAnalyzer, SpecializedList;
     8  SysUtils, Variants, Classes, Contnrs, FileUtil,
     9  Dialogs, USourceCode, UProducer, UAnalyzer, SpecializedList, UTarget;
    1010
    1111type
    12   TProducerType = (ptGCCC, ptDynamicC, ptPascal, ptAssembler, ptXML);
    13   TAnalyzerType = (ptCustomPascal, ptDelphi);
    14 
    1512  TErrorMessage = class
    1613    Text: string;
     
    1916  end;
    2017
    21   TCompilerTarget = class
    22     Vendor: string;
    23     Model: string;
    24     Architecture: string;
    25   end;
    26 
    2718  { TCompilerList }
    28 
    29   TCompilerTargetList = class(TObjectList)
    30     procedure Add(Vendor, Model, Architecture: string);
    31   end;
    3219
    3320  TCompiler = class
     
    3522    FAnalyzer: TAnalyzer;
    3623    FOnErrorMessage: TErrorMessageEvent;
    37     FProducerType: TProducerType;
    38     FProducer: TProducer;
    3924    function GetSource(Name: string; var SourceCode: string): Boolean;
    4025    procedure ErrorMessage(Text: string; Position: TPoint; FileName: string);
    4126    procedure SetAnalyzer(const AValue: TAnalyzer);
    42     procedure SetProducer(AValue: TProducer);
    4327    procedure AnalyzeAll;
    4428    procedure ProduceAll;
     
    4731    ErrorMessages: TListObject;
    4832    CompiledFolder: string;
    49     SupportedTargets: TCompilerTargetList;
    50     Target: TCompilerTarget;
     33    Target: TTarget;
    5134    TargetFolder: string;
    52     Producers: TListProducer;
    53     Analyzers: TListAnalyzer;
     35    Targets: TListTarget;
    5436    SourceFiles: TListString;
    5537    constructor Create;
     
    6042      write FOnErrorMessage;
    6143    property Analyzer: TAnalyzer read FAnalyzer write SetAnalyzer;
    62     property Producer: TProducer read FProducer write SetProducer;
    6344  end;
    6445
     46
    6547implementation
     48
     49uses
     50  UTargets;
    6651
    6752resourcestring
     
    7863constructor TCompiler.Create;
    7964begin
    80   Analyzers := TListAnalyzer.Create;
    81   Producers := TListProducer.Create;
     65  Targets := TListTarget.Create;
    8266  SourceFiles := TListString.Create;
    8367
    84   RegisterAnalyzers(Self);
    85   RegisterProducers(Self);
    86 
    87   SupportedTargets := TCompilerTargetList.Create;
    88   SupportedTargets.Add('AMD', 'Athlon II', 'amd64');
    89   SupportedTargets.Add('Zilog', 'Z80', 'Z80');
    90   SupportedTargets.Add('Rabbit', 'RC3000', 'Z180');
    91   SupportedTargets.Add('Atmel', 'ATmega8', 'AVR');
    92   SupportedTargets.Add('Atmel', 'UC3B0256', 'AVR32');
    93   SupportedTargets.Add('Dallas', 'DS89C450', '8052');
     68  RegisterTargets(Self);
    9469
    9570  AbstractCode := TProgram.Create;
    96   Producer := nil;
    97   Analyzer := nil;
    9871  ErrorMessages := TListObject.Create;
    9972  CompiledFolder := 'Compiled';
     
    10982begin
    11083  AbstractCode.Free;
    111   Analyzers.Free;
    112   Producers.Free;
     84  Targets.Free;
    11385  ErrorMessages.Free;
    114   SupportedTargets.Free;
    11586  SourceFiles.Free;
    11687end;
     
    159130end;
    160131
    161 procedure TCompiler.SetProducer(AValue: TProducer);
    162 begin
    163   if FProducer = AValue then Exit;
    164   FProducer := AValue;
    165 end;
    166 
    167132procedure TCompiler.AnalyzeAll;
    168133begin
     
    187152    with AbstractCode do
    188153    for I := 0 to Modules.Count - 1 do begin
    189       Producer.Produce(TModule(Modules[I]));
    190       Producer.AssignToStringList(ProducedCode);
     154      Target.Producer.Produce(TModule(Modules[I]));
     155      Target.Producer.AssignToStringList(ProducedCode);
    191156      TargetFileName := TargetFolder + DirectorySeparator +
    192         CompiledFolder + DirectorySeparator + Producer.Name +
     157        CompiledFolder + DirectorySeparator + Target.Producer.Name +
    193158        DirectorySeparator + TModule(Modules[I]).TargetFile;
    194159      ForceDirectoriesUTF8(ExtractFileDir(TargetFileName));
     
    200165end;
    201166
    202 { TCompilerTargetList }
    203 
    204 procedure TCompilerTargetList.Add(Vendor, Model, Architecture: string);
    205 var
    206   NewItem: TCompilerTarget;
    207 begin
    208   NewItem := TCompilerTarget.Create;
    209   NewItem.Vendor := Vendor;
    210   NewItem.Model := Model;
    211   NewItem.Architecture := Architecture;
    212   inherited Add(NewItem);
    213 end;
    214 
    215167end.
  • trunk/IDE/Forms/UCompilersForm.lfm

    r37 r41  
    2222      item
    2323        Caption = 'Execution path'
    24         Width = 200
     24        Width = 247
    2525      end>
    2626    OwnerData = True
  • trunk/IDE/Forms/UCompilersForm.pas

    r37 r41  
    3131
    3232uses
    33   UMainForm, UCompiler, UCompilerSettingsForm, UProducer;
     33  UMainForm, UCompiler, UCompilerSettingsForm, UProducer, UTarget;
    3434
    3535resourcestring
     
    4646procedure TFormProducers.ListView1Data(Sender: TObject; Item: TListItem);
    4747begin
    48   if (Item.Index >= 0) and (Item.Index < MainForm.Compiler.Producers.Count) then
    49   with TProducer(MainForm.Compiler.Producers[Item.Index]) do begin
     48  if (Item.Index >= 0) and (Item.Index < MainForm.Compiler.Targets.Count) then
     49  with TTarget(MainForm.Compiler.Targets[Item.Index]) do begin
    5050    Item.Caption := Name;
    51     Item.Data := MainForm.Compiler.Producers[Item.Index];
    52     Item.SubItems.Add(CompilerPath);
     51    Item.Data := MainForm.Compiler.Targets[Item.Index];
     52    Item.SubItems.Add(Producer.CompilerPath);
    5353  end;
    5454end;
     
    6666procedure TFormProducers.ReloadList;
    6767begin
    68   ListView1.Items.Count := MainForm.Compiler.Producers.Count;
     68  ListView1.Items.Count := MainForm.Compiler.Targets.Count;
    6969  ListView1.Refresh;
    7070end;
  • trunk/IDE/Forms/UMainForm.lfm

    r39 r41  
    472472          0000000000000000000000000000000000000000000000000000
    473473        }
    474       end
    475       object MenuItemAnalyzer: TMenuItem
    476         Caption = 'Analyzer'
    477474      end
    478475      object MenuItemProducer: TMenuItem
  • trunk/IDE/Forms/UMainForm.lrt

    r39 r41  
    1111TMAINFORM.MENUITEM12.CAPTION=-
    1212TMAINFORM.MENUITEM7.CAPTION=Run
    13 TMAINFORM.MENUITEMANALYZER.CAPTION=Analyzer
    1413TMAINFORM.MENUITEMPRODUCER.CAPTION=Producer
    1514TMAINFORM.MENUITEM15.CAPTION=View
  • trunk/IDE/Forms/UMainForm.pas

    r39 r41  
    1111  UCDConjoinForm, UCDWindowList, UCDLayout, UCDCustomize, UCoolTranslator,
    1212  UCompiledForm, UCodeTreeForm, URegistry, ULastOpenedList, UApplicationInfo,
    13   UDebugLog, UAnalyzer, UProducer;
     13  UDebugLog;
    1414
    1515const
     
    6868    MenuItem23: TMenuItem;
    6969    MenuItem24: TMenuItem;
    70     MenuItemAnalyzer: TMenuItem;
    7170    MenuItemProducer: TMenuItem;
    7271    MenuItem3: TMenuItem;
     
    157156uses
    158157  UMessagesForm, UCodeForm, UProjectManager, UCommon, UAboutForm, UFormOptions,
    159   UCompilersForm;
     158  UCompilersForm, UTarget, UAnalyzer, UProducer;
    160159
    161160resourcestring
     
    171170    try
    172171      RootKey := Root;
    173       for I := 0 to Producers.Count - 1 do
    174       with TProducer(Producers[I]) do begin
    175         OpenKey(Key + '\Producers\' + Name, True);
     172      for I := 0 to Targets.Count - 1 do
     173      with TTarget(Targets[I]) do begin
     174        OpenKey(Key + '\Targets\' + Name, True);
    176175        if ValueExists('CompilerPath') then
    177           CompilerPath := ReadStringWithDefault('CompilerPath', CompilerPath);
     176          Producer.CompilerPath := ReadStringWithDefault('CompilerPath', Producer.CompilerPath);
    178177      end;
     178      if ValueExists('SelectedTarget') then
     179      Target := Targets.SearchBySysName(ReadString('SelectedTarget'))
     180        else Target := nil;
    179181    finally
    180182      Free;
     
    189191    try
    190192      RootKey := Root;
    191       for I := 0 to Producers.Count - 1 do
    192       with TProducer(Producers[I]) do begin
    193         OpenKey(Key + '\Producers\' + Name, True);
    194         if CompilerPath <> '' then WriteString('CompilerPath', CompilerPath)
    195           else DeleteValue('CompilerPath');
     193      for I := 0 to Targets.Count - 1 do
     194      with TTarget(Targets[I]) do begin
     195        OpenKey(Key + '\Targets\' + Name, True);
     196        if Assigned(Producer) then begin
     197          if Producer.CompilerPath <> '' then WriteString('CompilerPath', Producer.CompilerPath)
     198            else DeleteValue('CompilerPath');
     199        end;
    196200      end;
     201      if Assigned(Target) then WriteString('SelectedTarget', Target.SysName)
     202        else DeleteValue('SelectedTarget');
    197203    finally
    198204      Free;
     
    207213
    208214  // Compile project file
    209     Compiler.Producer := TProducer(Compiler.Producers[SelectedProducerIndex]);
    210     Compiler.Analyzer := TAnalyzer(Compiler.Analyzers[SelectedAnalyzerIndex]);
    211215    Compiler.Init;
    212216
     
    434438  NewMenuItem: TMenuItem;
    435439begin
    436   MenuItemAnalyzer.Clear;
    437   for I := 0 to Compiler.Analyzers.Count - 1 do begin
    438     NewMenuItem := TMenuItem.Create(MenuItemAnalyzer);
    439     NewMenuItem.Caption := TAnalyzer(Compiler.Analyzers[I]).Name;
    440     NewMenuItem.OnClick := MenuItemAnalyzerClick;
    441     if I = SelectedAnalyzerIndex then NewMenuItem.Checked := True;
    442     MenuItemAnalyzer.Add(NewMenuItem);
    443   end;
    444440  MenuItemProducer.Clear;
    445   for I := 0 to Compiler.Producers.Count - 1 do begin
     441  for I := 0 to Compiler.Targets.Count - 1 do begin
    446442    NewMenuItem := TMenuItem.Create(MenuItemProducer);
    447     NewMenuItem.Caption := TProducer(Compiler.Producers[I]).Name;
     443    NewMenuItem.Caption := TTarget(Compiler.Targets[I]).Name;
    448444    NewMenuItem.OnClick := MenuItemProducerClick;
    449445    if I = SelectedProducerIndex then NewMenuItem.Checked := True;
  • trunk/IDE/Languages/Transpascal.cs.po

    r40 r41  
    229229msgstr "Nápověda"
    230230
    231 #: tmainform.menuitemanalyzer.caption
    232 msgid "Analyzer"
    233 msgstr "Analyzátor"
    234 
    235231#: tmainform.menuitemopenrecent.caption
    236232msgid "Open recent"
  • trunk/IDE/Languages/Transpascal.po

    r40 r41  
    221221msgstr ""
    222222
    223 #: tmainform.menuitemanalyzer.caption
    224 msgid "Analyzer"
    225 msgstr ""
    226 
    227223#: tmainform.menuitemopenrecent.caption
    228224msgid "Open recent"
  • trunk/IDE/Transpascal.lpi

    r40 r41  
    9090      <Item3>
    9191        <PackageName Value="LCLBase"/>
    92         <MinVersion Major="1" Valid="True" Release="1"/>
     92        <MinVersion Major="1" Release="1" Valid="True"/>
    9393      </Item3>
    9494      <Item4>
  • trunk/IDE/UApplicationInfo.pas

    r38 r41  
    22
    33{$MODE Delphi}
    4 
    5 // Date: 2010-06-16
    64
    75interface
     
    5553  Name := 'Transpascal IDE';
    5654  Identification := 1;
    57   ReleaseDate := EncodeDate(2012, 2, 25);
     55  ReleaseDate := EncodeDate(2012, 2, 28);
    5856  MajorVersion := 0;
    5957  MinorVersion := 1;
Note: See TracChangeset for help on using the changeset viewer.