140 lines
4.4 KiB
ObjectPascal
140 lines
4.4 KiB
ObjectPascal
unit dpgrtl.token;
|
|
|
|
interface
|
|
uses
|
|
dpgrtl.types;
|
|
|
|
type
|
|
TToken = class( TInterfacedObject, IToken)
|
|
strict protected
|
|
fTokenType : byte;
|
|
fTokenText : AnsiString;
|
|
fTokenLine : integer;
|
|
fTokenColumn : integer;
|
|
|
|
protected
|
|
function GetTokenType : byte;
|
|
function GetTokenText : AnsiString;
|
|
function GetTokenLine : integer;
|
|
function GetTokenColumn : integer;
|
|
|
|
procedure SetTokenType( Value: byte);
|
|
procedure SetTokenText( Value: AnsiString);
|
|
procedure SetTokenLine( Value: integer);
|
|
procedure SetTokenColumn( Value: integer);
|
|
|
|
public
|
|
function Clone: IToken;
|
|
|
|
public
|
|
constructor Create( ATokenType : byte=TT_INVALID;
|
|
ATokenText : AnsiString='';
|
|
ATokenLine : integer=0;
|
|
ATokenColumn: integer=0);
|
|
public
|
|
end;
|
|
|
|
TTokenClass = class of TToken;
|
|
|
|
var
|
|
badToken : IToken;
|
|
nullToken: IToken;
|
|
|
|
implementation
|
|
|
|
// ================================================================================================
|
|
// constructor
|
|
// ================================================================================================
|
|
constructor TToken.Create( ATokenType : byte;
|
|
ATokenText : AnsiString;
|
|
ATokenLine : integer;
|
|
ATokenColumn: integer);
|
|
begin
|
|
fTokenType := ATokenType;
|
|
fTokenText := ATokenText;
|
|
fTokenLine := ATokenLine;
|
|
fTokenColumn:= ATokenColumn
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// Get Token Text
|
|
// ================================================================================================
|
|
function TToken.GetTokenText: AnsiString;
|
|
begin
|
|
result := fTokenText
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// Get Token Type
|
|
// ================================================================================================
|
|
function TToken.GetTokenType: byte;
|
|
begin
|
|
result := fTokenType
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// Get Token Line
|
|
// ================================================================================================
|
|
function TToken.GetTokenLine: integer;
|
|
begin
|
|
result := fTokenLine
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// Get Token Column
|
|
// ================================================================================================
|
|
function TToken.GetTokenColumn: integer;
|
|
begin
|
|
result := fTokenColumn
|
|
end;
|
|
|
|
|
|
// ================================================================================================
|
|
// Set Token Text
|
|
// ================================================================================================
|
|
procedure TToken.SetTokenText( Value: AnsiString);
|
|
begin
|
|
fTokenText := Value
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// Set Token Type
|
|
// ================================================================================================
|
|
procedure TToken.SetTokenType( Value: byte);
|
|
begin
|
|
fTokenType := Value
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// Set Token Line
|
|
// ================================================================================================
|
|
procedure TToken.SetTokenLine( Value: integer);
|
|
begin
|
|
fTokenLine := Value
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// Set Token Line
|
|
// ================================================================================================
|
|
procedure TToken.SetTokenColumn( Value: integer);
|
|
begin
|
|
fTokenColumn := Value
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// Clone
|
|
// ================================================================================================
|
|
function TToken.Clone: IToken;
|
|
begin
|
|
result := TToken.Create( fTokenType, fTokenText, fTokenLine, fTokenColumn);
|
|
end;
|
|
|
|
initialization
|
|
badToken := TToken.Create( TT_INVALID);
|
|
nullToken := TToken.Create( TT_INVALID);
|
|
|
|
finalization
|
|
badToken := nil;
|
|
nullToken := nil;
|
|
end.
|