Changeset 76


Ignore:
Timestamp:
Oct 21, 2010, 1:20:57 PM (14 years ago)
Author:
george
Message:
  • Enhanced: Tokenizerm, parsing of record type, generation C code for record type.
  • Added: Logging of debug information.
Location:
branches/Transpascal
Files:
1 added
8 edited

Legend:

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

    r74 r76  
    1010
    1111type
    12   TOnErrorMessage = procedure(Text: string; Position: TPoint; FileName: string) of object;
     12  TErrorMessageEvent = procedure(Text: string; Position: TPoint; FileName: string) of object;
     13  TDebugLogEvent = procedure(Text: string) of object;
    1314
    1415  TParserState = (psNone, psIdentifier, psConstantNumber, psConstantString,
    1516    psOperator, psEndOfFile, psLineComment, psBlockComment1, psBlockComment2,
    16     psUnknown, psWhiteSpace, psConstantStringEnd);
     17    psUnknown, psWhiteSpace, psConstantStringEnd, psBlockComment1First,
     18    psCompilerDirective, psNoneShift, psConstantHexNumber);
    1719
    1820  TTokenType = (ttNone, ttIdentifier, ttConstantNumber, ttConstantString,
    1921    ttOperator, ttEndOfFile, ttLineComment, ttBlockComment1, ttBlockComment2,
    20     ttUnknown, ttWhiteSpace);
     22    ttUnknown, ttWhiteSpace, ttCompilerDirective);
    2123
    2224  TToken = class
     
    3133  private
    3234    FFileName: string;
    33     FOnErrorMessage: TOnErrorMessage;
     35    FOnDebugLog: TDebugLogEvent;
     36    FOnErrorMessage: TErrorMessageEvent;
    3437    FNextToken: string;
    3538    FNextTokenType: TTokenType;
     
    4952    destructor Destroy; override;
    5053    function IsAlphanumeric(Character: char): boolean;
     54    function IsNumeric(Character: char): boolean;
     55    function IsHex(Character: char): boolean;
    5156    function IsWhiteSpace(Character: char): boolean;
    5257    function IsAlphabetic(Character: char): boolean;
     
    6065    procedure ErrorMessage(const Text: string; const Arguments: array of const;
    6166      TokenOffset: Integer);
    62     property OnErrorMessage: TOnErrorMessage read FOnErrorMessage write FOnErrorMessage;
     67    property OnErrorMessage: TErrorMessageEvent read FOnErrorMessage write FOnErrorMessage;
     68    property OnDebugLog: TDebugLogEvent read FOnDebugLog write FOnDebugLog;
    6369    procedure Process;
     70    procedure Log(Text: string);
    6471    property FileName: string read FFileName write FFileName;
    6572  end;
     
    8491procedure TBaseParser.Expect(Code: string);
    8592begin
     93  Log('Expect: ' + Code);
    8694  if NextToken <> Code then begin
    8795    ErrorMessage(SExpectedButFound, [Code, NextToken], 0);
     
    112120function TBaseParser.IsAlphanumeric(Character: char): boolean;
    113121begin
    114   Result := IsAlphabetic(Character) or (Character in ['0'..'9']);
     122  Result := IsAlphabetic(Character) or IsNumeric(Character);
     123end;
     124
     125function TBaseParser.IsNumeric(Character: char): boolean;
     126begin
     127  Result := Character in ['0'..'9'];
     128end;
     129
     130function TBaseParser.IsHex(Character: char): boolean;
     131begin
     132  Result := IsNumeric(Character) or (Character in ['A'..'F']);
    115133end;
    116134
     
    179197end;
    180198
     199procedure TBaseParser.Log(Text: string);
     200begin
     201  if Assigned(FOnDebugLog) then
     202    FOnDebugLog(Text);
     203end;
     204
    181205procedure TBaseParser.GetNextToken;
    182206var
     
    204228      end;
    205229
    206       if FParserState = psNone then begin
     230      if (FParserState = psNone) or (FParserState = psNoneShift) then begin
    207231        TokenCodePosition := CodePosition;
    208232        if IsWhiteSpace(CurrentChar) then
     
    210234        else
    211235        if CurrentChar = '{' then begin
    212           FParserState := psBlockComment1;
     236          FParserState := psBlockComment1First;
    213237        end else
    214238        if CurrentChar = '''' then begin
    215239          FParserState := psConstantString;
     240        end else
     241        if CurrentChar = '$' then begin
     242          FParserState := psConstantHexNumber;
    216243        end else
    217244        if CurrentChar in SpecChar then begin
     
    219246          FNextToken := FNextToken + CurrentChar;
    220247        end else
    221         if IsAlphanumeric(CurrentChar) then begin
     248        if IsAlphabetic(CurrentChar) then begin
    222249          FParserState := psIdentifier;
    223250          FNextToken := FNextToken + CurrentChar;
     251        end else
     252        if IsNumeric(CurrentChar) then begin
     253          FPArserSTate := psConstantNumber;
     254          FNextToken := FNextToken + CurrentChar;
    224255        end else FParserState := psUnknown;
    225256      end else
    226257      if FParserState = psLineComment then begin
    227258        if (CurrentChar = #13) or (CurrentChar = #10) then
     259          FParserState := psNoneShift;
     260      end else
     261      if FParserState = psBlockComment1First then begin
     262        if CurrentChar = '$' then FParserState := psCompilerDirective
     263        else FParserSTate := psBlockComment1;
     264      end else
     265      if FParserState = psBlockComment1 then begin
     266        if (CurrentChar = '}') then begin
     267          FParserState := psNoneShift;
     268        end;
     269      end else
     270      if FParserState = psCompilerDirective then begin
     271        if (CurrentChar = '}') then begin
    228272          FParserState := psNone;
    229       end else
    230       if FParserState = psBlockComment1 then begin
    231         if (CurrentChar = '}') then
    232           FParserState := psNone;
     273          FNextTokenType := ttCompilerDirective;
     274          Break;
     275        end;
    233276      end else
    234277      if FParserState = psBlockComment2 then begin
    235278        if (PreviousChar = '*') and (CurrentChar = ')') then
    236           FParserState := psNone;
     279          FParserState := psNoneShift;
    237280      end else
    238281      if FParserState = psConstantString then
     
    249292        FNextTokenType := ttConstantString;
    250293        Break;
     294      end else
     295      if FParserState = psConstantHexNumber then
     296      begin
     297        if not IsHex(CurrentChar) then begin
     298          FParserState := psNone;
     299          FNextTokenType := ttConstantNumber;
     300          Break;
     301        end else FNextToken := FNextToken + CurrentChar;
     302      end else
     303      if FParserState = psConstantNumber then
     304      begin
     305        if not IsNumeric(CurrentChar) then begin
     306          FParserState := psNone;
     307          FNextTokenType := ttConstantNumber;
     308          Break;
     309        end else FNextToken := FNextToken + CurrentChar;
    251310      end else
    252311      if FParserState = psOperator then
     
    281340      if FParserState = psIdentifier then
    282341      begin
    283         if not IsAlphanumeric(CurrentChar) then begin
     342        if (not IsAlphanumeric(CurrentChar)) and (CurrentChar <> '_') then begin
    284343          FNextTokenType := ttIdentifier;
    285344          Break;
     
    311370    Inc(TokenIndex);
    312371  end else Result := '';
     372  Log('ReadCode: ' + Result);
    313373end;
    314374
     
    318378    Result := TToken(Tokens[TokenIndex]).Token;
    319379  end else Result := '';
     380  Log('NextToken: ' + Result);
    320381end;
    321382
  • branches/Transpascal/Compiler/Analyze/UPascalParser.pas

    r75 r76  
    3737    procedure ParseVariable(SourceCode: TVariable; Exported: Boolean = False);
    3838    procedure ParseConstantList(SourceCode: TConstantList; Exported: Boolean = False);
    39     procedure ParseTypeList(SourceCode: TTypeList; Exported: Boolean = False);
     39    procedure ParseTypeList(SourceCode: TTypeList; Exported: Boolean = False;
     40      AssignSymbol: string = '=');
    4041    function ParseType(TypeList: TTypeList; ExpectName: Boolean = True; AssignSymbol: string = '='): TType;
    4142    function ParseTypeEnumeration(TypeList: TTypeList; Name: string): TType;
     
    7172    Parser := TPascalParser.Create;
    7273    Parser.SourceCodeText := TStringList.Create;
     74    Parser.OnDebugLog := OnDebugLog;
    7375    Parser.ProgramCode := ProgramCode;
    7476    Parser.OnGetSource := OnGetSource;
     
    224226            //  TExpression(SubItems[1]).Value[I - 1] := Byte(Identifier[I]);
    225227          end else begin
    226             TExpression(SubItems[1]).Value := StrToInt(Identifier);
     228            TExpression(SubItems[1]).Value := Identifier;
    227229          end;
    228230        end;
     
    330332    end else
    331333    if NextToken = ';' then
     334      Result := nil
    332335    else begin
    333336      Result := nil;
     
    565568
    566569        // Parse function result type
    567         if HaveResult then
    568         begin
     570        if HaveResult then begin
    569571          Expect(':');
    570572          TypeName := ReadCode;
    571573          NewValueType := Parent.Types.Search(TypeName);
    572574          if not Assigned(NewValueType) then
    573             ErrorMessage(SUndefinedType, [TypeName], -1)
    574           else
     575            ErrorMessage(SUndefinedType, [TypeName], -1);
     576(*          else
    575577          begin
    576578            ResultType := NewValueType;
     
    581583              ValueType := NewValueType;
    582584            end;
    583           end;
     585          end;  *)
    584586        end;
    585587      end;
     
    723725      end else
    724726        ErrorMessage(SRedefineIdentifier, [ConstantName], -1);
    725       Expect(':');
    726       TypeName := ReadCode;
    727       NewValueType := Parent.Types.Search(TypeName);
     727      if NextToken = ':' then begin
     728        Expect(':');
     729        TypeName := ReadCode;
     730        NewValueType := Parent.Types.Search(TypeName);
     731      end;
    728732      Expect('=');
    729733      ConstantValue := ReadCode;
     
    747751{ TParserTypeList }
    748752
    749 procedure TPascalParser.ParseTypeList(SourceCode: TTypeList; Exported: Boolean = False);
     753procedure TPascalParser.ParseTypeList(SourceCode: TTypeList;
     754  Exported: Boolean = False; AssignSymbol: string = '=');
    750755var
    751756  NewType: TType;
     
    754759  begin
    755760    while IsIdentificator(NextToken) do begin
    756       NewType := ParseType(SourceCode);
     761      NewType := ParseType(SourceCode, True, AssignSymbol);
    757762      if Assigned(NewType) then begin
    758763        NewType.Parent := SourceCode;
     
    766771{ TParserType }
    767772
    768 function TPascalParser.ParseType(TypeList: TTypeList; ExpectName: Boolean = True; AssignSymbol: string = '='): TType;
     773function TPascalParser.ParseType(TypeList: TTypeList; ExpectName: Boolean = True;
     774  AssignSymbol: string = '='): TType;
    769775var
    770776  Name: string;
     
    778784    end;
    779785    if NextToken = '(' then begin
     786      // Enumeration
    780787      Result := ParseTypeEnumeration(TypeList, Name);
    781788    end else
     
    817824    end else
    818825    if NextToken = '^' then begin
     826      // Pointer
    819827      Expect('^');
    820828      Result := TTypePointer.Create;
     
    824832    end else
    825833    if NextToken = 'type' then begin
     834      // Buildin base type construction
    826835      Expect('type');
    827836      Result := TTypeInherited.Create;
     
    834843      end else TTypeInherited(Result).UsedType := nil;
    835844    end else begin
     845      // Use existed type
    836846      TypeName := ReadCode;
    837847      if ExpectName then begin
     
    890900  SectionType := stVar;
    891901  Visibility := tvPublic;
    892       Expect('record');
    893       Result := TTypeRecord.Create;
    894       TTypeRecord(Result).Parent := TypeList;
    895       TTypeRecord(Result).CommonBlock.Parent := TypeList.Parent;
    896       TType(Result).Name := Name;
    897       while (NextToken <> 'end') and (NextTokenType <> ttEndOfFile) do
    898       begin
    899         if NextToken = 'public' then begin
    900           Expect('public');
    901           Visibility := tvPublic;
    902         end else
    903         if NextToken = 'private' then begin
    904           Expect('private');
    905           Visibility := tvPrivate;
    906         end else
    907         if NextToken = 'published' then begin
    908           Expect('published');
    909           Visibility := tvPublished;
    910         end else
    911         if NextToken = 'protected' then begin
    912           Expect('protected');
    913           Visibility := tvProtected;
    914         end else
    915         if NextToken = 'var' then begin
    916           Expect('var');
    917           SectionType := stVar
    918         end else
    919         if NextToken = 'const' then begin
    920           Expect('const');
    921           SectionType := stConst
    922         end else
    923         if NextToken = 'type' then begin
    924           Expect('type');
    925           SectionType := stType;
    926         end;
    927 
    928         if SectionType = stVar then begin
    929           if NextToken = 'procedure' then
    930             ParseFunctionList(TTypeRecord(Result).CommonBlock.Functions, True)
    931           else if NextToken = 'function' then
    932             ParseFunctionList(TTypeRecord(Result).CommonBlock.Functions, True)
    933           else begin
     902  Expect('record');
     903  Result := TTypeRecord.Create;
     904  TTypeRecord(Result).Parent := TypeList;
     905  TTypeRecord(Result).CommonBlock.Parent := TypeList.Parent;
     906  TType(Result).Name := Name;
     907  while (NextToken <> 'end') and (NextTokenType <> ttEndOfFile) do begin
     908    if NextToken = 'public' then begin
     909      Expect('public');
     910      Visibility := tvPublic;
     911    end else
     912    if NextToken = 'private' then begin
     913      Expect('private');
     914      Visibility := tvPrivate;
     915    end else
     916    if NextToken = 'published' then begin
     917      Expect('published');
     918      Visibility := tvPublished;
     919    end else
     920    if NextToken = 'protected' then begin
     921      Expect('protected');
     922      Visibility := tvProtected;
     923    end else
     924    if NextToken = 'var' then begin
     925      Expect('var');
     926      SectionType := stVar
     927    end else
     928    if NextToken = 'const' then begin
     929      Expect('const');
     930      SectionType := stConst
     931    end else
     932    if NextToken = 'type' then begin
     933      Expect('type');
     934      SectionType := stType;
     935    end else
     936    if NextToken = 'procedure' then
     937      ParseFunctionList(TTypeRecord(Result).CommonBlock.Functions, True)
     938    else if NextToken = 'function' then
     939      ParseFunctionList(TTypeRecord(Result).CommonBlock.Functions, True)
     940    else begin
     941      if SectionType = stVar then begin
     942          if IsIdentificator(NextToken) then
    934943            ParseVariableList(TTypeRecord(Result).CommonBlock.Variables, True)
    935             //TTypeRecord(Result).CommonBlock.Types.Add(ParseType(TypeList, True, ':'));
    936             //TType(TTypeRecord(Result).CommonBlock.Types.Last).Visibility := Visibility;
    937           end;                                                                          ParseVariableList(TTypeRecord(Result).CommonBlock.Variables)
    938         end
    939         else if SectionType = stConst then
    940           ParseConstantList(TTypeRecord(Result).CommonBlock.Constants, True)
    941         else if SectionType = stType then
    942           ParseTypeList(TTypeRecord(Result).CommonBlock.Types, True);
    943       end;
    944       Expect('end');
     944            else ReadCode;
     945          //TTypeRecord(Result).CommonBlock.Types.Add(ParseType(TypeList, True, ':'));
     946          //TType(TTypeRecord(Result).CommonBlock.Types.Last).Visibility := Visibility;
     947      end
     948      else if SectionType = stConst then
     949        ParseConstantList(TTypeRecord(Result).CommonBlock.Constants, True)
     950      else if SectionType = stType then
     951        ParseTypeList(TTypeRecord(Result).CommonBlock.Types, True, '=');
     952    end;
     953  end;
     954  Expect('end');
    945955end;
    946956
  • branches/Transpascal/Compiler/Produce/UProducerC.pas

    r75 r76  
    1919    function TranslateType(Name: string): string;
    2020    function TranslateOperator(Name: string): string;
    21     procedure Emit(AText: string; NewLine: Boolean = True);
     21    procedure Emit(AText: string);
     22    procedure EmitLn(AText: string = '');
    2223    procedure GenerateUses(UsedModules: TUsedModuleList);
    2324    procedure GenerateModule(Module: TModule);
     
    2728    procedure GenerateTypes(Types: TTypeList);
    2829    procedure GenerateProgram(ProgramBlock: TProgram);
    29     procedure GenerateFunctions(Functions: TFunctionList);
     30    procedure GenerateFunctions(Functions: TFunctionList;
     31      Prefix: string = '');
    3032    procedure GenerateBeginEnd(BeginEnd: TBeginEnd);
    3133    procedure GenerateVariableList(VariableList: TVariableList);
     
    9496end;
    9597
    96 procedure TProducerC.Emit(AText: string; NewLine: Boolean = True);
     98procedure TProducerC.EmitLn(AText: string = '');
     99begin
     100  Emit(AText);
     101  TextSource.Add('');
     102end;
     103
     104procedure TProducerC.Emit(AText: string);
    97105begin
    98106  with TextSource do begin
     
    101109      Strings[Count - 1] := Strings[Count - 1] + DupeString(' ', IndentationLength * Indetation);
    102110    Strings[Count - 1] := Strings[Count - 1] + AText;
    103     if NewLine then Add('');
    104111  end;
    105112end;
     
    111118  for I := 0 to UsedModules.Count - 1 do
    112119    if Dialect = pdDynamicC then
    113       Emit('#use "' + TUsedModule(UsedModules[I]).Name + '.lib"')
    114       else Emit('#include "' + TUsedModule(UsedModules[I]).Name + '.h"');
    115   Emit('');
     120      EmitLn('#use "' + TUsedModule(UsedModules[I]).Name + '.lib"')
     121      else EmitLn('#include "' + TUsedModule(UsedModules[I]).Name + '.h"');
     122  EmitLn;
    116123end;
    117124
    118125procedure TProducerC.GenerateModule(Module: TModule);
    119126begin
    120   if Dialect = pdDynamicC then Emit('#use "platform.lib"')
    121     else Emit('#include "platform.h"');
    122   Emit('');
     127  if Dialect = pdDynamicC then EmitLn('#use "platform.lib"')
     128    else EmitLn('#include "platform.h"');
     129  EmitLn;
    123130  if Module is TModuleProgram then begin
    124131    TModuleProgram(Module).Body.Name := 'main';
     
    149156end;
    150157
    151 procedure TProducerC.GenerateFunctions(Functions: TFunctionList);
     158procedure TProducerC.GenerateFunctions(Functions: TFunctionList;
     159  Prefix: string = '');
    152160var
    153161  I: Integer;
     
    157165  for I := 0 to Functions.Count - 1 do
    158166  with TFunction(Functions[I]) do
    159   if not System then
    160   begin
    161     if HaveResult then Line := TranslateType(ResultType.Name) + ' '
     167  if not System then begin
     168    if HaveResult and Assigned(ResultType) then Line := TranslateType(ResultType.Name) + ' '
    162169      else Line := 'void ';
    163     Line := Line + Name + '(';
     170    Line := Line + Prefix + Name + '(';
    164171    if Parameters.Count > 0 then
    165172    for J := 0 to Parameters.Count - 1 do begin
     
    169176    end;
    170177    Line := Line + ')';
    171     Emit(Line);
     178    EmitLn(Line);
    172179    GenerateBeginEnd(Code);
    173     Emit('');
     180    EmitLn;
    174181  end;
    175182end;
     
    179186  I: Integer;
    180187begin
    181   Emit('{');
     188  EmitLn('{');
    182189  Inc(Indetation);
    183190
     
    192199
    193200  Dec(Indetation);
    194   Emit('}');
     201  EmitLn('}');
    195202end;
    196203
     
    201208  for I := 0 to VariableList.Count - 1 do
    202209    GenerateVariable(TVariable(VariableList[I]));
    203 //  Emit('');
     210//  EmitLn;
    204211end;
    205212
     
    207214begin
    208215  with Variable do
    209     Emit(TranslateType(ValueType.Name) + ' ' + Name + ';');
     216    EmitLn(TranslateType(ValueType.Name) + ' ' + Name + ';');
    210217end;
    211218
     
    222229procedure TProducerC.GenerateWhileDo(WhileDo: TWhileDo);
    223230begin
    224   Emit('while (' + GenerateExpression(WhileDo.Condition) + ')');
    225   GenerateCommand(WhileDo.Command);
     231  EmitLn('while (' + GenerateExpression(WhileDo.Condition) + ')');
     232  if Assigned(WhileDo.Command) then GenerateCommand(WhileDo.Command);
    226233end;
    227234
     
    229236begin
    230237  with ForToDo do begin
    231     Emit('for(' + ControlVariable.Name + ' = ' +
     238    if Assigned(ControlVariable) then
     239    EmitLn('for(' + ControlVariable.Name + ' = ' +
    232240      GenerateExpression(Start) + '; ' + ControlVariable.Name + ' < ' +
    233241      GenerateExpression(Stop) + '; ' + ControlVariable.Name + '++)');
     
    238246procedure TProducerC.GenerateIfThenElse(IfThenElse: TIfThenElse);
    239247begin
    240   Emit('if(' + GenerateExpression(IfThenElse.Condition) + ')');
     248  EmitLn('if(' + GenerateExpression(IfThenElse.Condition) + ')');
    241249  GenerateCommand(IfThenElse.Command);
    242250  if Assigned(IfThenElse.ElseCommand) then begin
    243     Emit('else ');
     251    EmitLn('else ');
    244252    GenerateCommand(IfThenElse.ElseCommand);
    245253  end;
     
    248256procedure TProducerC.GenerateAssignment(Assignment: TAssignment);
    249257begin
    250   if Assignment.Target.Name = 'Result' then Emit('return(' + GenerateExpression(Assignment.Source) + ');')
    251     else Emit(Assignment.Target.Name + ' = ' + GenerateExpression(Assignment.Source) + ';');
     258  if Assignment.Target.Name = 'Result' then EmitLn('return(' + GenerateExpression(Assignment.Source) + ');')
     259    else EmitLn(Assignment.Target.Name + ' = ' + GenerateExpression(Assignment.Source) + ';');
    252260end;
    253261
     
    266274    end;
    267275    Line := Line + ');';
    268     Emit(Line);
     276    EmitLn(Line);
    269277  end;
    270278end;
     
    302310    GenerateTypes(Types);
    303311    GenerateFunctions(Functions);
    304     Emit('void ' + Name + '()');
     312    EmitLn('void ' + Name + '()');
    305313    GenerateBeginEnd(Code);
    306314  end;
     
    313321  if Assigned(AType) then begin
    314322  if AType is TTypeRecord then begin
    315     Emit('struct');
    316     Emit('{');
     323    EmitLn('struct');
     324    EmitLn('{');
    317325    Inc(Indetation);
    318326    GenerateVariableList(TTypeRecord(AType).CommonBlock.Variables);
    319327    Dec(Indetation);
    320     Emit('} ' + TranslateType(AType.Name), False);
     328    EmitLn('} ' + TranslateType(AType.Name) + ';');
     329    EmitLn;
     330    GenerateFunctions(TTypeRecord(AType).CommonBlock.Functions, AType.Name + '_');
    321331  end else
    322332  if AType is TTypeArray then begin
    323333    GenerateType(TTypeArray(AType).ItemType);
    324     Emit('* ', False);
     334    EmitLn('* ');
    325335
    326336(*    if Assigned(TTypeArray(AType).IndexType) then begin
    327       Emit(AType.Name + '[', False);
    328       Emit('[', False);
     337      Emit(AType.Name + '[');
     338      Emit('[');
    329339      GenerateType(TTypeArray(AType).IndexType);
    330       Emit(']', False);
    331     end;
    332     Emit(' of ', False);
     340      Emit(']');
     341    end;
     342    Emit(' of ');
    333343    if Assigned(TTypeArray(AType).ItemType) then*)
    334     Emit(TranslateType(AType.Name), False);
     344    Emit(TranslateType(AType.Name));
     345  end else
     346  if AType is TTypePointer then begin
     347    if Assigned(AType.UsedType) then begin
     348      Emit(AType.UsedType.Name);
     349      Emit(' *');
     350    end;
     351    Emit(TranslateType(AType.Name));
    335352  end else begin
    336353    if Assigned(AType.UsedType) then begin
    337354      //GenerateType(AType.UsedType);
    338       Emit(AType.UsedType.Name, False);
    339       Emit(' ', False);
    340     end;
    341     Emit(TranslateType(AType.Name), False);
     355      Emit(AType.UsedType.Name);
     356      Emit(' ');
     357    end;
     358    Emit(TranslateType(AType.Name));
    342359  end;
    343360  end;
     
    353370    with TType(Types[I]) do
    354371    if (not System) then begin
    355       Emit('typedef ', False);
     372      Emit('typedef ');
    356373      GenerateType(TType(Types[I]));
    357       Emit(';');
     374      EmitLn(';');
    358375    end;
    359376    Dec(Indetation);
    360     Emit('');
    361   end;
    362 end;
    363 
    364 
     377    EmitLn('');
     378  end;
     379end;
    365380
    366381end.
  • branches/Transpascal/Compiler/UCompiler.pas

    r75 r76  
    3232  TCompiler = class
    3333  private
    34     FOnErrorMessage: TOnErrorMessage;
     34    FOnErrorMessage: TErrorMessageEvent;
    3535    procedure ErrorMessage(Text: string; Position: TPoint; FileName: string);
    3636  public
     
    4747    procedure Init;
    4848    procedure Compile(ModuleName: string; Source: TStringList);
    49     property OnErrorMessage: TOnErrorMessage read FOnErrorMessage
     49    property OnErrorMessage: TErrorMessageEvent read FOnErrorMessage
    5050      write FOnErrorMessage;
    5151  end;
  • branches/Transpascal/Compiler/USourceCode.pas

    r73 r76  
    770770      with TUsedModule(UsedModules[I]) do
    771771        with Module do
    772         Result := SearchType(AName, False);
     772          Result := SearchType(AName, False);
    773773      Inc(I);
    774774    end;
  • branches/Transpascal/Forms/UMainForm.pas

    r74 r76  
    1010  UProducerC, ComCtrls, ExtCtrls, SynEdit, SynHighlighterPas, UProducerTreeView,
    1111  UProducerPascal, Contnrs, UProject, FileUtil, Menus, ActnList, UCoolDocking,
    12   UCompiledForm, UCodeTreeForm, URegistry, ULastOpenedList, UApplicationInfo;
     12  UCompiledForm, UCodeTreeForm, URegistry, ULastOpenedList, UApplicationInfo,
     13  UDebugLog;
    1314
    1415const
     
    5859    LastOpenedFiles: TLastOpenedList;
    5960    ReopenLastOpenedFile: Boolean;
     61    procedure CompilerDebugLog(Text: string);
    6062    procedure OpenRecentClick(Sender: TObject);
    6163    procedure DockInit;
     
    208210procedure TMainForm.FormCreate(Sender: TObject);
    209211begin
     212  DebugLog.FileName := 'DebugLog.txt';
     213  DeleteFile(DebugLog.FileName);
    210214  Compiler := TCompiler.Create;
     215  Compiler.Parser.OnDebugLog := CompilerDebugLog;
    211216  Project := TProject.Create;
    212217  LastOpenedFiles := TLastOpenedList.Create;
     
    222227end;
    223228
     229procedure TMainForm.CompilerDebugLog(Text: string);
     230begin
     231  DebugLog.Add('', Text);
     232end;
     233
    224234procedure TMainForm.OpenRecentClick(Sender: TObject);
    225235begin
  • branches/Transpascal/Transpascal.lpi

    r75 r76  
    4646      </Item4>
    4747    </RequiredPackages>
    48     <Units Count="43">
     48    <Units Count="46">
    4949      <Unit0>
    5050        <Filename Value="Transpascal.lpr"/>
    5151        <IsPartOfProject Value="True"/>
    5252        <UnitName Value="Transpascal"/>
    53         <EditorIndex Value="11"/>
     53        <EditorIndex Value="0"/>
    5454        <WindowIndex Value="0"/>
    5555        <TopLine Value="7"/>
    56         <CursorPos X="35" Y="23"/>
     56        <CursorPos X="45" Y="18"/>
    5757        <UsageCount Value="215"/>
    5858        <Loaded Value="True"/>
     
    6868        <EditorIndex Value="9"/>
    6969        <WindowIndex Value="0"/>
    70         <TopLine Value="97"/>
    71         <CursorPos X="43" Y="112"/>
     70        <TopLine Value="210"/>
     71        <CursorPos X="31" Y="213"/>
    7272        <UsageCount Value="215"/>
    7373        <Loaded Value="True"/>
    74         <LoadedDesigner Value="True"/>
    7574        <DefaultSyntaxHighlighter Value="Delphi"/>
    7675      </Unit1>
     
    9190        <TopLine Value="745"/>
    9291        <CursorPos X="46" Y="759"/>
    93         <UsageCount Value="150"/>
     92        <UsageCount Value="149"/>
    9493        <DefaultSyntaxHighlighter Value="Delphi"/>
    9594      </Unit3>
     
    10099        <TopLine Value="1"/>
    101100        <CursorPos X="40" Y="11"/>
    102         <UsageCount Value="150"/>
     101        <UsageCount Value="149"/>
    103102        <DefaultSyntaxHighlighter Value="Delphi"/>
    104103      </Unit4>
     
    109108        <TopLine Value="187"/>
    110109        <CursorPos X="34" Y="201"/>
    111         <UsageCount Value="150"/>
     110        <UsageCount Value="149"/>
    112111      </Unit5>
    113112      <Unit6>
     
    117116        <TopLine Value="1"/>
    118117        <CursorPos X="1" Y="14"/>
    119         <UsageCount Value="150"/>
     118        <UsageCount Value="149"/>
    120119      </Unit6>
    121120      <Unit7>
     
    125124        <TopLine Value="124"/>
    126125        <CursorPos X="42" Y="136"/>
    127         <UsageCount Value="150"/>
     126        <UsageCount Value="149"/>
    128127      </Unit7>
    129128      <Unit8>
     
    133132        <TopLine Value="442"/>
    134133        <CursorPos X="47" Y="455"/>
    135         <UsageCount Value="150"/>
     134        <UsageCount Value="149"/>
    136135      </Unit8>
    137136      <Unit9>
     
    141140        <TopLine Value="78"/>
    142141        <CursorPos X="27" Y="86"/>
    143         <UsageCount Value="42"/>
     142        <UsageCount Value="41"/>
    144143      </Unit9>
    145144      <Unit10>
     
    148147        <TopLine Value="61"/>
    149148        <CursorPos X="7" Y="68"/>
    150         <UsageCount Value="52"/>
     149        <UsageCount Value="51"/>
    151150      </Unit10>
    152151      <Unit11>
     
    155154        <TopLine Value="139"/>
    156155        <CursorPos X="16" Y="146"/>
    157         <UsageCount Value="52"/>
     156        <UsageCount Value="51"/>
    158157      </Unit11>
    159158      <Unit12>
     
    163162        <TopLine Value="69"/>
    164163        <CursorPos X="1" Y="82"/>
    165         <UsageCount Value="112"/>
     164        <UsageCount Value="111"/>
    166165      </Unit12>
    167166      <Unit13>
    168167        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\objpas\classes\classesh.inc"/>
    169         <WindowIndex Value="0"/>
    170         <TopLine Value="19"/>
    171         <CursorPos X="4" Y="32"/>
    172         <UsageCount Value="9"/>
     168        <EditorIndex Value="3"/>
     169        <WindowIndex Value="0"/>
     170        <TopLine Value="724"/>
     171        <CursorPos X="15" Y="743"/>
     172        <UsageCount Value="12"/>
     173        <Loaded Value="True"/>
    173174      </Unit13>
    174175      <Unit14>
     
    178179        <TopLine Value="320"/>
    179180        <CursorPos X="1" Y="327"/>
    180         <UsageCount Value="66"/>
     181        <UsageCount Value="65"/>
    181182      </Unit14>
    182183      <Unit15>
     
    184185        <IsPartOfProject Value="True"/>
    185186        <UnitName Value="UProject"/>
    186         <EditorIndex Value="8"/>
    187187        <WindowIndex Value="0"/>
    188188        <TopLine Value="3"/>
    189189        <CursorPos X="50" Y="10"/>
    190         <UsageCount Value="178"/>
    191         <Loaded Value="True"/>
     190        <UsageCount Value="187"/>
    192191        <DefaultSyntaxHighlighter Value="Delphi"/>
    193192      </Unit15>
     
    197196        <TopLine Value="17"/>
    198197        <CursorPos X="11" Y="30"/>
    199         <UsageCount Value="5"/>
     198        <UsageCount Value="4"/>
    200199      </Unit16>
    201200      <Unit17>
     
    205204        <TopLine Value="1"/>
    206205        <CursorPos X="33" Y="1"/>
    207         <UsageCount Value="30"/>
     206        <UsageCount Value="29"/>
    208207      </Unit17>
    209208      <Unit18>
    210209        <Filename Value="Compiler\UCompiler.pas"/>
    211210        <UnitName Value="UCompiler"/>
    212         <EditorIndex Value="1"/>
    213         <WindowIndex Value="0"/>
    214         <TopLine Value="92"/>
    215         <CursorPos X="15" Y="98"/>
    216         <UsageCount Value="80"/>
     211        <EditorIndex Value="10"/>
     212        <WindowIndex Value="0"/>
     213        <TopLine Value="28"/>
     214        <CursorPos X="8" Y="28"/>
     215        <UsageCount Value="85"/>
    217216        <Loaded Value="True"/>
    218217      </Unit18>
     
    220219        <Filename Value="Compiler\USourceCode.pas"/>
    221220        <UnitName Value="USourceCode"/>
    222         <EditorIndex Value="10"/>
    223         <WindowIndex Value="0"/>
    224         <TopLine Value="144"/>
    225         <CursorPos X="38" Y="158"/>
    226         <UsageCount Value="79"/>
     221        <IsVisibleTab Value="True"/>
     222        <EditorIndex Value="8"/>
     223        <WindowIndex Value="0"/>
     224        <TopLine Value="759"/>
     225        <CursorPos X="63" Y="764"/>
     226        <UsageCount Value="81"/>
    227227        <Loaded Value="True"/>
    228228      </Unit19>
     
    230230        <Filename Value="Compiler\Analyze\UParser.pas"/>
    231231        <UnitName Value="UParser"/>
    232         <EditorIndex Value="4"/>
    233         <WindowIndex Value="0"/>
    234         <TopLine Value="79"/>
    235         <CursorPos X="23" Y="88"/>
    236         <UsageCount Value="80"/>
     232        <EditorIndex Value="1"/>
     233        <WindowIndex Value="0"/>
     234        <TopLine Value="365"/>
     235        <CursorPos X="48" Y="377"/>
     236        <UsageCount Value="85"/>
    237237        <Loaded Value="True"/>
    238238      </Unit20>
     
    243243        <ResourceBaseClass Value="Form"/>
    244244        <UnitName Value="UProjectManager"/>
    245         <EditorIndex Value="3"/>
    246245        <WindowIndex Value="0"/>
    247246        <TopLine Value="33"/>
    248247        <CursorPos X="29" Y="44"/>
    249         <UsageCount Value="162"/>
    250         <Loaded Value="True"/>
     248        <UsageCount Value="171"/>
    251249        <DefaultSyntaxHighlighter Value="Delphi"/>
    252250      </Unit21>
     
    257255        <ResourceBaseClass Value="Form"/>
    258256        <UnitName Value="UCodeForm"/>
    259         <EditorIndex Value="0"/>
    260257        <WindowIndex Value="0"/>
    261258        <TopLine Value="1"/>
    262259        <CursorPos X="26" Y="17"/>
    263         <UsageCount Value="162"/>
    264         <Loaded Value="True"/>
    265         <LoadedDesigner Value="True"/>
     260        <UsageCount Value="171"/>
    266261        <DefaultSyntaxHighlighter Value="Delphi"/>
    267262      </Unit22>
     
    272267        <ResourceBaseClass Value="Form"/>
    273268        <UnitName Value="UMessagesForm"/>
    274         <EditorIndex Value="5"/>
    275269        <WindowIndex Value="0"/>
    276270        <TopLine Value="11"/>
    277271        <CursorPos X="38" Y="76"/>
    278         <UsageCount Value="162"/>
    279         <Loaded Value="True"/>
     272        <UsageCount Value="171"/>
    280273        <DefaultSyntaxHighlighter Value="Delphi"/>
    281274      </Unit23>
     
    287280        <ResourceBaseClass Value="Form"/>
    288281        <UnitName Value="UCompiledForm"/>
     282        <EditorIndex Value="5"/>
    289283        <WindowIndex Value="0"/>
    290284        <TopLine Value="5"/>
    291285        <CursorPos X="28" Y="21"/>
    292         <UsageCount Value="161"/>
     286        <UsageCount Value="170"/>
     287        <Loaded Value="True"/>
    293288        <DefaultSyntaxHighlighter Value="Delphi"/>
    294289      </Unit24>
     
    302297        <TopLine Value="1"/>
    303298        <CursorPos X="1" Y="1"/>
    304         <UsageCount Value="161"/>
     299        <UsageCount Value="170"/>
    305300        <DefaultSyntaxHighlighter Value="Delphi"/>
    306301      </Unit25>
     
    311306        <TopLine Value="291"/>
    312307        <CursorPos X="54" Y="304"/>
    313         <UsageCount Value="28"/>
     308        <UsageCount Value="27"/>
    314309      </Unit26>
    315310      <Unit27>
     
    319314        <TopLine Value="316"/>
    320315        <CursorPos X="14" Y="329"/>
    321         <UsageCount Value="28"/>
     316        <UsageCount Value="27"/>
    322317      </Unit27>
    323318      <Unit28>
     
    326321        <TopLine Value="1756"/>
    327322        <CursorPos X="31" Y="1770"/>
    328         <UsageCount Value="25"/>
     323        <UsageCount Value="24"/>
    329324      </Unit28>
    330325      <Unit29>
     
    332327        <IsPartOfProject Value="True"/>
    333328        <UnitName Value="URegistry"/>
    334         <UsageCount Value="154"/>
     329        <UsageCount Value="163"/>
    335330        <DefaultSyntaxHighlighter Value="Delphi"/>
    336331      </Unit29>
     
    339334        <IsPartOfProject Value="True"/>
    340335        <UnitName Value="ULastOpenedList"/>
    341         <UsageCount Value="154"/>
     336        <UsageCount Value="163"/>
    342337        <DefaultSyntaxHighlighter Value="Delphi"/>
    343338      </Unit30>
     
    346341        <IsPartOfProject Value="True"/>
    347342        <UnitName Value="UApplicationInfo"/>
    348         <UsageCount Value="153"/>
     343        <UsageCount Value="162"/>
    349344        <DefaultSyntaxHighlighter Value="Delphi"/>
    350345      </Unit31>
     
    352347        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    353348        <UnitName Value="UProducerC"/>
    354         <IsVisibleTab Value="True"/>
    355349        <EditorIndex Value="7"/>
    356350        <WindowIndex Value="0"/>
    357         <TopLine Value="197"/>
    358         <CursorPos X="3" Y="203"/>
    359         <UsageCount Value="76"/>
     351        <TopLine Value="227"/>
     352        <CursorPos X="22" Y="240"/>
     353        <UsageCount Value="80"/>
    360354        <Loaded Value="True"/>
    361355      </Unit32>
     
    366360        <TopLine Value="1"/>
    367361        <CursorPos X="1" Y="1"/>
    368         <UsageCount Value="24"/>
     362        <UsageCount Value="23"/>
    369363      </Unit33>
    370364      <Unit34>
     
    374368        <TopLine Value="99"/>
    375369        <CursorPos X="57" Y="112"/>
    376         <UsageCount Value="21"/>
     370        <UsageCount Value="20"/>
    377371      </Unit34>
    378372      <Unit35>
    379373        <Filename Value=""/>
    380         <UsageCount Value="1"/>
     374        <UsageCount Value="0"/>
    381375        <DefaultSyntaxHighlighter Value="None"/>
    382376      </Unit35>
     
    384378        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    385379        <UnitName Value="UPascalParser"/>
    386         <EditorIndex Value="2"/>
    387         <WindowIndex Value="0"/>
    388         <TopLine Value="715"/>
    389         <CursorPos X="26" Y="735"/>
    390         <UsageCount Value="55"/>
     380        <EditorIndex Value="6"/>
     381        <WindowIndex Value="0"/>
     382        <TopLine Value="298"/>
     383        <CursorPos X="20" Y="334"/>
     384        <UsageCount Value="59"/>
    391385        <Loaded Value="True"/>
    392386      </Unit36>
     
    394388        <Filename Value="Compiler\Analyze\UGrammer.pas"/>
    395389        <UnitName Value="UGrammer"/>
    396         <EditorIndex Value="12"/>
    397390        <WindowIndex Value="0"/>
    398391        <TopLine Value="15"/>
    399392        <CursorPos X="1" Y="28"/>
    400         <UsageCount Value="53"/>
    401         <Loaded Value="True"/>
     393        <UsageCount Value="54"/>
    402394      </Unit37>
    403395      <Unit38>
    404396        <Filename Value="E:\Programy\Lazarus\components\synedit\synedit.pp"/>
    405397        <UnitName Value="SynEdit"/>
    406         <EditorIndex Value="6"/>
    407398        <WindowIndex Value="0"/>
    408399        <TopLine Value="828"/>
    409400        <CursorPos X="27" Y="841"/>
    410         <UsageCount Value="31"/>
    411         <Loaded Value="True"/>
     401        <UsageCount Value="30"/>
    412402      </Unit38>
    413403      <Unit39>
     
    417407        <TopLine Value="56"/>
    418408        <CursorPos X="3" Y="69"/>
    419         <UsageCount Value="5"/>
     409        <UsageCount Value="4"/>
    420410      </Unit39>
    421411      <Unit40>
     
    425415        <TopLine Value="113"/>
    426416        <CursorPos X="3" Y="120"/>
    427         <UsageCount Value="5"/>
     417        <UsageCount Value="4"/>
    428418      </Unit40>
    429419      <Unit41>
     
    432422        <TopLine Value="1"/>
    433423        <CursorPos X="24" Y="11"/>
    434         <UsageCount Value="5"/>
     424        <UsageCount Value="4"/>
    435425      </Unit41>
    436426      <Unit42>
    437427        <Filename Value="Compiler\Analyze\x.sss"/>
    438         <UnitName Value="Unit1"/>
    439428        <WindowIndex Value="0"/>
    440429        <TopLine Value="1"/>
    441430        <CursorPos X="17" Y="5"/>
    442         <UsageCount Value="20"/>
     431        <UsageCount Value="19"/>
    443432        <DefaultSyntaxHighlighter Value="None"/>
    444433      </Unit42>
     434      <Unit43>
     435        <Filename Value="Compiler\Analyze\System.pas"/>
     436        <UnitName Value="System"/>
     437        <WindowIndex Value="0"/>
     438        <TopLine Value="1"/>
     439        <CursorPos X="8" Y="8"/>
     440        <UsageCount Value="19"/>
     441      </Unit43>
     442      <Unit44>
     443        <Filename Value="Common\UDebugLog.pas"/>
     444        <IsPartOfProject Value="True"/>
     445        <UnitName Value="UDebugLog"/>
     446        <EditorIndex Value="2"/>
     447        <WindowIndex Value="0"/>
     448        <TopLine Value="42"/>
     449        <CursorPos X="42" Y="55"/>
     450        <UsageCount Value="24"/>
     451        <Loaded Value="True"/>
     452        <DefaultSyntaxHighlighter Value="Delphi"/>
     453      </Unit44>
     454      <Unit45>
     455        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\objpas\classes\streams.inc"/>
     456        <EditorIndex Value="4"/>
     457        <WindowIndex Value="0"/>
     458        <TopLine Value="365"/>
     459        <CursorPos X="5" Y="370"/>
     460        <UsageCount Value="12"/>
     461        <Loaded Value="True"/>
     462      </Unit45>
    445463    </Units>
    446464    <JumpHistory Count="30" HistoryIndex="29">
    447465      <Position1>
    448         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    449         <Caret Line="132" Column="15" TopLine="128"/>
     466        <Filename Value="Common\UDebugLog.pas"/>
     467        <Caret Line="48" Column="1" TopLine="41"/>
    450468      </Position1>
    451469      <Position2>
    452         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    453         <Caret Line="128" Column="18" TopLine="116"/>
     470        <Filename Value="Common\UDebugLog.pas"/>
     471        <Caret Line="49" Column="1" TopLine="41"/>
    454472      </Position2>
    455473      <Position3>
    456         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    457         <Caret Line="290" Column="19" TopLine="283"/>
     474        <Filename Value="Common\UDebugLog.pas"/>
     475        <Caret Line="51" Column="1" TopLine="41"/>
    458476      </Position3>
    459477      <Position4>
    460         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    461         <Caret Line="634" Column="25" TopLine="621"/>
     478        <Filename Value="Common\UDebugLog.pas"/>
     479        <Caret Line="52" Column="1" TopLine="41"/>
    462480      </Position4>
    463481      <Position5>
    464         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    465         <Caret Line="438" Column="30" TopLine="415"/>
     482        <Filename Value="Common\UDebugLog.pas"/>
     483        <Caret Line="47" Column="1" TopLine="41"/>
    466484      </Position5>
    467485      <Position6>
    468         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    469         <Caret Line="439" Column="7" TopLine="415"/>
     486        <Filename Value="Common\UDebugLog.pas"/>
     487        <Caret Line="53" Column="1" TopLine="41"/>
    470488      </Position6>
    471489      <Position7>
    472         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    473         <Caret Line="452" Column="1" TopLine="439"/>
     490        <Filename Value="Common\UDebugLog.pas"/>
     491        <Caret Line="52" Column="1" TopLine="41"/>
    474492      </Position7>
    475493      <Position8>
    476         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    477         <Caret Line="428" Column="23" TopLine="416"/>
     494        <Filename Value="Common\UDebugLog.pas"/>
     495        <Caret Line="55" Column="1" TopLine="41"/>
    478496      </Position8>
    479497      <Position9>
    480         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    481         <Caret Line="458" Column="9" TopLine="445"/>
     498        <Filename Value="Common\UDebugLog.pas"/>
     499        <Caret Line="53" Column="27" TopLine="41"/>
    482500      </Position9>
    483501      <Position10>
    484502        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    485         <Caret Line="930" Column="13" TopLine="917"/>
     503        <Caret Line="940" Column="1" TopLine="927"/>
    486504      </Position10>
    487505      <Position11>
    488         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    489         <Caret Line="933" Column="89" TopLine="917"/>
     506        <Filename Value="Compiler\Produce\UProducerC.pas"/>
     507        <Caret Line="221" Column="1" TopLine="208"/>
    490508      </Position11>
    491509      <Position12>
    492         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    493         <Caret Line="459" Column="26" TopLine="445"/>
     510        <Filename Value="Compiler\Produce\UProducerC.pas"/>
     511        <Caret Line="222" Column="1" TopLine="208"/>
    494512      </Position12>
    495513      <Position13>
    496         <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
    497         <Caret Line="942" Column="25" TopLine="923"/>
     514        <Filename Value="Compiler\Produce\UProducerC.pas"/>
     515        <Caret Line="232" Column="1" TopLine="211"/>
    498516      </Position13>
    499517      <Position14>
    500518        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    501         <Caret Line="310" Column="39" TopLine="296"/>
     519        <Caret Line="222" Column="1" TopLine="211"/>
    502520      </Position14>
    503521      <Position15>
    504522        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    505         <Caret Line="306" Column="12" TopLine="296"/>
     523        <Caret Line="198" Column="1" TopLine="185"/>
    506524      </Position15>
    507525      <Position16>
    508526        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    509         <Caret Line="329" Column="10" TopLine="308"/>
     527        <Caret Line="222" Column="1" TopLine="209"/>
    510528      </Position16>
    511529      <Position17>
    512530        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    513         <Caret Line="345" Column="16" TopLine="330"/>
     531        <Caret Line="232" Column="1" TopLine="211"/>
    514532      </Position17>
    515533      <Position18>
    516534        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    517         <Caret Line="313" Column="14" TopLine="311"/>
     535        <Caret Line="221" Column="1" TopLine="211"/>
    518536      </Position18>
    519537      <Position19>
    520538        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    521         <Caret Line="345" Column="29" TopLine="330"/>
     539        <Caret Line="232" Column="37" TopLine="211"/>
    522540      </Position19>
    523541      <Position20>
    524542        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    525         <Caret Line="346" Column="18" TopLine="330"/>
     543        <Caret Line="221" Column="1" TopLine="211"/>
    526544      </Position20>
    527545      <Position21>
    528546        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    529         <Caret Line="292" Column="18" TopLine="283"/>
     547        <Caret Line="232" Column="1" TopLine="211"/>
    530548      </Position21>
    531549      <Position22>
    532550        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    533         <Caret Line="31" Column="53" TopLine="17"/>
     551        <Caret Line="222" Column="1" TopLine="211"/>
    534552      </Position22>
    535553      <Position23>
    536         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    537         <Caret Line="187" Column="16" TopLine="176"/>
     554        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     555        <Caret Line="101" Column="28" TopLine="93"/>
    538556      </Position23>
    539557      <Position24>
    540         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    541         <Caret Line="31" Column="65" TopLine="17"/>
     558        <Filename Value="Compiler\Analyze\UPascalParser.pas"/>
     559        <Caret Line="334" Column="20" TopLine="298"/>
    542560      </Position24>
    543561      <Position25>
    544562        <Filename Value="Compiler\Produce\UProducerC.pas"/>
    545         <Caret Line="186" Column="11" TopLine="177"/>
     563        <Caret Line="240" Column="22" TopLine="227"/>
    546564      </Position25>
    547565      <Position26>
    548         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    549         <Caret Line="318" Column="12" TopLine="309"/>
     566        <Filename Value="Compiler\USourceCode.pas"/>
     567        <Caret Line="772" Column="1" TopLine="759"/>
    550568      </Position26>
    551569      <Position27>
    552         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    553         <Caret Line="202" Column="17" TopLine="197"/>
     570        <Filename Value="Compiler\USourceCode.pas"/>
     571        <Caret Line="481" Column="1" TopLine="468"/>
    554572      </Position27>
    555573      <Position28>
    556         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    557         <Caret Line="208" Column="3" TopLine="206"/>
     574        <Filename Value="Compiler\USourceCode.pas"/>
     575        <Caret Line="485" Column="1" TopLine="468"/>
    558576      </Position28>
    559577      <Position29>
    560         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    561         <Caret Line="202" Column="44" TopLine="188"/>
     578        <Filename Value="Compiler\Analyze\UParser.pas"/>
     579        <Caret Line="99" Column="12" TopLine="91"/>
    562580      </Position29>
    563581      <Position30>
    564         <Filename Value="Compiler\Produce\UProducerC.pas"/>
    565         <Caret Line="318" Column="14" TopLine="305"/>
     582        <Filename Value="Compiler\Analyze\UParser.pas"/>
     583        <Caret Line="377" Column="48" TopLine="365"/>
    566584      </Position30>
    567585    </JumpHistory>
  • branches/Transpascal/Transpascal.lpr

    r70 r76  
    1010  UMainForm in 'UMainForm.pas' {MainForm},
    1111  UTextSource in 'UTextSource.pas', UProject, UApplicationInfo, URegistry,
    12   ULastOpenedList, TranspascalCompiler, UProjectManager, UCodeForm,
     12  ULastOpenedList, UDebugLog, TranspascalCompiler, UProjectManager, UCodeForm,
    1313  UMessagesForm, UCompiledForm, UCodeTreeForm;
    1414
Note: See TracChangeset for help on using the changeset viewer.