Ignore:
Timestamp:
Nov 10, 2009, 11:13:51 AM (15 years ago)
Author:
george
Message:
  • Přidáno: Při kliknutí na chybové hlášení se přesune kurzor v kódu na místo chyby.
Location:
branches/Void
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/Void

    • Property svn:ignore
      •  

        old new  
        77*.dsk
        88*.~dsk
         9Output.bdsproj
         10Output.c
         11Output.dpr
         12Output.exe
  • branches/Void/UCompilator.pas

    r16 r17  
    1010type
    1111  TOnErrorEvent = procedure (Text: string; var Terminate: Boolean; Position: TPoint) of object;
     12
     13  TErrorMessage = class
     14    CodePosition: TPoint;
     15    Text: string;
     16  end;
    1217
    1318  TCompilator = class
    1419  private
    1520    FOnError: TOnErrorEvent;
    16     procedure DoError(Text: string);
     21    procedure DoError(AText: string);
    1722    procedure ParseBeginEnd;
    1823    procedure ParseProgram;
    1924    procedure ParseVariableDefinition;
    2025  public
     26    ErrorMessages: TList;
    2127    Model: TModel;
    2228    SourceCode: TStream;
     
    3339{ TCompilator }
    3440
    35 procedure TCompilator.DoError(Text: string);
     41procedure TCompilator.DoError(AText: string);
    3642var
    3743  Terminate: Boolean;
    3844begin
     45  with TErrorMessage(ErrorMessages[ErrorMessages.Add(TErrorMessage.Create)]) do begin
     46    CodePosition := Parser.TokenStartPosition;
     47    Text := AText;
     48  end;
    3949  Terminate := False;
    40   if Assigned(FOnError) then FOnError(Text, Terminate, Parser.TokenStartPosition);
     50  if Assigned(FOnError) then FOnError(AText, Terminate, Parser.TokenStartPosition);
    4151  if Terminate then raise Exception.Create('Compilation terminated');
    4252end;
     
    123133begin
    124134  Model.Clear;
     135  for I := 0 to ErrorMessages.Count - 1 do
     136    TErrorMessage(ErrorMessages[I]).Destroy;
     137  ErrorMessages.Clear;
    125138  SourceCode.Position := 0;
    126139  Parser.Open(SourceCode);
     
    250263constructor TCompilator.Create;
    251264begin
     265  ErrorMessages := TList.Create;
    252266  SourceCode := TMemoryStream.Create;
    253267  Model := TModel.Create;
     
    256270
    257271destructor TCompilator.Destroy;
    258 begin
     272var
     273  I: Integer;
     274begin
     275  for I := 0 to ErrorMessages.Count - 1 do
     276    TErrorMessage(ErrorMessages[I]).Destroy;
     277  ErrorMessages.Destroy;
    259278  SourceCode.Destroy;
    260279  Model.Destroy;
Note: See TracChangeset for help on using the changeset viewer.