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; // =================================================================================== // 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.