Changeset 6


Ignore:
Timestamp:
Nov 5, 2010, 11:31:04 AM (13 years ago)
Author:
george
Message:
  • Added: Typecasting support.
  • Fixed: Function call in expressions.
  • Added: Producer module specify generated file name, extension and placing.
Location:
trunk
Files:
12 edited

Legend:

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

    r5 r6  
    2727      Expressions: TListExpression): Boolean;
    2828    function ParseExpressionFunctionCall(SourceCode: TExpression;
    29       Expressions: TListExpression; var Func: TFunction): Boolean;
     29      Expressions: TListExpression; var Func: TFunctionCall): Boolean;
    3030    function ParseUses(SourceCode: TUsedModuleList; AExported: Boolean): Boolean;
    3131    function ParseModule(ProgramCode: TProgram): TModule;
     
    225225  UseConstant: TConstant;
    226226  UseFunction: TFunction;
     227  FunctionCall: TFunctionCall;
    227228  NewExpression: TExpression;
    228229  Identifier: string;
     
    236237    if Assigned(UseType) then begin
    237238      ReadToken;
     239      if NextToken = '(' then begin
     240        Expect('(');
     241        // Typecasting
     242        NewExpression := TExpression.Create;
     243        NewExpression.CommonBlock := SourceCode.CommonBlock;
     244        NewExpression.NodeType := ntTypecast;
     245        NewExpression.UseType := UseType;
     246        ParseExpression(NewExpression);
     247        Expect(')');
     248      end else
    238249      if (UseType is TTypeRecord) or (UseType is TTypeClass) then begin
    239         // type.variable or type.function
     250        // Type context
    240251        Expect('.');
    241252        Identifier := ReadToken;
    242253        UseVariable := TTypeRecord(UseType).CommonBlock.Variables.Search(Identifier);
    243254        if Assigned(UseVariable) then begin
     255          // Record or class variable
    244256          NewExpression := TExpression.Create;
    245257          NewExpression.CommonBlock := SourceCode.CommonBlock;
     
    250262          UseFunction := TTypeRecord(UseType).CommonBlock.Functions.Search(Identifier);
    251263          if Assigned(UseFunction) then begin
     264            // Record or class functions
     265            ParseExpressionFunctionCall(SourceCode, Expressions, FunctionCall);
    252266            NewExpression := TExpression.Create;
    253267            NewExpression.CommonBlock := SourceCode.CommonBlock;
    254268            NewExpression.NodeType := ntFunction;
    255             NewExpression.FunctionCall := UseFunction;
     269            NewExpression.FunctionCall := FunctionCall;
    256270          end;
    257271        end;
     
    273287    if not Assigned(NewExpression) then begin
    274288      // Function call
    275       ParseExpressionFunctionCall(SourceCode, Expressions, UseFunction);
    276       if Assigned(UseFunction) then begin
     289      ParseExpressionFunctionCall(SourceCode, Expressions, FunctionCall);
     290      if Assigned(FunctionCall) then begin
    277291        NewExpression := TExpression.Create;
    278292        NewExpression.CommonBlock := SourceCode.CommonBlock;
    279293        NewExpression.NodeType := ntFunction;
    280         NewExpression.FunctionCall := UseFunction;
     294        NewExpression.FunctionCall := FunctionCall;
    281295      end;
    282296    end;
     
    319333
    320334function TPascalParser.ParseExpressionFunctionCall(SourceCode: TExpression;
    321   Expressions: TListExpression; var Func: TFunction): Boolean;
     335  Expressions: TListExpression; var Func: TFunctionCall): Boolean;
    322336var
    323337  UseFunction: TFunction;
     338  NewExpression: TExpression;
     339  I: Integer;
    324340begin
    325341  Func := nil;
     
    328344    if Assigned(UseFunction) then begin
    329345      ReadToken;
    330       Func := UseFunction;
     346      Func := TFunctionCall.Create;
     347      Func.CommonBlock := SourceCode.CommonBlock;
     348      Func.FunctionRef := UseFunction;
    331349      if NextToken = '(' then begin
    332350        Expect('(');
    333         while NextToken = ',' do begin
    334           Expect(',');
    335           Expect(')');
    336         end;
     351        for I := 0 to Func.FunctionRef.Parameters.Count - 1 do begin
     352          if I > 0 then Expect(',');
     353          NewExpression := TExpression.Create;
     354          NewExpression.CommonBlock := SourceCode.CommonBlock;
     355          ParseExpression(NewExpression);
     356          Func.ParameterExpression.Add(NewExpression);
     357        end;
     358        Expect(')');
    337359      end;
    338360      Result := True;
  • trunk/Compiler/Produce/UProducer.pas

    r2 r6  
    1010type
    1111  TProducer = class
    12     FileExtension: string;
    1312    procedure AssignToStringList(Target: TStringList); virtual; abstract;
    1413    procedure Produce(Module: TModule); virtual; abstract;
  • trunk/Compiler/Produce/UProducerAsm8051.pas

    r2 r6  
    108108begin
    109109  AssemblyCode := TObjectList.Create;
    110   FileExtension := '.asm';
    111110end;
    112111
     
    155154    ntNone: ;
    156155    ntVariable: if Assigned(Variable) then AddInstruction('', 'GETVAR', Variable.Name, '');
    157     nTFunction: AddInstruction('', 'CALL', FunctionCall.Name, '');
     156    nTFunction: AddInstruction('', 'CALL', FunctionCall.FunctionRef.Name, '');
    158157    ntConstant: AddInstruction('', 'CONST', '', '');
    159158    ntOperator: begin
     
    192191procedure TProducerAsm8051.GenerateModule(Module: TModule);
    193192begin
    194 
     193  Module.TargetFile := Module.Name + '.asm';
    195194end;
    196195
  • trunk/Compiler/Produce/UProducerDynamicC.pas

    r5 r6  
    2727    procedure GenerateProgram(ProgramBlock: TProgram);
    2828    procedure GenerateFunctions(Functions: TFunctionList;
    29       Prefix: string = '');
     29      Prefix: string = ''; HeaderOnly: Boolean = False);
    3030    procedure GenerateBeginEnd(BeginEnd: TBeginEnd);
    3131    procedure GenerateVariableList(VariableList: TVariableList);
     
    3636    procedure GenerateIfThenElse(IfThenElse: TIfThenElse);
    3737    procedure GenerateAssignment(Assignment: TAssignment);
    38     procedure GenerateFunctionCall(FunctionCall: TFunctionCall);
     38    function GenerateFunctionCall(FunctionCall: TFunctionCall): string;
    3939    function GenerateExpression(Expression: TExpression): string;
    4040  public
     
    5555begin
    5656  TextSource := TStringList.Create;
    57   FileExtension := '.c';
    5857  IndentationLength := 2;
    5958end;
     
    119118procedure TProducerDynamicC.GenerateModule(Module: TModule);
    120119begin
    121   EmitLn('#use "platform.lib"');
    122   EmitLn;
    123120  if Module is TModuleProgram then begin
     121    Module.TargetFile := Module.Name + '.c';
     122    EmitLn('#use "platform.lib"');
     123    EmitLn;
    124124    TModuleProgram(Module).Body.Name := 'main';
    125125    GenerateUses(TModuleProgram(Module).UsedModules);
     
    127127  end else
    128128  if Module is TModuleUnit then begin
     129    Module.TargetFile := 'Lib\' + Module.Name + '.lib';
     130    EmitLn('/*** BeginHeader */');
     131    EmitLn('#ifndef ' + UpperCase(Module.Name) + '_H');
     132    EmitLn('#define ' + UpperCase(Module.Name) + '_H');
     133    EmitLn;
     134    EmitLn('#use "platform.lib"');
    129135    GenerateUses(TModuleProgram(Module).UsedModules);
     136    GenerateTypes(TModuleUnit(Module).Body.Types);
     137    EmitLn('/*** EndHeader */');
     138    EmitLn;
     139    EmitLn('/*** BeginHeader */');
     140    GenerateFunctions(TModuleUnit(Module).Body.Functions, '', True);
     141    EmitLn('/*** EndHeader */');
     142    EmitLn;
     143
     144    GenerateFunctions(TModuleUnit(Module).Body.Functions);
     145
    130146    GenerateCommonBlock(TModuleUnit(Module).Body, '');
     147
     148    EmitLn;
     149    EmitLn('/*** BeginHeader */');
     150    EmitLn('#endif');
     151    EmitLn('/*** EndHeader */');
    131152  end;
    132153end;
     
    150171
    151172procedure TProducerDynamicC.GenerateFunctions(Functions: TFunctionList;
    152   Prefix: string = '');
     173  Prefix: string = ''; HeaderOnly: Boolean = False);
    153174var
    154175  I: Integer;
     
    171192    Line := Line + ')';
    172193    EmitLn(Line);
    173     GenerateBeginEnd(Code);
     194    if not HeaderOnly then GenerateBeginEnd(Code);
    174195    EmitLn;
    175196  end;
     
    218239  else if Command is TIfThenElse then GenerateIfThenElse(TIfThenElse(Command))
    219240  else if Command is TAssignment then GenerateAssignment(TAssignment(Command))
    220   else if Command is TFunctionCall then GenerateFunctionCall(TFunctionCall(Command));
     241  else if Command is TFunctionCall then EmitLn(GenerateFunctionCall(TFunctionCall(Command)) + ';');
    221242end;
    222243
     
    254275end;
    255276
    256 procedure TProducerDynamicC.GenerateFunctionCall(FunctionCall: TFunctionCall);
     277function TProducerDynamicC.GenerateFunctionCall(FunctionCall: TFunctionCall): string;
    257278var
    258279  Line: string;
     
    267288      end;
    268289    end;
    269     Line := Line + ');';
    270     EmitLn(Line);
    271   end;
     290    Line := Line + ')';
     291  end;
     292  Result := Line;
    272293end;
    273294
     
    285306      end;
    286307      ntVariable: Result := Expression.Variable.Name;
    287       ntFunction: Result := Expression.FunctionCall.Name;
     308      ntFunction: Result := GenerateFunctionCall(Expression.FunctionCall);
    288309      ntOperator: begin
    289310        Result := GenerateExpression(TExpression(Expression.SubItems.First))
     
    308329begin
    309330  with CommonBlock do begin
    310     GenerateTypes(Types);
    311     GenerateFunctions(Functions);
    312331    EmitLn('void ' + Name + '()');
    313332    GenerateBeginEnd(Code);
  • trunk/Compiler/Produce/UProducerGCCC.pas

    r2 r6  
    5555begin
    5656  TextSource := TStringList.Create;
    57   FileExtension := '.c';
    5857  IndentationLength := 2;
    5958end;
     
    119118procedure TProducerGCCC.GenerateModule(Module: TModule);
    120119begin
     120  Module.TargetFile := Module.Name + '.c';
    121121  EmitLn('#include "platform.h"');
    122122  EmitLn;
     
    281281    end;
    282282    ntVariable: Result := Expression.Variable.Name;
    283     ntFunction: Result := Expression.FunctionCall.Name;
     283    ntFunction: Result := Expression.FunctionCall.FunctionRef.Name;
    284284    ntOperator: begin
    285285      Result := GenerateExpression(TExpression(Expression.SubItems.First))
  • trunk/Compiler/Produce/UProducerPascal.pas

    r5 r6  
    5151begin
    5252  IndentationLength := 2;
    53   FileExtension := '.pas';
    5453  TextSource := TStringList.Create;
    5554end;
     
    8887procedure TProducerPascal.GenerateModule(Module: TModule);
    8988begin
     89  Module.TargetFile := Module.Name + '.pas';
    9090  if Module is TModuleProgram then
    9191  with TModuleProgram(Module) do begin
     
    320320      end;
    321321      ntVariable: Result := Expression.Variable.Name;
    322       ntFunction: Result := Expression.FunctionCall.Name;
     322      ntFunction: Result := Expression.FunctionCall.FunctionRef.Name;
    323323      ntOperator: begin
    324324        Result := GenerateExpression(TExpression(Expression.SubItems.First))
  • trunk/Compiler/Produce/UProducerTreeView.pas

    r2 r6  
    152152    ntConstant: NewNode := TreeView.Items.AddChild(Node, Expression.Value);
    153153    ntVariable: NewNode := TreeView.Items.AddChild(Node, Expression.Variable.Name);
    154     ntFunction: NewNode := TreeView.Items.AddChild(Node, Expression.FunctionCall.Name);
     154    ntFunction: NewNode := TreeView.Items.AddChild(Node, Expression.FunctionCall.FunctionRef.Name);
    155155    ntOperator: begin
    156156      NewNode := TreeView.Items.AddChild(Node, Expression.OperatorName);
  • trunk/Compiler/UCompiler.pas

    r2 r6  
    7373  ProducedCode: TStringList;
    7474  I: Integer;
     75  TargetFileName: string;
    7576begin
    7677  try
     
    8182    //ShowMessage(IntToHex(Integer(Addr(Parser.OnGetSource)), 8));
    8283    Parser.ParseModule(ProgramCode);
    83     for I := 0 to ProgramCode.Modules.Count - 1 do begin
    84       Producer.Produce(TModule(ProgramCode.Modules[I]));
     84    with ProgramCode do
     85    for I := 0 to Modules.Count - 1 do begin
     86      Producer.Produce(TModule(Modules[I]));
    8587      Producer.AssignToStringList(ProducedCode);
    86       ForceDirectories(TargetFolder + DirectorySeparator +
    87         CompiledFolder + DirectorySeparator + Producer.ClassName);
    88       ProducedCode.SaveToFile(TargetFolder + DirectorySeparator +
     88      TargetFileName := TargetFolder + DirectorySeparator +
    8989        CompiledFolder + DirectorySeparator + Producer.ClassName +
    90         DirectorySeparator + TModule(ProgramCode.Modules[I]).Name + Producer.FileExtension);
     90        DirectorySeparator + TModule(Modules[I]).TargetFile;
     91      ForceDirectories(ExtractFileDir(TargetFileName));
     92      ProducedCode.SaveToFile(TargetFileName);
    9193    end;
    9294  finally
  • trunk/Compiler/USourceCode.pas

    r5 r6  
    1515
    1616  TNodeType = (ntNone, ntVariable, ntFunction, ntConstant, ntOperator,
    17     ntValue);
     17    ntValue, ntTypecast);
    1818
    1919  TTypeVisibility = (tvPublic, tvPublished, tvPrivate, tvProtected);
     
    329329    Variable: TVariable;
    330330    Constant: TConstant;
    331     FunctionCall: TFunction;
     331    UseType: TType;
     332    FunctionCall: TFunctionCall;
    332333    Value: TValue;
    333334    OperatorName: string;
     
    396397    ParentProgram: TProgram;
    397398    Name: string;
     399    TargetFile: string;
    398400    UsedModules: TUsedModuleList;
    399401    Body: TCommonBlock;
  • trunk/Forms/UProjectManager.pas

    r2 r6  
    3434procedure TProjectManager.TreeViewProjectChange(Sender: TObject; Node: TTreeNode
    3535  );
    36 var
    37   FileName: string;
    3836begin
    3937  with MainForm, CodeForm do
     
    4139    if TProjectNode(Node.Data) is TProjectFile then begin
    4240      SynEditSource.Lines.Assign(TProjectFile(Node.Data).Source);
    43       FileName := Compiler.TargetFolder + DirectorySeparator +
    44         Compiler.CompiledFolder + DirectorySeparator +
    45         Compiler.Producer.ClassName + DirectorySeparator + ExtractFileNameOnly(TProjectFile(Node.Data).Name) + Compiler.Producer.FileExtension;
    46         if FileExists(FileName) then
     41(*        if FileExists(TProjectFile(Node.Data).ProducedFileName) then
    4742        CompiledForm.SynEdit1.Lines.LoadFromFile(FileName) else
    4843          CompiledForm.SynEdit1.Lines.Clear;
     
    5550        if ComboBoxTargetSelection.ItemIndex = 3 then
    5651          CompiledForm.SynEdit1.Highlighter := CompiledForm.SynXMLSyn1;
    57 
     52  *)
    5853      (*// Load code tree view
    5954      Compiler.Producer.Free;
  • trunk/Transpascal.lpi

    r5 r6  
    5353      </Item5>
    5454    </RequiredPackages>
    55     <Units Count="78">
     55    <Units Count="79">
    5656      <Unit0>
    5757        <Filename Value="Transpascal.lpr"/>
     
    181181        <IsPartOfProject Value="True"/>
    182182        <UnitName Value="UProject"/>
    183         <EditorIndex Value="8"/>
    184         <WindowIndex Value="0"/>
    185         <TopLine Value="9"/>
    186         <CursorPos X="25" Y="17"/>
     183        <EditorIndex Value="14"/>
     184        <WindowIndex Value="0"/>
     185        <TopLine Value="2"/>
     186        <CursorPos X="30" Y="18"/>
    187187        <UsageCount Value="223"/>
    188188        <Loaded Value="True"/>
     
    202202        <EditorIndex Value="3"/>
    203203        <WindowIndex Value="0"/>
    204         <TopLine Value="120"/>
    205         <CursorPos X="1" Y="133"/>
     204        <TopLine Value="70"/>
     205        <CursorPos X="53" Y="92"/>
    206206        <UsageCount Value="102"/>
    207207        <Loaded Value="True"/>
     
    212212        <EditorIndex Value="0"/>
    213213        <WindowIndex Value="0"/>
    214         <TopLine Value="814"/>
    215         <CursorPos X="26" Y="825"/>
     214        <TopLine Value="58"/>
     215        <CursorPos X="26" Y="73"/>
    216216        <UsageCount Value="103"/>
    217217        <Loaded Value="True"/>
     
    233233        <ResourceBaseClass Value="Form"/>
    234234        <UnitName Value="UProjectManager"/>
    235         <WindowIndex Value="0"/>
    236         <TopLine Value="1"/>
    237         <CursorPos X="29" Y="44"/>
     235        <EditorIndex Value="7"/>
     236        <WindowIndex Value="0"/>
     237        <TopLine Value="44"/>
     238        <CursorPos X="39" Y="57"/>
    238239        <UsageCount Value="207"/>
     240        <Loaded Value="True"/>
    239241        <DefaultSyntaxHighlighter Value="Delphi"/>
    240242      </Unit19>
     
    291293        <Filename Value="Compiler\Produce\UProducerTreeView.pas"/>
    292294        <UnitName Value="UProducerTreeView"/>
     295        <EditorIndex Value="12"/>
    293296        <WindowIndex Value="0"/>
    294297        <TopLine Value="141"/>
    295         <CursorPos X="81" Y="154"/>
     298        <CursorPos X="93" Y="154"/>
    296299        <UsageCount Value="14"/>
     300        <Loaded Value="True"/>
    297301      </Unit24>
    298302      <Unit25>
     
    344348        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
    345349        <UnitName Value="UProducerDynamicC"/>
    346         <EditorIndex Value="7"/>
    347         <WindowIndex Value="0"/>
    348         <TopLine Value="274"/>
    349         <CursorPos X="13" Y="285"/>
     350        <IsVisibleTab Value="True"/>
     351        <EditorIndex Value="11"/>
     352        <WindowIndex Value="0"/>
     353        <TopLine Value="295"/>
     354        <CursorPos X="49" Y="308"/>
    350355        <UsageCount Value="113"/>
    351356        <Loaded Value="True"/>
     
    354359        <Filename Value="Compiler\Produce\UProducerAsm8051.pas"/>
    355360        <UnitName Value="UProducerAsm8051"/>
    356         <WindowIndex Value="0"/>
    357         <TopLine Value="1"/>
    358         <CursorPos X="56" Y="157"/>
    359         <UsageCount Value="10"/>
     361        <EditorIndex Value="13"/>
     362        <WindowIndex Value="0"/>
     363        <TopLine Value="143"/>
     364        <CursorPos X="68" Y="156"/>
     365        <UsageCount Value="11"/>
     366        <Loaded Value="True"/>
    360367      </Unit31>
    361368      <Unit32>
    362369        <Filename Value="Compiler\Produce\UProducerPascal.pas"/>
    363370        <UnitName Value="UProducerPascal"/>
    364         <IsVisibleTab Value="True"/>
    365         <EditorIndex Value="5"/>
     371        <EditorIndex Value="9"/>
    366372        <WindowIndex Value="0"/>
    367373        <TopLine Value="309"/>
    368         <CursorPos X="50" Y="318"/>
    369         <UsageCount Value="42"/>
     374        <CursorPos X="64" Y="322"/>
     375        <UsageCount Value="44"/>
    370376        <Loaded Value="True"/>
    371377      </Unit32>
     
    373379        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    374380        <UnitName Value="UPascalParser"/>
    375         <EditorIndex Value="4"/>
    376         <WindowIndex Value="0"/>
    377         <TopLine Value="281"/>
    378         <CursorPos X="3" Y="287"/>
     381        <EditorIndex Value="8"/>
     382        <WindowIndex Value="0"/>
     383        <TopLine Value="269"/>
     384        <CursorPos X="26" Y="289"/>
    379385        <UsageCount Value="110"/>
    380386        <Loaded Value="True"/>
     
    419425        <TopLine Value="1"/>
    420426        <CursorPos X="28" Y="22"/>
    421         <UsageCount Value="193"/>
     427        <UsageCount Value="196"/>
    422428        <DefaultSyntaxHighlighter Value="Delphi"/>
    423429      </Unit38>
     
    432438        <Filename Value="Compiler\Produce\UProducerGCCC.pas"/>
    433439        <UnitName Value="UProducerGCCC"/>
    434         <WindowIndex Value="0"/>
    435         <TopLine Value="270"/>
    436         <CursorPos X="30" Y="278"/>
    437         <UsageCount Value="40"/>
     440        <EditorIndex Value="6"/>
     441        <WindowIndex Value="0"/>
     442        <TopLine Value="26"/>
     443        <CursorPos X="14" Y="39"/>
     444        <UsageCount Value="41"/>
     445        <Loaded Value="True"/>
    438446      </Unit40>
    439447      <Unit41>
     
    442450        <TopLine Value="1"/>
    443451        <CursorPos X="1" Y="1"/>
    444         <UsageCount Value="68"/>
     452        <UsageCount Value="70"/>
    445453        <Loaded Value="True"/>
    446454        <DefaultSyntaxHighlighter Value="LFM"/>
     
    720728      <Unit75>
    721729        <Filename Value="E:\Projekty\PascalClassLibrary\Generics\TemplateGenerics\Generic\GenericList.inc"/>
    722         <WindowIndex Value="0"/>
    723         <TopLine Value="216"/>
    724         <CursorPos X="1" Y="229"/>
    725         <UsageCount Value="11"/>
     730        <EditorIndex Value="5"/>
     731        <WindowIndex Value="0"/>
     732        <TopLine Value="71"/>
     733        <CursorPos X="1" Y="85"/>
     734        <UsageCount Value="12"/>
     735        <Loaded Value="True"/>
    726736      </Unit75>
    727737      <Unit76>
     
    734744      <Unit77>
    735745        <Filename Value="E:\Programy\Lazarus\fpc\2.4.3\source\rtl\objpas\sysutils\sysstrh.inc"/>
    736         <EditorIndex Value="6"/>
     746        <EditorIndex Value="10"/>
    737747        <WindowIndex Value="0"/>
    738748        <TopLine Value="107"/>
    739749        <CursorPos X="10" Y="120"/>
    740         <UsageCount Value="10"/>
     750        <UsageCount Value="12"/>
    741751        <Loaded Value="True"/>
    742752      </Unit77>
     753      <Unit78>
     754        <Filename Value="Compiler\Produce\UProducer.pas"/>
     755        <UnitName Value="UProducer"/>
     756        <EditorIndex Value="4"/>
     757        <WindowIndex Value="0"/>
     758        <TopLine Value="1"/>
     759        <CursorPos X="1" Y="12"/>
     760        <UsageCount Value="11"/>
     761        <Loaded Value="True"/>
     762      </Unit78>
    743763    </Units>
    744     <JumpHistory Count="30" HistoryIndex="28">
     764    <JumpHistory Count="29" HistoryIndex="28">
    745765      <Position1>
    746         <Filename Value="Compiler\Analyze\UParser.pas"/>
    747         <Caret Line="381" Column="1" TopLine="370"/>
     766        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     767        <Caret Line="149" Column="1" TopLine="136"/>
    748768      </Position1>
    749769      <Position2>
    750         <Filename Value="Compiler\Analyze\UParser.pas"/>
    751         <Caret Line="84" Column="1" TopLine="71"/>
     770        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     771        <Caret Line="150" Column="1" TopLine="136"/>
    752772      </Position2>
    753773      <Position3>
    754         <Filename Value="Compiler\Analyze\UParser.pas"/>
    755         <Caret Line="85" Column="1" TopLine="71"/>
     774        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     775        <Caret Line="151" Column="1" TopLine="136"/>
    756776      </Position3>
    757777      <Position4>
    758         <Filename Value="Compiler\Analyze\UParser.pas"/>
    759         <Caret Line="86" Column="1" TopLine="71"/>
     778        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     779        <Caret Line="152" Column="1" TopLine="136"/>
    760780      </Position4>
    761781      <Position5>
    762         <Filename Value="Compiler\Analyze\UParser.pas"/>
    763         <Caret Line="88" Column="1" TopLine="71"/>
     782        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     783        <Caret Line="231" Column="1" TopLine="218"/>
    764784      </Position5>
    765785      <Position6>
    766         <Filename Value="Compiler\Analyze\UParser.pas"/>
    767         <Caret Line="89" Column="1" TopLine="71"/>
     786        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     787        <Caret Line="232" Column="1" TopLine="218"/>
    768788      </Position6>
    769789      <Position7>
    770         <Filename Value="Compiler\Analyze\UParser.pas"/>
    771         <Caret Line="91" Column="1" TopLine="71"/>
     790        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     791        <Caret Line="236" Column="1" TopLine="218"/>
    772792      </Position7>
    773793      <Position8>
    774794        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    775         <Caret Line="363" Column="1" TopLine="347"/>
     795        <Caret Line="237" Column="1" TopLine="218"/>
    776796      </Position8>
    777797      <Position9>
    778798        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    779         <Caret Line="360" Column="1" TopLine="347"/>
     799        <Caret Line="276" Column="1" TopLine="263"/>
    780800      </Position9>
    781801      <Position10>
    782         <Filename Value="Compiler\Analyze\UParser.pas"/>
    783         <Caret Line="375" Column="1" TopLine="362"/>
     802        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     803        <Caret Line="278" Column="1" TopLine="263"/>
    784804      </Position10>
    785805      <Position11>
    786         <Filename Value="Compiler\Analyze\UParser.pas"/>
    787         <Caret Line="376" Column="1" TopLine="362"/>
     806        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     807        <Caret Line="279" Column="1" TopLine="263"/>
    788808      </Position11>
    789809      <Position12>
    790         <Filename Value="Compiler\Analyze\UParser.pas"/>
    791         <Caret Line="377" Column="1" TopLine="362"/>
     810        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     811        <Caret Line="287" Column="1" TopLine="269"/>
    792812      </Position12>
    793813      <Position13>
    794         <Filename Value="Compiler\Analyze\UParser.pas"/>
    795         <Caret Line="378" Column="1" TopLine="362"/>
     814        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     815        <Caret Line="289" Column="26" TopLine="269"/>
    796816      </Position13>
    797817      <Position14>
    798         <Filename Value="Compiler\Analyze\UParser.pas"/>
    799         <Caret Line="380" Column="1" TopLine="362"/>
     818        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     819        <Caret Line="305" Column="37" TopLine="287"/>
    800820      </Position14>
    801821      <Position15>
    802         <Filename Value="Compiler\Analyze\UParser.pas"/>
    803         <Caret Line="381" Column="1" TopLine="362"/>
     822        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     823        <Caret Line="308" Column="33" TopLine="295"/>
    804824      </Position15>
    805825      <Position16>
    806         <Filename Value="Compiler\Analyze\UParser.pas"/>
    807         <Caret Line="84" Column="1" TopLine="71"/>
     826        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     827        <Caret Line="38" Column="70" TopLine="25"/>
    808828      </Position16>
    809829      <Position17>
    810         <Filename Value="Compiler\Analyze\UParser.pas"/>
    811         <Caret Line="85" Column="1" TopLine="71"/>
     830        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     831        <Caret Line="286" Column="25" TopLine="277"/>
    812832      </Position17>
    813833      <Position18>
    814         <Filename Value="Compiler\Analyze\UParser.pas"/>
    815         <Caret Line="86" Column="1" TopLine="71"/>
     834        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     835        <Caret Line="281" Column="1" TopLine="276"/>
    816836      </Position18>
    817837      <Position19>
    818         <Filename Value="Compiler\Analyze\UParser.pas"/>
    819         <Caret Line="88" Column="1" TopLine="71"/>
     838        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     839        <Caret Line="283" Column="1" TopLine="276"/>
    820840      </Position19>
    821841      <Position20>
    822         <Filename Value="Compiler\UCompiler.pas"/>
    823         <Caret Line="133" Column="1" TopLine="120"/>
     842        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     843        <Caret Line="284" Column="1" TopLine="276"/>
    824844      </Position20>
    825845      <Position21>
    826         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    827         <Caret Line="45" Column="14" TopLine="32"/>
     846        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     847        <Caret Line="290" Column="1" TopLine="276"/>
    828848      </Position21>
    829849      <Position22>
    830         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    831         <Caret Line="220" Column="53" TopLine="211"/>
     850        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     851        <Caret Line="292" Column="1" TopLine="276"/>
    832852      </Position22>
    833853      <Position23>
    834         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    835         <Caret Line="272" Column="12" TopLine="263"/>
     854        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     855        <Caret Line="293" Column="1" TopLine="276"/>
    836856      </Position23>
    837857      <Position24>
    838         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    839         <Caret Line="266" Column="1" TopLine="235"/>
     858        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     859        <Caret Line="316" Column="1" TopLine="303"/>
    840860      </Position24>
    841861      <Position25>
    842         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    843         <Caret Line="146" Column="27" TopLine="133"/>
     862        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     863        <Caret Line="281" Column="1" TopLine="268"/>
    844864      </Position25>
    845865      <Position26>
    846         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    847         <Caret Line="125" Column="14" TopLine="112"/>
     866        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     867        <Caret Line="8" Column="69" TopLine="6"/>
    848868      </Position26>
    849869      <Position27>
    850         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    851         <Caret Line="137" Column="58" TopLine="112"/>
     870        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     871        <Caret Line="38" Column="34" TopLine="25"/>
    852872      </Position27>
    853873      <Position28>
    854         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    855         <Caret Line="232" Column="17" TopLine="226"/>
     874        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     875        <Caret Line="241" Column="68" TopLine="228"/>
    856876      </Position28>
    857877      <Position29>
    858         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    859         <Caret Line="300" Column="15" TopLine="278"/>
     878        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
     879        <Caret Line="277" Column="48" TopLine="264"/>
    860880      </Position29>
    861       <Position30>
    862         <Filename Value="E:\Programy\Lazarus\fpc\2.4.3\source\rtl\objpas\sysutils\sysstrh.inc"/>
    863         <Caret Line="120" Column="10" TopLine="107"/>
    864       </Position30>
    865881    </JumpHistory>
    866882  </ProjectOptions>
     
    904920  </CompilerOptions>
    905921  <Debugging>
     922    <BreakPoints Count="1">
     923      <Item1>
     924        <Source Value="Compiler\Produce\UProducerDynamicC.pas"/>
     925        <Line Value="281"/>
     926      </Item1>
     927    </BreakPoints>
    906928    <Exceptions Count="3">
    907929      <Item1>
  • trunk/UProject.pas

    r2 r6  
    1616    Parent: TProjectNode;
    1717    Name: string;
     18    ProducedFileName: string;
    1819    procedure SaveToXMLNode(Node: TDOMNode); virtual;
    1920    procedure LoadFromXMLNode(Node: TDOMNode); virtual;
Note: See TracChangeset for help on using the changeset viewer.