Files
bds.mr.dpg/src.rtl/dpgrtl.types.pas
T
2026-01-03 18:32:50 +01:00

183 lines
6.6 KiB
ObjectPascal

unit dpgrtl.types;
interface
uses
Generics.Collections,
System.SysUtils;
const
// -------------------------------------------------------------------------
// autogen values
// -------------------------------------------------------------------------
AUTOGEN_INVALID = 0;
AUTOGEN_NONE = 1;
AUTOGEN_CARET = 2;
AUTOGEN_BANG = 3;
// -------------------------------------------------------------------------
// predefined token types
// -------------------------------------------------------------------------
TT_SKIP = $FF;
TT_INVALID = 0;
TT_EOF = 1;
TT_NTLA = 2; // null tree lookahead
TT_USER = 4;
EOF_CHAR = #0;
type
TByteSet = set of 0..255;
TCharSet = set of AnsiChar;
TCharMatrix = array of array of AnsiChar;
TTokenNameMap = TDictionary<integer,AnsiString>;
// ===================================================================================
// IToken interface
// ===================================================================================
IToken = interface
['{BFB516D6-7175-40C8-9AA0-592CA11AD391}']
function GetTokenType : byte;
function GetTokenText : AnsiString;
function GetTokenLine : integer;
function GetTokenColumn : integer;
procedure SetTokenType( Value: byte);
procedure SetTokenText( Value: AnsiString);
procedure SetTokenLine( Value: integer);
procedure SetTokenColumn( Value: integer);
function Clone: IToken;
property TokenType : byte read GetTokenType write SetTokenType;
property TokenText : AnsiString read GetTokenText write SetTokenText;
property TokenLine : integer read GetTokenLine write SetTokenLine;
property TokenColumn : integer read GetTokenColumn write SetTokenColumn;
end;
// ===================================================================================
// ITokenStream interface
// ===================================================================================
ITokenStream = interface
['{48293450-4B0C-455B-BC3C-313363C503D2}']
function NextToken: IToken;
end;
// ===================================================================================
// IInputBuffer interface
// ===================================================================================
IInputBuffer = interface
['{936C26A0-E25F-4B4E-9FD3-5E8E7FC23B17}']
function GetMarked: boolean;
procedure Consume;
procedure Commit;
function Mark: integer;
procedure Rewind( Value: integer);
property Marked: boolean read GetMarked;
end;
// ===================================================================================
// ICharBuffer interface
// ===================================================================================
ICharBuffer = interface( IInputBuffer)
['{AA5CD21F-7982-4FF4-BB52-7A02B65C35A8}']
function LA(i: integer): AnsiChar;
end;
// ===================================================================================
// ITokenBuffer interface
// ===================================================================================
ITokenBuffer = interface( IInputBuffer)
['{1FD2EB56-5385-49B0-815D-8B7F96E33F1A}']
function LA(i: integer): integer;
function LT(i: integer): IToken;
end;
// ===================================================================================
// ILexerState
// ===================================================================================
ILexerState = interface
['{D6E15235-CADC-48BA-9390-376284515FAA}']
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);
property FileName : string read GetFileName
write SetFileName;
property Line : integer read GetLine
write SetLine;
property Column : integer read GetColumn
write SetColumn;
property Guessing : integer read GetGuessing
write SetGuessing;
property TokenStartLine : integer read GetTokenStartLine
write SetTokenStartLine;
property TokenStartColumn : integer read GetTokenStartColumn
write SetTokenStartColumn;
property InputBuffer : ICharBuffer read GetInputBuffer;
end;
// ===================================================================================
// IParserState
// ===================================================================================
IParserState = interface
['{763A4DAD-91F5-4225-A68D-8FE4B1A29164}']
function GetFileName : string;
function GetGuessing : integer;
function GetInputBuffer : ITokenBuffer;
procedure SetFileName( Value: string);
procedure SetGuessing( Value: integer);
property FileName : string read GetFileName write SetFileName;
property Guessing : integer read GetGuessing write SetGuessing;
property InputBuffer : ITokenBuffer read GetInputBuffer;
end;
// ===================================================================================
// ITreeParserState
// ===================================================================================
ITreeParserState = interface
['{439DCDAA-B1AB-482A-BAAE-843917F60E42}']
function GetGuessing: integer;
procedure SetGuessing( Value: integer);
property Guessing: integer read GetGuessing write SetGuessing;
end;
implementation
end.