61 lines
2.0 KiB
ObjectPascal
61 lines
2.0 KiB
ObjectPascal
unit dpglib.SynPredBlock;
|
|
|
|
interface
|
|
uses
|
|
dpgrtl.types,
|
|
dpglib.types,
|
|
dpglib.AlternativeBlock;
|
|
|
|
type
|
|
// =========================================================================
|
|
// Class TSynPredBlock declaration
|
|
// =========================================================================
|
|
TSynPredBlock = class( TAlternativeBlock,
|
|
ISynPredBlock,
|
|
IAlternativeBlock,
|
|
IAlternativeElem,
|
|
IGrammarElem)
|
|
|
|
// ---------------------------------------------------------------
|
|
// IGrammarElem overrides
|
|
// ---------------------------------------------------------------
|
|
public
|
|
procedure Generate;
|
|
function Look( pK: integer): ILookahead;
|
|
function AsString : AnsiString;
|
|
end;
|
|
|
|
implementation
|
|
uses
|
|
dpglib.lookahead;
|
|
|
|
// ****************************************************************************
|
|
// IGrammarElem overrides
|
|
// ****************************************************************************
|
|
// ----------------------------------------------------------------------------
|
|
// Generate
|
|
// ----------------------------------------------------------------------------
|
|
procedure TSynPredBlock.Generate;
|
|
begin
|
|
fGrammar.Generator.Gen( self);
|
|
end;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Look
|
|
// ----------------------------------------------------------------------------
|
|
function TSynPredBlock.Look(pK: integer): ILookahead;
|
|
begin
|
|
result := TLookahead.Create;
|
|
// result := fGrammar.LLkAnalyzer.Look( pK, self);
|
|
end;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// ToString
|
|
// ----------------------------------------------------------------------------
|
|
function TSynPredBlock.AsString: AnsiString;
|
|
begin
|
|
result := inherited AsString + '=>';
|
|
end;
|
|
|
|
end.
|