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

110 lines
3.8 KiB
ObjectPascal

unit dpglib.ParserGrammar;
interface
uses
System.Classes,
System.Contnrs,
dpgrtl.types,
dpglib.Types,
dpglib.Grammar;
type
// =========================================================================
// Class TParserGrammar
// =========================================================================
TParserGrammar = class( TGrammar,
IGrammar,
IParserGrammar)
private
fBuildAST : boolean;
protected
function GetBuildAST: boolean;
procedure SetBuildAST( Value: boolean);
function SetOption( Option: IToken; Value: IToken): boolean;
public
// ------------------------------------------------------------
// Constructor/destructor
// ------------------------------------------------------------
constructor Create( pObjectName : IToken;
pTool : ITool;
pSuperName : IToken);
end;
implementation
// ****************************************************************************
// Constructor/destructor
// ****************************************************************************
// ----------------------------------------------------------------------------
// Constructor
// ----------------------------------------------------------------------------
constructor TParserGrammar.Create( pObjectName : IToken;
pTool : ITool;
pSuperName : IToken);
begin
inherited;
fBuildAST := false
end;
// @@@: IGrammar ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// IGrammar
//
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ================================================================================================
// Get BuildAST
// ================================================================================================
function TParserGrammar.GetBuildAST: boolean;
begin
result := fBuildAST
end;
// ================================================================================================
// Set BuildAST
// ================================================================================================
procedure TParserGrammar.SetBuildAST(Value: boolean);
begin
fBuildAST := Value
end;
// ================================================================================================
// Set Option
// ================================================================================================
function TParserGrammar.SetOption(Option, Value: IToken): boolean;
begin
result := true;
// ---------------------------------------------------------------
// Option: buildAST
// ---------------------------------------------------------------
if Option.TokenText = 'buildAST' then
begin
if Value.TokenText = 'true' then
fBuildAST := true
else if Value.TokenText = 'false' then
fBuildAST := false
else begin
fTool.Error('Value for "buildAST" must be true or false.',
fGrammarFile,
Value.TokenLine,
Value.TokenColumn);
result := false
end
end
else
result := inherited SetOption(Option, Value);
end;
end.