259 lines
10 KiB
ObjectPascal
259 lines
10 KiB
ObjectPascal
unit dpgrtl.exception;
|
|
|
|
interface
|
|
uses
|
|
dpgrtl.types,
|
|
System.SysUtils;
|
|
|
|
type
|
|
EException = class(Exception)
|
|
strict protected
|
|
fFileName : string;
|
|
fLine : integer;
|
|
fColumn : integer;
|
|
|
|
public
|
|
constructor Create( AFileName : string;
|
|
ALine : integer;
|
|
AColumn : integer);
|
|
|
|
public
|
|
property FileName : string read fFileName;
|
|
property Line : integer read fLine;
|
|
property Column : integer read fColumn;
|
|
|
|
end;
|
|
|
|
EMismatchedChar = class( EException)
|
|
strict protected
|
|
fCharSet : TCharSet;
|
|
fString : AnsiString;
|
|
|
|
fFoundChar : AnsiChar;
|
|
fFoundString: AnsiString;
|
|
|
|
fInverted : boolean;
|
|
|
|
public
|
|
function ToString: string; override;
|
|
|
|
public
|
|
constructor Create( AFoundChar : AnsiChar;
|
|
ACharSet : TCharSet;
|
|
AFileName : string;
|
|
ALine : integer;
|
|
AColumn : integer;
|
|
AInverted : boolean=false); overload;
|
|
|
|
constructor Create( AFoundString : AnsiString;
|
|
AExpectedString : AnsiString;
|
|
AFileName : string;
|
|
ALine : integer;
|
|
AColumn : integer); overload;
|
|
|
|
|
|
|
|
public
|
|
property FoundChar : AnsiChar read fFoundChar;
|
|
property FoundString : AnsiString read fFoundString;
|
|
property CharSet : TCharSet read fCharSet;
|
|
property Str : AnsiString read fString;
|
|
property Inverted : boolean read fInverted;
|
|
end;
|
|
|
|
EMismatchedToken = class (EException)
|
|
strict protected
|
|
fToken : IToken;
|
|
fTokenSet : TByteSet;
|
|
fFoundToken : IToken;
|
|
fInverted : boolean;
|
|
|
|
public
|
|
constructor Create( AFoundToken : IToken;
|
|
ATokenType : byte;
|
|
AFileName : string;
|
|
AInverted : boolean=false); overload;
|
|
|
|
constructor Create( AFoundToken : IToken;
|
|
ATokenSet : TByteSet;
|
|
AFileName : string;
|
|
AInverted : boolean=false); overload;
|
|
|
|
procedure BeforeDestruction; override;
|
|
|
|
public
|
|
property FoundToken : IToken read fFoundToken;
|
|
property TokenSet : TByteSet read fTokenSet;
|
|
property Inverted : boolean read fInverted;
|
|
end;
|
|
|
|
ESemantic = class (EException)
|
|
strict protected
|
|
fAssert : AnsiString;
|
|
|
|
public
|
|
constructor Create( ASemPred : AnsiString;
|
|
AFileName : string;
|
|
ALine : integer=0;
|
|
AColumn : integer=0);
|
|
|
|
public
|
|
property Assert: AnsiString read fAssert;
|
|
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ EException }
|
|
|
|
// @@@: EException ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//
|
|
// EException
|
|
//
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ================================================================================================
|
|
// constructor
|
|
// ================================================================================================
|
|
constructor EException.Create(AFileName: string; ALine, AColumn: integer);
|
|
begin
|
|
fFileName := AFileName;
|
|
fLine := ALine;
|
|
fColumn := AColumn;
|
|
end;
|
|
|
|
{ EMismatchedChar }
|
|
|
|
// @@@: EMismatchedChar +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//
|
|
// EMismatchedChar
|
|
//
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ================================================================================================
|
|
// constructor([char..char])
|
|
// ================================================================================================
|
|
constructor EMismatchedChar.Create( AFoundChar : AnsiChar;
|
|
ACharSet : TCharSet;
|
|
AFileName : string;
|
|
ALine : integer;
|
|
AColumn : integer;
|
|
AInverted : boolean=false);
|
|
begin
|
|
inherited Create( AFileName, ALine, AColumn);
|
|
|
|
fCharSet := ACharSet;
|
|
fString := '';
|
|
|
|
fFoundChar := AFoundChar;
|
|
fFoundString := '';
|
|
|
|
fInverted := AInverted
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// constructor(string)
|
|
// ================================================================================================
|
|
constructor EMismatchedChar.Create( AFoundString : AnsiString;
|
|
AExpectedString : AnsiString;
|
|
AFileName : string;
|
|
ALine : integer;
|
|
AColumn : integer);
|
|
begin
|
|
inherited Create( AFileName, ALine, AColumn);
|
|
|
|
fCharSet := [];
|
|
fString := AExpectedString;
|
|
|
|
fFoundChar := #0;
|
|
fFoundString := AFoundString;
|
|
|
|
fInverted := false
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// ToString
|
|
// ================================================================================================
|
|
function EMismatchedChar.ToString: string;
|
|
begin
|
|
result := '?'
|
|
end;
|
|
|
|
{ EMismatchedToken }
|
|
|
|
// @@@: EMismatchedToken ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//
|
|
// EMismatchedToken
|
|
//
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ================================================================================================
|
|
// constructor
|
|
// ================================================================================================
|
|
constructor EMismatchedToken.Create(AFoundToken : IToken;
|
|
ATokenType : byte;
|
|
AFileName : string;
|
|
AInverted : boolean=false);
|
|
begin
|
|
inherited Create(AFileName, AFoundToken.TokenLine, AFoundToken.TokenColumn);
|
|
|
|
fFoundToken := AFoundToken;
|
|
fTokenSet := [ATokenType];
|
|
fInverted := AInverted
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// constructor
|
|
// ================================================================================================
|
|
constructor EMismatchedToken.Create(AFoundToken : IToken;
|
|
ATokenSet : TByteSet;
|
|
AFileName : string;
|
|
AInverted : boolean=false);
|
|
begin
|
|
inherited Create(AFileName, AFoundToken.TokenLine, AFoundToken.TokenColumn);
|
|
|
|
fFoundToken := AFoundToken;
|
|
fTokenSet := ATokenSet;
|
|
fInverted := AInverted
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// Before Destruction
|
|
// ================================================================================================
|
|
procedure EMismatchedToken.BeforeDestruction;
|
|
begin
|
|
fFoundToken := nil;
|
|
inherited
|
|
end;
|
|
|
|
{ ESemantic }
|
|
|
|
// @@@: ESemantic +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//
|
|
// ESemantic
|
|
//
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ================================================================================================
|
|
// constructor
|
|
// ================================================================================================
|
|
constructor ESemantic.Create(ASemPred: AnsiString; AFileName: string; ALine, AColumn: integer);
|
|
begin
|
|
inherited Create( AFileName, ALine, AColumn);
|
|
fAssert := ASemPred
|
|
end;
|
|
|
|
end.
|