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.