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.