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

108 lines
4.0 KiB
ObjectPascal

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.