Files
bds.mr.dpg/src.lib/dpglib.TokenSymbol.pas
T
2026-01-03 18:33:48 +01:00

126 lines
5.0 KiB
ObjectPascal

unit dpglib.TokenSymbol;
interface
uses
dpgrtl.types,
dpglib.types,
dpglib.GrammarSymbol;
type
TTokenSymbol = class( TGrammarSymbol, ITokenSymbol, IGrammarSymbol)
protected
fTokenType : integer;
fParaphrase : AnsiString;
fASTNodeType : AnsiString;
// ----------------------------------------------------------------------
// Construction/destruction
// ----------------------------------------------------------------------
public
constructor Create( ID: AnsiString);
// ----------------------------------------------------------------------
// IdpgTokenSymbol methods
// ----------------------------------------------------------------------
protected
function GetTokenType : integer;
function GetParaphrase : AnsiString;
function GetASTNodeType : AnsiString;
procedure SetTokenType( TokenType : integer);
procedure SetParaphrase( Paraphrase : AnsiString);
procedure SetASTNodeType( ASTNodeType : AnsiString);
function Clone: ITokenSymbol;
end;
implementation
// @@@: Construction/destruction ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Construction/destruction
//
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ================================================================================================
// Constructor
// ================================================================================================
constructor TTokenSymbol.Create(ID: AnsiString);
begin
inherited Create( ID);
fTokenType := TT_INVALID;
end;
// @@@: ITokenSymbol implementation +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// ITokenSymbol implementation
//
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ================================================================================================
// Get Token Type
// ================================================================================================
function TTokenSymbol.GetTokenType: integer;
begin
result := fTokenType;
end;
// ================================================================================================
// Get Paraphrase
// ================================================================================================
function TTokenSymbol.GetParaphrase: AnsiString;
begin
result := fParaphrase;
end;
// ================================================================================================
// Get AST Node Type
// ================================================================================================
function TTokenSymbol.GetASTNodeType: AnsiString;
begin
result := fASTNodeType;
end;
// ================================================================================================
// Set Token Type
// ================================================================================================
procedure TTokenSymbol.SetTokenType(TokenType: integer);
begin
fTokenType := TokenType;
end;
// ================================================================================================
// Set Paraphrase
// ================================================================================================
procedure TTokenSymbol.SetParaphrase(Paraphrase: AnsiString);
begin
fParaphrase := Paraphrase;
end;
// ================================================================================================
// Set AST Node Type
// ================================================================================================
procedure TTokenSymbol.SetASTNodeType(ASTNodeType: AnsiString);
begin
fASTNodeType := ASTNodeType;
end;
// ================================================================================================
// Clone
// ================================================================================================
function TTokenSymbol.Clone: ITokenSymbol;
begin
result := TTokenSymbol.Create( fID);
result.TokenType := fTokenType;
result.Paraphrase := fParaphrase;
result.ASTNodeType:= fASTNodeType;
end;
end.