Initial check in rtl
This commit is contained in:
@@ -0,0 +1,221 @@
|
||||
unit dpgrtl.lexerstate;
|
||||
|
||||
interface
|
||||
uses
|
||||
System.Classes,
|
||||
dpgrtl.types,
|
||||
dpgrtl.charbuffer;
|
||||
|
||||
type
|
||||
TLexerState = class( TInterfacedObject, ILexerState)
|
||||
private
|
||||
fFileName : string;
|
||||
fLine : integer;
|
||||
fColumn : integer;
|
||||
fGuessing : integer;
|
||||
|
||||
fInputBuffer : ICharBuffer;
|
||||
|
||||
fTokenStartLine : integer;
|
||||
fTokenStartColumn : integer;
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// ILexerState
|
||||
// ------------------------------------------------------------
|
||||
protected
|
||||
function GetFileName : string;
|
||||
function GetLine : integer;
|
||||
function GetColumn : integer;
|
||||
function GetGuessing : integer;
|
||||
|
||||
function GetInputBuffer : ICharBuffer;
|
||||
|
||||
function GetTokenStartLine : integer;
|
||||
function GetTokenStartColumn : integer;
|
||||
|
||||
procedure SetFileName( Value: string);
|
||||
procedure SetLine( Value: integer);
|
||||
procedure SetColumn( Value: integer);
|
||||
procedure SetGuessing( Value: integer);
|
||||
|
||||
procedure SetTokenStartLine( Value: integer);
|
||||
procedure SetTokenStartColumn( Value: integer);
|
||||
|
||||
public
|
||||
constructor Create( AStream: TStream); overload;
|
||||
constructor Create( ABuffer: ICharBuffer); overload;
|
||||
|
||||
procedure AfterConstruction; override;
|
||||
procedure BeforeDestruction; override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{ TLexerState }
|
||||
|
||||
// @@@: Construction/destruction ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
//
|
||||
// Construction/destruction
|
||||
//
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ================================================================================================
|
||||
// Constructor
|
||||
// ================================================================================================
|
||||
constructor TLexerState.Create(AStream: TStream);
|
||||
begin
|
||||
inherited Create;
|
||||
fInputBuffer := TCharBuffer.Create(AStream)
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Constructor
|
||||
// ================================================================================================
|
||||
constructor TLexerState.Create(ABuffer: ICharBuffer);
|
||||
begin
|
||||
inherited Create;
|
||||
fInputBuffer := ABuffer
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// After Construction
|
||||
// ================================================================================================
|
||||
procedure TLexerState.AfterConstruction;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
fFileName := '';
|
||||
fLine := 1;
|
||||
fColumn := 1;
|
||||
fGuessing := 0;
|
||||
|
||||
fTokenStartLine := 1;
|
||||
fTokenStartColumn := 1;
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Before Destruction
|
||||
// ================================================================================================
|
||||
procedure TLexerState.BeforeDestruction;
|
||||
begin
|
||||
fInputBuffer := nil;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
// @@@: ILexerState +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
//
|
||||
// ILexerState
|
||||
//
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ================================================================================================
|
||||
// Get File Name
|
||||
// ================================================================================================
|
||||
function TLexerState.GetFileName: string;
|
||||
begin
|
||||
result := fFileName
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Get Line number
|
||||
// ================================================================================================
|
||||
function TLexerState.GetLine: integer;
|
||||
begin
|
||||
result := fLine
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Get Column number
|
||||
// ================================================================================================
|
||||
function TLexerState.GetColumn: integer;
|
||||
begin
|
||||
result := fColumn
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Get Guessing
|
||||
// ================================================================================================
|
||||
function TLexerState.GetGuessing: integer;
|
||||
begin
|
||||
result := fGuessing
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Get Input Buffer
|
||||
// ================================================================================================
|
||||
function TLexerState.GetInputBuffer: ICharBuffer;
|
||||
begin
|
||||
result := fInputBuffer
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Get Token Start Line
|
||||
// ================================================================================================
|
||||
function TLexerState.GetTokenStartLine: integer;
|
||||
begin
|
||||
result := fTokenStartLine
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Get Token Start Column
|
||||
// ================================================================================================
|
||||
function TLexerState.GetTokenStartColumn: integer;
|
||||
begin
|
||||
result := fTokenStartColumn
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Set File Name
|
||||
// ================================================================================================
|
||||
procedure TLexerState.SetFileName(Value: string);
|
||||
begin
|
||||
fFileName := Value
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Set Line number
|
||||
// ================================================================================================
|
||||
procedure TLexerState.SetLine(Value: integer);
|
||||
begin
|
||||
fLine := Value
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Set Column Number
|
||||
// ================================================================================================
|
||||
procedure TLexerState.SetColumn(Value: integer);
|
||||
begin
|
||||
fColumn := Value
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Set Guessing
|
||||
// ================================================================================================
|
||||
procedure TLexerState.SetGuessing(Value: integer);
|
||||
begin
|
||||
fGuessing := Value
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Set Token Start Line
|
||||
// ================================================================================================
|
||||
procedure TLexerState.SetTokenStartLine(Value: integer);
|
||||
begin
|
||||
fTokenStartLine := Value
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Set Token Start Column
|
||||
// ================================================================================================
|
||||
procedure TLexerState.SetTokenStartColumn(Value: integer);
|
||||
begin
|
||||
fTokenStartColumn := Value
|
||||
end;
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user