Files
bds.mr.dpg/src.rtl/dpgrtl.token.pas
T
2026-01-03 18:32:50 +01:00

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.