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