Changeset 80


Ignore:
Timestamp:
Oct 22, 2010, 3:39:58 PM (14 years ago)
Author:
george
Message:
  • Modified: Better parse righ assignment side with expression.
Location:
branches/Transpascal
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/Transpascal/Compiler/Analyze/UParser.pas

    r78 r80  
    146146function TBaseParser.IsString(Text: string): Boolean;
    147147begin
    148 
     148  raise Exception.Create('Not implemented');
    149149end;
    150150
     
    267267      if FParserState = psBlockComment1First then begin
    268268        if CurrentChar = '$' then FParserState := psCompilerDirective
    269         else FParserSTate := psBlockComment1;
     269          else FParserSTate := psBlockComment1;
    270270      end else
    271271      if FParserState = psBlockComment1 then begin
     
    276276      if FParserState = psCompilerDirective then begin
    277277        if (CurrentChar = '}') then begin
    278           FParserState := psNone;
     278          FParserState := psNoneShift;
    279279          FNextTokenType := ttCompilerDirective;
    280           Break;
    281         end;
     280          FNextToken := '';
     281          //Break;
     282        end else FNextToken := FNextToken + CurrentChar;
    282283      end else
    283284      if FParserState = psBlockComment2 then begin
  • branches/Transpascal/Compiler/Analyze/UPascalParser.pas

    r79 r80  
    2020    procedure ParseWhileDo(SourceCode: TWhileDo);
    2121    procedure ParseExpression(SourceCode: TExpression);
     22    function ParseRightValue(SourceCode: TExpression): TObject;
     23    function ParseFunctionCall(SourceCode: TExpression): TObject;
    2224    procedure ParseUses(SourceCode: TUsedModuleList; AExported: Boolean);
    2325    function ParseModule(ProgramCode: TProgram): TModule;
     
    3234    procedure ParseBeginEnd(SourceCode: TBeginEnd);
    3335    function ParseFunctionList(SourceCode: TFunctionList; Exported: Boolean = False): Boolean;
    34     procedure ParseFunctionParameters(SourceCode: TFunction);
     36    procedure ParseFunctionParameters(SourceCode: TFunction; ValidateParams: Boolean = False);
    3537    procedure ParseIfThenElse(SourceCode: TIfThenElse);
    3638    procedure ParseForToDo(SourceCode: TForToDo);
     
    7072  SUnknownModuleType = 'Unknown module name "%s".';
    7173  SInvalidConstruction = 'Invalid construction.';
     74  SInvalidAssignmentValue = 'Invalid assignment "%s".';
     75  SParamDiffers = 'Declaration of parametr "%s" differs.';
    7276
    7377implementation
     
    125129  NewMethod: TFunction;
    126130  Constant: TConstant;
     131  UseType: TType;
    127132  //  Brackets: Integer;
    128133  Expressions: TExpressionList;
    129134  I: integer;
    130135  II: integer;
     136  RightValue: TObject;
    131137begin
    132138  Expressions := TExpressionList.Create;
     
    136142      (((NextToken = ')') or (NextToken = ']'))) and not (NextTokenType = ttEndOfFile) do begin
    137143      IdentifierType := NextTokenType;
    138       Identifier := ReadToken;
    139       if Identifier = '(' then begin
     144      if NextToken = '(' then begin
     145        Expect('(');
    140146        // Subexpression
    141147        with TExpression(Expressions.Last) do begin
     
    151157        Expect(')');
    152158      end else
    153       if IsOperator(Identifier) then begin
     159      if IsOperator(NextToken) then begin
    154160        // Operator
    155         TExpression(Expressions.Last).OperatorName := Identifier;
     161        TExpression(Expressions.Last).OperatorName := ReadToken;
    156162        TExpression(Expressions.Last).NodeType := ntOperator;
    157       end else
    158       if IsIdentificator(Identifier) then begin
    159         // Reference to identificator
    160         NewVariable := CommonBlock.Variables.Search(Identifier);
    161         if Assigned(NewVariable) then begin
    162           // Referenced variable
     163      end else begin
     164        RightValue := ParseRightValue(SourceCode);
     165        if Assigned(RightValue) then begin
    163166          with TExpression(Expressions.Last) do begin
    164167            SubItems[1] := TExpression.Create;
    165168            TExpression(SubItems[1]).CommonBlock := SourceCode.CommonBlock;
    166             TExpression(SubItems[1]).NodeType := ntVariable;
    167             TExpression(SubItems[1]).Variable := NewVariable;
     169            if RightValue is TVariable then begin
     170              TExpression(SubItems[1]).NodeType := ntVariable;
     171              TExpression(SubItems[1]).Variable := TVariable(RightValue);
     172            end;
     173            if RightValue is TConstant then begin
     174              TExpression(SubItems[1]).NodeType := ntConstant;
     175              TExpression(SubItems[1]).Constant := TConstant(RightValue);
     176            end;
     177            if RightValue is TFunctionCall then begin
     178              TExpression(SubItems[1]).NodeType := ntFunction;
     179              TExpression(SubItems[1]).FunctionCall := TFunction(RightValue);
     180            end;
    168181          end;
    169182          with TExpression(Expressions.Items[Expressions.Add(TExpression.Create)]) do
     
    173186          end;
    174187        end else begin
    175           NewMethod := CommonBlock.Functions.Search(Identifier);
    176           if Assigned(NewMethod) then begin
    177             // Referenced method
    178             with TExpression(Expressions.Last) do begin
    179               SubItems[1] := TExpression.Create;
    180               TExpression(SubItems[1]).CommonBlock := SourceCode.CommonBlock;
    181               if NextToken = '(' then               // Method with parameters
    182                 with TExpression(SubItems[1]) do begin
    183                   Expect('(');
    184                   NewExpression := TExpression.Create;
    185                   NewExpression.CommonBlock := CommonBlock;
    186                   ParseExpression(NewExpression);
    187                   SubItems.Add(NewExpression);
    188                   while NextToken = ',' do begin
    189                     Expect(',');
    190                     NewExpression := TExpression.Create;
    191                     NewExpression.CommonBlock := CommonBlock;
    192                     ParseExpression(NewExpression);
    193                     SubItems.Add(NewExpression);
    194                   end;
    195                   Expect(')');
    196                 end;
    197               TExpression(SubItems[1]).NodeType := ntFunction;
    198               TExpression(SubItems[1]).Method := NewMethod;
    199             end;
    200             with TExpression(Expressions.Items[Expressions.Add(TExpression.Create)]) do
    201             begin
    202               CommonBlock := SourceCode.CommonBlock;
    203               SubItems[0] :=
    204                 TExpression(Expressions[Expressions.Count - 2]).SubItems[1];
    205             end;
    206           end else begin
    207             Constant := CommonBlock.Constants.Search(Identifier);
    208             if Assigned(Constant) then begin
    209               // Referenced constant
    210               with TExpression(Expressions.Last) do begin
    211                 SubItems[1] := TExpression.Create;
    212                 TExpression(SubItems[1]).CommonBlock := SourceCode.CommonBlock;
    213                 TExpression(SubItems[1]).NodeType := ntConstant;
    214                 TExpression(SubItems[1]).Value := Constant.Value;
    215               end;
    216               with TExpression(Expressions.Items[Expressions.Add(
    217                   TExpression.Create)]) do begin
    218                 CommonBlock := SourceCode.CommonBlock;
    219                 SubItems[0] :=
    220                   TExpression(Expressions[Expressions.Count - 2]).SubItems[1];
    221               end;
    222             end else begin
    223               ErrorMessage(SUnknownIdentifier, [Identifier], -1);
    224             end;
    225           end;
    226         end;
    227       end else begin
    228         // Constant value
    229         with TExpression(Expressions.Last) do begin
    230           SubItems[1] := TExpression.Create;
    231           TExpression(SubItems[1]).CommonBlock := SourceCode.CommonBlock;
    232           TExpression(SubItems[1]).NodeType := ntConstant;
    233 
    234           if IdentifierType = ttConstantString then begin
    235             TExpression(SubItems[1]).Value := Identifier;
    236             //SetLength(TExpression(SubItems[1]).Value, Length(Identifier));
    237             //for I := 1 to Length(Identifier) do
    238             //  TExpression(SubItems[1]).Value[I - 1] := Byte(Identifier[I]);
    239           end else begin
    240             TExpression(SubItems[1]).Value := Identifier;
    241           end;
    242         end;
    243         //ShowMessage(IntToStr(Expressions.Count));
    244         with TExpression(Expressions.Items[Expressions.Add(TExpression.Create)]) do
    245         begin
    246           CommonBlock := SourceCode.CommonBlock;
    247           SubItems[0] := TExpression(Expressions[Expressions.Count - 2]).SubItems[1];
     188          ErrorMessage(SInvalidAssignmentValue, [NextToken]);
     189          ReadToken;
    248190        end;
    249191      end;
     
    271213      TExpression(Expressions[1]).SubItems[0] := nil;
    272214    Expressions.Free;
     215  end;
     216end;
     217
     218function TPascalParser.ParseRightValue(SourceCode: TExpression): TObject;
     219var
     220  UseType: TType;
     221  UseVariable: TVariable;
     222  UseConstant: TConstant;
     223  UseFunction: TFunction;
     224  Identifier: string;
     225begin
     226  Result := nil;
     227  with SourceCode do
     228  if IsIdentificator(NextToken) then begin
     229    // Start with type
     230    UseType := CommonBlock.Types.Search(NextToken);
     231    if Assigned(UseType) then begin
     232      ReadToken;
     233      if (UseType is TTypeRecord) or (UseType is TTypeClass) then begin
     234        Expect('.');
     235        Identifier := ReadToken;
     236        UseVariable := TTypeRecord(UseType).CommonBlock.Variables.Search(Identifier);
     237        if Assigned(UseVariable) then begin
     238          Result := UseVariable;
     239        end;
     240        if not Assigned(Result) then begin
     241          UseFunction := TTypeRecord(UseType).CommonBlock.Functions.Search(Identifier);
     242          if Assigned(UseFunction) then begin
     243            Result := UseFunction;
     244          end;
     245        end;
     246        if not Assigned(Result) then
     247          ErrorMessage(SUndefinedVariable, [Identifier]);
     248      end else ErrorMessage(SIllegalExpression, [Identifier]);
     249    end;
     250    if not Assigned(Result) then begin
     251      UseVariable := CommonBlock.Variables.Search(Identifier);
     252      if Assigned(UseVariable) then begin
     253        // Referenced variable
     254        ReadToken;
     255        Result := UseVariable;
     256      end;
     257    end;
     258    if not Assigned(Result) then begin
     259      Result := ParseFunctionCall(SourceCode);
     260    end;
     261    if not Assigned(Result) then begin
     262      UseConstant := CommonBlock.Constants.Search(NextToken);
     263      if Assigned(UseConstant) then begin
     264        ReadToken;
     265        Result := UseConstant;
     266      end;
     267    end;
     268    if not Assigned(Result) then begin
     269      // Constant value
     270      Result := TConstant.Create;
     271      TConstant(Result).Value := ReadToken;
     272    end;
     273    if not Assigned(Result) then begin
     274      ErrorMessage(SUnknownIdentifier, [ReadToken]);
     275    end;
     276  end else Result := nil;
     277end;
     278
     279function TPascalParser.ParseFunctionCall(SourceCode: TExpression): TObject;
     280var
     281  UseFunction: TFunction;
     282begin
     283  Result := nil;
     284  with SourceCode do begin
     285    UseFunction := CommonBlock.Functions.Search(NextToken);
     286    if Assigned(UseFunction) then begin
     287      ReadToken;
     288      Result := UseFunction;
     289      if NextToken = '(' then begin
     290        Expect('(');
     291        while NextToken = ',' do begin
     292          Expect(',');
     293          Expect(')');
     294        end;
     295      end;
     296    end;
    273297  end;
    274298end;
     
    505529  UseFunction: TFunction;
    506530  FunctionType: TFunctionType;
     531  ValidParams: Boolean;
    507532begin
    508533  if (NextToken = 'procedure') or (NextToken = 'function') then begin
     
    531556    (UseType is TTypeClass)) then begin
    532557      Expect('.');
     558      ValidParams := True;
    533559      UseName := ReadToken;
    534560      if UseType is TTypeRecord then begin
     
    546572      UseFunction.FunctionType := FunctionType;
    547573      Add(UseFunction);
     574      ValidParams := False;
    548575    end;
    549576    with UseFunction do begin
    550577      // Parse parameters
    551578      if NextToken = '(' then
    552         ParseFunctionParameters(UseFunction);
     579        ParseFunctionParameters(UseFunction, ValidParams);
    553580
    554581      // Parse function result type
     
    587614end;
    588615
    589 procedure TPascalParser.ParseFunctionParameters(SourceCode: TFunction);
     616procedure TPascalParser.ParseFunctionParameters(SourceCode: TFunction;
     617  ValidateParams: Boolean = False);
    590618var
    591619  Identifiers: TStringList;
     
    600628    Identifiers := TStringList.Create;
    601629        Expect('(');
    602         while NextToken <> ')' do begin
     630        while (NextToken <> ')') and (NextTokenType <> ttEndOfFile) do begin
    603631          // while IsIdentificator(NextCode) do begin
    604632          with TParameterList(Parameters) do begin
     
    616644                end;
    617645              end else
    618                 ErrorMessage(SRedefineIdentifier, [VariableName], -1);
     646                if not ValidateParams then
     647                  ErrorMessage(SRedefineIdentifier, [VariableName], -1);
    619648              Expect(':');
    620649              TypeName := ReadToken;
     
    623652                ErrorMessage(SUndefinedType, [TypeName], -1)
    624653              else
    625                 for I := 0 to Identifiers.Count - 1 do
    626                   with TParameter(Items[Add(TParameter.Create)]) do
    627                   begin
    628                     Name := Identifiers[I];
    629                     ValueType := UseType;
     654                if ValidateParams then begin
     655                  for I := 0 to Identifiers.Count - 1 do begin
     656                    UseVariable := Parameters.Search(Identifiers[I]);
     657                    if Assigned(UseVariable) then
     658                      if UseVariable.ValueType <> UseType then ;
     659                        ErrorMessage(SParamDiffers, [Identifiers[I]]);
    630660                  end;
     661                end else begin
     662                  for I := 0 to Identifiers.Count - 1 do
     663                    with TParameter(Items[Add(TParameter.Create)]) do
     664                    begin
     665                      Name := Identifiers[I];
     666                     ValueType := UseType;
     667                    end;
     668
     669                end;
    631670            end;
    632671          end;
     
    643682procedure TPascalParser.ParseIfThenElse(SourceCode: TIfThenElse);
    644683begin
    645   with Sourcecode do
    646   begin
     684  with SourceCode do begin
    647685    Expect('if');
    648686    Condition.CommonBlock := CommonBlock;
  • branches/Transpascal/Compiler/Produce/UProducerAsm8051.pas

    r60 r80  
    155155    ntNone: ;
    156156    ntVariable: if Assigned(Variable) then AddInstruction('', 'GETVAR', Variable.Name, '');
    157     nTFunction: AddInstruction('', 'CALL', Method.Name, '');
     157    nTFunction: AddInstruction('', 'CALL', FunctionCall.Name, '');
    158158    ntConstant: AddInstruction('', 'CONST', '', '');
    159159    ntOperator: begin
  • branches/Transpascal/Compiler/Produce/UProducerDynamicC.pas

    r77 r80  
    281281    end;
    282282    ntVariable: Result := Expression.Variable.Name;
    283     ntFunction: Result := Expression.Method.Name;
     283    ntFunction: Result := Expression.FunctionCall.Name;
    284284    ntOperator: begin
    285285      Result := GenerateExpression(TExpression(Expression.SubItems.First))
  • branches/Transpascal/Compiler/Produce/UProducerGCCC.pas

    r77 r80  
    281281    end;
    282282    ntVariable: Result := Expression.Variable.Name;
    283     ntFunction: Result := Expression.Method.Name;
     283    ntFunction: Result := Expression.FunctionCall.Name;
    284284    ntOperator: begin
    285285      Result := GenerateExpression(TExpression(Expression.SubItems.First))
  • branches/Transpascal/Compiler/Produce/UProducerPascal.pas

    r77 r80  
    312312    ntConstant: Result := Expression.Value;
    313313    ntVariable: Result := Expression.Variable.Name;
    314     ntFunction: Result := Expression.Method.Name;
     314    ntFunction: Result := Expression.FunctionCall.Name;
    315315    ntOperator: begin
    316316      Result := GenerateExpression(TExpression(Expression.SubItems.First))
  • branches/Transpascal/Compiler/Produce/UProducerTreeView.pas

    r77 r80  
    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.Method.Name);
     154    ntFunction: NewNode := TreeView.Items.AddChild(Node, Expression.FunctionCall.Name);
    155155    ntOperator: begin
    156156      NewNode := TreeView.Items.AddChild(Node, Expression.OperatorName);
  • branches/Transpascal/Compiler/USourceCode.pas

    r78 r80  
    250250    NodeType: TNodeType;
    251251    Variable: TVariable;
    252     Method: TFunction;
     252    Constant: TConstant;
     253    FunctionCall: TFunction;
    253254    Value: TValue;
    254255    OperatorName: string;
     
    583584  CommonBlock := Source.CommonBlock;
    584585  NodeType := Source.NodeType;
    585   Method := Source.Method;
     586  FunctionCall := Source.FunctionCall;
    586587  Value := Source.Value;
    587588  Associated := Source.Associated;
  • branches/Transpascal/Transpascal.lpi

    r79 r80  
    4949      </Item4>
    5050    </RequiredPackages>
    51     <Units Count="47">
     51    <Units Count="48">
    5252      <Unit0>
    5353        <Filename Value="Transpascal.lpr"/>
    5454        <IsPartOfProject Value="True"/>
    5555        <UnitName Value="Transpascal"/>
    56         <EditorIndex Value="7"/>
     56        <EditorIndex Value="11"/>
    5757        <WindowIndex Value="0"/>
    5858        <TopLine Value="1"/>
     
    6969        <ResourceBaseClass Value="Form"/>
    7070        <UnitName Value="UMainForm"/>
    71         <EditorIndex Value="6"/>
     71        <EditorIndex Value="10"/>
    7272        <WindowIndex Value="0"/>
    7373        <TopLine Value="255"/>
     
    9494        <TopLine Value="745"/>
    9595        <CursorPos X="46" Y="759"/>
    96         <UsageCount Value="146"/>
     96        <UsageCount Value="145"/>
    9797        <DefaultSyntaxHighlighter Value="Delphi"/>
    9898      </Unit3>
     
    103103        <TopLine Value="1"/>
    104104        <CursorPos X="40" Y="11"/>
    105         <UsageCount Value="146"/>
     105        <UsageCount Value="145"/>
    106106        <DefaultSyntaxHighlighter Value="Delphi"/>
    107107      </Unit4>
     
    112112        <TopLine Value="187"/>
    113113        <CursorPos X="34" Y="201"/>
    114         <UsageCount Value="146"/>
     114        <UsageCount Value="145"/>
    115115      </Unit5>
    116116      <Unit6>
     
    120120        <TopLine Value="1"/>
    121121        <CursorPos X="1" Y="14"/>
    122         <UsageCount Value="146"/>
     122        <UsageCount Value="145"/>
    123123      </Unit6>
    124124      <Unit7>
     
    128128        <TopLine Value="124"/>
    129129        <CursorPos X="42" Y="136"/>
    130         <UsageCount Value="146"/>
     130        <UsageCount Value="145"/>
    131131      </Unit7>
    132132      <Unit8>
     
    136136        <TopLine Value="442"/>
    137137        <CursorPos X="47" Y="455"/>
    138         <UsageCount Value="146"/>
     138        <UsageCount Value="145"/>
    139139      </Unit8>
    140140      <Unit9>
     
    144144        <TopLine Value="78"/>
    145145        <CursorPos X="27" Y="86"/>
    146         <UsageCount Value="38"/>
     146        <UsageCount Value="37"/>
    147147      </Unit9>
    148148      <Unit10>
     
    151151        <TopLine Value="61"/>
    152152        <CursorPos X="7" Y="68"/>
    153         <UsageCount Value="48"/>
     153        <UsageCount Value="47"/>
    154154      </Unit10>
    155155      <Unit11>
     
    158158        <TopLine Value="139"/>
    159159        <CursorPos X="16" Y="146"/>
    160         <UsageCount Value="48"/>
     160        <UsageCount Value="47"/>
    161161      </Unit11>
    162162      <Unit12>
     
    166166        <TopLine Value="69"/>
    167167        <CursorPos X="1" Y="82"/>
    168         <UsageCount Value="108"/>
     168        <UsageCount Value="107"/>
    169169      </Unit12>
    170170      <Unit13>
     
    173173        <TopLine Value="591"/>
    174174        <CursorPos X="3" Y="604"/>
    175         <UsageCount Value="10"/>
     175        <UsageCount Value="9"/>
    176176      </Unit13>
    177177      <Unit14>
     
    181181        <TopLine Value="320"/>
    182182        <CursorPos X="1" Y="327"/>
    183         <UsageCount Value="62"/>
     183        <UsageCount Value="61"/>
    184184      </Unit14>
    185185      <Unit15>
     
    198198        <TopLine Value="17"/>
    199199        <CursorPos X="11" Y="30"/>
    200         <UsageCount Value="1"/>
     200        <UsageCount Value="0"/>
    201201      </Unit16>
    202202      <Unit17>
     
    206206        <TopLine Value="1"/>
    207207        <CursorPos X="33" Y="1"/>
    208         <UsageCount Value="26"/>
     208        <UsageCount Value="25"/>
    209209      </Unit17>
    210210      <Unit18>
    211211        <Filename Value="Compiler\UCompiler.pas"/>
    212212        <UnitName Value="UCompiler"/>
    213         <EditorIndex Value="3"/>
     213        <EditorIndex Value="7"/>
    214214        <WindowIndex Value="0"/>
    215215        <TopLine Value="1"/>
     
    221221        <Filename Value="Compiler\USourceCode.pas"/>
    222222        <UnitName Value="USourceCode"/>
    223         <EditorIndex Value="8"/>
    224         <WindowIndex Value="0"/>
    225         <TopLine Value="164"/>
    226         <CursorPos X="14" Y="178"/>
     223        <EditorIndex Value="12"/>
     224        <WindowIndex Value="0"/>
     225        <TopLine Value="211"/>
     226        <CursorPos X="3" Y="224"/>
    227227        <UsageCount Value="100"/>
    228228        <Loaded Value="True"/>
     
    231231        <Filename Value="Compiler\Analyze\UParser.pas"/>
    232232        <UnitName Value="UParser"/>
    233         <EditorIndex Value="4"/>
    234         <WindowIndex Value="0"/>
    235         <TopLine Value="369"/>
    236         <CursorPos X="1" Y="387"/>
     233        <EditorIndex Value="8"/>
     234        <WindowIndex Value="0"/>
     235        <TopLine Value="75"/>
     236        <CursorPos X="1" Y="88"/>
    237237        <UsageCount Value="103"/>
    238238        <Loaded Value="True"/>
     
    302302        <Filename Value="Compiler\Produce\UProducerTreeView.pas"/>
    303303        <UnitName Value="UProducerTreeView"/>
    304         <WindowIndex Value="0"/>
    305         <TopLine Value="255"/>
    306         <CursorPos X="66" Y="271"/>
    307         <UsageCount Value="24"/>
     304        <EditorIndex Value="4"/>
     305        <WindowIndex Value="0"/>
     306        <TopLine Value="141"/>
     307        <CursorPos X="81" Y="154"/>
     308        <UsageCount Value="25"/>
     309        <Loaded Value="True"/>
    308310      </Unit26>
    309311      <Unit27>
     
    313315        <TopLine Value="316"/>
    314316        <CursorPos X="14" Y="329"/>
    315         <UsageCount Value="24"/>
     317        <UsageCount Value="23"/>
    316318      </Unit27>
    317319      <Unit28>
     
    349351        <Filename Value="Compiler\Produce\UProducerDynamicC.pas"/>
    350352        <UnitName Value="UProducerDynamicC"/>
    351         <EditorIndex Value="2"/>
    352         <WindowIndex Value="0"/>
    353         <TopLine Value="291"/>
    354         <CursorPos X="27" Y="298"/>
     353        <EditorIndex Value="3"/>
     354        <WindowIndex Value="0"/>
     355        <TopLine Value="270"/>
     356        <CursorPos X="50" Y="283"/>
    355357        <UsageCount Value="100"/>
    356358        <Loaded Value="True"/>
     
    359361        <Filename Value="Compiler\Produce\UProducerAsm8051.pas"/>
    360362        <UnitName Value="UProducerAsm8051"/>
    361         <WindowIndex Value="0"/>
    362         <TopLine Value="1"/>
    363         <CursorPos X="1" Y="1"/>
    364         <UsageCount Value="20"/>
     363        <EditorIndex Value="5"/>
     364        <WindowIndex Value="0"/>
     365        <TopLine Value="144"/>
     366        <CursorPos X="56" Y="157"/>
     367        <UsageCount Value="21"/>
     368        <Loaded Value="True"/>
    365369      </Unit33>
    366370      <Unit34>
    367371        <Filename Value="Compiler\Produce\UProducerPascal.pas"/>
    368372        <UnitName Value="UProducerPascal"/>
    369         <WindowIndex Value="0"/>
    370         <TopLine Value="181"/>
    371         <CursorPos X="9" Y="194"/>
    372         <UsageCount Value="17"/>
     373        <EditorIndex Value="6"/>
     374        <WindowIndex Value="0"/>
     375        <TopLine Value="301"/>
     376        <CursorPos X="50" Y="314"/>
     377        <UsageCount Value="18"/>
     378        <Loaded Value="True"/>
    373379      </Unit34>
    374380      <Unit35>
     
    378384        <EditorIndex Value="0"/>
    379385        <WindowIndex Value="0"/>
    380         <TopLine Value="1034"/>
    381         <CursorPos X="28" Y="1047"/>
    382         <UsageCount Value="82"/>
     386        <TopLine Value="571"/>
     387        <CursorPos X="57" Y="579"/>
     388        <UsageCount Value="84"/>
    383389        <Loaded Value="True"/>
    384390      </Unit35>
     
    389395        <TopLine Value="15"/>
    390396        <CursorPos X="1" Y="28"/>
    391         <UsageCount Value="51"/>
     397        <UsageCount Value="50"/>
    392398      </Unit36>
    393399      <Unit37>
     
    397403        <TopLine Value="828"/>
    398404        <CursorPos X="27" Y="841"/>
    399         <UsageCount Value="27"/>
     405        <UsageCount Value="26"/>
    400406      </Unit37>
    401407      <Unit38>
     
    405411        <TopLine Value="56"/>
    406412        <CursorPos X="3" Y="69"/>
    407         <UsageCount Value="1"/>
     413        <UsageCount Value="0"/>
    408414      </Unit38>
    409415      <Unit39>
     
    413419        <TopLine Value="113"/>
    414420        <CursorPos X="3" Y="120"/>
    415         <UsageCount Value="1"/>
     421        <UsageCount Value="0"/>
    416422      </Unit39>
    417423      <Unit40>
     
    420426        <TopLine Value="1"/>
    421427        <CursorPos X="24" Y="11"/>
    422         <UsageCount Value="1"/>
     428        <UsageCount Value="0"/>
    423429      </Unit40>
    424430      <Unit41>
     
    427433        <TopLine Value="1"/>
    428434        <CursorPos X="17" Y="5"/>
    429         <UsageCount Value="16"/>
     435        <UsageCount Value="15"/>
    430436        <DefaultSyntaxHighlighter Value="None"/>
    431437      </Unit41>
     
    436442        <TopLine Value="1"/>
    437443        <CursorPos X="8" Y="8"/>
    438         <UsageCount Value="16"/>
     444        <UsageCount Value="15"/>
    439445      </Unit42>
    440446      <Unit43>
     
    442448        <IsPartOfProject Value="True"/>
    443449        <UnitName Value="UDebugLog"/>
    444         <EditorIndex Value="1"/>
     450        <EditorIndex Value="2"/>
    445451        <WindowIndex Value="0"/>
    446452        <TopLine Value="36"/>
    447         <CursorPos X="63" Y="47"/>
    448         <UsageCount Value="71"/>
     453        <CursorPos X="30" Y="50"/>
     454        <UsageCount Value="75"/>
    449455        <Loaded Value="True"/>
    450456        <DefaultSyntaxHighlighter Value="Delphi"/>
     
    455461        <TopLine Value="365"/>
    456462        <CursorPos X="5" Y="370"/>
    457         <UsageCount Value="31"/>
     463        <UsageCount Value="30"/>
    458464      </Unit44>
    459465      <Unit45>
     
    463469        <TopLine Value="3"/>
    464470        <CursorPos X="6" Y="16"/>
    465         <UsageCount Value="10"/>
     471        <UsageCount Value="9"/>
    466472      </Unit45>
    467473      <Unit46>
    468474        <Filename Value="Compiler\Produce\UProducerGCCC.pas"/>
    469475        <UnitName Value="UProducerGCCC"/>
    470         <EditorIndex Value="5"/>
    471         <WindowIndex Value="0"/>
    472         <TopLine Value="108"/>
    473         <CursorPos X="3" Y="121"/>
    474         <UsageCount Value="13"/>
     476        <EditorIndex Value="9"/>
     477        <WindowIndex Value="0"/>
     478        <TopLine Value="270"/>
     479        <CursorPos X="30" Y="278"/>
     480        <UsageCount Value="15"/>
    475481        <Loaded Value="True"/>
    476482      </Unit46>
     483      <Unit47>
     484        <Filename Value="E:\Programy\Lazarus\fpc\2.4.3\source\packages\fcl-base\src\contnrs.pp"/>
     485        <UnitName Value="contnrs"/>
     486        <EditorIndex Value="1"/>
     487        <WindowIndex Value="0"/>
     488        <TopLine Value="66"/>
     489        <CursorPos X="14" Y="91"/>
     490        <UsageCount Value="10"/>
     491        <Loaded Value="True"/>
     492      </Unit47>
    477493    </Units>
    478494    <JumpHistory Count="30" HistoryIndex="29">
    479495      <Position1>
    480496        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    481         <Caret Line="974" Column="1" TopLine="953"/>
     497        <Caret Line="240" Column="1" TopLine="230"/>
    482498      </Position1>
    483499      <Position2>
    484500        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    485         <Caret Line="976" Column="1" TopLine="955"/>
     501        <Caret Line="241" Column="1" TopLine="230"/>
    486502      </Position2>
    487503      <Position3>
    488504        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    489         <Caret Line="979" Column="1" TopLine="958"/>
     505        <Caret Line="14" Column="12" TopLine="1"/>
    490506      </Position3>
    491507      <Position4>
    492508        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    493         <Caret Line="980" Column="1" TopLine="959"/>
     509        <Caret Line="17" Column="4" TopLine="1"/>
    494510      </Position4>
    495511      <Position5>
    496512        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    497         <Caret Line="981" Column="24" TopLine="960"/>
     513        <Caret Line="16" Column="15" TopLine="1"/>
    498514      </Position5>
    499515      <Position6>
    500516        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    501         <Caret Line="698" Column="18" TopLine="687"/>
     517        <Caret Line="14" Column="13" TopLine="1"/>
    502518      </Position6>
    503519      <Position7>
    504520        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    505         <Caret Line="696" Column="16" TopLine="687"/>
     521        <Caret Line="13" Column="17" TopLine="1"/>
    506522      </Position7>
    507523      <Position8>
    508524        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    509         <Caret Line="739" Column="1" TopLine="718"/>
     525        <Caret Line="14" Column="1" TopLine="1"/>
    510526      </Position8>
    511527      <Position9>
    512528        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    513         <Caret Line="696" Column="36" TopLine="683"/>
     529        <Caret Line="13" Column="22" TopLine="1"/>
    514530      </Position9>
    515531      <Position10>
    516532        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    517         <Caret Line="695" Column="19" TopLine="683"/>
     533        <Caret Line="575" Column="24" TopLine="559"/>
    518534      </Position10>
    519535      <Position11>
    520536        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    521         <Caret Line="708" Column="1" TopLine="704"/>
     537        <Caret Line="668" Column="6" TopLine="648"/>
    522538      </Position11>
    523539      <Position12>
    524540        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    525         <Caret Line="693" Column="19" TopLine="683"/>
     541        <Caret Line="446" Column="24" TopLine="439"/>
    526542      </Position12>
    527543      <Position13>
    528544        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    529         <Caret Line="38" Column="54" TopLine="25"/>
     545        <Caret Line="487" Column="28" TopLine="480"/>
    530546      </Position13>
    531547      <Position14>
    532548        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    533         <Caret Line="702" Column="64" TopLine="702"/>
     549        <Caret Line="575" Column="27" TopLine="560"/>
    534550      </Position14>
    535551      <Position15>
    536552        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    537         <Caret Line="695" Column="58" TopLine="680"/>
     553        <Caret Line="624" Column="29" TopLine="615"/>
    538554      </Position15>
    539555      <Position16>
    540556        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    541         <Caret Line="706" Column="20" TopLine="698"/>
     557        <Caret Line="612" Column="70" TopLine="599"/>
    542558      </Position16>
    543559      <Position17>
    544560        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    545         <Caret Line="707" Column="23" TopLine="688"/>
     561        <Caret Line="649" Column="38" TopLine="635"/>
    546562      </Position17>
    547563      <Position18>
    548564        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    549         <Caret Line="984" Column="32" TopLine="967"/>
     565        <Caret Line="627" Column="27" TopLine="623"/>
    550566      </Position18>
    551567      <Position19>
    552568        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    553         <Caret Line="991" Column="18" TopLine="967"/>
     569        <Caret Line="612" Column="63" TopLine="611"/>
    554570      </Position19>
    555571      <Position20>
    556572        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    557         <Caret Line="989" Column="74" TopLine="976"/>
     573        <Caret Line="36" Column="87" TopLine="24"/>
    558574      </Position20>
    559575      <Position21>
    560576        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    561         <Caret Line="40" Column="27" TopLine="34"/>
     577        <Caret Line="575" Column="24" TopLine="562"/>
    562578      </Position21>
    563579      <Position22>
    564580        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    565         <Caret Line="762" Column="20" TopLine="739"/>
     581        <Caret Line="613" Column="17" TopLine="609"/>
    566582      </Position22>
    567583      <Position23>
    568584        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    569         <Caret Line="760" Column="17" TopLine="745"/>
     585        <Caret Line="652" Column="41" TopLine="638"/>
    570586      </Position23>
    571587      <Position24>
    572         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    573         <Caret Line="752" Column="19" TopLine="746"/>
     588        <Filename Value="Compiler\USourceCode.pas"/>
     589        <Caret Line="273" Column="27" TopLine="260"/>
    574590      </Position24>
    575591      <Position25>
    576         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    577         <Caret Line="769" Column="1" TopLine="759"/>
     592        <Filename Value="Compiler\USourceCode.pas"/>
     593        <Caret Line="242" Column="37" TopLine="227"/>
    578594      </Position25>
    579595      <Position26>
    580         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    581         <Caret Line="770" Column="21" TopLine="760"/>
     596        <Filename Value="Compiler\USourceCode.pas"/>
     597        <Caret Line="237" Column="26" TopLine="224"/>
    582598      </Position26>
    583599      <Position27>
    584600        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    585         <Caret Line="1041" Column="28" TopLine="1025"/>
     601        <Caret Line="652" Column="41" TopLine="638"/>
    586602      </Position27>
    587603      <Position28>
    588604        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    589         <Caret Line="1039" Column="9" TopLine="1025"/>
     605        <Caret Line="656" Column="71" TopLine="641"/>
    590606      </Position28>
    591607      <Position29>
    592608        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    593         <Caret Line="1046" Column="35" TopLine="1027"/>
     609        <Caret Line="619" Column="1" TopLine="600"/>
    594610      </Position29>
    595611      <Position30>
    596612        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    597         <Caret Line="51" Column="14" TopLine="38"/>
     613        <Caret Line="471" Column="27" TopLine="463"/>
    598614      </Position30>
    599615    </JumpHistory>
     
    642658  </CompilerOptions>
    643659  <Debugging>
    644     <BreakPoints Count="1">
    645       <Item1>
    646         <Source Value="Compiler\Analyze\UPascalParser.pas"/>
    647         <Line Value="1036"/>
    648       </Item1>
    649     </BreakPoints>
    650660    <Exceptions Count="3">
    651661      <Item1>
Note: See TracChangeset for help on using the changeset viewer.