Changeset 72
- Timestamp:
- Oct 20, 2010, 11:02:10 AM (14 years ago)
- Location:
- branches/Transpascal
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/Transpascal/Compiler/Analyze/UParser.pas
r71 r72 6 6 7 7 uses 8 SysUtils, Variants, Classes, 8 SysUtils, Variants, Classes, Contnrs, 9 9 Dialogs, USourceCode, FileUtil; 10 10 … … 19 19 ttOperator, ttEndOfFile, ttLineComment, ttBlockComment1, ttBlockComment2, 20 20 ttUnknown, ttWhiteSpace); 21 22 TToken = class 23 Token: string; 24 CodePosition: TPoint; 25 TokenType: TTokenType; 26 end; 21 27 22 28 { TBaseParser } … … 29 35 FNextTokenType: TTokenType; 30 36 FParserState: TParserState; 31 PreviousChar: char; 32 CurrentChar: char; 37 PreviousChar: Char; 38 CurrentChar: Char; 39 TokenCodePosition: TPoint; 40 procedure GetNextToken; 33 41 public 34 42 ProgramCode: TProgram; 35 CodeStreamPosition: integer;43 CodeStreamPosition: Integer; 36 44 CodePosition: TPoint; 37 LastTokenEnd: TPoint;38 LastTokenStart: TPoint;39 45 SourceCodeText: TStringList; 46 Tokens: TObjectList; // TObjectList<TToken> 47 TokenIndex: Integer; 48 constructor Create; 49 destructor Destroy; override; 40 50 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);46 51 function IsWhiteSpace(Character: char): boolean; 47 52 function IsAlphabetic(Character: char): boolean; … … 49 54 function IsKeyword(Text: string): boolean; 50 55 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); 53 62 property OnErrorMessage: TOnErrorMessage read FOnErrorMessage write FOnErrorMessage; 54 procedure Init;63 procedure Process; 55 64 property FileName: string read FFileName write FFileName; 56 65 end; 57 66 58 67 resourcestring 59 SUnknownIdentifier = 'Unknown identificator "%s".';60 SIllegalExpression = 'Illegal expression "%s".';61 68 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.';69 69 70 70 implementation … … 72 72 { TBaseParser } 73 73 74 procedure TBaseParser.ErrorMessage(const Text: string; const Arguments: array of const); 74 procedure TBaseParser.ErrorMessage(const Text: string; const Arguments: array of const; 75 TokenOffset: Integer); 75 76 begin 76 77 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; 78 82 end; 79 83 80 84 procedure TBaseParser.Expect(Code: string); 81 85 begin 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); 86 88 87 89 // Recovery: try to find nearest same code 88 while ( FNextToken <> Code) and (FNextTokenType <> ttEndOfFile) do89 GetNextToken;90 end; 91 GetNextToken;90 while (NextToken <> Code) and (NextTokenType <> ttEndOfFile) do 91 ReadCode; 92 end; 93 ReadCode; 92 94 end; 93 95 … … 95 97 begin 96 98 Result := (Character in ['a'..'z']) or (Character in ['A'..'Z']); 99 end; 100 101 constructor TBaseParser.Create; 102 begin 103 Tokens := TObjectList.Create; 104 end; 105 106 destructor TBaseParser.Destroy; 107 begin 108 Tokens.Free; 109 inherited Destroy; 97 110 end; 98 111 … … 144 157 end; 145 158 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); 159 procedure TBaseParser.Process; 160 var 161 NewToken: TToken; 162 begin 163 CodePosition := Point(0, 1); 170 164 CurrentChar := #0; 171 165 PreviousChar := #0; … … 173 167 FNextTokenType := ttNone; 174 168 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; 176 179 end; 177 180 … … 184 187 SpecChar: set of char = [';', '.', ',', ':', '(', ')', '[', ']', 185 188 '+', '-', '/', '*', '^', '=', '<', '>', '@']; 186 DoubleSpecChar: array[0..6] of string = (':=', '..', '<=', '>=', '<>', '+=', '-='); 187 begin 188 LastTokenStart := LastTokenEnd; 189 LastTokenEnd := CodePosition; 189 DoubleSpecChar: array[0..6] of string = (':=', '..', '<=', '>=', '<>', 190 '+=', '-='); 191 begin 190 192 FNextToken := ''; 191 193 FNextTokenType := ttNone; 192 194 FParserState := psNone; 193 195 with SourceCodeText do 194 while True do 195 begin 196 while True do begin 196 197 if CodeStreamPosition < Length(Text) then begin 197 198 CurrentChar := Text[CodeStreamPosition]; … … 204 205 205 206 if FParserState = psNone then begin 207 TokenCodePosition := CodePosition; 206 208 if IsWhiteSpace(CurrentChar) then 207 209 FParserState := psWhiteSpace … … 293 295 Inc(CodePosition.X); 294 296 if (CurrentChar = #13) then begin 295 CodePosition.X := 1;297 CodePosition.X := 0; 296 298 Inc(CodePosition.Y); 297 299 end; … … 305 307 function TBaseParser.ReadCode: string; 306 308 begin 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 := ''; 310 313 end; 311 314 312 315 function TBaseParser.NextToken: string; 313 316 begin 314 Result := FNextToken; 317 if TokenIndex < Tokens.Count then begin 318 Result := TToken(Tokens[TokenIndex]).Token; 319 end else Result := ''; 315 320 end; 316 321 317 322 function TBaseParser.NextTokenType: TTokenType; 318 323 begin 319 Result := FNextTokenType; 324 if TokenIndex < Tokens.Count then begin 325 Result := TToken(Tokens[TokenIndex]).TokenType; 326 end else Result := ttEndOfFile; 320 327 end; 321 328 -
branches/Transpascal/Compiler/Analyze/UPascalParser.pas
r71 r72 47 47 48 48 49 resourcestring 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 49 61 implementation 50 62 … … 63 75 if Assigned(OnGetSource) then begin 64 76 if FOnGetSource(Name, Parser.SourceCodeText) then begin 65 Parser. Init;77 Parser.Process; 66 78 Parser.FileName := Name; 67 79 Parser.OnErrorMessage := OnErrorMessage; … … 192 204 end; 193 205 end else begin 194 ErrorMessage(SUnknownIdentifier, [Identifier] );206 ErrorMessage(SUnknownIdentifier, [Identifier], -1); 195 207 end; 196 208 end; … … 326 338 begin 327 339 Result := nil; 328 ErrorMessage(SUnknownIdentifier, [ReadCode] );340 ErrorMessage(SUnknownIdentifier, [ReadCode], -1); 329 341 end; 330 342 end … … 334 346 begin 335 347 Result := nil; 336 ErrorMessage(SIllegalExpression, [ReadCode] );348 ErrorMessage(SIllegalExpression, [ReadCode], -1); 337 349 end; 338 350 end; … … 454 466 ParseFunctionList(Functions, True) 455 467 else begin 456 ErrorMessage(SUnknownIdentifier, [NextToken] );468 ErrorMessage(SUnknownIdentifier, [NextToken], -1); 457 469 ReadCode; 458 470 end; … … 529 541 end; 530 542 end else 531 ErrorMessage(SRedefineIdentifier, [VariableName] );543 ErrorMessage(SRedefineIdentifier, [VariableName], 0); 532 544 Expect(':'); 533 545 TypeName := ReadCode; 534 546 NewValueType := Parent.Types.Search(TypeName); 535 547 if not Assigned(NewValueType) then 536 ErrorMessage(STypeNotDefined, [TypeName] )548 ErrorMessage(STypeNotDefined, [TypeName], -1) 537 549 else 538 550 for I := 0 to Identifiers.Count - 1 do … … 554 566 NewValueType := Parent.Types.Search(TypeName); 555 567 if not Assigned(NewValueType) then 556 ErrorMessage(STypeNotDefined, [TypeName] )568 ErrorMessage(STypeNotDefined, [TypeName], -1) 557 569 else 558 570 begin … … 611 623 ControlVariable := SourceCode.CommonBlock.Variables.Search(VariableName); 612 624 if not Assigned(ControlVariable) then 613 ErrorMessage(SUndefinedVariable, [VariableName] );625 ErrorMessage(SUndefinedVariable, [VariableName], 0); 614 626 Expect(':='); 615 627 Start.CommonBlock := CommonBlock; … … 653 665 end 654 666 else 655 ErrorMessage(SRedefineIdentifier, [VariableName] );667 ErrorMessage(SRedefineIdentifier, [VariableName], 0); 656 668 Expect(':'); 657 669 TypeName := ReadCode; 658 670 NewValueType := Parent.Types.Search(TypeName); 659 671 if NewValueType = nil then 660 ErrorMessage(STypeNotDefined, [TypeName] )672 ErrorMessage(STypeNotDefined, [TypeName], -1) 661 673 else 662 674 for I := 0 to Identifiers.Count - 1 do … … 714 726 end 715 727 else 716 ErrorMessage(SRedefineIdentifier, [ConstantName] );728 ErrorMessage(SRedefineIdentifier, [ConstantName], 0); 717 729 Expect(':'); 718 730 TypeName := ReadCode; … … 723 735 724 736 if NewValueType = nil then 725 ErrorMessage(STypeNotDefined, [TypeName] )737 ErrorMessage(STypeNotDefined, [TypeName], -1) 726 738 else 727 739 for I := 0 to Identifiers.Count - 1 do … … 800 812 TTypeArray(Result).IndexType := ParseType(TypeList, False); 801 813 if not Assigned(TTypeArray(Result).IndexType) then 802 ErrorMessage(SUndefinedType, [TypeName] );814 ErrorMessage(SUndefinedType, [TypeName], 0); 803 815 Expect(']'); 804 816 end; … … 807 819 TTypeArray(Result).ItemType := ParseType(TypeList, False); 808 820 if not Assigned(TTypeArray(Result).ItemType) then 809 ErrorMessage(SUndefinedType, [TypeName] );821 ErrorMessage(SUndefinedType, [TypeName], 0); 810 822 end else 811 823 if NextToken = '^' then begin … … 834 846 TType(Result).UsedType := TypeList.Search(TypeName); 835 847 if not Assigned(TType(Result).UsedType) then 836 ErrorMessage(SUndefinedType, [TypeName] );848 ErrorMessage(SUndefinedType, [TypeName], 0); 837 849 end else begin 838 850 TType(Result) := TypeList.Search(TypeName); 839 851 if not Assigned(TType(Result)) then 840 ErrorMessage(SUndefinedType, [TypeName] );852 ErrorMessage(SUndefinedType, [TypeName], 0); 841 853 end; 842 854 end; … … 922 934 constructor TPascalParser.Create; 923 935 begin 936 inherited; 924 937 end; 925 938 … … 949 962 Exported := AExported; 950 963 end else begin 951 ErrorMessage(SUnitNotFound, [Name] );964 ErrorMessage(SUnitNotFound, [Name], -2); 952 965 SourceCode.Delete(SourceCode.Count - 1); 953 966 end; … … 966 979 if not Assigned(Module) then begin 967 980 if not ParseFile(Name) then begin 968 ErrorMessage(SUnitNotFound, [Name] );981 ErrorMessage(SUnitNotFound, [Name], -2); 969 982 SourceCode.Delete(SourceCode.Count - 1); 970 983 end; -
branches/Transpascal/Compiler/TranspascalCompiler.lpk
r70 r72 15 15 </Other> 16 16 </CompilerOptions> 17 <Files Count=" 9">17 <Files Count="10"> 18 18 <Item1> 19 19 <Filename Value="UCompiler.pas"/> … … 52 52 <UnitName Value="UPascalParser"/> 53 53 </Item9> 54 <Item10> 55 <Filename Value="Analyze\UGrammer.pas"/> 56 <UnitName Value="UGrammer"/> 57 </Item10> 54 58 </Files> 55 59 <Type Value="RunAndDesignTime"/> -
branches/Transpascal/Compiler/TranspascalCompiler.pas
r70 r72 9 9 uses 10 10 UCompiler, USourceCode, UProducerTreeView, UProducer, UProducerAsm8051, 11 UProducerC, UProducerPascal, UParser, UPascalParser, LazarusPackageIntf; 11 UProducerC, UProducerPascal, UParser, UPascalParser, UGrammer, 12 LazarusPackageIntf; 12 13 13 14 implementation -
branches/Transpascal/Compiler/UCompiler.pas
r71 r72 65 65 Parser.FileName := ModuleName; 66 66 Parser.SourceCodeText := Source; 67 Parser. Init;67 Parser.Process; 68 68 //ShowMessage(IntToHex(Integer(Addr(Parser.OnGetSource)), 8)); 69 69 NewModule := Parser.ParseModule(ProgramCode); -
branches/Transpascal/Forms/UMessagesForm.pas
r69 r72 65 65 var 66 66 ProjectFile: TProjectFile; 67 P: TPoint; 67 68 begin 68 69 with MainForm, CodeForm do -
branches/Transpascal/Transpascal.lpi
r71 r72 46 46 </Item4> 47 47 </RequiredPackages> 48 <Units Count="4 1">48 <Units Count="45"> 49 49 <Unit0> 50 50 <Filename Value="Transpascal.lpr"/> 51 51 <IsPartOfProject Value="True"/> 52 52 <UnitName Value="Transpascal"/> 53 <EditorIndex Value="11"/> 53 54 <WindowIndex Value="0"/> 54 55 <TopLine Value="7"/> 55 <CursorPos X=" 29" Y="24"/>56 <CursorPos X="1" Y="32"/> 56 57 <UsageCount Value="215"/> 58 <Loaded Value="True"/> 57 59 <DefaultSyntaxHighlighter Value="Delphi"/> 58 60 </Unit0> … … 64 66 <ResourceBaseClass Value="Form"/> 65 67 <UnitName Value="UMainForm"/> 66 <EditorIndex Value=" 6"/>68 <EditorIndex Value="9"/> 67 69 <WindowIndex Value="0"/> 68 70 <TopLine Value="99"/> … … 89 91 <TopLine Value="745"/> 90 92 <CursorPos X="46" Y="759"/> 91 <UsageCount Value="15 9"/>93 <UsageCount Value="154"/> 92 94 <DefaultSyntaxHighlighter Value="Delphi"/> 93 95 </Unit3> … … 98 100 <TopLine Value="1"/> 99 101 <CursorPos X="40" Y="11"/> 100 <UsageCount Value="15 9"/>102 <UsageCount Value="154"/> 101 103 <DefaultSyntaxHighlighter Value="Delphi"/> 102 104 </Unit4> … … 107 109 <TopLine Value="187"/> 108 110 <CursorPos X="34" Y="201"/> 109 <UsageCount Value="15 9"/>111 <UsageCount Value="154"/> 110 112 </Unit5> 111 113 <Unit6> … … 115 117 <TopLine Value="1"/> 116 118 <CursorPos X="1" Y="14"/> 117 <UsageCount Value="15 9"/>119 <UsageCount Value="154"/> 118 120 </Unit6> 119 121 <Unit7> … … 123 125 <TopLine Value="124"/> 124 126 <CursorPos X="42" Y="136"/> 125 <UsageCount Value="15 9"/>127 <UsageCount Value="154"/> 126 128 </Unit7> 127 129 <Unit8> … … 131 133 <TopLine Value="442"/> 132 134 <CursorPos X="47" Y="455"/> 133 <UsageCount Value="15 9"/>135 <UsageCount Value="154"/> 134 136 </Unit8> 135 137 <Unit9> … … 139 141 <TopLine Value="78"/> 140 142 <CursorPos X="27" Y="86"/> 141 <UsageCount Value=" 51"/>143 <UsageCount Value="46"/> 142 144 </Unit9> 143 145 <Unit10> … … 147 149 <TopLine Value="936"/> 148 150 <CursorPos X="35" Y="948"/> 149 <UsageCount Value=" 9"/>151 <UsageCount Value="4"/> 150 152 </Unit10> 151 153 <Unit11> … … 154 156 <TopLine Value="61"/> 155 157 <CursorPos X="7" Y="68"/> 156 <UsageCount Value=" 61"/>158 <UsageCount Value="56"/> 157 159 </Unit11> 158 160 <Unit12> … … 161 163 <TopLine Value="139"/> 162 164 <CursorPos X="16" Y="146"/> 163 <UsageCount Value=" 61"/>165 <UsageCount Value="56"/> 164 166 </Unit12> 165 167 <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"/> 171 174 </Unit13> 172 175 <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"/> 179 182 </Unit14> 180 183 <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"/> 187 191 </Unit15> 188 192 <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"/> 194 199 </Unit16> 195 200 <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"/> 202 211 </Unit17> 203 212 <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"/> 214 218 </Unit18> 215 219 <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"/> 221 226 </Unit19> 222 227 <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>231 228 <Filename Value="Compiler\UCompiler.pas"/> 232 229 <UnitName Value="UCompiler"/> 233 230 <EditorIndex Value="1"/> 234 231 <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"/> 238 245 <Loaded Value="True"/> 239 246 </Unit21> 240 247 <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>252 248 <Filename Value="Compiler\Analyze\UParser.pas"/> 253 249 <UnitName Value="UParser"/> 254 250 <EditorIndex Value="3"/> 255 251 <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"/> 260 264 </Unit23> 261 265 <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>270 266 <Filename Value="Forms\UProjectManager.pas"/> 271 267 <IsPartOfProject Value="True"/> … … 276 272 <TopLine Value="71"/> 277 273 <CursorPos X="20" Y="76"/> 278 <UsageCount Value=" 76"/>279 <DefaultSyntaxHighlighter Value="Delphi"/> 280 </Unit2 5>281 <Unit2 6>274 <UsageCount Value="120"/> 275 <DefaultSyntaxHighlighter Value="Delphi"/> 276 </Unit24> 277 <Unit25> 282 278 <Filename Value="Forms\UCodeForm.pas"/> 283 279 <IsPartOfProject Value="True"/> … … 287 283 <EditorIndex Value="0"/> 288 284 <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"/> 292 288 <Loaded Value="True"/> 293 289 <LoadedDesigner Value="True"/> 294 290 <DefaultSyntaxHighlighter Value="Delphi"/> 295 </Unit2 6>296 <Unit2 7>291 </Unit25> 292 <Unit26> 297 293 <Filename Value="Forms\UMessagesForm.pas"/> 298 294 <IsPartOfProject Value="True"/> … … 300 296 <ResourceBaseClass Value="Form"/> 301 297 <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> 309 308 <Filename Value="Forms\UCompiledForm.pas"/> 310 309 <IsPartOfProject Value="True"/> … … 316 315 <TopLine Value="5"/> 317 316 <CursorPos X="28" Y="21"/> 318 <UsageCount Value=" 75"/>319 <DefaultSyntaxHighlighter Value="Delphi"/> 320 </Unit2 8>321 <Unit2 9>317 <UsageCount Value="119"/> 318 <DefaultSyntaxHighlighter Value="Delphi"/> 319 </Unit27> 320 <Unit28> 322 321 <Filename Value="Forms\UCodeTreeForm.pas"/> 323 322 <IsPartOfProject Value="True"/> … … 328 327 <TopLine Value="1"/> 329 328 <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"/> 332 339 </Unit29> 333 340 <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="3 7"/>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"/> 340 347 </Unit30> 341 348 <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"/> 348 354 </Unit31> 349 355 <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"/> 355 361 </Unit32> 356 362 <Unit33> 357 <Filename Value="Common\U Registry.pas"/>358 <IsPartOfProject Value="True"/> 359 <UnitName Value="U Registry"/>360 <UsageCount Value=" 68"/>363 <Filename Value="Common\ULastOpenedList.pas"/> 364 <IsPartOfProject Value="True"/> 365 <UnitName Value="ULastOpenedList"/> 366 <UsageCount Value="112"/> 361 367 <DefaultSyntaxHighlighter Value="Delphi"/> 362 368 </Unit33> 363 369 <Unit34> 364 <Filename Value=" Common\ULastOpenedList.pas"/>365 <IsPartOfProject Value="True"/> 366 <UnitName Value="U LastOpenedList"/>367 <UsageCount Value=" 68"/>370 <Filename Value="UApplicationInfo.pas"/> 371 <IsPartOfProject Value="True"/> 372 <UnitName Value="UApplicationInfo"/> 373 <UsageCount Value="111"/> 368 374 <DefaultSyntaxHighlighter Value="Delphi"/> 369 375 </Unit34> 370 376 <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"/> 376 385 </Unit35> 377 386 <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"/> 386 393 </Unit36> 387 394 <Unit37> 388 <Filename Value="Compiler\Produce\UProducer Asm8051.pas"/>389 <UnitName Value="UProducer Asm8051"/>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"/> 394 401 </Unit37> 395 402 <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"/> 402 406 </Unit38> 403 407 <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"/> 407 416 </Unit39> 408 417 <Unit40> 409 <Filename Value="Compiler\Analyze\U PascalParser.pas"/>410 <UnitName Value="U PascalParser"/>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"/> 416 425 <Loaded Value="True"/> 417 426 </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> 418 460 </Units> 419 <JumpHistory Count=" 30" HistoryIndex="29">461 <JumpHistory Count="28" HistoryIndex="27"> 420 462 <Position1> 421 463 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 422 <Caret Line=" 63" Column="1" TopLine="50"/>464 <Caret Line="400" Column="1" TopLine="384"/> 423 465 </Position1> 424 466 <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"/> 427 469 </Position2> 428 470 <Position3> 429 471 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 430 <Caret Line=" 63" Column="1" TopLine="50"/>472 <Caret Line="415" Column="1" TopLine="401"/> 431 473 </Position3> 432 474 <Position4> 433 475 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 434 <Caret Line=" 64" Column="1" TopLine="50"/>476 <Caret Line="418" Column="1" TopLine="401"/> 435 477 </Position4> 436 478 <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"/> 439 481 </Position5> 440 482 <Position6> 441 483 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 442 <Caret Line=" 63" Column="1" TopLine="50"/>484 <Caret Line="428" Column="1" TopLine="415"/> 443 485 </Position6> 444 486 <Position7> 445 487 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 446 <Caret Line=" 64" Column="1" TopLine="50"/>488 <Caret Line="429" Column="1" TopLine="415"/> 447 489 </Position7> 448 490 <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"/> 451 493 </Position8> 452 494 <Position9> 453 495 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 454 <Caret Line=" 534" Column="47" TopLine="524"/>496 <Caret Line="433" Column="1" TopLine="415"/> 455 497 </Position9> 456 498 <Position10> 457 <Filename Value="Compiler\ USourceCode.pas"/>458 <Caret Line="4 74" Column="3" TopLine="470"/>499 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 500 <Caret Line="435" Column="1" TopLine="415"/> 459 501 </Position10> 460 502 <Position11> 461 <Filename Value="Compiler\ USourceCode.pas"/>462 <Caret Line="4 73" Column="1" TopLine="468"/>503 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 504 <Caret Line="437" Column="1" TopLine="416"/> 463 505 </Position11> 464 506 <Position12> 465 <Filename Value="Compiler\ USourceCode.pas"/>466 <Caret Line="4 75" Column="1" TopLine="468"/>507 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 508 <Caret Line="439" Column="1" TopLine="418"/> 467 509 </Position12> 468 510 <Position13> 469 <Filename Value="Compiler\ USourceCode.pas"/>470 <Caret Line="4 76" Column="1" TopLine="468"/>511 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 512 <Caret Line="441" Column="1" TopLine="420"/> 471 513 </Position13> 472 514 <Position14> 473 <Filename Value="Compiler\ USourceCode.pas"/>474 <Caret Line="4 77" Column="1" TopLine="468"/>515 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 516 <Caret Line="445" Column="17" TopLine="424"/> 475 517 </Position14> 476 518 <Position15> 477 <Filename Value="Compiler\ USourceCode.pas"/>478 <Caret Line="48 0" Column="1" TopLine="468"/>519 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 520 <Caret Line="481" Column="3" TopLine="477"/> 479 521 </Position15> 480 522 <Position16> 481 <Filename Value="Compiler\ USourceCode.pas"/>482 <Caret Line="48 4" Column="1" TopLine="468"/>523 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 524 <Caret Line="487" Column="1" TopLine="477"/> 483 525 </Position16> 484 526 <Position17> 485 <Filename Value="Compiler\ USourceCode.pas"/>486 <Caret Line="48 7" Column="1" TopLine="468"/>527 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 528 <Caret Line="488" Column="1" TopLine="477"/> 487 529 </Position17> 488 530 <Position18> 489 <Filename Value="Compiler\ USourceCode.pas"/>490 <Caret Line="4 73" Column="1" TopLine="468"/>531 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 532 <Caret Line="491" Column="1" TopLine="477"/> 491 533 </Position18> 492 534 <Position19> 493 <Filename Value="Compiler\ USourceCode.pas"/>494 <Caret Line="4 75" Column="1" TopLine="468"/>535 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 536 <Caret Line="487" Column="1" TopLine="477"/> 495 537 </Position19> 496 538 <Position20> 497 <Filename Value="Compiler\ USourceCode.pas"/>498 <Caret Line="4 76" Column="1" TopLine="468"/>539 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 540 <Caret Line="488" Column="1" TopLine="477"/> 499 541 </Position20> 500 542 <Position21> 501 <Filename Value="Compiler\ USourceCode.pas"/>502 <Caret Line="4 77" Column="1" TopLine="468"/>543 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 544 <Caret Line="491" Column="1" TopLine="477"/> 503 545 </Position21> 504 546 <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"/> 507 549 </Position22> 508 550 <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"/> 511 553 </Position23> 512 554 <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"/> 515 557 </Position24> 516 558 <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"/> 519 561 </Position25> 520 562 <Position26> 521 <Filename Value="Compiler\ USourceCode.pas"/>522 <Caret Line="4 84" Column="1" TopLine="468"/>563 <Filename Value="Compiler\Analyze\UPascalParser.pas"/> 564 <Caret Line="433" Column="1" TopLine="420"/> 523 565 </Position26> 524 566 <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"/> 527 569 </Position27> 528 570 <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"/> 531 573 </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>540 574 </JumpHistory> 541 575 </ProjectOptions> … … 551 585 <SyntaxMode Value="Delphi"/> 552 586 <CStyleOperator Value="False"/> 587 <AllowLabel Value="False"/> 553 588 <CPPInline Value="False"/> 554 589 </SyntaxOptions>
Note:
See TracChangeset
for help on using the changeset viewer.