Initial check in lib
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user