104 lines
4.2 KiB
ObjectPascal
104 lines
4.2 KiB
ObjectPascal
unit dpgrtl.llkparser;
|
|
|
|
interface
|
|
uses
|
|
dpgrtl.types,
|
|
dpgrtl.parser;
|
|
|
|
type
|
|
TllkParser = class( TParser)
|
|
protected
|
|
fK : integer;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Interface
|
|
// ----------------------------------------------------------------------
|
|
public
|
|
procedure Consume; override;
|
|
function LA(i:integer):byte; override;
|
|
function LT(i:integer):IToken; override;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Construction/destruction
|
|
// ----------------------------------------------------------------------
|
|
public
|
|
constructor Create( AParserState: IParserState; K: integer); overload;
|
|
constructor Create( ATokenBuffer: ITokenBuffer; K: integer); overload;
|
|
constructor Create( ATokenStream: ITokenStream; K: integer); overload;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ TllkParser }
|
|
|
|
// @@@: Construction/destruction ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//
|
|
// Construction/destruction
|
|
//
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ================================================================================================
|
|
// Constructor(ParserState)
|
|
// ================================================================================================
|
|
constructor TllkParser.Create(AParserState: IParserState; K: integer);
|
|
begin
|
|
inherited Create( AParserState);
|
|
fK := K
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// Constructor(TokenBuffer)
|
|
// ================================================================================================
|
|
constructor TllkParser.Create(ATokenBuffer: ITokenBuffer; K: integer);
|
|
begin
|
|
inherited Create(ATokenBuffer);
|
|
fK := K
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// Constructor(TokenStream)
|
|
// ================================================================================================
|
|
constructor TllkParser.Create(ATokenStream: ITokenStream; K: integer);
|
|
begin
|
|
inherited Create(ATokenStream);
|
|
fK := K
|
|
end;
|
|
|
|
// @@@: Interface +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//
|
|
// Interface
|
|
//
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// ================================================================================================
|
|
// Consume
|
|
// ================================================================================================
|
|
procedure TllkParser.Consume;
|
|
begin
|
|
fParserState.InputBuffer.Consume
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// LA
|
|
// ================================================================================================
|
|
function TllkParser.LA(i: integer): byte;
|
|
begin
|
|
result := fParserState.InputBuffer.LA(i)
|
|
end;
|
|
|
|
// ================================================================================================
|
|
// LT
|
|
// ================================================================================================
|
|
function TllkParser.LT(i: integer): IToken;
|
|
begin
|
|
result := fParserState.InputBuffer.LT(i)
|
|
end;
|
|
|
|
end.
|