unit dpglib.WildCardElem; interface uses dpgrtl.types, dpglib.Types, dpglib.GrammarAtom; type // ========================================================================= // Class TWildcardElem declaration // ========================================================================= TWildcardElem = class( TGrammarAtom, IwildcardElem, IGrammarAtom, IAlternativeElem, IGrammarElem) // --------------------------------------------------------------- // Constructor/destructor // --------------------------------------------------------------- public constructor Create( pGrammar : IGrammar; pToken : IToken; pAutoGenType: integer); // --------------------------------------------------------------- // IGrammarElem overrides // --------------------------------------------------------------- public procedure Generate; function Look( pK: integer): ILookahead; function AsString: AnsiString; // --------------------------------------------------------------- // IAlternativeElem overrides // --------------------------------------------------------------- protected function Get_Label : AnsiString; procedure Put_Label( pLabel: AnsiString); end; implementation // **************************************************************************** // Constructor/destructor // **************************************************************************** // ============================================================================ // Constructor // ============================================================================ constructor TWildcardElem.Create( pGrammar : IGrammar; pToken : IToken; pAutoGenType: integer); begin inherited Create( pGrammar, pToken, pAutoGenType); fLine := pToken.TokenLine; end; // **************************************************************************** // IGrammarElem overrides // **************************************************************************** // ============================================================================ // Generate // ============================================================================ procedure TWildcardElem.Generate; begin fGrammar.Generator.gen( self); end; // ============================================================================ // Look // ============================================================================ function TWildcardElem.Look(pK: integer): ILookahead; begin result := fGrammar.LLkAnalyzer.Look( pK, self); end; // ============================================================================ // AsString // ============================================================================ function TWildcardElem.AsString: AnsiString; begin result := ''; if fLabel <> '' then result := result + fLabel + ':'; result := result + '.'; end; // **************************************************************************** // IAlternativeElem overrides // **************************************************************************** // ============================================================================ // Get_Label // ============================================================================ function TWildcardElem.Get_Label: AnsiString; begin result := fLabel; end; // ============================================================================ // Put_Label // ============================================================================ procedure TWildcardElem.Put_Label(pLabel: AnsiString); begin fLabel := pLabel; end; end.