Changeset 68


Ignore:
Timestamp:
Oct 18, 2010, 2:14:52 PM (14 years ago)
Author:
george
Message:
  • Modified: Advanced record parsing.
Location:
branches/Transpascal
Files:
6 edited

Legend:

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

    r67 r68  
    8383    procedure ParseTypeList(SourceCode: TTypeList; Exported: Boolean = False);
    8484    function ParseType(TypeList: TTypeList; ExpectName: Boolean = True; AssignSymbol: string = '='): TType;
     85    function ParseTypeEnumeration(TypeList: TTypeList; Name: string): TType;
     86    function ParseTypeRecord(TypeList: TTypeList; Name: string): TType;
    8587    property OnGetSource: TGetSourceEvent read FOnGetSource
    8688      write FOnGetSource;
     
    744746begin
    745747  with SourceCode do begin
    746     while FNextToken <> 'implementation' do begin
     748    while (FNextToken <> 'implementation') and (FNextTokenType <> ttEndOfFile) do begin
    747749      if FNextToken = 'var' then
    748750        ParseVariableList(Variables)
     
    755757      else if FNextToken = 'function' then
    756758        ParseFunctionList(Functions, True)
    757       else ErrorMessage(SUnknownIdentifier, [FNextToken]);
     759      else begin
     760        ErrorMessage(SUnknownIdentifier, [FNextToken]);
     761        ReadCode;
     762      end;
    758763    end;
    759764  end;
     
    10711076    end;
    10721077    if NextToken = '(' then begin
    1073       // Enumeration
    1074       Expect('(');
    1075       Result := TTypeEnumeration.Create;
    1076       TTypeEnumeration(Result).Parent := TypeList;
    1077       TTypeEnumeration(Result).Name := Name;
    1078       with TTypeEnumeration(Result) do
    1079       with TEnumItem(Items[Items.Add(TEnumItem.Create)]) do begin
    1080         Name := ReadCode;
    1081         if (NextToken = '=') and (FNextTokenType = ttConstantNumber) then begin
    1082           Expect('=');
    1083           Index := StrToInt(ReadCode);
    1084         end;
    1085       end;
    1086       while (NextToken = ',') and (FNextTokenType <> ttEndOfFile) do
    1087       begin
    1088         Expect(',');
    1089         with TTypeEnumeration(Result) do
    1090         with TEnumItem(Items[Items.Add(TEnumItem.Create)]) do begin
    1091           Name := ReadCode;
    1092           if (NextToken = '=') and (FNextTokenType = ttConstantNumber) then begin
    1093             Expect('=');
    1094             Index := StrToInt(ReadCode);
    1095           end;
    1096         end;
    1097       end;
    1098       Expect(')');
     1078      Result := ParseTypeEnumeration(TypeList, Name);
    10991079    end else
    11001080    if NextToken = 'record' then begin
    1101       Expect('record');
    1102       Result := TTypeRecord.Create;
    1103       TTypeRecord(Result).Parent := TypeList;
    1104       TType(Result).Name := Name;
    1105       while (NextToken <> 'end') and (FNextTokenType <> ttEndOfFile) do
    1106       begin
    1107         TTypeRecord(Result).Items.Add(ParseType(TypeList, True, ':'));
    1108         Expect(';');
    1109       end;
    1110       Expect('end');
     1081      Result := ParseTypeRecord(TypeList, Name);
    11111082    end else
    11121083    if NextToken = 'class' then begin
     
    11781149end;
    11791150
     1151function TPascalParser.ParseTypeEnumeration(TypeList: TTypeList; Name: string): TType;
     1152begin
     1153      Expect('(');
     1154      Result := TTypeEnumeration.Create;
     1155      TTypeEnumeration(Result).Parent := TypeList;
     1156      TTypeEnumeration(Result).Name := Name;
     1157      with TTypeEnumeration(Result) do
     1158      with TEnumItem(Items[Items.Add(TEnumItem.Create)]) do begin
     1159        Name := ReadCode;
     1160        if (NextToken = '=') and (FNextTokenType = ttConstantNumber) then begin
     1161          Expect('=');
     1162          Index := StrToInt(ReadCode);
     1163        end;
     1164      end;
     1165      while (NextToken = ',') and (FNextTokenType <> ttEndOfFile) do
     1166      begin
     1167        Expect(',');
     1168        with TTypeEnumeration(Result) do
     1169        with TEnumItem(Items[Items.Add(TEnumItem.Create)]) do begin
     1170          Name := ReadCode;
     1171          if (NextToken = '=') and (FNextTokenType = ttConstantNumber) then begin
     1172            Expect('=');
     1173            Index := StrToInt(ReadCode);
     1174          end;
     1175        end;
     1176      end;
     1177      Expect(')');
     1178end;
     1179
     1180function TPascalParser.ParseTypeRecord(TypeList: TTypeList; Name: string
     1181  ): TType;
     1182var
     1183  Visibility: TTypeVisibility;
     1184begin
     1185  Visibility := tvPublic;
     1186      Expect('record');
     1187      Result := TTypeRecord.Create;
     1188      TTypeRecord(Result).Parent := TypeList;
     1189      TType(Result).Name := Name;
     1190      while (NextToken <> 'end') and (FNextTokenType <> ttEndOfFile) do
     1191      begin
     1192        if NextToken = 'public' then begin
     1193          Expect('public');
     1194          Visibility := tvPublic;
     1195        end else
     1196        if NextToken = 'private' then begin
     1197          Expect('private');
     1198          Visibility := tvPrivate;
     1199        end else
     1200        if NextToken = 'published' then begin
     1201          Expect('published');
     1202          Visibility := tvPublished;
     1203        end else
     1204        if NextToken = 'protected' then begin
     1205          Expect('protected');
     1206          Visibility := tvProtected;
     1207        end else
     1208        if NextToken = 'var' then
     1209          ParseVariableList(TTypeRecord(Result).CommonBlock.Variables)
     1210        else if FNextToken = 'const' then
     1211          ParseConstantList(TTypeRecord(Result).CommonBlock.Constants, True)
     1212        else if FNextToken = 'type' then
     1213          ParseTypeList(TTypeRecord(Result).CommonBlock.Types, True)
     1214        else if FNextToken = 'procedure' then
     1215          ParseFunctionList(TTypeRecord(Result).CommonBlock.Functions, True)
     1216        else if FNextToken = 'function' then
     1217          ParseFunctionList(TTypeRecord(Result).CommonBlock.Functions, True)
     1218        else begin
     1219          TTypeRecord(Result).CommonBlock.Types.Add(ParseType(TypeList, True, ':'));
     1220          TType(TTypeRecord(Result).CommonBlock.Types.Last).Visibility := Visibility;
     1221        end;
     1222        Expect(';');
     1223      end;
     1224      Expect('end');
     1225end;
     1226
    11801227constructor TPascalParser.Create;
    11811228begin
  • branches/Transpascal/Compiler/Produce/UProducerC.pas

    r67 r68  
    299299    Emit('{');
    300300    Inc(Indetation);
    301     for I := 0 to TTypeRecord(AType).Items.Count - 1 do begin
    302       GenerateType(TType(TTypeRecord(AType).Items[I]));
     301    for I := 0 to TTypeRecord(AType).CommonBlock.Types.Count - 1 do begin
     302      GenerateType(TType(TTypeRecord(AType).CommonBlock.Types[I]));
    303303      Emit(';');
    304304    end;
  • branches/Transpascal/Compiler/Produce/UProducerPascal.pas

    r60 r68  
    109109    Emit(AType.Name + ' ' + AssignSymbol + ' record');
    110110    Inc(Indetation);
    111     for I := 0 to TTypeRecord(AType).Items.Count - 1 do begin
    112       GenerateType(TType(TTypeRecord(AType).Items[I]));
     111    for I := 0 to TTypeRecord(AType).CommonBlock.Types.Count - 1 do begin
     112      GenerateType(TType(TTypeRecord(AType).CommonBlock.Types[I]));
    113113      Emit(';');
    114114    end;
  • branches/Transpascal/Compiler/Produce/UProducerTreeView.pas

    r60 r68  
    298298  I: Integer;
    299299begin
    300   if TypeRecord.Items.Count > 0 then begin
    301     for I := 0 to TypeRecord.Items.Count - 1 do
    302     with TType(TypeRecord.Items[I]) do
     300  if TypeRecord.CommonBlock.Types.Count > 0 then begin
     301    for I := 0 to TypeRecord.CommonBlock.Types.Count - 1 do
     302    with TType(TypeRecord.CommonBlock.Types[I]) do
    303303    if not System then
    304       AddNodeType(Node, TType(TypeRecord.Items[I]));
     304      AddNodeType(Node, TType(TypeRecord.CommonBlock.Types[I]));
    305305  end;
    306306end;
  • branches/Transpascal/Compiler/USourceCode.pas

    r65 r68  
    1515
    1616  TNodeType = (ntNone, ntVariable, ntFunction, ntConstant, ntOperator);
     17
     18  TTypeVisibility = (tvPublic, tvPublished, tvPrivate, tvProtected);
    1719
    1820  TValue = Variant; //array of Byte;
     
    156158    Size: Integer;
    157159    UsedType: TType;
     160    Visibility: TTypeVisibility;
    158161  end;
    159162
     
    162165
    163166  TTypeRecord = class(TType)
    164     Items: TObjectList; // TObjectList<TType>
     167    CommonBlock: TCommonBlock;
    165168    constructor Create;
    166169    destructor Destroy; override;
     
    714717begin
    715718  inherited;
    716   Items := TObjectList.Create;
     719  CommonBlock := TCommonBlock.Create;
    717720end;
    718721
    719722destructor TTypeRecord.Destroy;
    720723begin
    721   Items.Free;
     724  CommonBlock.Free;
    722725  inherited Destroy;
    723726end;
  • branches/Transpascal/Transpascal.lpi

    r67 r68  
    4646      </Item4>
    4747    </RequiredPackages>
    48     <Units Count="39">
     48    <Units Count="40">
    4949      <Unit0>
    5050        <Filename Value="Transpascal.lpr"/>
    5151        <IsPartOfProject Value="True"/>
    5252        <UnitName Value="Transpascal"/>
    53         <EditorIndex Value="16"/>
     53        <EditorIndex Value="17"/>
    5454        <WindowIndex Value="0"/>
    5555        <TopLine Value="4"/>
    5656        <CursorPos X="22" Y="22"/>
    57         <UsageCount Value="177"/>
     57        <UsageCount Value="182"/>
    5858        <Loaded Value="True"/>
    5959        <DefaultSyntaxHighlighter Value="Delphi"/>
     
    6666        <ResourceBaseClass Value="Form"/>
    6767        <UnitName Value="UMainForm"/>
    68         <IsVisibleTab Value="True"/>
    69         <EditorIndex Value="12"/>
     68        <EditorIndex Value="13"/>
    7069        <WindowIndex Value="0"/>
    7170        <TopLine Value="96"/>
    72         <CursorPos X="29" Y="110"/>
    73         <UsageCount Value="177"/>
     71        <CursorPos X="35" Y="115"/>
     72        <UsageCount Value="182"/>
    7473        <Loaded Value="True"/>
    7574        <LoadedDesigner Value="True"/>
     
    8382        <TopLine Value="1"/>
    8483        <CursorPos X="1" Y="6"/>
    85         <UsageCount Value="177"/>
     84        <UsageCount Value="182"/>
    8685        <DefaultSyntaxHighlighter Value="Delphi"/>
    8786      </Unit2>
     
    215214        <IsPartOfProject Value="True"/>
    216215        <UnitName Value="UProject"/>
    217         <EditorIndex Value="8"/>
     216        <EditorIndex Value="9"/>
    218217        <WindowIndex Value="0"/>
    219218        <TopLine Value="227"/>
    220219        <CursorPos X="1" Y="241"/>
    221         <UsageCount Value="49"/>
     220        <UsageCount Value="54"/>
    222221        <Loaded Value="True"/>
    223222        <DefaultSyntaxHighlighter Value="Delphi"/>
     
    237236        <TopLine Value="1"/>
    238237        <CursorPos X="33" Y="1"/>
    239         <UsageCount Value="17"/>
     238        <UsageCount Value="19"/>
    240239        <Loaded Value="True"/>
    241240      </Unit21>
     
    247246        <TopLine Value="34"/>
    248247        <CursorPos X="62" Y="47"/>
    249         <UsageCount Value="15"/>
     248        <UsageCount Value="17"/>
    250249        <Loaded Value="True"/>
    251250      </Unit22>
     
    253252        <Filename Value="Compiler\USourceCode.pas"/>
    254253        <UnitName Value="USourceCode"/>
    255         <EditorIndex Value="9"/>
    256         <WindowIndex Value="0"/>
    257         <TopLine Value="69"/>
    258         <CursorPos X="72" Y="16"/>
    259         <UsageCount Value="14"/>
     254        <EditorIndex Value="10"/>
     255        <WindowIndex Value="0"/>
     256        <TopLine Value="711"/>
     257        <CursorPos X="1" Y="725"/>
     258        <UsageCount Value="16"/>
    260259        <Loaded Value="True"/>
    261260      </Unit23>
     
    263262        <Filename Value="Compiler\Analyze\UParser.pas"/>
    264263        <UnitName Value="UParser"/>
    265         <EditorIndex Value="5"/>
    266         <WindowIndex Value="0"/>
    267         <TopLine Value="422"/>
    268         <CursorPos X="34" Y="435"/>
    269         <UsageCount Value="15"/>
     264        <IsVisibleTab Value="True"/>
     265        <EditorIndex Value="6"/>
     266        <WindowIndex Value="0"/>
     267        <TopLine Value="680"/>
     268        <CursorPos X="3" Y="684"/>
     269        <UsageCount Value="17"/>
    270270        <Loaded Value="True"/>
    271271      </Unit24>
     
    288288        <TopLine Value="71"/>
    289289        <CursorPos X="20" Y="76"/>
    290         <UsageCount Value="33"/>
     290        <UsageCount Value="38"/>
    291291        <Loaded Value="True"/>
    292292        <LoadedDesigner Value="True"/>
     
    303303        <TopLine Value="7"/>
    304304        <CursorPos X="32" Y="16"/>
    305         <UsageCount Value="33"/>
     305        <UsageCount Value="38"/>
    306306        <Loaded Value="True"/>
    307307        <LoadedDesigner Value="True"/>
     
    314314        <ResourceBaseClass Value="Form"/>
    315315        <UnitName Value="UMessagesForm"/>
    316         <EditorIndex Value="14"/>
     316        <EditorIndex Value="15"/>
    317317        <WindowIndex Value="0"/>
    318318        <TopLine Value="28"/>
    319319        <CursorPos X="23" Y="46"/>
    320         <UsageCount Value="33"/>
     320        <UsageCount Value="38"/>
    321321        <Loaded Value="True"/>
    322322        <LoadedDesigner Value="True"/>
     
    330330        <ResourceBaseClass Value="Form"/>
    331331        <UnitName Value="UCompiledForm"/>
    332         <EditorIndex Value="10"/>
     332        <EditorIndex Value="11"/>
    333333        <WindowIndex Value="0"/>
    334334        <TopLine Value="5"/>
    335335        <CursorPos X="28" Y="21"/>
    336         <UsageCount Value="32"/>
     336        <UsageCount Value="37"/>
    337337        <Loaded Value="True"/>
    338338        <LoadedDesigner Value="True"/>
     
    345345        <ResourceBaseClass Value="Form"/>
    346346        <UnitName Value="UCodeTreeForm"/>
    347         <EditorIndex Value="15"/>
     347        <EditorIndex Value="16"/>
    348348        <WindowIndex Value="0"/>
    349349        <TopLine Value="1"/>
    350350        <CursorPos X="1" Y="1"/>
    351         <UsageCount Value="32"/>
     351        <UsageCount Value="37"/>
    352352        <Loaded Value="True"/>
    353353        <LoadedDesigner Value="True"/>
     
    359359        <EditorIndex Value="4"/>
    360360        <WindowIndex Value="0"/>
    361         <TopLine Value="350"/>
    362         <CursorPos X="3" Y="355"/>
    363         <UsageCount Value="15"/>
     361        <TopLine Value="291"/>
     362        <CursorPos X="54" Y="304"/>
     363        <UsageCount Value="17"/>
    364364        <Loaded Value="True"/>
    365365      </Unit31>
     
    367367        <Filename Value="E:\Programy\Lazarus\components\synedit\synhighlightermulti.pas"/>
    368368        <UnitName Value="SynHighlighterMulti"/>
    369         <EditorIndex Value="11"/>
     369        <EditorIndex Value="12"/>
    370370        <WindowIndex Value="0"/>
    371371        <TopLine Value="316"/>
    372372        <CursorPos X="14" Y="329"/>
    373         <UsageCount Value="15"/>
     373        <UsageCount Value="17"/>
    374374        <Loaded Value="True"/>
    375375      </Unit32>
    376376      <Unit33>
    377377        <Filename Value="E:\Programy\Lazarus\lcl\include\customform.inc"/>
    378         <EditorIndex Value="13"/>
     378        <EditorIndex Value="14"/>
    379379        <WindowIndex Value="0"/>
    380380        <TopLine Value="1756"/>
    381         <CursorPos X="25" Y="1769"/>
    382         <UsageCount Value="12"/>
     381        <CursorPos X="31" Y="1770"/>
     382        <UsageCount Value="15"/>
    383383        <Loaded Value="True"/>
    384384      </Unit33>
     
    387387        <IsPartOfProject Value="True"/>
    388388        <UnitName Value="URegistry"/>
    389         <UsageCount Value="24"/>
     389        <UsageCount Value="29"/>
    390390      </Unit34>
    391391      <Unit35>
     
    393393        <IsPartOfProject Value="True"/>
    394394        <UnitName Value="ULastOpenedList"/>
    395         <UsageCount Value="24"/>
     395        <UsageCount Value="29"/>
    396396        <DefaultSyntaxHighlighter Value="Delphi"/>
    397397      </Unit35>
     
    400400        <IsPartOfProject Value="True"/>
    401401        <UnitName Value="UApplicationInfo"/>
    402         <UsageCount Value="23"/>
     402        <UsageCount Value="29"/>
    403403        <DefaultSyntaxHighlighter Value="Delphi"/>
    404404      </Unit36>
     
    406406        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    407407        <UnitName Value="UProducerC"/>
    408         <EditorIndex Value="6"/>
    409         <WindowIndex Value="0"/>
    410         <TopLine Value="102"/>
    411         <CursorPos X="42" Y="120"/>
    412         <UsageCount Value="11"/>
     408        <EditorIndex Value="7"/>
     409        <WindowIndex Value="0"/>
     410        <TopLine Value="288"/>
     411        <CursorPos X="57" Y="302"/>
     412        <UsageCount Value="14"/>
    413413        <Loaded Value="True"/>
    414414      </Unit37>
     
    416416        <Filename Value="Compiler\Produce\UProducerAsm8051.pas"/>
    417417        <UnitName Value="UProducerAsm8051"/>
    418         <EditorIndex Value="7"/>
     418        <EditorIndex Value="8"/>
    419419        <WindowIndex Value="0"/>
    420420        <TopLine Value="1"/>
    421421        <CursorPos X="1" Y="1"/>
    422         <UsageCount Value="11"/>
     422        <UsageCount Value="13"/>
    423423        <Loaded Value="True"/>
    424424      </Unit38>
     425      <Unit39>
     426        <Filename Value="Compiler\Produce\UProducerPascal.pas"/>
     427        <UnitName Value="UProducerPascal"/>
     428        <EditorIndex Value="5"/>
     429        <WindowIndex Value="0"/>
     430        <TopLine Value="99"/>
     431        <CursorPos X="57" Y="112"/>
     432        <UsageCount Value="10"/>
     433        <Loaded Value="True"/>
     434      </Unit39>
    425435    </Units>
    426436    <JumpHistory Count="30" HistoryIndex="29">
    427437      <Position1>
    428         <Filename Value="Compiler\UCompiler.pas"/>
    429         <Caret Line="64" Column="1" TopLine="54"/>
     438        <Filename Value="Compiler\Analyze\UParser.pas"/>
     439        <Caret Line="814" Column="1" TopLine="799"/>
    430440      </Position1>
    431441      <Position2>
    432         <Filename Value="Compiler\UCompiler.pas"/>
    433         <Caret Line="65" Column="1" TopLine="54"/>
     442        <Filename Value="Compiler\Analyze\UParser.pas"/>
     443        <Caret Line="816" Column="1" TopLine="799"/>
    434444      </Position2>
    435445      <Position3>
    436         <Filename Value="Compiler\UCompiler.pas"/>
    437         <Caret Line="66" Column="1" TopLine="54"/>
     446        <Filename Value="Compiler\Analyze\UParser.pas"/>
     447        <Caret Line="817" Column="1" TopLine="799"/>
    438448      </Position3>
    439449      <Position4>
    440         <Filename Value="Compiler\UCompiler.pas"/>
    441         <Caret Line="67" Column="1" TopLine="54"/>
     450        <Filename Value="Compiler\Analyze\UParser.pas"/>
     451        <Caret Line="820" Column="1" TopLine="799"/>
    442452      </Position4>
    443453      <Position5>
    444         <Filename Value="Compiler\UCompiler.pas"/>
    445         <Caret Line="68" Column="1" TopLine="54"/>
     454        <Filename Value="Compiler\Analyze\UParser.pas"/>
     455        <Caret Line="822" Column="1" TopLine="801"/>
    446456      </Position5>
    447457      <Position6>
    448         <Filename Value="Compiler\UCompiler.pas"/>
    449         <Caret Line="69" Column="1" TopLine="54"/>
     458        <Filename Value="Compiler\Analyze\UParser.pas"/>
     459        <Caret Line="823" Column="1" TopLine="802"/>
    450460      </Position6>
    451461      <Position7>
    452         <Filename Value="Compiler\UCompiler.pas"/>
    453         <Caret Line="70" Column="1" TopLine="54"/>
     462        <Filename Value="Compiler\Analyze\UParser.pas"/>
     463        <Caret Line="824" Column="1" TopLine="803"/>
    454464      </Position7>
    455465      <Position8>
    456         <Filename Value="Compiler\UCompiler.pas"/>
    457         <Caret Line="71" Column="1" TopLine="54"/>
     466        <Filename Value="Compiler\Analyze\UParser.pas"/>
     467        <Caret Line="826" Column="1" TopLine="805"/>
    458468      </Position8>
    459469      <Position9>
    460         <Filename Value="Compiler\UCompiler.pas"/>
    461         <Caret Line="72" Column="1" TopLine="54"/>
     470        <Filename Value="Compiler\Analyze\UParser.pas"/>
     471        <Caret Line="827" Column="1" TopLine="806"/>
    462472      </Position9>
    463473      <Position10>
    464         <Filename Value="Compiler\UCompiler.pas"/>
    465         <Caret Line="74" Column="34" TopLine="54"/>
     474        <Filename Value="Compiler\Analyze\UParser.pas"/>
     475        <Caret Line="835" Column="1" TopLine="822"/>
    466476      </Position10>
    467477      <Position11>
    468         <Filename Value="Compiler\UCompiler.pas"/>
    469         <Caret Line="70" Column="1" TopLine="54"/>
     478        <Filename Value="Compiler\Analyze\UParser.pas"/>
     479        <Caret Line="836" Column="1" TopLine="822"/>
    470480      </Position11>
    471481      <Position12>
    472         <Filename Value="Compiler\UCompiler.pas"/>
    473         <Caret Line="71" Column="1" TopLine="54"/>
     482        <Filename Value="Compiler\Analyze\UParser.pas"/>
     483        <Caret Line="837" Column="1" TopLine="822"/>
    474484      </Position12>
    475485      <Position13>
    476         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    477         <Caret Line="115" Column="24" TopLine="14"/>
     486        <Filename Value="Compiler\Analyze\UParser.pas"/>
     487        <Caret Line="838" Column="1" TopLine="822"/>
    478488      </Position13>
    479489      <Position14>
    480         <Filename Value="Forms\UMainForm.pas"/>
    481         <Caret Line="110" Column="19" TopLine="96"/>
     490        <Filename Value="Compiler\Analyze\UParser.pas"/>
     491        <Caret Line="841" Column="1" TopLine="822"/>
    482492      </Position14>
    483493      <Position15>
    484         <Filename Value="Compiler\UCompiler.pas"/>
    485         <Caret Line="73" Column="23" TopLine="56"/>
     494        <Filename Value="Compiler\Analyze\UParser.pas"/>
     495        <Caret Line="842" Column="1" TopLine="822"/>
    486496      </Position15>
    487497      <Position16>
    488         <Filename Value="Compiler\UCompiler.pas"/>
    489         <Caret Line="56" Column="26" TopLine="56"/>
     498        <Filename Value="Compiler\Analyze\UParser.pas"/>
     499        <Caret Line="844" Column="1" TopLine="823"/>
    490500      </Position16>
    491501      <Position17>
    492         <Filename Value="Compiler\UCompiler.pas"/>
    493         <Caret Line="47" Column="62" TopLine="34"/>
     502        <Filename Value="Compiler\Analyze\UParser.pas"/>
     503        <Caret Line="845" Column="1" TopLine="824"/>
    494504      </Position17>
    495505      <Position18>
    496         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    497         <Caret Line="116" Column="32" TopLine="99"/>
     506        <Filename Value="Compiler\Analyze\UParser.pas"/>
     507        <Caret Line="849" Column="1" TopLine="828"/>
    498508      </Position18>
    499509      <Position19>
    500         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    501         <Caret Line="111" Column="64" TopLine="99"/>
     510        <Filename Value="Compiler\Analyze\UParser.pas"/>
     511        <Caret Line="852" Column="1" TopLine="831"/>
    502512      </Position19>
    503513      <Position20>
    504         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    505         <Caret Line="127" Column="23" TopLine="108"/>
     514        <Filename Value="Compiler\Analyze\UParser.pas"/>
     515        <Caret Line="871" Column="1" TopLine="858"/>
    506516      </Position20>
    507517      <Position21>
    508         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    509         <Caret Line="120" Column="42" TopLine="102"/>
     518        <Filename Value="Compiler\Analyze\UParser.pas"/>
     519        <Caret Line="874" Column="1" TopLine="858"/>
    510520      </Position21>
    511521      <Position22>
    512522        <Filename Value="Compiler\Analyze\UParser.pas"/>
    513         <Caret Line="434" Column="28" TopLine="422"/>
     523        <Caret Line="875" Column="1" TopLine="858"/>
    514524      </Position22>
    515525      <Position23>
    516526        <Filename Value="Compiler\Analyze\UParser.pas"/>
    517         <Caret Line="435" Column="34" TopLine="422"/>
     527        <Caret Line="876" Column="1" TopLine="858"/>
    518528      </Position23>
    519529      <Position24>
    520         <Filename Value="Forms\UMessagesForm.pas"/>
    521         <Caret Line="45" Column="1" TopLine="28"/>
     530        <Filename Value="Compiler\Analyze\UParser.pas"/>
     531        <Caret Line="877" Column="1" TopLine="858"/>
    522532      </Position24>
    523533      <Position25>
    524         <Filename Value="Forms\UMessagesForm.pas"/>
    525         <Caret Line="46" Column="1" TopLine="28"/>
     534        <Filename Value="Compiler\Analyze\UParser.pas"/>
     535        <Caret Line="881" Column="1" TopLine="860"/>
    526536      </Position25>
    527537      <Position26>
    528         <Filename Value="Forms\UMessagesForm.pas"/>
    529         <Caret Line="48" Column="1" TopLine="28"/>
     538        <Filename Value="Compiler\Analyze\UParser.pas"/>
     539        <Caret Line="883" Column="1" TopLine="862"/>
    530540      </Position26>
    531541      <Position27>
    532         <Filename Value="Forms\UMessagesForm.pas"/>
    533         <Caret Line="49" Column="1" TopLine="28"/>
     542        <Filename Value="Compiler\Analyze\UParser.pas"/>
     543        <Caret Line="884" Column="1" TopLine="863"/>
    534544      </Position27>
    535545      <Position28>
    536         <Filename Value="E:\Programy\Lazarus\lcl\include\customform.inc"/>
    537         <Caret Line="1769" Column="1" TopLine="1756"/>
     546        <Filename Value="Compiler\Analyze\UParser.pas"/>
     547        <Caret Line="747" Column="15" TopLine="736"/>
    538548      </Position28>
    539549      <Position29>
    540         <Filename Value="Forms\UMessagesForm.pas"/>
    541         <Caret Line="46" Column="23" TopLine="28"/>
     550        <Filename Value="Compiler\Analyze\UParser.pas"/>
     551        <Caret Line="1187" Column="1" TopLine="1174"/>
    542552      </Position29>
    543553      <Position30>
    544         <Filename Value="Transpascal.lpr"/>
    545         <Caret Line="22" Column="22" TopLine="4"/>
     554        <Filename Value="Compiler\Analyze\UParser.pas"/>
     555        <Caret Line="653" Column="11" TopLine="647"/>
    546556      </Position30>
    547557    </JumpHistory>
     
    589599  </CompilerOptions>
    590600  <Debugging>
     601    <BreakPoints Count="1">
     602      <Item1>
     603        <Source Value="Compiler\Analyze\UParser.pas"/>
     604        <Line Value="690"/>
     605      </Item1>
     606    </BreakPoints>
    591607    <Exceptions Count="3">
    592608      <Item1>
Note: See TracChangeset for help on using the changeset viewer.