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