110 lines
3.8 KiB
ObjectPascal
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.
|