Changeset 79
- Timestamp:
- Oct 22, 2010, 1:19:34 PM (14 years ago)
- Location:
- branches/Transpascal
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/Transpascal/Compiler/Analyze/UPascalParser.pas
r78 r79 31 31 function ParseCommand(SourceCode: TCommonBlock): TCommand; 32 32 procedure ParseBeginEnd(SourceCode: TBeginEnd); 33 procedure ParseFunctionList(SourceCode: TFunctionList; Exported: Boolean = False);33 function ParseFunctionList(SourceCode: TFunctionList; Exported: Boolean = False): Boolean; 34 34 procedure ParseFunctionParameters(SourceCode: TFunction); 35 35 procedure ParseIfThenElse(SourceCode: TIfThenElse); 36 36 procedure ParseForToDo(SourceCode: TForToDo); 37 procedure ParseVariableList(SourceCode: TVariableList; Exported: Boolean = False); 38 procedure ParseVariable(SourceCode: TVariable; Exported: Boolean = False); 39 procedure ParseConstantList(SourceCode: TConstantList; Exported: Boolean = False); 40 procedure ParseTypeList(SourceCode: TTypeList; Exported: Boolean = False; 41 AssignSymbol: string = '='); 37 function ParseVariableList(SourceCode: TVariableList; Exported: Boolean = False): Boolean; 38 procedure ParseVariable(SourceCode: TVariableList; Exported: Boolean = False); 39 function ParseConstantList(SourceCode: TConstantList; Exported: Boolean = False): Boolean; 40 function ParseConstant(SourceCode: TConstantList; Exported: Boolean = False): Boolean; 41 function ParseTypeList(SourceCode: TTypeList; Exported: Boolean = False; 42 AssignSymbol: string = '='): Boolean; 42 43 function ParseType(TypeList: TTypeList; ExpectName: Boolean = True; AssignSymbol: string = '='): TType; 43 44 function ParseTypeSubType(TypeList: TTypeList; Name: string; ExpectName: Boolean): TType; … … 441 442 with SourceCode do begin 442 443 while (NextToken <> EndSymbol) do begin 443 if NextToken = 'var' then begin 444 Expect('var'); 445 ParseVariableList(Variables) 446 end else 447 if NextToken = 'const' then begin 448 Expect('const'); 449 ParseConstantList(Constants) 450 end else 451 if NextToken = 'type' then begin 452 Expect('type'); 453 ParseTypeList(Types); 454 end else 455 if NextToken = 'procedure' then 456 ParseFunctionList(Functions) 457 else if NextToken = 'function' then 458 ParseFunctionList(Functions) 459 else begin 444 if not ParseVariableList(Variables) then 445 if not ParseConstantList(Constants) then 446 if not ParseTypeList(Types) then 447 if not ParseFunctionList(Functions) then begin 460 448 if WithBody then 461 449 ParseBeginEnd(Code); … … 471 459 with SourceCode do begin 472 460 while (NextToken <> 'implementation') and (NextTokenType <> ttEndOfFile) do begin 473 if NextToken = 'var' then begin 474 Expect('var'); 475 ParseVariableList(Variables); 476 end else 477 if NextToken = 'const' then begin 478 Expect('const'); 479 ParseConstantList(Constants, True); 480 end else 481 if NextToken = 'type' then begin 482 Expect('type'); 483 ParseTypeList(Types, True); 484 end else 485 if NextToken = 'procedure' then 486 ParseFunctionList(Functions, True) 487 else if NextToken = 'function' then 488 ParseFunctionList(Functions, True) 489 else begin 461 if not ParseVariableList(Variables, True) then 462 if not ParseConstantList(Constants, True) then 463 if not ParseTypeList(Types, True) then 464 if not ParseFunctionList(Functions, True) then begin 490 465 ErrorMessage(SUnknownIdentifier, [NextToken], -1); 491 466 ReadToken; … … 520 495 { TParserParseFunctionList } 521 496 522 procedureTPascalParser.ParseFunctionList(SourceCode: TFunctionList;523 Exported: Boolean = False) ;497 function TPascalParser.ParseFunctionList(SourceCode: TFunctionList; 498 Exported: Boolean = False): Boolean; 524 499 var 525 500 NewValueType: TType; … … 531 506 FunctionType: TFunctionType; 532 507 begin 508 if (NextToken = 'procedure') or (NextToken = 'function') then begin 533 509 with SourceCode do begin 534 510 if NextToken = 'procedure' then begin … … 607 583 // if UseFunction then UseFunction.Code ; 608 584 end; 585 Result := True; 586 end else Result := False; 609 587 end; 610 588 … … 704 682 { TParserVariableList } 705 683 706 procedure TPascalParser.ParseVariableList(SourceCode: TVariableList; Exported: Boolean = False); 707 var 708 Identifiers: TStringList; 684 function TPascalParser.ParseVariableList(SourceCode: TVariableList; Exported: Boolean = False): Boolean; 685 var 709 686 NewValueType: TType; 710 687 TypeName: string; 688 I: integer; 689 begin 690 if NextToken = 'var' then begin 691 Expect('var'); 692 with SourceCode do begin 693 while IsIdentificator(NextToken) and (NextTokenType <> ttEndOfFile) do begin 694 ParseVariable(SourceCode, Exported); 695 end; 696 end; 697 Result := True; 698 end else Result := False; 699 end; 700 701 { TParserVariable } 702 703 procedure TPascalParser.ParseVariable(SourceCode: TVariableList; Exported: Boolean = False); 704 var 711 705 VariableName: string; 712 706 Variable: TVariable; 713 I: integer; 707 TypeName: string; 708 NewValueType: TType; 709 Identifiers: TStringList; 710 I: Integer; 714 711 begin 715 712 try 716 Identifiers := TStringList.Create;713 Identifiers := TStringList.Create; 717 714 with SourceCode do begin 718 while IsIdentificator(NextToken) and (NextTokenType <> ttEndOfFile) do begin719 715 Identifiers.Clear; 720 716 VariableName := ReadToken; … … 740 736 end; 741 737 Expect(';'); 742 end;743 738 end; 744 739 finally … … 747 742 end; 748 743 749 { TParserVariable }750 751 procedure TPascalParser.ParseVariable(SourceCode: TVariable; Exported: Boolean = False);752 begin753 with SourceCode do begin754 Name := NextToken;755 Expect(':=');756 757 end;758 end;759 760 744 { TParserConstantList } 761 745 762 procedure TPascalParser.ParseConstantList(SourceCode: TConstantList; Exported: Boolean = False); 746 function TPascalParser.ParseConstantList(SourceCode: TConstantList; Exported: Boolean = False): Boolean; 747 begin 748 if NextToken = 'const' then begin 749 Expect('const'); 750 with SourceCode do begin 751 while IsIdentificator(NextToken) do begin 752 ParseConstant(SourceCode, Exported); 753 end; 754 end; 755 Result := True; 756 end else Result := False; 757 end; 758 759 function TPascalParser.ParseConstant(SourceCode: TConstantList; 760 Exported: Boolean): Boolean; 763 761 var 764 762 Identifiers: TStringList; … … 770 768 ConstantValue: string; 771 769 begin 772 Identifiers := TStringList.Create;773 with SourceCode do begin774 while IsIdentificator(NextToken) do begin770 with SourceCode do 771 try 772 Identifiers := TStringList.Create; 775 773 ConstantName := ReadToken; 776 774 Constant := Search(ConstantName); … … 802 800 Value := ConstantValue; 803 801 end; 804 end;805 end;806 Identifiers.Destroy;802 finally 803 Identifiers.Free; 804 end; 807 805 end; 808 806 809 807 { TParserTypeList } 810 808 811 procedureTPascalParser.ParseTypeList(SourceCode: TTypeList;812 Exported: Boolean = False; AssignSymbol: string = '=') ;809 function TPascalParser.ParseTypeList(SourceCode: TTypeList; 810 Exported: Boolean = False; AssignSymbol: string = '='): Boolean; 813 811 var 814 812 NewType: TType; 815 813 begin 816 with SourceCode do 817 begin 818 while IsIdentificator(NextToken) do begin 819 NewType := ParseType(SourceCode, True, AssignSymbol); 820 if Assigned(NewType) then begin 821 NewType.Parent := SourceCode; 822 Add(NewType); 823 end; 824 Expect(';'); 825 end; 826 end; 814 if NextToken = 'type' then begin 815 Expect('type'); 816 with SourceCode do begin 817 while IsIdentificator(NextToken) do begin 818 NewType := ParseType(SourceCode, True, AssignSymbol); 819 if Assigned(NewType) then begin 820 NewType.Parent := SourceCode; 821 Add(NewType); 822 end; 823 Expect(';'); 824 end; 825 end; 826 Result := True; 827 end else Result := False 827 828 end; 828 829 … … 859 860 TypeName: string; 860 861 begin 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 862 // Use existed type 863 if NextTokenType = ttIdentifier then begin 864 TypeName := ReadToken; 865 if ExpectName then begin 866 Result := TType.Create; 867 TType(Result).Parent := TypeList; 868 TType(Result).Name := Name; 869 TType(Result).UsedType := TypeList.Search(TypeName); 870 if not Assigned(TType(Result).UsedType) then 871 ErrorMessage(SUndefinedType, [TypeName], -1); 872 end else begin 873 TType(Result) := TypeList.Search(TypeName); 874 if not Assigned(TType(Result)) then 875 ErrorMessage(SUndefinedType, [TypeName], -1); 876 end; 877 end else Result := nil; 877 878 end; 878 879 … … 896 897 ): TType; 897 898 begin 898 899 900 901 902 903 904 899 if NextToken = '^' then begin 900 Expect('^'); 901 Result := TTypePointer.Create; 902 TTypePointer(Result).Parent := TypeList; 903 TTypePointer(Result).Name := Name; 904 TTypePointer(Result).UsedType := ParseType(TypeList, False); 905 end else Result := nil; 905 906 end; 906 907 … … 945 946 begin 946 947 if NextToken = 'record' then begin 947 SectionType := stVar;948 Visibility := tvPublic;949 Expect('record');950 Result := TTypeRecord.Create;951 TTypeRecord(Result).Parent := TypeList;952 TTypeRecord(Result).CommonBlock.Parent := TypeList.Parent;953 TType(Result).Name := Name;954 while (NextToken <> 'end') and (NextTokenType <> ttEndOfFile) do begin955 if NextToken = 'public' then begin956 Expect('public');957 Visibility := tvPublic;958 end else959 if NextToken = 'private' then begin960 Expect('private');961 Visibility := tvPrivate;962 end else963 if NextToken = 'published' then begin964 Expect('published');965 Visibility := tvPublished;966 end else967 if NextToken = 'protected' then begin968 Expect('protected');969 Visibility := tvProtected;970 end else971 if NextToken = 'var' then begin972 Expect('var');973 SectionType := stVar;974 end else975 if NextToken = 'const' then begin976 Expect('const');977 SectionType := stConst;978 end else979 if NextToken = 'type' then begin980 Expect('type');981 SectionType := stType;982 end else983 if NextToken = 'procedure' then984 ParseFunctionList(TTypeRecord(Result).CommonBlock.Functions, True)985 else if NextToken = 'function' then986 ParseFunctionList(TTypeRecord(Result).CommonBlock.Functions, True)987 else begin988 if SectionType = stVar then begin948 Expect('record'); 949 SectionType := stVar; 950 Visibility := tvPublic; 951 Result := TTypeRecord.Create; 952 TTypeRecord(Result).Parent := TypeList; 953 TTypeRecord(Result).CommonBlock.Parent := TypeList.Parent; 954 TType(Result).Name := Name; 955 while (NextToken <> 'end') and (NextTokenType <> ttEndOfFile) do begin 956 if NextToken = 'public' then begin 957 Expect('public'); 958 Visibility := tvPublic; 959 end else 960 if NextToken = 'private' then begin 961 Expect('private'); 962 Visibility := tvPrivate; 963 end else 964 if NextToken = 'published' then begin 965 Expect('published'); 966 Visibility := tvPublished; 967 end else 968 if NextToken = 'protected' then begin 969 Expect('protected'); 970 Visibility := tvProtected; 971 end else 972 if NextToken = 'var' then begin 973 SectionType := stVar; 974 ParseVariableList(TTypeRecord(Result).CommonBlock.Variables, True); 975 end else 976 if NextToken = 'const' then begin 977 SectionType := stConst; 978 ParseConstantList(TTypeRecord(Result).CommonBlock.Constants, True) 979 end else 980 if NextToken = 'type' then begin 981 SectionType := stType; 982 ParseTypeList(TTypeRecord(Result).CommonBlock.Types, True, '='); 983 end else 984 if NextToken = 'procedure' then 985 ParseFunctionList(TTypeRecord(Result).CommonBlock.Functions, True) 986 else if NextToken = 'function' then 987 ParseFunctionList(TTypeRecord(Result).CommonBlock.Functions, True) 988 else begin 989 if SectionType = stVar then begin 989 990 if IsIdentificator(NextToken) then 990 ParseVariable List(TTypeRecord(Result).CommonBlock.Variables, True)991 else ReadToken;992 //TTypeRecord(Result).CommonBlock.Types.Add(ParseType(TypeList, True, ':'));993 //TType(TTypeRecord(Result).CommonBlock.Types.Last).Visibility := Visibility;994 end995 else if SectionType = stConst then996 ParseConstantList(TTypeRecord(Result).CommonBlock.Constants, True)997 else if SectionType = stType then998 ParseTypeList(TTypeRecord(Result).CommonBlock.Types, True, '=');999 end;1000 end;1001 Expect('end');991 ParseVariable(TTypeRecord(Result).CommonBlock.Variables, True) 992 else ReadToken; 993 //TTypeRecord(Result).CommonBlock.Types.Add(ParseType(TypeList, True, ':')); 994 //TType(TTypeRecord(Result).CommonBlock.Types.Last).Visibility := Visibility; 995 end 996 else if SectionType = stConst then 997 ParseConstant(TTypeRecord(Result).CommonBlock.Constants, True) 998 else if SectionType = stType then 999 ParseType(TTypeRecord(Result).CommonBlock.Types, True, '='); 1000 end; 1001 end; 1002 Expect('end'); 1002 1003 end else Result := nil; 1003 1004 end; … … 1029 1030 begin 1030 1031 if NextToken = 'array' then begin 1031 Expect('array'); 1032 Result := TTypeArray.Create; 1033 TTypeArray(Result).Parent := TypeList; 1034 TType(Result).Name := Name; 1035 if NextToken = '[' then begin 1036 Expect('['); 1032 Expect('array'); 1033 Result := TTypeArray.Create; 1034 TTypeArray(Result).Parent := TypeList; 1035 TType(Result).Name := Name; 1036 if NextToken = '[' then begin 1037 Expect('['); 1038 UseName := NextToken; 1039 if NextTokenType = ttIdentifier then begin 1040 UseType := TypeList.Parent.Types.Search(UseName); 1041 if not Assigned(TTypeArray(Result).IndexType) then 1042 ErrorMessage(SUndefinedType, [UseName], -1) else 1043 TTypeArray(Result).IndexType := UseType; 1044 end else 1045 if NextTokenType = ttConstantNumber then begin 1046 UseType := ParseTypeSubRange(TypeList, Name); 1047 if not Assigned(UseType) then begin 1048 ErrorMessage(SInvalidConstruction, [], -1); 1049 end; 1050 end; 1051 Expect(']'); 1052 end; 1053 Expect('of'); 1037 1054 UseName := NextToken; 1038 if NextTokenType = ttIdentifier then begin 1039 UseType := TypeList.Parent.Types.Search(UseName); 1040 if not Assigned(TTypeArray(Result).IndexType) then 1041 ErrorMessage(SUndefinedType, [UseName], -1) else 1042 TTypeArray(Result).IndexType := UseType; 1043 end else 1044 if NextTokenType = ttConstantNumber then begin 1045 1046 1047 end; 1048 Expect(']'); 1049 end; 1050 Expect('of'); 1051 UseName := NextToken; 1052 TTypeArray(Result).ItemType := ParseType(TypeList, False); 1053 if not Assigned(TTypeArray(Result).ItemType) then 1054 ErrorMessage(SUndefinedType, [UseName], -1); 1055 TTypeArray(Result).ItemType := ParseType(TypeList, False); 1056 if not Assigned(TTypeArray(Result).ItemType) then 1057 ErrorMessage(SUndefinedType, [UseName], -1); 1055 1058 end else Result := nil; 1056 1059 end; -
branches/Transpascal/Transpascal.lpi
r78 r79 223 223 <EditorIndex Value="8"/> 224 224 <WindowIndex Value="0"/> 225 <TopLine Value="16 2"/>226 <CursorPos X="1 " Y="174"/>225 <TopLine Value="164"/> 226 <CursorPos X="14" Y="178"/> 227 227 <UsageCount Value="100"/> 228 228 <Loaded Value="True"/> … … 233 233 <EditorIndex Value="4"/> 234 234 <WindowIndex Value="0"/> 235 <TopLine Value=" 146"/>236 <CursorPos X=" 33" Y="147"/>235 <TopLine Value="369"/> 236 <CursorPos X="1" Y="387"/> 237 237 <UsageCount Value="103"/> 238 238 <Loaded Value="True"/> … … 317 317 <Unit28> 318 318 <Filename Value="E:\Programy\Lazarus\lcl\include\customform.inc"/> 319 <EditorIndex Value="1"/> 320 <WindowIndex Value="0"/> 321 <TopLine Value="1756"/> 319 <WindowIndex Value="0"/> 320 <TopLine Value="1762"/> 322 321 <CursorPos X="1" Y="1769"/> 323 <UsageCount Value="22"/> 324 <Loaded Value="True"/> 322 <UsageCount Value="23"/> 325 323 </Unit28> 326 324 <Unit29> … … 353 351 <EditorIndex Value="2"/> 354 352 <WindowIndex Value="0"/> 355 <TopLine Value="2 85"/>353 <TopLine Value="291"/> 356 354 <CursorPos X="27" Y="298"/> 357 355 <UsageCount Value="100"/> … … 380 378 <EditorIndex Value="0"/> 381 379 <WindowIndex Value="0"/> 382 <TopLine Value="103 7"/>383 <CursorPos X="2 5" Y="1055"/>384 <UsageCount Value="8 0"/>380 <TopLine Value="1034"/> 381 <CursorPos X="28" Y="1047"/> 382 <UsageCount Value="82"/> 385 383 <Loaded Value="True"/> 386 384 </Unit35> … … 444 442 <IsPartOfProject Value="True"/> 445 443 <UnitName Value="UDebugLog"/> 446 <WindowIndex Value="0"/> 447 <TopLine Value="42"/> 448 <CursorPos X="42" Y="55"/> 449 <UsageCount Value="67"/> 444 <EditorIndex Value="1"/> 445 <WindowIndex Value="0"/> 446 <TopLine Value="36"/> 447 <CursorPos X="63" Y="47"/> 448 <UsageCount Value="71"/> 449 <Loaded Value="True"/> 450 450 <DefaultSyntaxHighlighter Value="Delphi"/> 451 451 </Unit43> … … 472 472 <TopLine Value="108"/> 473 473 <CursorPos X="3" Y="121"/> 474 <UsageCount Value="1 1"/>474 <UsageCount Value="13"/> 475 475 <Loaded Value="True"/> 476 476 </Unit46> … … 479 479 <Position1> 480 480 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 481 <Caret Line=" 840" Column="26" TopLine="828"/>481 <Caret Line="974" Column="1" TopLine="953"/> 482 482 </Position1> 483 483 <Position2> 484 484 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 485 <Caret Line=" 842" Column="23" TopLine="828"/>485 <Caret Line="976" Column="1" TopLine="955"/> 486 486 </Position2> 487 487 <Position3> 488 488 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 489 <Caret Line=" 844" Column="30" TopLine="828"/>489 <Caret Line="979" Column="1" TopLine="958"/> 490 490 </Position3> 491 491 <Position4> 492 492 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 493 <Caret Line=" 846" Column="21" TopLine="828"/>493 <Caret Line="980" Column="1" TopLine="959"/> 494 494 </Position4> 495 495 <Position5> 496 496 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 497 <Caret Line=" 890" Column="31" TopLine="873"/>497 <Caret Line="981" Column="24" TopLine="960"/> 498 498 </Position5> 499 499 <Position6> 500 500 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 501 <Caret Line=" 43" Column="30" TopLine="29"/>501 <Caret Line="698" Column="18" TopLine="687"/> 502 502 </Position6> 503 503 <Position7> 504 504 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 505 <Caret Line=" 44" Column="30" TopLine="29"/>505 <Caret Line="696" Column="16" TopLine="687"/> 506 506 </Position7> 507 507 <Position8> 508 508 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 509 <Caret Line=" 846" Column="56" TopLine="839"/>509 <Caret Line="739" Column="1" TopLine="718"/> 510 510 </Position8> 511 511 <Position9> 512 512 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 513 <Caret Line=" 44" Column="27" TopLine="31"/>513 <Caret Line="696" Column="36" TopLine="683"/> 514 514 </Position9> 515 515 <Position10> 516 516 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 517 <Caret Line=" 849" Column="77" TopLine="831"/>517 <Caret Line="695" Column="19" TopLine="683"/> 518 518 </Position10> 519 519 <Position11> 520 520 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 521 <Caret Line=" 859" Column="20" TopLine="848"/>521 <Caret Line="708" Column="1" TopLine="704"/> 522 522 </Position11> 523 523 <Position12> 524 524 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 525 <Caret Line=" 865" Column="12" TopLine="851"/>525 <Caret Line="693" Column="19" TopLine="683"/> 526 526 </Position12> 527 527 <Position13> 528 528 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 529 <Caret Line=" 857" Column="3" TopLine="852"/>529 <Caret Line="38" Column="54" TopLine="25"/> 530 530 </Position13> 531 531 <Position14> 532 532 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 533 <Caret Line=" 43" Column="85" TopLine="42"/>533 <Caret Line="702" Column="64" TopLine="702"/> 534 534 </Position14> 535 535 <Position15> 536 536 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 537 <Caret Line=" 843" Column="33" TopLine="836"/>537 <Caret Line="695" Column="58" TopLine="680"/> 538 538 </Position15> 539 539 <Position16> 540 540 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 541 <Caret Line=" 838" Column="1" TopLine="833"/>541 <Caret Line="706" Column="20" TopLine="698"/> 542 542 </Position16> 543 543 <Position17> 544 544 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 545 <Caret Line=" 839" Column="1" TopLine="833"/>545 <Caret Line="707" Column="23" TopLine="688"/> 546 546 </Position17> 547 547 <Position18> 548 548 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 549 <Caret Line=" 840" Column="1" TopLine="833"/>549 <Caret Line="984" Column="32" TopLine="967"/> 550 550 </Position18> 551 551 <Position19> 552 552 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 553 <Caret Line=" 841" Column="1" TopLine="833"/>553 <Caret Line="991" Column="18" TopLine="967"/> 554 554 </Position19> 555 555 <Position20> 556 556 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 557 <Caret Line=" 843" Column="25" TopLine="833"/>557 <Caret Line="989" Column="74" TopLine="976"/> 558 558 </Position20> 559 559 <Position21> 560 560 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 561 <Caret Line=" 908" Column="7" TopLine="907"/>561 <Caret Line="40" Column="27" TopLine="34"/> 562 562 </Position21> 563 563 <Position22> 564 564 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 565 <Caret Line=" 838" Column="1" TopLine="825"/>565 <Caret Line="762" Column="20" TopLine="739"/> 566 566 </Position22> 567 567 <Position23> 568 568 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 569 <Caret Line=" 839" Column="1" TopLine="825"/>569 <Caret Line="760" Column="17" TopLine="745"/> 570 570 </Position23> 571 571 <Position24> 572 572 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 573 <Caret Line=" 840" Column="1" TopLine="825"/>573 <Caret Line="752" Column="19" TopLine="746"/> 574 574 </Position24> 575 575 <Position25> 576 576 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 577 <Caret Line=" 841" Column="1" TopLine="825"/>577 <Caret Line="769" Column="1" TopLine="759"/> 578 578 </Position25> 579 579 <Position26> 580 580 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 581 <Caret Line=" 843" Column="1" TopLine="825"/>581 <Caret Line="770" Column="21" TopLine="760"/> 582 582 </Position26> 583 583 <Position27> 584 584 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 585 <Caret Line=" 908" Column="1" TopLine="895"/>585 <Caret Line="1041" Column="28" TopLine="1025"/> 586 586 </Position27> 587 587 <Position28> 588 588 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 589 <Caret Line=" 909" Column="1" TopLine="895"/>589 <Caret Line="1039" Column="9" TopLine="1025"/> 590 590 </Position28> 591 591 <Position29> 592 592 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 593 <Caret Line=" 936" Column="1" TopLine="923"/>593 <Caret Line="1046" Column="35" TopLine="1027"/> 594 594 </Position29> 595 595 <Position30> 596 596 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 597 <Caret Line=" 843" Column="22" TopLine="831"/>597 <Caret Line="51" Column="14" TopLine="38"/> 598 598 </Position30> 599 599 </JumpHistory> … … 645 645 <Item1> 646 646 <Source Value="Compiler\Analyze\UPascalParser.pas"/> 647 <Line Value=" 838"/>647 <Line Value="1036"/> 648 648 </Item1> 649 649 </BreakPoints>
Note:
See TracChangeset
for help on using the changeset viewer.