126 lines
5.0 KiB
ObjectPascal
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.
|