Changeset 78
- Timestamp:
- Oct 22, 2010, 11:34:06 AM (14 years ago)
- Location:
- branches/Transpascal
- Files:
-
- 1 deleted
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/Transpascal/Compiler/Analyze/UParser.pas
r77 r78 58 58 function IsIdentificator(Text: string): boolean; 59 59 function IsKeyword(Text: string): boolean; 60 function IsString(Text: string): Boolean; 60 61 function IsOperator(Text: string): boolean; 61 function Read Code: string;62 function ReadToken: string; 62 63 function NextToken: string; 63 64 function NextTokenType: TTokenType; … … 97 98 // Recovery: try to find nearest same code 98 99 while (NextToken <> Code) and (NextTokenType <> ttEndOfFile) do 99 Read Code;100 end; 101 Read Code;100 ReadToken; 101 end; 102 ReadToken; 102 103 end; 103 104 … … 141 142 if Keywords[I] = Text then 142 143 Result := True; 144 end; 145 146 function TBaseParser.IsString(Text: string): Boolean; 147 begin 148 143 149 end; 144 150 … … 364 370 end; 365 371 366 function TBaseParser.Read Code: string;372 function TBaseParser.ReadToken: string; 367 373 begin 368 374 if TokenIndex < Tokens.Count then begin -
branches/Transpascal/Compiler/Analyze/UPascalParser.pas
r77 r78 41 41 AssignSymbol: string = '='); 42 42 function ParseType(TypeList: TTypeList; ExpectName: Boolean = True; AssignSymbol: string = '='): TType; 43 function ParseTypeSubType(TypeList: TTypeList; Name: string; ExpectName: Boolean): TType; 44 function ParseTypeBase(TypeList: TTypeList; Name: string): TType; 45 function ParseTypePointer(TypeList: TTypeList; Name: string): TType; 43 46 function ParseTypeEnumeration(TypeList: TTypeList; Name: string): TType; 44 47 function ParseTypeRecord(TypeList: TTypeList; Name: string): TType; 48 function ParseTypeClass(TypeList: TTypeList; Name: string): TType; 49 function ParseTypeArray(TypeList: TTypeList; Name: string): TType; 50 function ParseTypeSubRange(TypeList: TTypeList; Name: string): TType; 45 51 property OnGetSource: TGetSourceEvent read FOnGetSource 46 52 write FOnGetSource; … … 61 67 SFunctionNotDeclared = 'Function "%s" not declared.'; 62 68 SUnknownProcName = 'Unknown proc name "%s".'; 63 69 SUnknownModuleType = 'Unknown module name "%s".'; 70 SInvalidConstruction = 'Invalid construction.'; 64 71 65 72 implementation … … 83 90 Parser.FileName := Name; 84 91 Parser.OnErrorMessage := OnErrorMessage; 85 NewModule := Parser.ParseModule(ProgramCode); 86 ProgramCode.Modules.Add(NewModule); 92 //NewModule := 93 Parser.ParseModule(ProgramCode); 94 //ProgramCode.Modules.Add(NewModule); 87 95 Result := True; 88 96 end else Result := False; … … 127 135 (((NextToken = ')') or (NextToken = ']'))) and not (NextTokenType = ttEndOfFile) do begin 128 136 IdentifierType := NextTokenType; 129 Identifier := Read Code;137 Identifier := ReadToken; 130 138 if Identifier = '(' then begin 131 139 // Subexpression … … 305 313 Result := TAssignment.Create; 306 314 TAssignment(Result).CommonBlock := SourceCode; 307 IdentName := Read Code;315 IdentName := ReadToken; 308 316 TAssignment(Result).Target := SourceCode.Variables.Search(IdentName); 309 317 Expect(':='); … … 314 322 if Assigned(SourceCode.Functions.Search(NextToken)) then begin 315 323 // Function call 316 FunctionName := Read Code;324 FunctionName := ReadToken; 317 325 Result := TFunctionCall.Create; 318 326 TFunctionCall(Result).CommonBlock := SourceCode; … … 331 339 end else begin 332 340 Result := nil; 333 ErrorMessage(SUnknownIdentifier, [Read Code], -1);341 ErrorMessage(SUnknownIdentifier, [ReadToken], -1); 334 342 end; 335 343 end else … … 338 346 else begin 339 347 Result := nil; 340 ErrorMessage(SIllegalExpression, [Read Code], -1);348 ErrorMessage(SIllegalExpression, [ReadToken], -1); 341 349 end; 342 350 end; … … 352 360 Result.ParentProgram := ProgramCode; 353 361 ParseUnit(TModuleUnit(Result)); 354 end else begin //if FNextToken = 'program' then begin 362 end else 363 if NextToken = 'program' then begin 355 364 Result := TModuleProgram.Create; 356 365 Result.ParentProgram := ProgramCode; 357 366 ParseProgram(TModuleProgram(Result)); 358 end; 367 end else 368 ErrorMessage(SUnknownModuleType, [NextToken]); 359 369 end; 360 370 … … 366 376 if NextToken = 'program' then begin 367 377 Expect('program'); 368 Name := Read Code;378 Name := ReadToken; 369 379 Expect(';'); 370 380 end else Name := ''; … … 385 395 Expect('unit'); 386 396 with Sourcecode do begin 387 Name := Read Code;397 Name := ReadToken; 388 398 end; 389 399 Expect(';'); … … 479 489 else begin 480 490 ErrorMessage(SUnknownIdentifier, [NextToken], -1); 481 Read Code;491 ReadToken; 482 492 end; 483 493 end; … … 502 512 //ShowMessage(NextCode); 503 513 if NextToken = ';' then 504 Read Code;514 ReadToken; 505 515 end; 506 516 Expect('end'); … … 540 550 541 551 // Read function name 542 UseName := Read Code;552 UseName := ReadToken; 543 553 UseType := SourceCode.Parent.Types.Search(UseName); 544 554 if Assigned(UseType) and ((UseType is TTypeRecord) or 545 555 (UseType is TTypeClass)) then begin 546 556 Expect('.'); 547 UseName := Read Code;557 UseName := ReadToken; 548 558 if UseType is TTypeRecord then begin 549 559 UseFunction := TTypeRecord(UseType).CommonBlock.Functions.Search(UseName); … … 569 579 if FunctionType = ftFunction then begin 570 580 Expect(':'); 571 TypeName := Read Code;581 TypeName := ReadToken; 572 582 NewValueType := Parent.Types.Search(TypeName); 573 583 if not Assigned(NewValueType) then … … 615 625 // while IsIdentificator(NextCode) do begin 616 626 with TParameterList(Parameters) do begin 617 VariableName := Read Code;627 VariableName := ReadToken; 618 628 if VariableName = 'var' then begin 619 629 end else … … 625 635 while NextToken = ',' do begin 626 636 Expect(','); 627 Identifiers.Add(Read Code);637 Identifiers.Add(ReadToken); 628 638 end; 629 639 end else 630 640 ErrorMessage(SRedefineIdentifier, [VariableName], -1); 631 641 Expect(':'); 632 TypeName := Read Code;642 TypeName := ReadToken; 633 643 UseType := Parent.Types.Search(TypeName); 634 644 if not Assigned(UseType) then … … 677 687 begin 678 688 Expect('for'); 679 VariableName := Read Code;689 VariableName := ReadToken; 680 690 ControlVariable := SourceCode.CommonBlock.Variables.Search(VariableName); 681 691 if not Assigned(ControlVariable) then … … 708 718 while IsIdentificator(NextToken) and (NextTokenType <> ttEndOfFile) do begin 709 719 Identifiers.Clear; 710 VariableName := Read Code;720 VariableName := ReadToken; 711 721 Variable := Search(VariableName); 712 722 if not Assigned(Variable) then begin … … 714 724 while NextToken = ',' do begin 715 725 Expect(','); 716 Identifiers.Add(Read Code);726 Identifiers.Add(ReadToken); 717 727 end; 718 728 end else 719 729 ErrorMessage(SRedefineIdentifier, [VariableName], -1); 720 730 Expect(':'); 721 TypeName := Read Code;731 TypeName := ReadToken; 722 732 NewValueType := Parent.Types.Search(TypeName); 723 733 if NewValueType = nil then … … 763 773 with SourceCode do begin 764 774 while IsIdentificator(NextToken) do begin 765 ConstantName := Read Code;775 ConstantName := ReadToken; 766 776 Constant := Search(ConstantName); 767 777 if not Assigned(Constant) then begin … … 769 779 while NextToken = ',' do begin 770 780 Expect(','); 771 Identifiers.Add(Read Code);781 Identifiers.Add(ReadToken); 772 782 end; 773 783 end else … … 775 785 if NextToken = ':' then begin 776 786 Expect(':'); 777 TypeName := Read Code;787 TypeName := ReadToken; 778 788 NewValueType := Parent.Types.Search(TypeName); 779 789 end; 780 790 Expect('='); 781 ConstantValue := Read Code;791 ConstantValue := ReadToken; 782 792 Expect(';'); 783 793 … … 828 838 begin 829 839 if ExpectName then begin 830 Name := Read Code;840 Name := ReadToken; 831 841 Expect(AssignSymbol); 832 842 end; 833 if NextToken = '(' then begin 834 // Enumeration 835 Result := ParseTypeEnumeration(TypeList, Name); 836 end else 837 if NextToken = 'record' then begin 838 Result := ParseTypeRecord(TypeList, Name); 839 end else 840 if NextToken = 'class' then begin 841 Expect('class'); 842 Result := TTypeClass.Create; 843 TTypeClass(Result).Parent := TypeList; 844 TTypeClass(Result).Name := Name; 845 if NextToken <> ';' then begin 846 while (NextToken <> 'end') and (NextTokenType <> ttEndOfFile) do 847 begin 848 TTypeClass(Result).Items.Add(ParseType(TypeList, True, ':')); 849 Expect(';'); 850 end; 851 Expect('end'); 852 end; 853 end else 854 if NextToken = 'array' then begin 855 Expect('array'); 856 Result := TTypeArray.Create; 857 TTypeArray(Result).Parent := TypeList; 858 TType(Result).Name := Name; 859 if NextToken = '[' then begin 860 Expect('['); 861 TypeName := NextToken; 862 TTypeArray(Result).IndexType := ParseType(TypeList, False); 863 if not Assigned(TTypeArray(Result).IndexType) then 864 ErrorMessage(SUndefinedType, [TypeName], -1); 865 Expect(']'); 866 end; 867 Expect('of'); 868 TypeName := NextToken; 869 TTypeArray(Result).ItemType := ParseType(TypeList, False); 870 if not Assigned(TTypeArray(Result).ItemType) then 871 ErrorMessage(SUndefinedType, [TypeName], -1); 872 end else 873 if NextToken = '^' then begin 874 // Pointer 875 Expect('^'); 876 Result := TTypePointer.Create; 877 TTypePointer(Result).Parent := TypeList; 878 TTypePointer(Result).Name := Name; 879 TTypePointer(Result).UsedType := ParseType(TypeList, False); 880 end else 881 if NextToken = 'type' then begin 843 Result := ParseTypeEnumeration(TypeList, Name); 844 if not Assigned(Result) then Result := ParseTypeRecord(TypeList, Name); 845 if not Assigned(Result) then Result := ParseTypeClass(TypeList, Name); 846 if not Assigned(Result) then Result := ParseTypeArray(TypeList, Name); 847 if not Assigned(Result) then Result := ParseTypePointer(TypeList, Name); 848 if not Assigned(Result) then Result := ParseTypeBase(TypeList, Name); 849 if not Assigned(Result) then Result := ParseTypeSubType(TypeList, Name, ExpectName); 850 if not Assigned(Result) then Result := ParseTypeSubRange(TypeList, Name); 851 if not Assigned(Result) then 852 ErrorMessage(SInvalidConstruction, []); 853 end; 854 end; 855 856 function TPascalParser.ParseTypeSubType(TypeList: TTypeList; Name: string; 857 ExpectName: Boolean): TType; 858 var 859 TypeName: string; 860 begin 861 // Use existed type 862 if NextTokenType = ttIdentifier then begin 863 TypeName := ReadToken; 864 if ExpectName then begin 865 Result := TType.Create; 866 TType(Result).Parent := TypeList; 867 TType(Result).Name := Name; 868 TType(Result).UsedType := TypeList.Search(TypeName); 869 if not Assigned(TType(Result).UsedType) then 870 ErrorMessage(SUndefinedType, [TypeName], -1); 871 end else begin 872 TType(Result) := TypeList.Search(TypeName); 873 if not Assigned(TType(Result)) then 874 ErrorMessage(SUndefinedType, [TypeName], -1); 875 end; 876 end else Result := nil; 877 end; 878 879 function TPascalParser.ParseTypeBase(TypeList: TTypeList; Name: string): TType; 880 begin 882 881 // Buildin base type construction 883 Expect('type'); 884 Result := TTypeInherited.Create; 885 TTypeInherited(Result).Parent := TypeList; 886 TTypeInherited(Result).Name := Name; 887 if NextToken = '(' then begin 888 Expect('('); 889 TTypeInherited(Result).UsedType := ParseType(TypeList, False); 890 Expect(')'); 891 end else TTypeInherited(Result).UsedType := nil; 892 end else begin 893 // Use existed type 894 TypeName := ReadCode; 895 if ExpectName then begin 896 Result := TType.Create; 897 TType(Result).Parent := TypeList; 898 TType(Result).Name := Name; 899 TType(Result).UsedType := TypeList.Search(TypeName); 900 if not Assigned(TType(Result).UsedType) then 901 ErrorMessage(SUndefinedType, [TypeName], -1); 902 end else begin 903 TType(Result) := TypeList.Search(TypeName); 904 if not Assigned(TType(Result)) then 905 ErrorMessage(SUndefinedType, [TypeName], -1); 906 end; 907 end; 908 end; 882 if NextToken = 'type' then begin 883 Expect('type'); 884 Result := TTypeInherited.Create; 885 TTypeInherited(Result).Parent := TypeList; 886 TTypeInherited(Result).Name := Name; 887 if NextToken = '(' then begin 888 Expect('('); 889 TTypeInherited(Result).UsedType := ParseType(TypeList, False); 890 Expect(')'); 891 end else TTypeInherited(Result).UsedType := nil; 892 end else Result := nil; 893 end; 894 895 function TPascalParser.ParseTypePointer(TypeList: TTypeList; Name: string 896 ): TType; 897 begin 898 if NextToken = '^' then begin 899 Expect('^'); 900 Result := TTypePointer.Create; 901 TTypePointer(Result).Parent := TypeList; 902 TTypePointer(Result).Name := Name; 903 TTypePointer(Result).UsedType := ParseType(TypeList, False); 904 end else Result := nil; 909 905 end; 910 906 911 907 function TPascalParser.ParseTypeEnumeration(TypeList: TTypeList; Name: string): TType; 912 908 begin 909 if NextToken = '(' then begin 913 910 Expect('('); 914 911 Result := TTypeEnumeration.Create; … … 917 914 with TTypeEnumeration(Result) do 918 915 with TEnumItem(Items[Items.Add(TEnumItem.Create)]) do begin 919 Name := Read Code;916 Name := ReadToken; 920 917 if (NextToken = '=') and (NextTokenType = ttConstantNumber) then begin 921 918 Expect('='); 922 Index := StrToInt(Read Code);919 Index := StrToInt(ReadToken); 923 920 end; 924 921 end; … … 928 925 with TTypeEnumeration(Result) do 929 926 with TEnumItem(Items[Items.Add(TEnumItem.Create)]) do begin 930 Name := Read Code;927 Name := ReadToken; 931 928 if (NextToken = '=') and (NextTokenType = ttConstantNumber) then begin 932 929 Expect('='); 933 Index := StrToInt(Read Code);930 Index := StrToInt(ReadToken); 934 931 end; 935 932 end; 936 933 end; 937 934 Expect(')'); 935 end else Result := nil; 938 936 end; 939 937 … … 946 944 SectionType: TSectionType; 947 945 begin 946 if NextToken = 'record' then begin 948 947 SectionType := stVar; 949 948 Visibility := tvPublic; … … 990 989 if IsIdentificator(NextToken) then 991 990 ParseVariableList(TTypeRecord(Result).CommonBlock.Variables, True) 992 else Read Code;991 else ReadToken; 993 992 //TTypeRecord(Result).CommonBlock.Types.Add(ParseType(TypeList, True, ':')); 994 993 //TType(TTypeRecord(Result).CommonBlock.Types.Last).Visibility := Visibility; … … 1001 1000 end; 1002 1001 Expect('end'); 1002 end else Result := nil; 1003 end; 1004 1005 function TPascalParser.ParseTypeClass(TypeList: TTypeList; Name: string 1006 ): TType; 1007 begin 1008 if NextToken = 'class' then begin 1009 Expect('class'); 1010 Result := TTypeClass.Create; 1011 TTypeClass(Result).Parent := TypeList; 1012 TTypeClass(Result).Name := Name; 1013 if NextToken <> ';' then begin 1014 while (NextToken <> 'end') and (NextTokenType <> ttEndOfFile) do 1015 begin 1016 TTypeClass(Result).Items.Add(ParseType(TypeList, True, ':')); 1017 Expect(';'); 1018 end; 1019 Expect('end'); 1020 end; 1021 end else Result := nil; 1022 end; 1023 1024 function TPascalParser.ParseTypeArray(TypeList: TTypeList; Name: string 1025 ): TType; 1026 var 1027 UseName: string; 1028 UseType: TType; 1029 begin 1030 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('['); 1037 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 end else Result := nil; 1056 end; 1057 1058 function TPascalParser.ParseTypeSubRange(TypeList: TTypeList; Name: string 1059 ): TType; 1060 var 1061 UseName: string; 1062 begin 1063 if NextTokenType = ttConstantString then begin 1064 Result := TTypeSubRange.Create; 1065 TTypeSubRange(Result).Bottom := ReadToken; 1066 Expect('..'); 1067 TTypeSubRange(Result).Top := ReadToken; 1068 end else 1069 if NextTokenType = ttConstantNumber then begin 1070 Result := TTypeSubRange.Create; 1071 TTypeSubRange(Result).Bottom := ReadToken; 1072 Expect('..'); 1073 TTypeSubRange(Result).Top := ReadToken; 1074 end else Result := nil; 1003 1075 end; 1004 1076 … … 1022 1094 with TUsedModule(SourceCode.Items[SourceCode.Add(TUsedModule.Create)]) do 1023 1095 begin 1024 Name := Read Code;1096 Name := ReadToken; 1025 1097 if NextToken = 'in' then begin 1026 1098 Expect('in'); 1027 Location := Read Code;1099 Location := ReadToken; 1028 1100 end else Location := Name + '.pas'; 1029 1101 Module := SourceCode.ParentModule.ParentProgram.Modules.Search(Name); … … 1042 1114 with TUsedModule(SourceCode.Items[SourceCode.Add(TUsedModule.Create)]) do 1043 1115 begin 1044 Name := Read Code;1116 Name := ReadToken; 1045 1117 if NextToken = 'in' then begin 1046 1118 Expect('in'); 1047 Location := Read Code;1119 Location := ReadToken; 1048 1120 end else Location := Name + '.pas'; 1049 1121 Module := SourceCode.ParentModule.ParentProgram.Modules.Search(Name); -
branches/Transpascal/Compiler/USourceCode.pas
r77 r78 170 170 end; 171 171 172 TTypeSubRange = class(TType) 173 Bottom: Variant; 174 Top: Variant; 175 end; 176 172 177 TTypeArray = class(TType) 173 178 IndexType: TType; -
branches/Transpascal/Forms/UMainForm.lfm
r66 r78 45 45 Height = 21 46 46 Top = 2 47 Width = 1 0047 Width = 135 48 48 ItemHeight = 13 49 49 ItemIndex = 1 … … 60 60 end 61 61 object Button1: TButton 62 Left = 1 0162 Left = 136 63 63 Height = 22 64 64 Top = 2 … … 66 66 Action = ABuild 67 67 TabOrder = 1 68 end 69 object CheckBoxLogParsing: TCheckBox 70 Left = 195 71 Height = 17 72 Top = 2 73 Width = 105 74 Caption = 'Log parsing to file' 75 TabOrder = 2 68 76 end 69 77 end … … 127 135 Category = 'Project' 128 136 Caption = 'Close' 137 OnExecute = AProjectCloseExecute 129 138 end 130 139 object ABuild: TAction 131 140 Category = 'Build' 132 141 Caption = 'Build' 133 OnExecute = ButtonCompileClick142 OnExecute = ABuildExecute 134 143 end 135 144 end -
branches/Transpascal/Forms/UMainForm.pas
r77 r78 29 29 ActionList1: TActionList; 30 30 Button1: TButton; 31 CheckBoxLogParsing: TCheckBox; 31 32 ComboBoxTargetSelection: TComboBox; 32 33 CoolDockClient1: TCoolDockClient; … … 47 48 Splitter3: TSplitter; 48 49 ToolBar1: TToolBar; 50 procedure AProjectCloseExecute(Sender: TObject); 49 51 procedure AProjectOpenExecute(Sender: TObject); 50 52 procedure AProjectSaveAsExecute(Sender: TObject); … … 53 55 procedure FormShow(Sender: TObject); 54 56 procedure FormClose(Sender: TObject; var Action: TCloseAction); 55 procedure ButtonCompileClick(Sender: TObject);57 procedure ABuildExecute(Sender: TObject); 56 58 procedure FormCreate(Sender: TObject); 57 59 procedure FormDestroy(Sender: TObject); … … 83 85 { TMainForm } 84 86 85 procedure TMainForm. ButtonCompileClick(Sender: TObject);87 procedure TMainForm.ABuildExecute(Sender: TObject); 86 88 begin 87 89 // Compile project file 90 if CheckBoxLogParsing.Checked then 91 Compiler.Parser.OnDebugLog := CompilerDebugLog 92 else Compiler.Parser.OnDebugLog := nil; 88 93 Compiler.ProducerType := TProducerType(ComboBoxTargetSelection.ItemIndex); 89 94 Compiler.Init; … … 157 162 ComboBoxTargetSelection.ItemIndex := 158 163 ReadIntegerWithDefault('ProducerType', 0); 164 CheckBoxLogParsing.Checked := ReadBoolWithDefault('LogParsing', False); 159 165 finally 160 166 Free; … … 171 177 WriteBool('ReopenLastOpenedFile', ReopenLastOpenedFile); 172 178 WriteInteger('ProducerType', ComboBoxTargetSelection.ItemIndex); 179 WriteBool('LogParsing', CheckBoxLogParsing.Checked); 173 180 finally 174 181 Free; … … 200 207 DeleteFile(DebugLog.FileName); 201 208 Compiler := TCompiler.Create; 202 Compiler.Parser.OnDebugLog := CompilerDebugLog;203 209 Project := TProject.Create; 204 210 LastOpenedFiles := TLastOpenedList.Create; … … 245 251 procedure TMainForm.ComboBox1Change(Sender: TObject); 246 252 begin 247 ButtonCompileClick(Self);253 ABuildExecute(Self); 248 254 end; 249 255 … … 255 261 end; 256 262 263 procedure TMainForm.AProjectCloseExecute(Sender: TObject); 264 begin 265 Close; 266 end; 267 257 268 procedure TMainForm.AProjectSaveAsExecute(Sender: TObject); 258 269 begin … … 264 275 procedure TMainForm.ComboBoxTargetSelectionChange(Sender: TObject); 265 276 begin 266 ButtonCompileClick(Self);277 ABuildExecute(Self); 267 278 end; 268 279 -
branches/Transpascal/Transpascal.lpi
r77 r78 20 20 <StringTable ProductVersion=""/> 21 21 </VersionInfo> 22 <BuildModes Count="1"> 23 <Item1 Name="default" Default="True"/> 24 </BuildModes> 22 25 <PublishOptions> 23 26 <Version Value="2"/> … … 51 54 <IsPartOfProject Value="True"/> 52 55 <UnitName Value="Transpascal"/> 53 <EditorIndex Value=" 6"/>56 <EditorIndex Value="7"/> 54 57 <WindowIndex Value="0"/> 55 58 <TopLine Value="1"/> … … 66 69 <ResourceBaseClass Value="Form"/> 67 70 <UnitName Value="UMainForm"/> 68 <EditorIndex Value=" 5"/>69 <WindowIndex Value="0"/> 70 <TopLine Value=" 195"/>71 <CursorPos X=" 34" Y="213"/>71 <EditorIndex Value="6"/> 72 <WindowIndex Value="0"/> 73 <TopLine Value="255"/> 74 <CursorPos X="29" Y="267"/> 72 75 <UsageCount Value="215"/> 73 76 <Loaded Value="True"/> … … 168 171 <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\objpas\classes\classesh.inc"/> 169 172 <WindowIndex Value="0"/> 170 <TopLine Value=" 225"/>171 <CursorPos X=" 14" Y="259"/>173 <TopLine Value="591"/> 174 <CursorPos X="3" Y="604"/> 172 175 <UsageCount Value="10"/> 173 176 </Unit13> … … 208 211 <Filename Value="Compiler\UCompiler.pas"/> 209 212 <UnitName Value="UCompiler"/> 210 <IsVisibleTab Value="True"/>211 213 <EditorIndex Value="3"/> 212 214 <WindowIndex Value="0"/> 213 <TopLine Value="1 03"/>214 <CursorPos X=" 27" Y="117"/>215 <TopLine Value="1"/> 216 <CursorPos X="62" Y="8"/> 215 217 <UsageCount Value="103"/> 216 218 <Loaded Value="True"/> … … 219 221 <Filename Value="Compiler\USourceCode.pas"/> 220 222 <UnitName Value="USourceCode"/> 221 <EditorIndex Value=" 7"/>222 <WindowIndex Value="0"/> 223 <TopLine Value=" 533"/>224 <CursorPos X=" 23" Y="553"/>223 <EditorIndex Value="8"/> 224 <WindowIndex Value="0"/> 225 <TopLine Value="162"/> 226 <CursorPos X="1" Y="174"/> 225 227 <UsageCount Value="100"/> 226 228 <Loaded Value="True"/> … … 229 231 <Filename Value="Compiler\Analyze\UParser.pas"/> 230 232 <UnitName Value="UParser"/> 231 <WindowIndex Value="0"/> 232 <TopLine Value="81"/> 233 <CursorPos X="49" Y="98"/> 233 <EditorIndex Value="4"/> 234 <WindowIndex Value="0"/> 235 <TopLine Value="146"/> 236 <CursorPos X="33" Y="147"/> 234 237 <UsageCount Value="103"/> 238 <Loaded Value="True"/> 235 239 </Unit20> 236 240 <Unit21> … … 317 321 <TopLine Value="1756"/> 318 322 <CursorPos X="1" Y="1769"/> 319 <UsageCount Value="2 1"/>323 <UsageCount Value="22"/> 320 324 <Loaded Value="True"/> 321 325 </Unit28> … … 340 344 <WindowIndex Value="0"/> 341 345 <TopLine Value="44"/> 342 <CursorPos X=" 40" Y="49"/>346 <CursorPos X="19" Y="58"/> 343 347 <UsageCount Value="200"/> 344 348 <DefaultSyntaxHighlighter Value="Delphi"/> … … 351 355 <TopLine Value="285"/> 352 356 <CursorPos X="27" Y="298"/> 353 <UsageCount Value=" 99"/>357 <UsageCount Value="100"/> 354 358 <Loaded Value="True"/> 355 359 </Unit32> … … 373 377 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 374 378 <UnitName Value="UPascalParser"/> 379 <IsVisibleTab Value="True"/> 375 380 <EditorIndex Value="0"/> 376 381 <WindowIndex Value="0"/> 377 <TopLine Value=" 761"/>378 <CursorPos X="2 7" Y="771"/>382 <TopLine Value="1037"/> 383 <CursorPos X="25" Y="1055"/> 379 384 <UsageCount Value="80"/> 380 385 <Loaded Value="True"/> … … 442 447 <TopLine Value="42"/> 443 448 <CursorPos X="42" Y="55"/> 444 <UsageCount Value="6 5"/>449 <UsageCount Value="67"/> 445 450 <DefaultSyntaxHighlighter Value="Delphi"/> 446 451 </Unit43> … … 463 468 <Filename Value="Compiler\Produce\UProducerGCCC.pas"/> 464 469 <UnitName Value="UProducerGCCC"/> 465 <EditorIndex Value=" 4"/>470 <EditorIndex Value="5"/> 466 471 <WindowIndex Value="0"/> 467 472 <TopLine Value="108"/> 468 473 <CursorPos X="3" Y="121"/> 469 <UsageCount Value="1 0"/>474 <UsageCount Value="11"/> 470 475 <Loaded Value="True"/> 471 476 </Unit46> … … 474 479 <Position1> 475 480 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 476 <Caret Line=" 549" Column="1" TopLine="536"/>481 <Caret Line="840" Column="26" TopLine="828"/> 477 482 </Position1> 478 483 <Position2> 479 484 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 480 <Caret Line=" 564" Column="1" TopLine="551"/>485 <Caret Line="842" Column="23" TopLine="828"/> 481 486 </Position2> 482 487 <Position3> 483 488 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 484 <Caret Line=" 568" Column="1" TopLine="551"/>489 <Caret Line="844" Column="30" TopLine="828"/> 485 490 </Position3> 486 491 <Position4> 487 492 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 488 <Caret Line=" 585" Column="1" TopLine="572"/>493 <Caret Line="846" Column="21" TopLine="828"/> 489 494 </Position4> 490 495 <Position5> 491 496 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 492 <Caret Line=" 588" Column="1" TopLine="572"/>497 <Caret Line="890" Column="31" TopLine="873"/> 493 498 </Position5> 494 499 <Position6> 495 500 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 496 <Caret Line=" 530" Column="32" TopLine="515"/>501 <Caret Line="43" Column="30" TopLine="29"/> 497 502 </Position6> 498 503 <Position7> 499 <Filename Value=" Transpascal.lpr"/>500 <Caret Line=" 18" Column="45" TopLine="7"/>504 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 505 <Caret Line="44" Column="30" TopLine="29"/> 501 506 </Position7> 502 507 <Position8> 503 <Filename Value="Compiler\ UCompiler.pas"/>504 <Caret Line=" 54" Column="29" TopLine="29"/>508 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 509 <Caret Line="846" Column="56" TopLine="839"/> 505 510 </Position8> 506 511 <Position9> 507 <Filename Value="Compiler\ UCompiler.pas"/>508 <Caret Line=" 11" Column="28" TopLine="1"/>512 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 513 <Caret Line="44" Column="27" TopLine="31"/> 509 514 </Position9> 510 515 <Position10> 511 <Filename Value="Compiler\ UCompiler.pas"/>512 <Caret Line=" 10" Column="17" TopLine="1"/>516 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 517 <Caret Line="849" Column="77" TopLine="831"/> 513 518 </Position10> 514 519 <Position11> 515 <Filename Value="Compiler\ Produce\UProducerDynamicC.pas"/>516 <Caret Line=" 361" Column="27" TopLine="354"/>520 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 521 <Caret Line="859" Column="20" TopLine="848"/> 517 522 </Position11> 518 523 <Position12> 519 <Filename Value="Compiler\ Produce\UProducerDynamicC.pas"/>520 <Caret Line=" 59" Column="1" TopLine="46"/>524 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 525 <Caret Line="865" Column="12" TopLine="851"/> 521 526 </Position12> 522 527 <Position13> 523 <Filename Value="Compiler\ Produce\UProducerDynamicC.pas"/>524 <Caret Line=" 116" Column="1" TopLine="102"/>528 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 529 <Caret Line="857" Column="3" TopLine="852"/> 525 530 </Position13> 526 531 <Position14> 527 <Filename Value="Compiler\ Produce\UProducerDynamicC.pas"/>528 <Caret Line=" 115" Column="67" TopLine="103"/>532 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 533 <Caret Line="43" Column="85" TopLine="42"/> 529 534 </Position14> 530 535 <Position15> 531 <Filename Value="Compiler\ Produce\UProducerDynamicC.pas"/>532 <Caret Line=" 121" Column="33" TopLine="108"/>536 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 537 <Caret Line="843" Column="33" TopLine="836"/> 533 538 </Position15> 534 539 <Position16> 535 <Filename Value="Compiler\ UCompiler.pas"/>536 <Caret Line=" 10" Column="17" TopLine="1"/>540 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 541 <Caret Line="838" Column="1" TopLine="833"/> 537 542 </Position16> 538 543 <Position17> 539 <Filename Value="Compiler\ UCompiler.pas"/>540 <Caret Line=" 140" Column="17" TopLine="127"/>544 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 545 <Caret Line="839" Column="1" TopLine="833"/> 541 546 </Position17> 542 547 <Position18> 543 <Filename Value="Compiler\ UCompiler.pas"/>544 <Caret Line=" 141" Column="7" TopLine="132"/>548 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 549 <Caret Line="840" Column="1" TopLine="833"/> 545 550 </Position18> 546 551 <Position19> 547 <Filename Value="Compiler\ UCompiler.pas"/>548 <Caret Line=" 14" Column="21" TopLine="1"/>552 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 553 <Caret Line="841" Column="1" TopLine="833"/> 549 554 </Position19> 550 555 <Position20> 551 <Filename Value="Compiler\ Produce\UProducerGCCC.pas"/>552 <Caret Line=" 15" Column="16" TopLine="2"/>556 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 557 <Caret Line="843" Column="25" TopLine="833"/> 553 558 </Position20> 554 559 <Position21> 555 <Filename Value="Compiler\ Produce\UProducerGCCC.pas"/>556 <Caret Line=" 41" Column="1" TopLine="28"/>560 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 561 <Caret Line="908" Column="7" TopLine="907"/> 557 562 </Position21> 558 563 <Position22> 559 <Filename Value="Compiler\ Produce\UProducerGCCC.pas"/>560 <Caret Line=" 59" Column="1" TopLine="46"/>564 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 565 <Caret Line="838" Column="1" TopLine="825"/> 561 566 </Position22> 562 567 <Position23> 563 <Filename Value="Compiler\ Produce\UProducerGCCC.pas"/>564 <Caret Line=" 115" Column="5" TopLine="102"/>568 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 569 <Caret Line="839" Column="1" TopLine="825"/> 565 570 </Position23> 566 571 <Position24> 567 <Filename Value=" Forms\UMainForm.pas"/>568 <Caret Line=" 213" Column="31" TopLine="210"/>572 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 573 <Caret Line="840" Column="1" TopLine="825"/> 569 574 </Position24> 570 575 <Position25> 571 <Filename Value=" Forms\UMainForm.pas"/>572 <Caret Line=" 10" Column="3" TopLine="1"/>576 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 577 <Caret Line="841" Column="1" TopLine="825"/> 573 578 </Position25> 574 579 <Position26> 575 <Filename Value=" Forms\UMainForm.pas"/>576 <Caret Line=" 95" Column="39" TopLine="82"/>580 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 581 <Caret Line="843" Column="1" TopLine="825"/> 577 582 </Position26> 578 583 <Position27> 579 <Filename Value=" Forms\UMainForm.pas"/>580 <Caret Line=" 88" Column="1" TopLine="83"/>584 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 585 <Caret Line="908" Column="1" TopLine="895"/> 581 586 </Position27> 582 587 <Position28> 583 <Filename Value=" Forms\UMainForm.pas"/>584 <Caret Line=" 238" Column="66" TopLine="222"/>588 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 589 <Caret Line="909" Column="1" TopLine="895"/> 585 590 </Position28> 586 591 <Position29> 587 <Filename Value=" Forms\UMainForm.pas"/>588 <Caret Line=" 172" Column="1" TopLine="150"/>592 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 593 <Caret Line="936" Column="1" TopLine="923"/> 589 594 </Position29> 590 595 <Position30> 591 <Filename Value=" Forms\UMainForm.pas"/>592 <Caret Line=" 213" Column="34" TopLine="195"/>596 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 597 <Caret Line="843" Column="22" TopLine="831"/> 593 598 </Position30> 594 599 </JumpHistory> … … 637 642 </CompilerOptions> 638 643 <Debugging> 644 <BreakPoints Count="1"> 645 <Item1> 646 <Source Value="Compiler\Analyze\UPascalParser.pas"/> 647 <Line Value="838"/> 648 </Item1> 649 </BreakPoints> 639 650 <Exceptions Count="3"> 640 651 <Item1>
Note:
See TracChangeset
for help on using the changeset viewer.