1- Unit Diagnostic;
1+ unit Diagnostic;
22
33interface
44
55{ $i define.inc}
66
77// ----------------------------------------------------------------------------
88
9- procedure Diagnostics ;
9+ procedure Diagnostics ;
1010
1111// ----------------------------------------------------------------------------
1212
@@ -18,11 +18,12 @@ implementation
1818
1919
2020procedure Diagnostics ;
21- var i, CharIndex, ChildIndex: Integer;
22- DiagFile: textfile;
21+ var
22+ i, CharIndex, ChildIndex: Integer;
23+ DiagFile: textfile;
2324begin
2425
25- AssignFile(DiagFile, ChangeFileExt( UnitName[1 ].Name , ' .txt' ) );
26+ AssignFile(DiagFile, ChangeFileExt(UnitName[1 ].Name , ' .txt' ));
2627 Rewrite(DiagFile);
2728
2829 WriteLn(DiagFile);
@@ -32,52 +33,58 @@ procedure Diagnostics;
3233 WriteLn(DiagFile);
3334
3435 for i := 1 to NumTok do
35- begin
36+ begin
3637 Write(DiagFile, i: 6 , UnitName[Tok[i].UnitIndex].Name : 30 , Tok[i].Line: 6 , GetSpelling(i): 30 );
3738 if Tok[i].Kind = INTNUMBERTOK then
3839 WriteLn(DiagFile, ' = ' , Tok[i].Value )
3940 else if Tok[i].Kind = FRACNUMBERTOK then
40- WriteLn(DiagFile, ' = ' , Tok[i].FracValue: 8 : 4 )
41- else if Tok[i].Kind = IDENTTOK then
42- WriteLn(DiagFile, ' = ' , Tok[i].Name ^)
43- else if Tok[i].Kind = CHARLITERALTOK then
44- WriteLn(DiagFile, ' = ' , Chr(Tok[i].Value ))
45- else if Tok[i].Kind = STRINGLITERALTOK then
46- begin
47- Write(DiagFile, ' = ' );
48- for CharIndex := 1 to Tok[i].StrLength do
49- Write(DiagFile, StaticStringData[Tok[i].StrAddress - CODEORIGIN + (CharIndex - 1 )]);
50- WriteLn(DiagFile);
51- end
52- else
53- WriteLn(DiagFile);
54- end ;// for
41+ WriteLn(DiagFile, ' = ' , Tok[i].FracValue: 8 : 4 )
42+ else if Tok[i].Kind = IDENTTOK then
43+ WriteLn(DiagFile, ' = ' , Tok[i].Name ^)
44+ else if Tok[i].Kind = CHARLITERALTOK then
45+ WriteLn(DiagFile, ' = ' , Chr(Tok[i].Value ))
46+ else if Tok[i].Kind = STRINGLITERALTOK then
47+ begin
48+ Write(DiagFile, ' = ' );
49+ for CharIndex := 1 to Tok[i].StrLength do
50+ Write(DiagFile, StaticStringData[Tok[i].StrAddress - CODEORIGIN + (CharIndex - 1 )]);
51+ WriteLn(DiagFile);
52+ end
53+ else
54+ WriteLn(DiagFile);
55+ end ;// for
5556
5657 WriteLn(DiagFile);
5758 WriteLn(DiagFile, ' Identifier list: ' );
5859 WriteLn(DiagFile);
59- WriteLn(DiagFile, ' #' : 6 , ' Block' : 6 , ' Name' : 30 , ' Kind' : 15 , ' Type' : 15 , ' Items/Params' : 15 , ' Value/Addr' : 15 , ' Dead' : 5 );
60+ WriteLn(DiagFile, ' #' : 6 , ' Block' : 6 , ' Name' : 30 , ' Kind' : 15 , ' Type' : 15 , ' Items/Params' : 15 ,
61+ ' Value/Addr' : 15 , ' Dead' : 5 );
6062 WriteLn(DiagFile);
6163
6264 for i := 1 to NumIdent do
63- begin
65+ begin
6466 Write(DiagFile, i: 6 , Ident[i].Block: 6 , Ident[i].Name : 30 , Spelling[Ident[i].Kind]: 15 );
65- if Ident[i].DataType <> 0 then Write(DiagFile, Spelling[Ident[i].DataType]: 15 ) else Write(DiagFile, ' N/A' : 15 );
67+ if Ident[i].DataType <> 0 then Write(DiagFile, Spelling[Ident[i].DataType]: 15 )
68+ else
69+ Write(DiagFile, ' N/A' : 15 );
6670 Write(DiagFile, Ident[i].NumAllocElements: 15 , IntToHex(Ident[i].Value , 8 ): 15 );
67- if (Ident[i].Kind in [PROCEDURETOK, FUNCTIONTOK, CONSTRUCTORTOK, DESTRUCTORTOK]) and not Ident[i].IsNotDead then WriteLn(DiagFile, ' Yes' : 5 ) else WriteLn(DiagFile, ' ' : 5 );
68- end ;
71+ if (Ident[i].Kind in [PROCEDURETOK, FUNCTIONTOK, CONSTRUCTORTOK, DESTRUCTORTOK]) and not Ident[i].IsNotDead then
72+ WriteLn(DiagFile, ' Yes' : 5 )
73+ else
74+ WriteLn(DiagFile, ' ' : 5 );
75+ end ;
6976
7077 WriteLn(DiagFile);
7178 WriteLn(DiagFile, ' Call graph: ' );
7279 WriteLn(DiagFile);
7380
7481 for i := 1 to NumBlocks do
75- begin
82+ begin
7683 Write(DiagFile, i: 6 , ' ---> ' );
7784 for ChildIndex := 1 to CallGraph[i].NumChildren do
7885 Write(DiagFile, CallGraph[i].ChildBlock[ChildIndex]: 5 );
7986 WriteLn(DiagFile);
80- end ;
87+ end ;
8188
8289 WriteLn(DiagFile);
8390 CloseFile(DiagFile);
0 commit comments