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