Changeset 17


Ignore:
Timestamp:
Nov 8, 2010, 2:14:13 PM (13 years ago)
Author:
george
Message:
  • Modified: Enhanced Delphi producer.
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Compiler/Analyze/UAnalyzerPascal.pas

    r12 r17  
    2727      Expressions: TListExpression; var Func: TFunctionCall): Boolean;
    2828    function ParseUses(SourceCode: TUsedModuleList; AExported: Boolean): Boolean;
     29    function ParseUsesItem(SourceCode: TUsedModuleList; AExported: Boolean): Boolean;
    2930    function ParseModule(ProgramCode: TProgram): TModule; override;
    3031    function ParseUnit(var SourceCode: TModuleUnit; ProgramCode: TProgram): Boolean;
     
    12561257  if NextToken = 'uses' then begin
    12571258    Expect('uses');
     1259    ParseUsesItem(SourceCode, AExported);
     1260    while NextToken = ',' do begin
     1261      Expect(',');
     1262      ParseUsesItem(SourceCode, AExported);
     1263    end;
     1264    Expect(';');
     1265    Result := True;
     1266  end else Result := False;
     1267end;
     1268
     1269function TAnalyzerPascal.ParseUsesItem(SourceCode: TUsedModuleList;
     1270  AExported: Boolean): Boolean;
     1271begin
    12581272    with TUsedModule(SourceCode.Items[SourceCode.Add(TUsedModule.Create)]) do begin
    12591273      Name := ReadToken;
     
    12731287      end;
    12741288    end;
    1275     while NextToken = ',' do begin
    1276       Expect(',');
    1277       with TUsedModule(SourceCode.Items[SourceCode.Add(TUsedModule.Create)]) do
    1278       begin
    1279         Name := ReadToken;
    1280         if NextToken = 'in' then begin
    1281           Expect('in');
    1282           Location := ReadToken;
    1283         end else Location := Name + '.pas';
    1284         Module := SourceCode.ParentModule.ParentProgram.Modules.Search(Name);
    1285         if not Assigned(Module) then begin
    1286           if not ParseFile(Name) then begin
    1287             ErrorMessage(SUnitNotFound, [Name], -2);
    1288             SourceCode.Delete(SourceCode.Count - 1);
    1289           end;
    1290         end;
    1291       end;
    1292     end;
    1293     Expect(';');
    1294     Result := True;
    1295   end else Result := False;
    12961289end;
    12971290
  • trunk/Compiler/Produce/UProducer.pas

    r12 r17  
    77
    88uses
    9   USourceCode, Classes, SysUtils;
     9  USourceCode, Classes, SysUtils, StrUtils;
    1010
    1111type
     12
     13  { TProducer }
     14
    1215  TProducer = class
    1316    Name: string;
     17    TextSource: TStringList;
     18    IndentationLength: Integer;
     19    Indetation: Integer;
     20    procedure Emit(AText: string);
     21    procedure EmitLn(AText: string = '');
    1422    procedure AssignToStringList(Target: TStringList); virtual; abstract;
    1523    procedure Produce(Module: TModule); virtual; abstract;
     24    constructor Create;
     25    destructor Destroy; override;
    1626  end;
    1727
     
    4151{$I 'GenericObjectList.inc'}
    4252
     53{ TProducer }
     54
     55procedure TProducer.EmitLn(AText: string = '');
     56begin
     57  Emit(AText);
     58  TextSource.Add('');
     59end;
     60
     61constructor TProducer.Create;
     62begin
     63  TextSource := TStringList.Create;
     64  IndentationLength := 2;
     65end;
     66
     67destructor TProducer.Destroy;
     68begin
     69  TextSource.Free;
     70  inherited Destroy;
     71end;
     72
     73procedure TProducer.Emit(AText: string);
     74begin
     75  with TextSource do begin
     76    if Count = 0 then Add('');
     77    if Strings[Count - 1] = '' then
     78      Strings[Count - 1] := Strings[Count - 1] + DupeString(' ', IndentationLength * Indetation);
     79    Strings[Count - 1] := Strings[Count - 1] + AText;
     80  end;
     81end;
     82
    4383end.
  • trunk/Compiler/Produce/UProducerDynamicC.pas

    r12 r17  
    1717    function TranslateType(Name: string): string;
    1818    function TranslateOperator(Name: string): string;
    19     procedure Emit(AText: string);
    20     procedure EmitLn(AText: string = '');
    2119    procedure GenerateUses(UsedModules: TUsedModuleList);
    2220    procedure GenerateModule(Module: TModule);
     
    3937    function GenerateExpression(Expression: TExpression): string;
    4038  public
    41     TextSource: TStringList;
    42     IndentationLength: Integer;
    43     Indetation: Integer;
    4439    procedure AssignToStringList(Target: TStringList); override;
    4540    procedure Produce(Module: TModule); override;
     
    5449constructor TProducerDynamicC.Create;
    5550begin
    56   TextSource := TStringList.Create;
    57   IndentationLength := 2;
    5851  Name := 'Dynamic C';
    5952end;
     
    9083  else if Name = 'xor' then Result := '^'
    9184  else Result := Name;
    92 end;
    93 
    94 procedure TProducerDynamicC.EmitLn(AText: string = '');
    95 begin
    96   Emit(AText);
    97   TextSource.Add('');
    98 end;
    99 
    100 procedure TProducerDynamicC.Emit(AText: string);
    101 begin
    102   with TextSource do begin
    103     if Count = 0 then Add('');
    104     if Strings[Count - 1] = '' then
    105       Strings[Count - 1] := Strings[Count - 1] + DupeString(' ', IndentationLength * Indetation);
    106     Strings[Count - 1] := Strings[Count - 1] + AText;
    107   end;
    10885end;
    10986
  • trunk/Compiler/Produce/UProducerPascal.pas

    r12 r17  
    1515  TProducerPascal = class(TProducer)
    1616  private
    17     procedure Emit(AText: string; NewLine: Boolean = True);
    1817    procedure GenerateUses(UsedModules: TUsedModuleList);
    1918    procedure GenerateModule(Module: TModule);
     19    procedure GenerateUnit(Module: TModule);
     20    procedure GenerateLibrary(Module: TModule);
     21    procedure GeneratePackage(Module: TModule);
    2022    procedure GenerateType(AType: TType; AssignSymbol: Char = ':');
    2123    procedure GenerateTypes(Types: TTypeList);
    2224    procedure GenerateCommonBlock(CommonBlock: TCommonBlock;
    2325      LabelPrefix: string);
    24     procedure GenerateProgram(ProgramBlock: TProgram);
    2526    procedure GenerateFunctions(Functions: TFunctionList);
    2627    procedure GenerateConstants(Constants: TConstantList);
     
    3536    function GenerateExpression(Expression: TExpression): string;
    3637  public
    37     TextSource: TStringList;
    38     IndentationLength: Integer;
    39     Indetation: Integer;
    4038    procedure AssignToStringList(Target: TStringList); override;
    4139    procedure Produce(Module: TModule); override;
     
    5048constructor TProducerPascal.Create;
    5149begin
    52   IndentationLength := 2;
    53   TextSource := TStringList.Create;
     50  inherited;
    5451  Name := 'Delphi';
    5552end;
     
    5754destructor TProducerPascal.Destroy;
    5855begin
    59   TextSource.Free;
    6056  inherited;
    6157end;
    6258
    63 procedure TProducerPascal.Emit(AText: string; NewLine: Boolean = True);
    64 begin
    65   with TextSource do begin
    66     if Count = 0 then Add('');
    67     if Strings[Count - 1] = '' then
    68       Strings[Count - 1] := Strings[Count - 1] + DupeString(' ', IndentationLength * Indetation);
    69     Strings[Count - 1] := Strings[Count - 1] + AText;
    70     if NewLine then Add('');
    71   end;
    72 end;
    73 
    7459procedure TProducerPascal.GenerateUses(UsedModules: TUsedModuleList);
    7560var
    7661  I: Integer;
    77   Line: string;
    78 begin
    79   Line := 'uses ';
     62  ModuleName: string;
     63begin
     64  EmitLn('uses');
     65  Inc(Indetation);
    8066  for I := 0 to UsedModules.Count - 1 do begin
    81     Line := Line + TUsedModule(UsedModules[I]).Name;
    82     if I < UsedModules.Count - 1 then Line := Line + ', ';
    83   end;
    84   Emit(Line + ';');
    85   Emit('');
     67    if Assigned(TUsedModule(UsedModules[I]).Module) then
     68      ModuleName := TUsedModule(UsedModules[I]).Module.Name
     69      else ModuleName := '(' + TUsedModule(UsedModules[I]).Name + ')';
     70    if UsedModules.ParentModule is TModuleProgram then begin
     71      Emit(ModuleName + ' in ''' + ModuleName + '.pas''');
     72      if I < UsedModules.Count - 1 then EmitLn(', ');
     73    end else begin
     74      Emit(ModuleName);
     75      if I < UsedModules.Count - 1 then Emit(', ');
     76    end;
     77  end;
     78  EmitLn(';');
     79  Dec(Indetation);
    8680end;
    8781
     
    9185  if Module is TModuleProgram then
    9286  with TModuleProgram(Module) do begin
    93     Emit('program', False);
    94     Emit(' ' + Name + ';');
    95     Emit('');
     87    Module.TargetFile := Module.Name + '.dpr';
     88    EmitLn('program ' + Name + ';');
    9689    GenerateUses(UsedModules);
    9790    GenerateCommonBlock(Body, '');
    98     Emit('.', False);
     91    EmitLn('.');
    9992  end else
    100   if Module is TModuleUnit then Emit('unit', False)
    101   else if Module is TModuleLibrary then Emit('library', False)
    102   else if Module is TModulePackage then Emit('package', False);
     93  if Module is TModuleUnit then GenerateUnit(Module)
     94  else if Module is TModuleLibrary then GenerateLibrary(Module)
     95  else if Module is TModulePackage then GeneratePackage(Module);
     96end;
     97
     98procedure TProducerPascal.GenerateUnit(Module: TModule);
     99begin
     100  EmitLn('unit ' + TModuleUnit(Module).Name + ';');
     101  EmitLn;
     102  EmitLn('interface');
     103  EmitLn;
     104  GenerateCommonBlock(TModuleUnit(Module).Body, '.');
     105  EmitLn('implementation');
     106  EmitLn;
     107  EmitLn('end.');
     108end;
     109
     110procedure TProducerPascal.GenerateLibrary(Module: TModule);
     111begin
     112
     113end;
     114
     115procedure TProducerPascal.GeneratePackage(Module: TModule);
     116begin
     117
    103118end;
    104119
     
    108123begin
    109124  if AType is TTypeRecord then begin
    110     Emit(AType.Name + ' ' + AssignSymbol + ' record');
     125    EmitLn(AType.Name + ' ' + AssignSymbol + ' record');
    111126    Inc(Indetation);
    112127    for I := 0 to TTypeRecord(AType).CommonBlock.Types.Count - 1 do begin
    113128      GenerateType(TType(TTypeRecord(AType).CommonBlock.Types[I]));
    114       Emit(';');
     129      EmitLn(';');
    115130    end;
    116131    Dec(Indetation);
    117     Emit('end', False);
     132    Emit('end');
    118133  end else
    119134  if AType is TTypeArray then begin
    120     Emit(AType.Name + ' ' + AssignSymbol + ' array ', False);
     135    Emit(AType.Name + ' ' + AssignSymbol + ' array ');
    121136    if Assigned(TTypeArray(AType).IndexType) then begin
    122       Emit('[', False);
     137      Emit('[');
    123138      GenerateType(TTypeArray(AType).IndexType);
    124       Emit(']', False);
    125     end;
    126     Emit(' of ', False);
     139      Emit(']');
     140    end;
     141    Emit(' of ');
    127142    if Assigned(TTypeArray(AType).ItemType) then
    128143      GenerateType(TTypeArray(AType).ItemType);
    129144  end else begin
    130     Emit(AType.Name, False);
     145    Emit(AType.Name);
    131146    if Assigned(AType.UsedType) then begin
    132       Emit(' ' + AssignSymbol + ' ', False);
     147      Emit(' ' + AssignSymbol + ' ');
    133148      GenerateType(AType.UsedType);
    134149    end;
     
    141156begin
    142157  if Types.Count > 0 then begin
    143     Emit('type');
     158    EmitLn('type');
    144159    Inc(Indetation);
    145160    for I := 0 to Types.Count - 1 do
     
    147162    if (not Internal) then begin
    148163      GenerateType(TType(Types[I]), '=');
    149       Emit(';');
     164      EmitLn(';');
    150165    end;
    151166    Dec(Indetation);
    152     Emit('');
     167    EmitLn;
    153168  end;
    154169end;
    155170
    156171procedure TProducerPascal.Produce(Module: TModule);
     172var
     173  I: Integer;
    157174begin
    158175  inherited;
    159176  TextSource.Clear;
     177
     178  // Check unit names
     179  with Module.ParentProgram do
     180  for I := 0 to Modules.Count - 1 do
     181    if TModule(Modules[I]).Name = 'System' then
     182      TModule(Modules[I]).Name := 'System2';
     183
    160184  GenerateModule(Module);
    161 end;
    162 
    163 procedure TProducerPascal.GenerateProgram(ProgramBlock: TProgram);
    164 var
    165   I: Integer;
    166 begin
    167   Indetation := 0;;
    168   with ProgramBlock do
    169   for I := 0 to Modules.Count - 1 do
    170     GenerateModule(TModule(Modules[I]));
    171185end;
    172186
     
    195209    if (FunctionType = ftFunction) and Assigned(ResultType) then
    196210      Line := Line + ': ' + ResultType.Name;
    197     Emit(Line + ';');
     211    EmitLn(Line + ';');
    198212    GenerateBeginEnd(Code);
    199     Emit(';');
    200     Emit('');
     213    EmitLn(';');
     214    EmitLn;
    201215  end;
    202216end;
     
    207221begin
    208222  if Constants.Count > 0 then begin
    209     Emit('const');
     223    EmitLn('const');
    210224    Inc(Indetation);
    211225    for I := 0 to Constants.Count - 1 do
    212226    with TConstant(Constants[I]) do
    213227    if not System then begin
    214       Emit(Name + ': ' + ValueType.Name + ' = ' + Value + ';');
     228      //Emit(Name + ': ');
     229      //if Assigned(ValueType) then Emit(ValueType.Name);
     230      //Emit(' = ' + Value + ';');
    215231    end;
    216232    Dec(Indetation);
     
    223239  I: Integer;
    224240begin
    225   Emit('begin');
     241  EmitLn('begin');
    226242  Inc(Indetation);
    227243  // Commands
    228244  for I := 0 to BeginEnd.Commands.Count - 1 do begin
    229245    GenerateCommand(TCommand(BeginEnd.Commands[I]));
    230     Emit(';');
     246    EmitLn(';');
    231247  end;
    232248
    233249  Dec(Indetation);
    234   Emit('end', False);
     250  Emit('end');
    235251end;
    236252
     
    239255  I: Integer;
    240256begin
    241   Emit('var');
     257  EmitLn('var');
    242258  Inc(Indetation);
    243259  for I := 0 to Variables.Count - 1 do
    244260  with TVariable(Variables[I]) do
    245     Emit(Name + ': ' + ValueType.Name + ';');
     261    EmitLn(Name + ': ' + ValueType.Name + ';');
    246262  Dec(Indetation);
    247   Emit('');
     263  EmitLn;
    248264end;
    249265
     
    286302procedure TProducerPascal.GenerateAssignment(Assignment: TAssignment);
    287303begin
    288   Emit(Assignment.Target.Name + ' := ' + GenerateExpression(Assignment.Source), False);
     304  Emit(Assignment.Target.Name + ' := ' + GenerateExpression(Assignment.Source));
    289305end;
    290306
     
    305321    end;
    306322  end;
    307   Emit(Line, False);
     323  Emit(Line);
    308324end;
    309325
  • trunk/Compiler/TranspascalCompiler.lpk

    r14 r17  
    1212      </SearchPaths>
    1313      <Other>
    14         <CustomOptions Value="-dSINGLE_PRODUCER"/>
     14        <CustomOptions Value="-dSINGLE_PRODUCER_"/>
    1515        <CompilerPath Value="$(CompPath)"/>
    1616      </Other>
  • trunk/IDE/Transpascal.lpi

    r16 r17  
    5858        <IsPartOfProject Value="True"/>
    5959        <UnitName Value="Transpascal"/>
    60         <WindowIndex Value="0"/>
    61         <TopLine Value="1"/>
    62         <CursorPos X="31" Y="4"/>
     60        <EditorIndex Value="12"/>
     61        <WindowIndex Value="0"/>
     62        <TopLine Value="1"/>
     63        <CursorPos X="17" Y="3"/>
    6364        <UsageCount Value="215"/>
     65        <Loaded Value="True"/>
    6466        <DefaultSyntaxHighlighter Value="Delphi"/>
    6567      </Unit0>
     
    7375        <EditorIndex Value="0"/>
    7476        <WindowIndex Value="0"/>
    75         <TopLine Value="162"/>
    76         <CursorPos X="52" Y="175"/>
     77        <TopLine Value="93"/>
     78        <CursorPos X="21" Y="107"/>
    7779        <UsageCount Value="215"/>
    7880        <Loaded Value="True"/>
     
    265267        <ResourceBaseClass Value="Form"/>
    266268        <UnitName Value="UCompiledForm"/>
    267         <EditorIndex Value="7"/>
     269        <EditorIndex Value="8"/>
    268270        <WindowIndex Value="0"/>
    269271        <TopLine Value="2"/>
     
    279281        <ResourceBaseClass Value="Form"/>
    280282        <UnitName Value="UCodeTreeForm"/>
    281         <EditorIndex Value="6"/>
     283        <EditorIndex Value="7"/>
    282284        <WindowIndex Value="0"/>
    283285        <TopLine Value="1"/>
     
    495497        <Filename Value="..\Compiler\UCompiler.pas"/>
    496498        <UnitName Value="UCompiler"/>
    497         <IsVisibleTab Value="True"/>
    498499        <EditorIndex Value="3"/>
    499500        <WindowIndex Value="0"/>
    500         <TopLine Value="61"/>
    501         <CursorPos X="56" Y="82"/>
    502         <UsageCount Value="12"/>
     501        <TopLine Value="63"/>
     502        <CursorPos X="19" Y="79"/>
     503        <UsageCount Value="13"/>
    503504        <Loaded Value="True"/>
    504505      </Unit49>
     
    506507        <Filename Value="..\Compiler\Produce\UProducer.pas"/>
    507508        <UnitName Value="UProducer"/>
    508         <EditorIndex Value="10"/>
    509         <WindowIndex Value="0"/>
    510         <TopLine Value="1"/>
    511         <CursorPos X="32" Y="41"/>
    512         <UsageCount Value="11"/>
     509        <EditorIndex Value="11"/>
     510        <WindowIndex Value="0"/>
     511        <TopLine Value="10"/>
     512        <CursorPos X="15" Y="23"/>
     513        <UsageCount Value="12"/>
    513514        <Loaded Value="True"/>
    514515      </Unit50>
     
    520521        <TopLine Value="22"/>
    521522        <CursorPos X="14" Y="77"/>
    522         <UsageCount Value="11"/>
     523        <UsageCount Value="12"/>
    523524        <Loaded Value="True"/>
    524525      </Unit51>
     
    526527        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
    527528        <UnitName Value="UAnalyzerPascal"/>
    528         <EditorIndex Value="9"/>
    529         <WindowIndex Value="0"/>
    530         <TopLine Value="10"/>
    531         <CursorPos X="68" Y="29"/>
    532         <UsageCount Value="11"/>
     529        <EditorIndex Value="10"/>
     530        <WindowIndex Value="0"/>
     531        <TopLine Value="1267"/>
     532        <CursorPos X="46" Y="1281"/>
     533        <UsageCount Value="12"/>
    533534        <Loaded Value="True"/>
    534535      </Unit52>
     
    536537        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
    537538        <UnitName Value="UProducerPascal"/>
     539        <IsVisibleTab Value="True"/>
    538540        <EditorIndex Value="5"/>
    539541        <WindowIndex Value="0"/>
    540         <TopLine Value="50"/>
    541         <CursorPos X="20" Y="54"/>
    542         <UsageCount Value="11"/>
     542        <TopLine Value="101"/>
     543        <CursorPos X="1" Y="110"/>
     544        <UsageCount Value="12"/>
    543545        <Loaded Value="True"/>
    544546      </Unit53>
     
    546548        <Filename Value="..\Compiler\Produce\UProducerDynamicC.pas"/>
    547549        <UnitName Value="UProducerDynamicC"/>
    548         <WindowIndex Value="0"/>
    549         <TopLine Value="54"/>
    550         <CursorPos X="23" Y="58"/>
    551         <UsageCount Value="10"/>
     550        <EditorIndex Value="6"/>
     551        <WindowIndex Value="0"/>
     552        <TopLine Value="46"/>
     553        <CursorPos X="47" Y="56"/>
     554        <UsageCount Value="11"/>
     555        <Loaded Value="True"/>
    552556      </Unit54>
    553557      <Unit55>
     
    570574        <Filename Value="..\Compiler\USourceCode.pas"/>
    571575        <UnitName Value="USourceCode"/>
    572         <EditorIndex Value="8"/>
    573         <WindowIndex Value="0"/>
    574         <TopLine Value="436"/>
    575         <CursorPos X="3" Y="449"/>
    576         <UsageCount Value="11"/>
     576        <EditorIndex Value="9"/>
     577        <WindowIndex Value="0"/>
     578        <TopLine Value="359"/>
     579        <CursorPos X="5" Y="373"/>
     580        <UsageCount Value="12"/>
    577581        <Loaded Value="True"/>
    578582      </Unit57>
     
    596600        <Filename Value="..\Compiler\Analyze\UAnalyzers.pas"/>
    597601        <UnitName Value="UAnalyzers"/>
    598         <EditorIndex Value="11"/>
     602        <EditorIndex Value="13"/>
    599603        <WindowIndex Value="0"/>
    600604        <TopLine Value="1"/>
    601605        <CursorPos X="37" Y="12"/>
    602         <UsageCount Value="11"/>
     606        <UsageCount Value="12"/>
    603607        <Loaded Value="True"/>
    604608      </Unit60>
     
    606610        <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    607611        <UnitName Value="UProducers"/>
    608         <EditorIndex Value="12"/>
     612        <EditorIndex Value="14"/>
    609613        <WindowIndex Value="0"/>
    610614        <TopLine Value="12"/>
    611615        <CursorPos X="55" Y="26"/>
    612         <UsageCount Value="11"/>
     616        <UsageCount Value="12"/>
    613617        <Loaded Value="True"/>
    614618      </Unit61>
     
    627631        <TopLine Value="628"/>
    628632        <CursorPos X="1" Y="649"/>
    629         <UsageCount Value="10"/>
     633        <UsageCount Value="11"/>
    630634        <Loaded Value="True"/>
    631635      </Unit63>
     
    633637    <JumpHistory Count="30" HistoryIndex="29">
    634638      <Position1>
    635         <Filename Value="..\Compiler\Analyze\UAnalyzer.pas"/>
    636         <Caret Line="235" Column="1" TopLine="214"/>
     639        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     640        <Caret Line="60" Column="60" TopLine="60"/>
    637641      </Position1>
    638642      <Position2>
    639         <Filename Value="..\Compiler\UCompiler.pas"/>
    640         <Caret Line="76" Column="1" TopLine="61"/>
     643        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     644        <Caret Line="70" Column="109" TopLine="60"/>
    641645      </Position2>
    642646      <Position3>
    643         <Filename Value="..\Compiler\UCompiler.pas"/>
    644         <Caret Line="77" Column="1" TopLine="61"/>
     647        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     648        <Caret Line="177" Column="3" TopLine="173"/>
    645649      </Position3>
    646650      <Position4>
    647         <Filename Value="Forms\UMainForm.pas"/>
    648         <Caret Line="96" Column="1" TopLine="90"/>
     651        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     652        <Caret Line="192" Column="1" TopLine="173"/>
    649653      </Position4>
    650654      <Position5>
    651         <Filename Value="Forms\UMainForm.pas"/>
    652         <Caret Line="97" Column="1" TopLine="90"/>
     655        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     656        <Caret Line="193" Column="1" TopLine="173"/>
    653657      </Position5>
    654658      <Position6>
    655659        <Filename Value="Forms\UMainForm.pas"/>
    656         <Caret Line="98" Column="1" TopLine="90"/>
     660        <Caret Line="107" Column="21" TopLine="93"/>
    657661      </Position6>
    658662      <Position7>
    659         <Filename Value="Forms\UMainForm.pas"/>
    660         <Caret Line="100" Column="1" TopLine="90"/>
     663        <Filename Value="..\Compiler\UCompiler.pas"/>
     664        <Caret Line="79" Column="19" TopLine="63"/>
    661665      </Position7>
    662666      <Position8>
    663         <Filename Value="Forms\UMainForm.pas"/>
    664         <Caret Line="102" Column="1" TopLine="90"/>
     667        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     668        <Caret Line="173" Column="1" TopLine="173"/>
    665669      </Position8>
    666670      <Position9>
    667         <Filename Value="Forms\UMainForm.pas"/>
    668         <Caret Line="104" Column="1" TopLine="90"/>
     671        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     672        <Caret Line="171" Column="8" TopLine="166"/>
    669673      </Position9>
    670674      <Position10>
    671         <Filename Value="..\Compiler\UCompiler.pas"/>
    672         <Caret Line="74" Column="1" TopLine="61"/>
     675        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     676        <Caret Line="174" Column="19" TopLine="158"/>
    673677      </Position10>
    674678      <Position11>
    675         <Filename Value="..\Compiler\UCompiler.pas"/>
    676         <Caret Line="76" Column="21" TopLine="61"/>
     679        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     680        <Caret Line="176" Column="7" TopLine="158"/>
    677681      </Position11>
    678682      <Position12>
    679         <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
    680         <Caret Line="29" Column="68" TopLine="10"/>
     683        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     684        <Caret Line="173" Column="1" TopLine="158"/>
    681685      </Position12>
    682686      <Position13>
    683         <Filename Value="Forms\UMainForm.pas"/>
    684         <Caret Line="96" Column="1" TopLine="90"/>
     687        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     688        <Caret Line="174" Column="1" TopLine="158"/>
    685689      </Position13>
    686690      <Position14>
    687         <Filename Value="..\Compiler\UCompiler.pas"/>
    688         <Caret Line="74" Column="1" TopLine="61"/>
     691        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     692        <Caret Line="175" Column="1" TopLine="158"/>
    689693      </Position14>
    690694      <Position15>
    691         <Filename Value="..\Compiler\UCompiler.pas"/>
    692         <Caret Line="76" Column="1" TopLine="61"/>
     695        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     696        <Caret Line="178" Column="1" TopLine="158"/>
    693697      </Position15>
    694698      <Position16>
    695         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    696         <Caret Line="29" Column="24" TopLine="7"/>
     699        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     700        <Caret Line="179" Column="1" TopLine="158"/>
    697701      </Position16>
    698702      <Position17>
    699         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    700         <Caret Line="27" Column="1" TopLine="7"/>
     703        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     704        <Caret Line="173" Column="1" TopLine="158"/>
    701705      </Position17>
    702706      <Position18>
    703         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    704         <Caret Line="29" Column="1" TopLine="8"/>
     707        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     708        <Caret Line="174" Column="1" TopLine="158"/>
    705709      </Position18>
    706710      <Position19>
    707         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    708         <Caret Line="10" Column="26" TopLine="9"/>
     711        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     712        <Caret Line="175" Column="1" TopLine="158"/>
    709713      </Position19>
    710714      <Position20>
    711         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    712         <Caret Line="27" Column="1" TopLine="9"/>
     715        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     716        <Caret Line="178" Column="1" TopLine="158"/>
    713717      </Position20>
    714718      <Position21>
    715         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    716         <Caret Line="29" Column="1" TopLine="9"/>
     719        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     720        <Caret Line="179" Column="1" TopLine="158"/>
    717721      </Position21>
    718722      <Position22>
    719         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    720         <Caret Line="28" Column="33" TopLine="9"/>
     723        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     724        <Caret Line="173" Column="1" TopLine="158"/>
    721725      </Position22>
    722726      <Position23>
    723         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    724         <Caret Line="29" Column="1" TopLine="9"/>
     727        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     728        <Caret Line="174" Column="1" TopLine="158"/>
    725729      </Position23>
    726730      <Position24>
    727         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    728         <Caret Line="20" Column="23" TopLine="9"/>
     731        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     732        <Caret Line="175" Column="1" TopLine="158"/>
    729733      </Position24>
    730734      <Position25>
    731         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    732         <Caret Line="29" Column="1" TopLine="9"/>
     735        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     736        <Caret Line="178" Column="1" TopLine="158"/>
    733737      </Position25>
    734738      <Position26>
    735         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    736         <Caret Line="11" Column="12" TopLine="9"/>
     739        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     740        <Caret Line="179" Column="1" TopLine="158"/>
    737741      </Position26>
    738742      <Position27>
    739         <Filename Value="..\Compiler\Produce\UProducers.pas"/>
    740         <Caret Line="22" Column="49" TopLine="9"/>
     743        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     744        <Caret Line="176" Column="41" TopLine="158"/>
    741745      </Position27>
    742746      <Position28>
    743         <Filename Value="Forms\UMainForm.pas"/>
    744         <Caret Line="96" Column="1" TopLine="90"/>
     747        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     748        <Caret Line="69" Column="28" TopLine="59"/>
    745749      </Position28>
    746750      <Position29>
    747         <Filename Value="Forms\UMainForm.pas"/>
    748         <Caret Line="1" Column="1" TopLine="1"/>
     751        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
     752        <Caret Line="73" Column="61" TopLine="59"/>
    749753      </Position29>
    750754      <Position30>
    751         <Filename Value="Forms\UMainForm.pas"/>
    752         <Caret Line="18" Column="29" TopLine="10"/>
     755        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     756        <Caret Line="29" Column="27" TopLine="15"/>
    753757      </Position30>
    754758    </JumpHistory>
Note: See TracChangeset for help on using the changeset viewer.