Changeset 72


Ignore:
Timestamp:
Oct 20, 2010, 11:02:10 AM (14 years ago)
Author:
george
Message:
  • Fixed: Better error message cursor position focusing.
  • Modified: All source code is tokenized to token list at once.
Location:
branches/Transpascal
Files:
7 edited

Legend:

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

    r71 r72  
    66
    77uses
    8   SysUtils, Variants, Classes,
     8  SysUtils, Variants, Classes, Contnrs,
    99  Dialogs, USourceCode, FileUtil;
    1010
     
    1919    ttOperator, ttEndOfFile, ttLineComment, ttBlockComment1, ttBlockComment2,
    2020    ttUnknown, ttWhiteSpace);
     21
     22  TToken = class
     23    Token: string;
     24    CodePosition: TPoint;
     25    TokenType: TTokenType;
     26  end;
    2127
    2228  { TBaseParser }
     
    2935    FNextTokenType: TTokenType;
    3036    FParserState: TParserState;
    31     PreviousChar: char;
    32     CurrentChar: char;
     37    PreviousChar: Char;
     38    CurrentChar: Char;
     39    TokenCodePosition: TPoint;
     40    procedure GetNextToken;
    3341  public
    3442    ProgramCode: TProgram;
    35     CodeStreamPosition: integer;
     43    CodeStreamPosition: Integer;
    3644    CodePosition: TPoint;
    37     LastTokenEnd: TPoint;
    38     LastTokenStart: TPoint;
    3945    SourceCodeText: TStringList;
     46    Tokens: TObjectList; // TObjectList<TToken>
     47    TokenIndex: Integer;
     48    constructor Create;
     49    destructor Destroy; override;
    4050    function IsAlphanumeric(Character: char): boolean;
    41     procedure GetNextToken;
    42     function ReadCode: string;
    43     function NextToken: string;
    44     function NextTokenType: TTokenType;
    45     procedure Expect(Code: string);
    4651    function IsWhiteSpace(Character: char): boolean;
    4752    function IsAlphabetic(Character: char): boolean;
     
    4954    function IsKeyword(Text: string): boolean;
    5055    function IsOperator(Text: string): boolean;
    51     procedure Log(Text: string);
    52     procedure ErrorMessage(const Text: string; const Arguments: array of const);
     56    function ReadCode: string;
     57    function NextToken: string;
     58    function NextTokenType: TTokenType;
     59    procedure Expect(Code: string);
     60    procedure ErrorMessage(const Text: string; const Arguments: array of const;
     61      TokenOffset: Integer);
    5362    property OnErrorMessage: TOnErrorMessage read FOnErrorMessage write FOnErrorMessage;
    54     procedure Init;
     63    procedure Process;
    5564    property FileName: string read FFileName write FFileName;
    5665  end;
    5766
    5867resourcestring
    59   SUnknownIdentifier = 'Unknown identificator "%s".';
    60   SIllegalExpression = 'Illegal expression "%s".';
    6168  SExpectedButFound = 'Expected "%s" but "%s" found.';
    62   SRedefineIdentifier = 'Identificator "%s" redefinition.';
    63   STypeNotDefined = 'Type "%s" not defined.';
    64   SEndOfDataReached = 'Parser reached to end of input data.';
    65   SUndefinedVariable = 'Undefined variable "%s".';
    66   SUndefinedType = 'Undefined type "%s".';
    67   SUndefinedConstant = 'Undefined constant "%s".';
    68   SUnitNotFound = 'Unit "%s" not found.';
    6969
    7070implementation
     
    7272{ TBaseParser }
    7373
    74 procedure TBaseParser.ErrorMessage(const Text: string; const Arguments: array of const);
     74procedure TBaseParser.ErrorMessage(const Text: string; const Arguments: array of const;
     75  TokenOffset: Integer);
    7576begin
    7677  if Assigned(FOnErrorMessage) then
    77     FOnErrorMessage(Format(Text, Arguments), LastTokenStart, FileName);
     78  if (TokenIndex + TokenOffset) < Tokens.Count then begin
     79    FOnErrorMessage(Format(Text, Arguments),
     80      TToken(Tokens[TokenIndex + TokenOffset]).CodePosition, FileName);
     81  end;
    7882end;
    7983
    8084procedure TBaseParser.Expect(Code: string);
    8185begin
    82   Log('Expected: ' + Code + '  Readed: ' + FNextToken);
    83   if FNextToken <> Code then begin
    84     //ReadCode;
    85     ErrorMessage(SExpectedButFound, [Code, FNextToken]);
     86  if NextToken <> Code then begin
     87    ErrorMessage(SExpectedButFound, [Code, FNextToken], -2);
    8688
    8789    // Recovery: try to find nearest same code
    88     while (FNextToken <> Code) and (FNextTokenType <> ttEndOfFile) do
    89       GetNextToken;
    90   end;
    91   GetNextToken;
     90    while (NextToken <> Code) and (NextTokenType <> ttEndOfFile) do
     91      ReadCode;
     92  end;
     93  ReadCode;
    9294end;
    9395
     
    9597begin
    9698  Result := (Character in ['a'..'z']) or (Character in ['A'..'Z']);
     99end;
     100
     101constructor TBaseParser.Create;
     102begin
     103  Tokens := TObjectList.Create;
     104end;
     105
     106destructor TBaseParser.Destroy;
     107begin
     108  Tokens.Free;
     109  inherited Destroy;
    97110end;
    98111
     
    144157end;
    145158
    146 procedure TBaseParser.Log(Text: string);
    147 const
    148   LogFileName = 'ParseLog.txt';
    149 var
    150   LogFile: TFileStream;
    151 begin
    152   try
    153     if FileExistsUTF8(LogFileName) { *Converted from FileExists*  } then
    154       LogFile := TFileStream.Create(LogFileName, fmOpenWrite)
    155     else
    156       LogFile := TFileStream.Create(LogFileName, fmCreate);
    157     if Length(Text) > 0 then
    158     begin
    159       LogFile.Write(Text[1], Length(Text));
    160       LogFile.Write(#13#10, 2);
    161     end;
    162   finally
    163     LogFile.Free;
    164   end;
    165 end;
    166 
    167 procedure TBaseParser.Init;
    168 begin
    169   CodePosition := Point(1, 1);
     159procedure TBaseParser.Process;
     160var
     161  NewToken: TToken;
     162begin
     163  CodePosition := Point(0, 1);
    170164  CurrentChar := #0;
    171165  PreviousChar := #0;
     
    173167  FNextTokenType := ttNone;
    174168  CodeStreamPosition := 1;
    175   GetNextToken;
     169  Tokens.Clear;
     170  TokenIndex := 0;
     171  while CodeStreamPosition < Length(SourceCodeText.Text) do begin
     172    NewToken := TToken.Create;
     173    GetNextToken;
     174    NewToken.CodePosition := TokenCodePosition;
     175    NewToken.TokenType := FNextTokenType;
     176    NewToken.Token := FNextToken;
     177    Tokens.Add(NewToken);
     178  end;
    176179end;
    177180
     
    184187  SpecChar: set of char = [';', '.', ',', ':', '(', ')', '[', ']',
    185188    '+', '-', '/', '*', '^', '=', '<', '>', '@'];
    186   DoubleSpecChar: array[0..6] of string = (':=', '..', '<=', '>=', '<>', '+=', '-=');
    187 begin
    188   LastTokenStart := LastTokenEnd;
    189   LastTokenEnd := CodePosition;
     189  DoubleSpecChar: array[0..6] of string = (':=', '..', '<=', '>=', '<>',
     190    '+=', '-=');
     191begin
    190192  FNextToken := '';
    191193  FNextTokenType := ttNone;
    192194  FParserState := psNone;
    193195  with SourceCodeText do
    194     while True do
    195     begin
     196    while True do begin
    196197      if CodeStreamPosition < Length(Text) then begin
    197198        CurrentChar := Text[CodeStreamPosition];
     
    204205
    205206      if FParserState = psNone then begin
     207        TokenCodePosition := CodePosition;
    206208        if IsWhiteSpace(CurrentChar) then
    207209          FParserState := psWhiteSpace
     
    293295        Inc(CodePosition.X);
    294296        if (CurrentChar = #13) then begin
    295           CodePosition.X := 1;
     297          CodePosition.X := 0;
    296298          Inc(CodePosition.Y);
    297299        end;
     
    305307function TBaseParser.ReadCode: string;
    306308begin
    307   Result := FNextToken;
    308   GetNextToken;
    309   Log('Read: ' + Result);
     309  if TokenIndex < Tokens.Count then begin
     310    Result := TToken(Tokens[TokenIndex]).Token;
     311    Inc(TokenIndex);
     312  end else Result := '';
    310313end;
    311314
    312315function TBaseParser.NextToken: string;
    313316begin
    314   Result := FNextToken;
     317  if TokenIndex < Tokens.Count then begin
     318    Result := TToken(Tokens[TokenIndex]).Token;
     319  end else Result := '';
    315320end;
    316321
    317322function TBaseParser.NextTokenType: TTokenType;
    318323begin
    319   Result := FNextTokenType;
     324  if TokenIndex < Tokens.Count then begin
     325    Result := TToken(Tokens[TokenIndex]).TokenType;
     326  end else Result := ttEndOfFile;
    320327end;
    321328
  • branches/Transpascal/Compiler/Analyze/UPascalParser.pas

    r71 r72  
    4747
    4848
     49resourcestring
     50  SUnknownIdentifier = 'Unknown identificator "%s".';
     51  SIllegalExpression = 'Illegal expression "%s".';
     52  SRedefineIdentifier = 'Identificator "%s" redefinition.';
     53  STypeNotDefined = 'Type "%s" not defined.';
     54  SEndOfDataReached = 'Parser reached to end of input data.';
     55  SUndefinedVariable = 'Undefined variable "%s".';
     56  SUndefinedType = 'Undefined type "%s".';
     57  SUndefinedConstant = 'Undefined constant "%s".';
     58  SUnitNotFound = 'Unit "%s" not found.';
     59
     60
    4961implementation
    5062
     
    6375    if Assigned(OnGetSource) then begin
    6476      if FOnGetSource(Name, Parser.SourceCodeText) then begin
    65         Parser.Init;
     77        Parser.Process;
    6678        Parser.FileName := Name;
    6779        Parser.OnErrorMessage := OnErrorMessage;
     
    192204              end;
    193205            end else begin
    194               ErrorMessage(SUnknownIdentifier, [Identifier]);
     206              ErrorMessage(SUnknownIdentifier, [Identifier], -1);
    195207            end;
    196208          end;
     
    326338      begin
    327339        Result := nil;
    328         ErrorMessage(SUnknownIdentifier, [ReadCode]);
     340        ErrorMessage(SUnknownIdentifier, [ReadCode], -1);
    329341      end;
    330342    end
     
    334346    begin
    335347      Result := nil;
    336       ErrorMessage(SIllegalExpression, [ReadCode]);
     348      ErrorMessage(SIllegalExpression, [ReadCode], -1);
    337349    end;
    338350  end;
     
    454466        ParseFunctionList(Functions, True)
    455467      else begin
    456         ErrorMessage(SUnknownIdentifier, [NextToken]);
     468        ErrorMessage(SUnknownIdentifier, [NextToken], -1);
    457469        ReadCode;
    458470      end;
     
    529541                end;
    530542              end else
    531                 ErrorMessage(SRedefineIdentifier, [VariableName]);
     543                ErrorMessage(SRedefineIdentifier, [VariableName], 0);
    532544              Expect(':');
    533545              TypeName := ReadCode;
    534546              NewValueType := Parent.Types.Search(TypeName);
    535547              if not Assigned(NewValueType) then
    536                 ErrorMessage(STypeNotDefined, [TypeName])
     548                ErrorMessage(STypeNotDefined, [TypeName], -1)
    537549              else
    538550                for I := 0 to Identifiers.Count - 1 do
     
    554566          NewValueType := Parent.Types.Search(TypeName);
    555567          if not Assigned(NewValueType) then
    556             ErrorMessage(STypeNotDefined, [TypeName])
     568            ErrorMessage(STypeNotDefined, [TypeName], -1)
    557569          else
    558570          begin
     
    611623    ControlVariable := SourceCode.CommonBlock.Variables.Search(VariableName);
    612624    if not Assigned(ControlVariable) then
    613       ErrorMessage(SUndefinedVariable, [VariableName]);
     625      ErrorMessage(SUndefinedVariable, [VariableName], 0);
    614626    Expect(':=');
    615627    Start.CommonBlock := CommonBlock;
     
    653665      end
    654666      else
    655         ErrorMessage(SRedefineIdentifier, [VariableName]);
     667        ErrorMessage(SRedefineIdentifier, [VariableName], 0);
    656668      Expect(':');
    657669      TypeName := ReadCode;
    658670      NewValueType := Parent.Types.Search(TypeName);
    659671      if NewValueType = nil then
    660         ErrorMessage(STypeNotDefined, [TypeName])
     672        ErrorMessage(STypeNotDefined, [TypeName], -1)
    661673      else
    662674        for I := 0 to Identifiers.Count - 1 do
     
    714726      end
    715727      else
    716         ErrorMessage(SRedefineIdentifier, [ConstantName]);
     728        ErrorMessage(SRedefineIdentifier, [ConstantName], 0);
    717729      Expect(':');
    718730      TypeName := ReadCode;
     
    723735
    724736      if NewValueType = nil then
    725         ErrorMessage(STypeNotDefined, [TypeName])
     737        ErrorMessage(STypeNotDefined, [TypeName], -1)
    726738      else
    727739        for I := 0 to Identifiers.Count - 1 do
     
    800812        TTypeArray(Result).IndexType := ParseType(TypeList, False);
    801813        if not Assigned(TTypeArray(Result).IndexType) then
    802           ErrorMessage(SUndefinedType, [TypeName]);
     814          ErrorMessage(SUndefinedType, [TypeName], 0);
    803815        Expect(']');
    804816      end;
     
    807819      TTypeArray(Result).ItemType := ParseType(TypeList, False);
    808820      if not Assigned(TTypeArray(Result).ItemType) then
    809         ErrorMessage(SUndefinedType, [TypeName]);
     821        ErrorMessage(SUndefinedType, [TypeName], 0);
    810822    end else
    811823    if NextToken = '^' then begin
     
    834846        TType(Result).UsedType := TypeList.Search(TypeName);
    835847        if not Assigned(TType(Result).UsedType) then
    836           ErrorMessage(SUndefinedType, [TypeName]);
     848          ErrorMessage(SUndefinedType, [TypeName], 0);
    837849      end else begin
    838850        TType(Result) := TypeList.Search(TypeName);
    839851        if not Assigned(TType(Result)) then
    840           ErrorMessage(SUndefinedType, [TypeName]);
     852          ErrorMessage(SUndefinedType, [TypeName], 0);
    841853      end;
    842854    end;
     
    922934constructor TPascalParser.Create;
    923935begin
     936  inherited;
    924937end;
    925938
     
    949962        Exported := AExported;
    950963      end else begin
    951         ErrorMessage(SUnitNotFound, [Name]);
     964        ErrorMessage(SUnitNotFound, [Name], -2);
    952965        SourceCode.Delete(SourceCode.Count - 1);
    953966      end;
     
    966979      if not Assigned(Module) then begin
    967980        if not ParseFile(Name) then begin
    968           ErrorMessage(SUnitNotFound, [Name]);
     981          ErrorMessage(SUnitNotFound, [Name], -2);
    969982          SourceCode.Delete(SourceCode.Count - 1);
    970983        end;
  • branches/Transpascal/Compiler/TranspascalCompiler.lpk

    r70 r72  
    1515      </Other>
    1616    </CompilerOptions>
    17     <Files Count="9">
     17    <Files Count="10">
    1818      <Item1>
    1919        <Filename Value="UCompiler.pas"/>
     
    5252        <UnitName Value="UPascalParser"/>
    5353      </Item9>
     54      <Item10>
     55        <Filename Value="Analyze\UGrammer.pas"/>
     56        <UnitName Value="UGrammer"/>
     57      </Item10>
    5458    </Files>
    5559    <Type Value="RunAndDesignTime"/>
  • branches/Transpascal/Compiler/TranspascalCompiler.pas

    r70 r72  
    99uses
    1010    UCompiler, USourceCode, UProducerTreeView, UProducer, UProducerAsm8051,
    11   UProducerC, UProducerPascal, UParser, UPascalParser, LazarusPackageIntf;
     11  UProducerC, UProducerPascal, UParser, UPascalParser, UGrammer,
     12  LazarusPackageIntf;
    1213
    1314implementation
  • branches/Transpascal/Compiler/UCompiler.pas

    r71 r72  
    6565    Parser.FileName := ModuleName;
    6666    Parser.SourceCodeText := Source;
    67     Parser.Init;
     67    Parser.Process;
    6868    //ShowMessage(IntToHex(Integer(Addr(Parser.OnGetSource)), 8));
    6969    NewModule := Parser.ParseModule(ProgramCode);
  • branches/Transpascal/Forms/UMessagesForm.pas

    r69 r72  
    6565var
    6666  ProjectFile: TProjectFile;
     67  P: TPoint;
    6768begin
    6869  with MainForm, CodeForm do
  • branches/Transpascal/Transpascal.lpi

    r71 r72  
    4646      </Item4>
    4747    </RequiredPackages>
    48     <Units Count="41">
     48    <Units Count="45">
    4949      <Unit0>
    5050        <Filename Value="Transpascal.lpr"/>
    5151        <IsPartOfProject Value="True"/>
    5252        <UnitName Value="Transpascal"/>
     53        <EditorIndex Value="11"/>
    5354        <WindowIndex Value="0"/>
    5455        <TopLine Value="7"/>
    55         <CursorPos X="29" Y="24"/>
     56        <CursorPos X="1" Y="32"/>
    5657        <UsageCount Value="215"/>
     58        <Loaded Value="True"/>
    5759        <DefaultSyntaxHighlighter Value="Delphi"/>
    5860      </Unit0>
     
    6466        <ResourceBaseClass Value="Form"/>
    6567        <UnitName Value="UMainForm"/>
    66         <EditorIndex Value="6"/>
     68        <EditorIndex Value="9"/>
    6769        <WindowIndex Value="0"/>
    6870        <TopLine Value="99"/>
     
    8991        <TopLine Value="745"/>
    9092        <CursorPos X="46" Y="759"/>
    91         <UsageCount Value="159"/>
     93        <UsageCount Value="154"/>
    9294        <DefaultSyntaxHighlighter Value="Delphi"/>
    9395      </Unit3>
     
    98100        <TopLine Value="1"/>
    99101        <CursorPos X="40" Y="11"/>
    100         <UsageCount Value="159"/>
     102        <UsageCount Value="154"/>
    101103        <DefaultSyntaxHighlighter Value="Delphi"/>
    102104      </Unit4>
     
    107109        <TopLine Value="187"/>
    108110        <CursorPos X="34" Y="201"/>
    109         <UsageCount Value="159"/>
     111        <UsageCount Value="154"/>
    110112      </Unit5>
    111113      <Unit6>
     
    115117        <TopLine Value="1"/>
    116118        <CursorPos X="1" Y="14"/>
    117         <UsageCount Value="159"/>
     119        <UsageCount Value="154"/>
    118120      </Unit6>
    119121      <Unit7>
     
    123125        <TopLine Value="124"/>
    124126        <CursorPos X="42" Y="136"/>
    125         <UsageCount Value="159"/>
     127        <UsageCount Value="154"/>
    126128      </Unit7>
    127129      <Unit8>
     
    131133        <TopLine Value="442"/>
    132134        <CursorPos X="47" Y="455"/>
    133         <UsageCount Value="159"/>
     135        <UsageCount Value="154"/>
    134136      </Unit8>
    135137      <Unit9>
     
    139141        <TopLine Value="78"/>
    140142        <CursorPos X="27" Y="86"/>
    141         <UsageCount Value="51"/>
     143        <UsageCount Value="46"/>
    142144      </Unit9>
    143145      <Unit10>
     
    147149        <TopLine Value="936"/>
    148150        <CursorPos X="35" Y="948"/>
    149         <UsageCount Value="9"/>
     151        <UsageCount Value="4"/>
    150152      </Unit10>
    151153      <Unit11>
     
    154156        <TopLine Value="61"/>
    155157        <CursorPos X="7" Y="68"/>
    156         <UsageCount Value="61"/>
     158        <UsageCount Value="56"/>
    157159      </Unit11>
    158160      <Unit12>
     
    161163        <TopLine Value="139"/>
    162164        <CursorPos X="16" Y="146"/>
    163         <UsageCount Value="61"/>
     165        <UsageCount Value="56"/>
    164166      </Unit12>
    165167      <Unit13>
    166         <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\inc\objpash.inc"/>
    167         <WindowIndex Value="0"/>
    168         <TopLine Value="153"/>
    169         <CursorPos X="8" Y="166"/>
    170         <UsageCount Value="4"/>
     168        <Filename Value="Produce\UProducerTreeView.pas"/>
     169        <UnitName Value="UProducerTreeView"/>
     170        <WindowIndex Value="0"/>
     171        <TopLine Value="69"/>
     172        <CursorPos X="1" Y="82"/>
     173        <UsageCount Value="116"/>
    171174      </Unit13>
    172175      <Unit14>
    173         <Filename Value="Produce\UProducerTreeView.pas"/>
    174         <UnitName Value="UProducerTreeView"/>
    175         <WindowIndex Value="0"/>
    176         <TopLine Value="69"/>
    177         <CursorPos X="1" Y="82"/>
    178         <UsageCount Value="121"/>
     176        <Filename Value="E:\Programy\Lazarus\lcl\comctrls.pp"/>
     177        <UnitName Value="ComCtrls"/>
     178        <WindowIndex Value="0"/>
     179        <TopLine Value="2159"/>
     180        <CursorPos X="14" Y="2178"/>
     181        <UsageCount Value="2"/>
    179182      </Unit14>
    180183      <Unit15>
    181         <Filename Value="E:\Programy\Lazarus\lcl\comctrls.pp"/>
    182         <UnitName Value="ComCtrls"/>
    183         <WindowIndex Value="0"/>
    184         <TopLine Value="2159"/>
    185         <CursorPos X="14" Y="2178"/>
    186         <UsageCount Value="7"/>
     184        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\objpas\classes\classesh.inc"/>
     185        <EditorIndex Value="6"/>
     186        <WindowIndex Value="0"/>
     187        <TopLine Value="19"/>
     188        <CursorPos X="4" Y="32"/>
     189        <UsageCount Value="10"/>
     190        <Loaded Value="True"/>
    187191      </Unit15>
    188192      <Unit16>
    189         <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\objpas\classes\classesh.inc"/>
    190         <WindowIndex Value="0"/>
    191         <TopLine Value="559"/>
    192         <CursorPos X="57" Y="571"/>
    193         <UsageCount Value="4"/>
     193        <Filename Value="Produce\UProducerPascal.pas"/>
     194        <UnitName Value="UProducerPascal"/>
     195        <WindowIndex Value="0"/>
     196        <TopLine Value="320"/>
     197        <CursorPos X="1" Y="327"/>
     198        <UsageCount Value="70"/>
    194199      </Unit16>
    195200      <Unit17>
    196         <Filename Value="Produce\UProducerPascal.pas"/>
    197         <UnitName Value="UProducerPascal"/>
    198         <WindowIndex Value="0"/>
    199         <TopLine Value="320"/>
    200         <CursorPos X="1" Y="327"/>
    201         <UsageCount Value="75"/>
     201        <Filename Value="UProject.pas"/>
     202        <IsPartOfProject Value="True"/>
     203        <UnitName Value="UProject"/>
     204        <EditorIndex Value="8"/>
     205        <WindowIndex Value="0"/>
     206        <TopLine Value="3"/>
     207        <CursorPos X="50" Y="10"/>
     208        <UsageCount Value="136"/>
     209        <Loaded Value="True"/>
     210        <DefaultSyntaxHighlighter Value="Delphi"/>
    202211      </Unit17>
    203212      <Unit18>
    204         <Filename Value="UProject.pas"/>
    205         <IsPartOfProject Value="True"/>
    206         <UnitName Value="UProject"/>
    207         <EditorIndex Value="5"/>
    208         <WindowIndex Value="0"/>
    209         <TopLine Value="3"/>
    210         <CursorPos X="50" Y="10"/>
    211         <UsageCount Value="92"/>
    212         <Loaded Value="True"/>
    213         <DefaultSyntaxHighlighter Value="Delphi"/>
     213        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\inc\wstringh.inc"/>
     214        <WindowIndex Value="0"/>
     215        <TopLine Value="17"/>
     216        <CursorPos X="11" Y="30"/>
     217        <UsageCount Value="9"/>
    214218      </Unit18>
    215219      <Unit19>
    216         <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\inc\wstringh.inc"/>
    217         <WindowIndex Value="0"/>
    218         <TopLine Value="17"/>
    219         <CursorPos X="11" Y="30"/>
    220         <UsageCount Value="14"/>
     220        <Filename Value="Compiler\TranspascalCompiler.pas"/>
     221        <UnitName Value="TranspascalCompiler"/>
     222        <WindowIndex Value="0"/>
     223        <TopLine Value="1"/>
     224        <CursorPos X="33" Y="1"/>
     225        <UsageCount Value="34"/>
    221226      </Unit19>
    222227      <Unit20>
    223         <Filename Value="Compiler\TranspascalCompiler.pas"/>
    224         <UnitName Value="TranspascalCompiler"/>
    225         <WindowIndex Value="0"/>
    226         <TopLine Value="1"/>
    227         <CursorPos X="33" Y="1"/>
    228         <UsageCount Value="39"/>
    229       </Unit20>
    230       <Unit21>
    231228        <Filename Value="Compiler\UCompiler.pas"/>
    232229        <UnitName Value="UCompiler"/>
    233230        <EditorIndex Value="1"/>
    234231        <WindowIndex Value="0"/>
    235         <TopLine Value="56"/>
    236         <CursorPos X="7" Y="68"/>
    237         <UsageCount Value="37"/>
     232        <TopLine Value="5"/>
     233        <CursorPos X="17" Y="67"/>
     234        <UsageCount Value="59"/>
     235        <Loaded Value="True"/>
     236      </Unit20>
     237      <Unit21>
     238        <Filename Value="Compiler\USourceCode.pas"/>
     239        <UnitName Value="USourceCode"/>
     240        <EditorIndex Value="10"/>
     241        <WindowIndex Value="0"/>
     242        <TopLine Value="472"/>
     243        <CursorPos X="42" Y="482"/>
     244        <UsageCount Value="58"/>
    238245        <Loaded Value="True"/>
    239246      </Unit21>
    240247      <Unit22>
    241         <Filename Value="Compiler\USourceCode.pas"/>
    242         <UnitName Value="USourceCode"/>
    243         <IsVisibleTab Value="True"/>
    244         <EditorIndex Value="7"/>
    245         <WindowIndex Value="0"/>
    246         <TopLine Value="472"/>
    247         <CursorPos X="1" Y="485"/>
    248         <UsageCount Value="36"/>
    249         <Loaded Value="True"/>
    250       </Unit22>
    251       <Unit23>
    252248        <Filename Value="Compiler\Analyze\UParser.pas"/>
    253249        <UnitName Value="UParser"/>
    254250        <EditorIndex Value="3"/>
    255251        <WindowIndex Value="0"/>
    256         <TopLine Value="167"/>
    257         <CursorPos X="3" Y="169"/>
    258         <UsageCount Value="37"/>
    259         <Loaded Value="True"/>
     252        <TopLine Value="155"/>
     253        <CursorPos X="26" Y="163"/>
     254        <UsageCount Value="59"/>
     255        <Loaded Value="True"/>
     256      </Unit22>
     257      <Unit23>
     258        <Filename Value="Compiler\Produce\UProducer.pas"/>
     259        <UnitName Value="UProducer"/>
     260        <WindowIndex Value="0"/>
     261        <TopLine Value="1"/>
     262        <CursorPos X="15" Y="4"/>
     263        <UsageCount Value="0"/>
    260264      </Unit23>
    261265      <Unit24>
    262         <Filename Value="Compiler\Produce\UProducer.pas"/>
    263         <UnitName Value="UProducer"/>
    264         <WindowIndex Value="0"/>
    265         <TopLine Value="1"/>
    266         <CursorPos X="15" Y="4"/>
    267         <UsageCount Value="5"/>
    268       </Unit24>
    269       <Unit25>
    270266        <Filename Value="Forms\UProjectManager.pas"/>
    271267        <IsPartOfProject Value="True"/>
     
    276272        <TopLine Value="71"/>
    277273        <CursorPos X="20" Y="76"/>
    278         <UsageCount Value="76"/>
    279         <DefaultSyntaxHighlighter Value="Delphi"/>
    280       </Unit25>
    281       <Unit26>
     274        <UsageCount Value="120"/>
     275        <DefaultSyntaxHighlighter Value="Delphi"/>
     276      </Unit24>
     277      <Unit25>
    282278        <Filename Value="Forms\UCodeForm.pas"/>
    283279        <IsPartOfProject Value="True"/>
     
    287283        <EditorIndex Value="0"/>
    288284        <WindowIndex Value="0"/>
    289         <TopLine Value="7"/>
    290         <CursorPos X="32" Y="16"/>
    291         <UsageCount Value="76"/>
     285        <TopLine Value="1"/>
     286        <CursorPos X="26" Y="17"/>
     287        <UsageCount Value="120"/>
    292288        <Loaded Value="True"/>
    293289        <LoadedDesigner Value="True"/>
    294290        <DefaultSyntaxHighlighter Value="Delphi"/>
    295       </Unit26>
    296       <Unit27>
     291      </Unit25>
     292      <Unit26>
    297293        <Filename Value="Forms\UMessagesForm.pas"/>
    298294        <IsPartOfProject Value="True"/>
     
    300296        <ResourceBaseClass Value="Form"/>
    301297        <UnitName Value="UMessagesForm"/>
    302         <WindowIndex Value="0"/>
    303         <TopLine Value="61"/>
    304         <CursorPos X="24" Y="71"/>
    305         <UsageCount Value="76"/>
    306         <DefaultSyntaxHighlighter Value="Delphi"/>
    307       </Unit27>
    308       <Unit28>
     298        <IsVisibleTab Value="True"/>
     299        <EditorIndex Value="4"/>
     300        <WindowIndex Value="0"/>
     301        <TopLine Value="62"/>
     302        <CursorPos X="38" Y="75"/>
     303        <UsageCount Value="120"/>
     304        <Loaded Value="True"/>
     305        <DefaultSyntaxHighlighter Value="Delphi"/>
     306      </Unit26>
     307      <Unit27>
    309308        <Filename Value="Forms\UCompiledForm.pas"/>
    310309        <IsPartOfProject Value="True"/>
     
    316315        <TopLine Value="5"/>
    317316        <CursorPos X="28" Y="21"/>
    318         <UsageCount Value="75"/>
    319         <DefaultSyntaxHighlighter Value="Delphi"/>
    320       </Unit28>
    321       <Unit29>
     317        <UsageCount Value="119"/>
     318        <DefaultSyntaxHighlighter Value="Delphi"/>
     319      </Unit27>
     320      <Unit28>
    322321        <Filename Value="Forms\UCodeTreeForm.pas"/>
    323322        <IsPartOfProject Value="True"/>
     
    328327        <TopLine Value="1"/>
    329328        <CursorPos X="1" Y="1"/>
    330         <UsageCount Value="75"/>
    331         <DefaultSyntaxHighlighter Value="Delphi"/>
     329        <UsageCount Value="119"/>
     330        <DefaultSyntaxHighlighter Value="Delphi"/>
     331      </Unit28>
     332      <Unit29>
     333        <Filename Value="Compiler\Produce\UProducerTreeView.pas"/>
     334        <UnitName Value="UProducerTreeView"/>
     335        <WindowIndex Value="0"/>
     336        <TopLine Value="291"/>
     337        <CursorPos X="54" Y="304"/>
     338        <UsageCount Value="32"/>
    332339      </Unit29>
    333340      <Unit30>
    334         <Filename Value="Compiler\Produce\UProducerTreeView.pas"/>
    335         <UnitName Value="UProducerTreeView"/>
    336         <WindowIndex Value="0"/>
    337         <TopLine Value="291"/>
    338         <CursorPos X="54" Y="304"/>
    339         <UsageCount Value="37"/>
     341        <Filename Value="E:\Programy\Lazarus\components\synedit\synhighlightermulti.pas"/>
     342        <UnitName Value="SynHighlighterMulti"/>
     343        <WindowIndex Value="0"/>
     344        <TopLine Value="316"/>
     345        <CursorPos X="14" Y="329"/>
     346        <UsageCount Value="32"/>
    340347      </Unit30>
    341348      <Unit31>
    342         <Filename Value="E:\Programy\Lazarus\components\synedit\synhighlightermulti.pas"/>
    343         <UnitName Value="SynHighlighterMulti"/>
    344         <WindowIndex Value="0"/>
    345         <TopLine Value="316"/>
    346         <CursorPos X="14" Y="329"/>
    347         <UsageCount Value="37"/>
     349        <Filename Value="E:\Programy\Lazarus\lcl\include\customform.inc"/>
     350        <WindowIndex Value="0"/>
     351        <TopLine Value="1756"/>
     352        <CursorPos X="31" Y="1770"/>
     353        <UsageCount Value="29"/>
    348354      </Unit31>
    349355      <Unit32>
    350         <Filename Value="E:\Programy\Lazarus\lcl\include\customform.inc"/>
    351         <WindowIndex Value="0"/>
    352         <TopLine Value="1756"/>
    353         <CursorPos X="31" Y="1770"/>
    354         <UsageCount Value="34"/>
     356        <Filename Value="Common\URegistry.pas"/>
     357        <IsPartOfProject Value="True"/>
     358        <UnitName Value="URegistry"/>
     359        <UsageCount Value="112"/>
     360        <DefaultSyntaxHighlighter Value="Delphi"/>
    355361      </Unit32>
    356362      <Unit33>
    357         <Filename Value="Common\URegistry.pas"/>
    358         <IsPartOfProject Value="True"/>
    359         <UnitName Value="URegistry"/>
    360         <UsageCount Value="68"/>
     363        <Filename Value="Common\ULastOpenedList.pas"/>
     364        <IsPartOfProject Value="True"/>
     365        <UnitName Value="ULastOpenedList"/>
     366        <UsageCount Value="112"/>
    361367        <DefaultSyntaxHighlighter Value="Delphi"/>
    362368      </Unit33>
    363369      <Unit34>
    364         <Filename Value="Common\ULastOpenedList.pas"/>
    365         <IsPartOfProject Value="True"/>
    366         <UnitName Value="ULastOpenedList"/>
    367         <UsageCount Value="68"/>
     370        <Filename Value="UApplicationInfo.pas"/>
     371        <IsPartOfProject Value="True"/>
     372        <UnitName Value="UApplicationInfo"/>
     373        <UsageCount Value="111"/>
    368374        <DefaultSyntaxHighlighter Value="Delphi"/>
    369375      </Unit34>
    370376      <Unit35>
    371         <Filename Value="UApplicationInfo.pas"/>
    372         <IsPartOfProject Value="True"/>
    373         <UnitName Value="UApplicationInfo"/>
    374         <UsageCount Value="67"/>
    375         <DefaultSyntaxHighlighter Value="Delphi"/>
     377        <Filename Value="Compiler\Produce\UProducerC.pas"/>
     378        <UnitName Value="UProducerC"/>
     379        <EditorIndex Value="7"/>
     380        <WindowIndex Value="0"/>
     381        <TopLine Value="288"/>
     382        <CursorPos X="57" Y="302"/>
     383        <UsageCount Value="55"/>
     384        <Loaded Value="True"/>
    376385      </Unit35>
    377386      <Unit36>
    378         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    379         <UnitName Value="UProducerC"/>
    380         <EditorIndex Value="4"/>
    381         <WindowIndex Value="0"/>
    382         <TopLine Value="288"/>
    383         <CursorPos X="57" Y="302"/>
    384         <UsageCount Value="33"/>
    385         <Loaded Value="True"/>
     387        <Filename Value="Compiler\Produce\UProducerAsm8051.pas"/>
     388        <UnitName Value="UProducerAsm8051"/>
     389        <WindowIndex Value="0"/>
     390        <TopLine Value="1"/>
     391        <CursorPos X="1" Y="1"/>
     392        <UsageCount Value="28"/>
    386393      </Unit36>
    387394      <Unit37>
    388         <Filename Value="Compiler\Produce\UProducerAsm8051.pas"/>
    389         <UnitName Value="UProducerAsm8051"/>
    390         <WindowIndex Value="0"/>
    391         <TopLine Value="1"/>
    392         <CursorPos X="1" Y="1"/>
    393         <UsageCount Value="33"/>
     395        <Filename Value="Compiler\Produce\UProducerPascal.pas"/>
     396        <UnitName Value="UProducerPascal"/>
     397        <WindowIndex Value="0"/>
     398        <TopLine Value="99"/>
     399        <CursorPos X="57" Y="112"/>
     400        <UsageCount Value="25"/>
    394401      </Unit37>
    395402      <Unit38>
    396         <Filename Value="Compiler\Produce\UProducerPascal.pas"/>
    397         <UnitName Value="UProducerPascal"/>
    398         <WindowIndex Value="0"/>
    399         <TopLine Value="99"/>
    400         <CursorPos X="57" Y="112"/>
    401         <UsageCount Value="30"/>
     403        <Filename Value=""/>
     404        <UsageCount Value="5"/>
     405        <DefaultSyntaxHighlighter Value="None"/>
    402406      </Unit38>
    403407      <Unit39>
    404         <Filename Value=""/>
    405         <UsageCount Value="10"/>
    406         <DefaultSyntaxHighlighter Value="None"/>
     408        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     409        <UnitName Value="UPascalParser"/>
     410        <EditorIndex Value="2"/>
     411        <WindowIndex Value="0"/>
     412        <TopLine Value="326"/>
     413        <CursorPos X="54" Y="348"/>
     414        <UsageCount Value="34"/>
     415        <Loaded Value="True"/>
    407416      </Unit39>
    408417      <Unit40>
    409         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    410         <UnitName Value="UPascalParser"/>
    411         <EditorIndex Value="2"/>
    412         <WindowIndex Value="0"/>
    413         <TopLine Value="806"/>
    414         <CursorPos X="34" Y="811"/>
    415         <UsageCount Value="12"/>
     418        <Filename Value="Compiler\Analyze\UGrammer.pas"/>
     419        <UnitName Value="UGrammer"/>
     420        <EditorIndex Value="12"/>
     421        <WindowIndex Value="0"/>
     422        <TopLine Value="15"/>
     423        <CursorPos X="1" Y="28"/>
     424        <UsageCount Value="32"/>
    416425        <Loaded Value="True"/>
    417426      </Unit40>
     427      <Unit41>
     428        <Filename Value="E:\Programy\Lazarus\components\synedit\synedit.pp"/>
     429        <UnitName Value="SynEdit"/>
     430        <EditorIndex Value="5"/>
     431        <WindowIndex Value="0"/>
     432        <TopLine Value="828"/>
     433        <CursorPos X="27" Y="841"/>
     434        <UsageCount Value="10"/>
     435        <Loaded Value="True"/>
     436      </Unit41>
     437      <Unit42>
     438        <Filename Value="E:\Programy\Lazarus\components\synedit\synedittypes.pp"/>
     439        <UnitName Value="SynEditTypes"/>
     440        <WindowIndex Value="0"/>
     441        <TopLine Value="56"/>
     442        <CursorPos X="3" Y="69"/>
     443        <UsageCount Value="10"/>
     444      </Unit42>
     445      <Unit43>
     446        <Filename Value="E:\Programy\Lazarus\components\synedit\syneditmarkup.pp"/>
     447        <UnitName Value="SynEditMarkup"/>
     448        <WindowIndex Value="0"/>
     449        <TopLine Value="113"/>
     450        <CursorPos X="3" Y="120"/>
     451        <UsageCount Value="10"/>
     452      </Unit43>
     453      <Unit44>
     454        <Filename Value="E:\Programy\Lazarus\components\synedit\synedit.inc"/>
     455        <WindowIndex Value="0"/>
     456        <TopLine Value="1"/>
     457        <CursorPos X="24" Y="11"/>
     458        <UsageCount Value="10"/>
     459      </Unit44>
    418460    </Units>
    419     <JumpHistory Count="30" HistoryIndex="29">
     461    <JumpHistory Count="28" HistoryIndex="27">
    420462      <Position1>
    421463        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    422         <Caret Line="63" Column="1" TopLine="50"/>
     464        <Caret Line="400" Column="1" TopLine="384"/>
    423465      </Position1>
    424466      <Position2>
    425         <Filename Value="Compiler\UCompiler.pas"/>
    426         <Caret Line="68" Column="7" TopLine="56"/>
     467        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     468        <Caret Line="414" Column="1" TopLine="401"/>
    427469      </Position2>
    428470      <Position3>
    429471        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    430         <Caret Line="63" Column="1" TopLine="50"/>
     472        <Caret Line="415" Column="1" TopLine="401"/>
    431473      </Position3>
    432474      <Position4>
    433475        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    434         <Caret Line="64" Column="1" TopLine="50"/>
     476        <Caret Line="418" Column="1" TopLine="401"/>
    435477      </Position4>
    436478      <Position5>
    437         <Filename Value="Forms\UMainForm.pas"/>
    438         <Caret Line="120" Column="1" TopLine="99"/>
     479        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     480        <Caret Line="421" Column="1" TopLine="401"/>
    439481      </Position5>
    440482      <Position6>
    441483        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    442         <Caret Line="63" Column="1" TopLine="50"/>
     484        <Caret Line="428" Column="1" TopLine="415"/>
    443485      </Position6>
    444486      <Position7>
    445487        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    446         <Caret Line="64" Column="1" TopLine="50"/>
     488        <Caret Line="429" Column="1" TopLine="415"/>
    447489      </Position7>
    448490      <Position8>
    449         <Filename Value="Forms\UMainForm.pas"/>
    450         <Caret Line="120" Column="1" TopLine="99"/>
     491        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     492        <Caret Line="431" Column="1" TopLine="415"/>
    451493      </Position8>
    452494      <Position9>
    453495        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    454         <Caret Line="534" Column="47" TopLine="524"/>
     496        <Caret Line="433" Column="1" TopLine="415"/>
    455497      </Position9>
    456498      <Position10>
    457         <Filename Value="Compiler\USourceCode.pas"/>
    458         <Caret Line="474" Column="3" TopLine="470"/>
     499        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     500        <Caret Line="435" Column="1" TopLine="415"/>
    459501      </Position10>
    460502      <Position11>
    461         <Filename Value="Compiler\USourceCode.pas"/>
    462         <Caret Line="473" Column="1" TopLine="468"/>
     503        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     504        <Caret Line="437" Column="1" TopLine="416"/>
    463505      </Position11>
    464506      <Position12>
    465         <Filename Value="Compiler\USourceCode.pas"/>
    466         <Caret Line="475" Column="1" TopLine="468"/>
     507        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     508        <Caret Line="439" Column="1" TopLine="418"/>
    467509      </Position12>
    468510      <Position13>
    469         <Filename Value="Compiler\USourceCode.pas"/>
    470         <Caret Line="476" Column="1" TopLine="468"/>
     511        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     512        <Caret Line="441" Column="1" TopLine="420"/>
    471513      </Position13>
    472514      <Position14>
    473         <Filename Value="Compiler\USourceCode.pas"/>
    474         <Caret Line="477" Column="1" TopLine="468"/>
     515        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     516        <Caret Line="445" Column="17" TopLine="424"/>
    475517      </Position14>
    476518      <Position15>
    477         <Filename Value="Compiler\USourceCode.pas"/>
    478         <Caret Line="480" Column="1" TopLine="468"/>
     519        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     520        <Caret Line="481" Column="3" TopLine="477"/>
    479521      </Position15>
    480522      <Position16>
    481         <Filename Value="Compiler\USourceCode.pas"/>
    482         <Caret Line="484" Column="1" TopLine="468"/>
     523        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     524        <Caret Line="487" Column="1" TopLine="477"/>
    483525      </Position16>
    484526      <Position17>
    485         <Filename Value="Compiler\USourceCode.pas"/>
    486         <Caret Line="487" Column="1" TopLine="468"/>
     527        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     528        <Caret Line="488" Column="1" TopLine="477"/>
    487529      </Position17>
    488530      <Position18>
    489         <Filename Value="Compiler\USourceCode.pas"/>
    490         <Caret Line="473" Column="1" TopLine="468"/>
     531        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     532        <Caret Line="491" Column="1" TopLine="477"/>
    491533      </Position18>
    492534      <Position19>
    493         <Filename Value="Compiler\USourceCode.pas"/>
    494         <Caret Line="475" Column="1" TopLine="468"/>
     535        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     536        <Caret Line="487" Column="1" TopLine="477"/>
    495537      </Position19>
    496538      <Position20>
    497         <Filename Value="Compiler\USourceCode.pas"/>
    498         <Caret Line="476" Column="1" TopLine="468"/>
     539        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     540        <Caret Line="488" Column="1" TopLine="477"/>
    499541      </Position20>
    500542      <Position21>
    501         <Filename Value="Compiler\USourceCode.pas"/>
    502         <Caret Line="477" Column="1" TopLine="468"/>
     543        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     544        <Caret Line="491" Column="1" TopLine="477"/>
    503545      </Position21>
    504546      <Position22>
    505         <Filename Value="Compiler\USourceCode.pas"/>
    506         <Caret Line="480" Column="1" TopLine="468"/>
     547        <Filename Value="Compiler\Analyze\UParser.pas"/>
     548        <Caret Line="317" Column="1" TopLine="304"/>
    507549      </Position22>
    508550      <Position23>
    509         <Filename Value="Compiler\USourceCode.pas"/>
    510         <Caret Line="484" Column="1" TopLine="468"/>
     551        <Filename Value="Compiler\Analyze\UParser.pas"/>
     552        <Caret Line="326" Column="33" TopLine="304"/>
    511553      </Position23>
    512554      <Position24>
    513         <Filename Value="Compiler\USourceCode.pas"/>
    514         <Caret Line="487" Column="1" TopLine="468"/>
     555        <Filename Value="Compiler\Analyze\UParser.pas"/>
     556        <Caret Line="170" Column="1" TopLine="157"/>
    515557      </Position24>
    516558      <Position25>
    517         <Filename Value="Compiler\USourceCode.pas"/>
    518         <Caret Line="473" Column="1" TopLine="468"/>
     559        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     560        <Caret Line="356" Column="1" TopLine="343"/>
    519561      </Position25>
    520562      <Position26>
    521         <Filename Value="Compiler\USourceCode.pas"/>
    522         <Caret Line="484" Column="1" TopLine="468"/>
     563        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     564        <Caret Line="433" Column="1" TopLine="420"/>
    523565      </Position26>
    524566      <Position27>
    525         <Filename Value="Compiler\USourceCode.pas"/>
    526         <Caret Line="487" Column="1" TopLine="468"/>
     567        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     568        <Caret Line="51" Column="3" TopLine="33"/>
    527569      </Position27>
    528570      <Position28>
    529         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    530         <Caret Line="811" Column="34" TopLine="806"/>
     571        <Filename Value="Forms\UMessagesForm.pas"/>
     572        <Caret Line="75" Column="28" TopLine="62"/>
    531573      </Position28>
    532       <Position29>
    533         <Filename Value="Compiler\USourceCode.pas"/>
    534         <Caret Line="485" Column="1" TopLine="472"/>
    535       </Position29>
    536       <Position30>
    537         <Filename Value="Compiler\USourceCode.pas"/>
    538         <Caret Line="487" Column="1" TopLine="472"/>
    539       </Position30>
    540574    </JumpHistory>
    541575  </ProjectOptions>
     
    551585        <SyntaxMode Value="Delphi"/>
    552586        <CStyleOperator Value="False"/>
     587        <AllowLabel Value="False"/>
    553588        <CPPInline Value="False"/>
    554589      </SyntaxOptions>
Note: See TracChangeset for help on using the changeset viewer.